Gradient Descent vs Adagrad vs Momentum in TensorFlow
ML System Design practice on Codemia
Design recommenders, ranking systems and training pipelines the way ML interviews actually ask for them, with worked solutions.
Gradient descent and its variants are foundational optimization algorithms in machine learning and deep learning, especially within the TensorFlow framework. The choice of optimization algorithm can significantly influence the performance and convergence rate of your model. In this article, we'll delve into the workings of standard Gradient Descent, AdaGrad, and Momentum by comparing their approaches, benefits, and typical use cases in TensorFlow.
Gradient Descent
Gradient Descent (GD) is the most basic optimization algorithm in machine learning. It iteratively adjusts the weights by descending along the negative gradient of the loss function. This method is mathematically expressed as:
where:
- are the parameters (weights) being optimized.
- is the learning rate.
- is the cost function.
In TensorFlow, the GD optimizer can be used as follows:
Characteristics:
- Pros: Simple and easy to implement.
- Cons: Requires a small learning rate for convergence which can make it slow.
AdaGrad
Adaptive Gradient Algorithm (AdaGrad) is designed to improve upon GD by adapting the learning rate for each parameter individually. It keeps track of past gradients and adjusts the learning rate accordingly:
where:
- is the diagonal matrix with the sum of squares of all historical gradients.
- is a small constant to prevent division by zero.
In TensorFlow, AdaGrad is used like so:
Characteristics:
- Pros: Suitable for sparse data; adapts the learning rate.
- Cons: Learning rate can get too small over time due to accumulated gradients.
Momentum
Momentum seeks to accelerate the learning process by adding a fraction of the update vector of the past step to the current update vector. This approach helps the model to navigate through ravines faster.
where:
- is the velocity term carrying the momentum of the gradients.
- is the momentum factor (commonly set to 0.9).
Momentum can be implemented in TensorFlow like this:
Characteristics:
- Pros: Accelerates convergence in the relevant direction.
- Cons: Could potentially overshoot if not tuned properly.
Comparison Table
| Feature | Gradient Descent | AdaGrad | Momentum |
| Learning Rate | Constant | Adaptable per parameter | Generally constant, momentum helps acceleration |
| Convergence Speed | Slow for small | Adaptive but can slow | Faster due to momentum |
| Parameter Dependency | Uniform across all | Each parameter/feature | Uniform, influenced by past momentum |
| Ideal Use Case | General use | Sparse data scenarios | Data with converging ravines |
Choosing the Right Optimizer
Choosing the appropriate optimizer depends heavily on the nature of your data and the specific problem at hand. Here's a brief guideline:
- Gradient Descent: If simplicity is preferred and computational resources are a concern.
- AdaGrad: In cases where your data contains many sparse features.
- Momentum: When dealing with complex neural networks and the need for faster convergence is essential.
Implementation in TensorFlow
Below is a simple example illustrating how to specify different optimizers in a TensorFlow neural network:
With this understanding of Gradient Descent, AdaGrad, and Momentum, we now have a clearer picture of how each optimizer offers unique advantages and drawbacks. Selecting the appropriate optimizer can profoundly affect your model's convergence and performance. Consider your dataset's characteristics and the computational resources available when making this choice.
Related reading
- Graph disconnected cannot obtain value for tensor Tensor
- Graph optimizations on a tensorflow serveable created using tf.Estimator
- GridSearch for an estimator inside a OneVsRestClassifier
- Guided Back-propagation in TensorFlow
- Gram Schmidt with R
- graph - Dijkstra for The Single-Source Longest Path
- Gradient Descent with constraints lagrange multipliers
- Graph algorithm simplify graph by replacing chains of nodes with single node

DSA Fundamentals
Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
ML System Design practice on Codemia
Design recommenders, ranking systems and training pipelines the way ML interviews actually ask for them, with worked solutions.