Gradient Scale
Gradients tell the optimizer how parameters affect the loss. Their scale controls update size.
If gradients are too large, updates can be too large even with a reasonable learning rate. If gradients are too small, updates may barely change the parameters.
The update size is shaped by both gradient and learning rate:
update_size = learning_rate * gradient
But gradient scale also changes across layers. In deep networks, repeated chain-rule products can make earlier-layer gradients shrink or grow. This is one reason initialization and normalization matter.
The right question is not only "is there a gradient?" It is also "is the gradient in a useful range?"
Let learning_rate = 0.01 and gradient = 300. What is the update size before the minus sign?
Compute it first, then check your number.
Let learning_rate = 0.1 and gradient = 0.0002. What is the update size?
Compute it first, then check your number.