If you have decided to implement machine learning into your app or product and are exploring options as a machine learning researcher, you have probably come across terms like ‘online machine learning’ and ‘batch learning’ – but what exactly do these terms mean, and why do they matter?
Before we explore the meanings of these terms and the topic of online vs offline machine learning, it’s a good idea to take a step back and first look at what we mean by machine learning.
The definition of machine learning as given by the Oxford English Dictionary is:
“the use and development of computer systems that are able to learn and adapt without following explicit instructions, by using algorithms and statistical models to analyze and draw inferences from patterns in data.”
This definition has two key parts that are relevant to the discussion of online vs offline machine learning – i) learning and adapting without following instructions ii) by analyzing patterns in data.
Machine learning uses two types of techniques: supervised learning and unsupervised learning.
Supervised learning builds a model that makes predictions based on evidence in the presence of uncertainty. The model is trained on known input and output data so that it can reasonably predict future outputs.
In contrast, unsupervised learning looks for patterns and structures in datasets. The machine learns to draw inferences from datasets without labeled responses.
Simply put, a machine learning model learns through repetition and is fed information repeatedly until it gets better at carrying out its intended function, such as correctly identifying objects or making accurate predictions about the weather.
This can be achieved through either online machine learning or offline (batch) machine learning.
Online machine learning is a type of machine learning where data is acquired sequentially and is utilized to update the best predictor for future data at each step.
In other words, online machine learning means that learning takes place as data becomes available. With online learning, the learning algorithm’s parameters are updated after learning from each individual training instance. In online learning, each learning step is quick and cheap, and the model can learn from new information in real-time as it arrives.
Online learning is ideal for machine learning systems that receive data as a continuous flow and need to be able to adapt to rapidly changing conditions.
An example of one of these systems might be one that predicts the weather or analyses stock prices. This type of machine learning is also an ideal option if computing resources are a factor – when an online model has learned from new data instances, it no longer needs to use them and can therefore discard them. This can save a huge amount of storage space.
Online machine learning is the opposite of offline machine learning, which is also referred to as ‘batch learning’.
While online learning does have its uses, traditional machine learning is performed offline using the batch learning method.
In batch learning, data is accumulated over a period of time. The machine learning model is then trained with this accumulated data from time to time in batches. It is the direct opposite of online learning because the model is unable to learn incrementally from a stream of live data. In batch learning, the machine learning algorithm updates its parameters only after consuming batches of new data.
The fact that models are trained with large batches of accumulated data means that more time and resources such as CPU, memory space, and disk input/output are needed. It also takes longer to push models to production because this can only be done at certain intervals based on the performance of the model after being trained with new data.
If a model that has been trained using batch learning needs to learn about new data, it must be retrained using the new dataset.
Online machine learning recognizes that learning environments are dynamic and can change from second to second. Online learning methods are therefore used when algorithms need to dynamically adapt to new patterns in data.
With online learning, you will typically have more data available to train your model with but there are also time constraints that need to be accounted for. You have also got to keep in mind that your concepts might change in time which could negatively impact the model’s performance.
There’s also the major disadvantage that if an online learning model is fed with bad data, the system will perform badly, and the end-user will see the impact of this instantly. This necessitates the need to put filters in place to ensure that the model is only being fed by high-quality data.
At the same time, online learning is data-efficient and flexible. Once data has been used, it is no longer required, and you don’t need to store it. A model that is being trained via online learning can also adapt on the fly to keep up with changes and trends in real-time.
Turning to offline learning, you begin training a machine learning model using a finite amount of data. This data can either represent a single sample or it could be all the data that’s available at that point in time. Once the machine learning model has been trained using this data and you are satisfied with its performance, you can begin using it to make predictions.
Over time, however, models will need to be re-trained with fresh datasets to maintain their performance and accuracy. This means that the primary disadvantage of batch learning in comparison to online learning is that batch learning uses up a lot of time and resources for re-training whereas online machine learning doesn’t require this.
Now that you know the difference between online and offline machine learning, you might be wondering which one is better than the other.
The truth is that there is no one-size-fits-all approach when it comes to training a machine learning model. Whether online or offline learning is better depends on your project’s needs and goals.
Here are five considerations that you should account for in your decision making:
In an offline machine learning model, the weights and parameters of the model are updated while simultaneously attempting to lower the global cost function using the data used to train the model. The machine learning model is trained and updated continuously until it is in a state of readiness for deployment or the use case that it’s designed for.
In an online machine learning process, however, the changes of weights and parameters that occur at a given step are dependent on the example that’s being shown. If the model has already been deployed, the model’s current state might also be a factor. As a result, the machine learning model is continuously exposed to fresh data and is able to continuously improve through learning.
Offline batch learning is generally a lot faster than online machine learning because offline learning only uses a dataset once throughout the entire model to modify weights and parameters.
That said, the sheer size of modern big data streams means that it can be a time-consuming and sometimes impossible task to feed all available data into an offline model. In this situation, engineers can either opt for online machine learning or feed the model with data incrementally.
Offline machine learning is often cheaper than online machine learning, too. This is because in online machine learning, the model obtains and tunes its parameters as new data becomes available in real-time. This can become resource-intensive because the model is trained continuously.
Online machine learning is an ongoing, continuous process that requires a constant input of data. This is because model refinement and improvement can only be carried out when the model is being fed this data.
The computational power required for online machine learning is therefore higher than offline batch learning which in contrast requires fewer computations. With batch learning, computations are only carried out at occasional points in time when the model is being fed with new data.
Online machine learning models are a lot harder to manage in a production environment. This is because online learning models churn through large amounts of data in real-time and learn from them. This has an immediate impact on the machine learning model and the solution it powers and can affect the overall performance of it, a problem known as concept drift.
While this can be controlled, i.e., by filtering out “bad data” as we mentioned earlier, it requires a larger resource input and leads to higher costs.
With batch learning, changes to the model are only reflected when updated models that have been trained with new data are manually pushed to production. This gives machine learning engineers the opportunity to review changes to their offline model and ensure that any loss of quality or performance is remedied.
A purely online model can be difficult to deploy in a way that’s scalable. This is because when a model is purely online, its health and performance must be constantly monitored, as must the health of the system that’s sending data to the model. It is somewhat telling that even large multinational companies that can do this because they have the resources choose not to.
It’s also more difficult to get an algorithm to behave in the desired way on a purely online, automatic basis. In this situation, it can also be difficult to figure out whether it is indeed your algorithm that is misbehaving or whether there’s an infrastructural problem.
It’s impossible to say that one is better than the other. Both online and offline machine learning have their own pros, cons, and use cases.
Here’s a table that sums up what we have discussed:
Online learning is more likely to be the best option where machine learning engineers are dealing with large amounts of data, such as in areas like finance and economics where new data patterns emerge on an almost constant basis.
On the flip side, offline or batch learning is more likely to be the best option where data patterns are consistent, emerge more slowly, and where there are no rapid concept shifts. An example might be image classification for a self-driving car.
What’s most important, however, is the user.
Machine learning production should focus on the end-user and how they interact with your system. Your machine learning model should only be as complicated as it needs to be to accomplish the tasks required to serve the end-user.
Achieving this, however, is easier said than done.
Check machine learning podcasts that explore ML topics!