На самом деле не обязательно. Есть вот какой симпатичный способ.
Пусть

-- это градиент. На

-том шаге минимизации подлежит одномерная функция

. В окрестности экстремума она примерно квадратична. Секущая в точке

, направленная в вершину параболы, задаётся функцией

, т.е. имеет вдвое меньший угловой коэффициент, чем соответствующая касательная.
Теперь: поскольку метод градиентного спуска всё равно достаточно груб, нет необходимости минимизировать

хоть сколько-то точно. Достаточно на каждом шаге оказываться где-нибудь рядом с минимумом. Другими словами: достаточно делать лишь пару подшагов одномерной итерационной процедуры. Это, допустим, увеличит необходимое количество шагов "верхнего уровня" в несколько раз, но в несколько же раз уменьшится и трудоёмкость каждого шага.
Отсюда алгоритм. Задаём начальное

и некий параметр "сжатия/растяжения"

(например,

). На каждом

-том шаге сперва увеличиваем предыдущее значение

в

раз до тех пор, пока не окажется

. А затем уменьшаем

в

раз до тех пор, пока не будет

. Последнее значение

и принимаем за оценку положения минимума

на данном шаге.