Глава 2. Приступим: простая линейная регрессия в TensorFlow.js
79
И хотя это определение не слишком формально, здесь есть над чем подумать, так
что рассмотрим его по частям.
z
z
Прежде всего, градиент — вектор, количество элементов в котором совпадает
с количеством весов. Он отражает одно из направлений в пространстве всех
возможных выборов значений весов. Если веса модели состоят из двух чисел,
как в случае нашей простой сети линейной регрессии, то градиент — двумерный
вектор. Модели глубокого обучения часто насчитывают тысячи или миллионы
измерений, так что градиенты этих моделей представляют собой векторы (на
правления) из тысяч или миллионов элементов.
z
z
Вовторых, градиент зависит от текущих значений весов. Другими словами,
при различных значениях весов получаются различные градиенты. Это ясно из
рис. 2.5, в котором направление наиболее быстрого спуска зависит от текущего
положения на поверхности ошибок. На левом краю необходимо идти направо.
Около дна следует двигаться вверх и т. д.
z
z
Наконец, математическое определение градиента говорит о направлении, вдоль
которого функция потерь
растет
. Разумеется, при обучении нейронных сетей
нам нужно, чтобы функция потерь
падала
. Именно поэтому нам нужно менять
веса в направлении,
противоположном
градиенту.
В качестве аналогии рассмотрим прогулку по горам. Допустим, мы хотели бы
идти по местности с наименьшей высотой над уровнем моря. В этой аналогии мы
можем менять высоту над уровнем моря, перемещаясь в любом направлении, задава
емом осями координат запад — восток и север — юг. Первый пункт вышеприведенно
го списка можно интерпретировать как то, что градиент нашей высоты над уровнем
моря представляет собой наиболее крутое направление относительно текущего на
клона почвы под нашими ногами. Второй пункт очевиден: он гласит, что наиболее
крутое направление зависит от нашего текущего местоположения. Наконец, чтобы
попасть на расположенную ниже всего над уровнем моря местность, необходимо
двигаться в направлении,
противоположном
градиенту.
Данный процесс обучения вполне логично называют
градиентным спуском
(gra
dient descent). Помните, в листинге 2.4 мы задавали оптимизатор модели с помощью
опции
optimizer:
'sgd'
? Теперь вам должна быть понятна относящаяся к градиентно
му спуску часть названия «стохастический градиентный спуск». А «стохастический»
означает просто выбор на каждом шаге градиентного спуска случайных примеров
данных из обучающего набора вместо использования всех обучающих примеров на
каждом шаге. Стохастический градиентный спуск — всего лишь модификация гради
ентного спуска, используемая для большей эффективности вычислений.
Теперь у нас есть все необходимое, чтобы объяснить, как работает механизм
оптимизации и почему 200 эпох лучше, чем десять, для нашей модели времени ска
чивания. На рис. 2.7 показано, как алгоритм градиентного спуска следует вниз по по
верхности ошибок в поисках весовых коэффициентов, лучше всего подходящих для
наших обучающих данных. Контурный график из блока A на рис. 2.7 демонстрирует
ту же поверхность ошибок, что и раньше, в несколько меньшем масштабе, с наложен
ным на нее путем, по которому движется алгоритм градиентного спуска. Этот путь
начинается со
случайной инициализации
— случайного места на рисунке. Нам нужно
выбрать какоето случайное место, с которого начинать, ведь заранее мы не знаем
80
Do'stlaringiz bilan baham: |