Вы складываете такие числа для всех двух тысяч используемых изображений и получаете общую суммарную неправильность, которая и будет мерой вашей стратегии. Ваша цель – найти стратегию с минимальной суммарной неправильностью. Как сделать так, чтобы стратегия не ошибалась? Вот здесь и появляется градиентный спуск. Потому что теперь вы уже знаете, что означает улучшение или ухудшение стратегии при ее незначительном изменении. Градиент измеряет, как сильно меняется неправильность при небольшом изменении стратегии. И из всех возможных способов немного изменить стратегию вы выбираете тот, который максимально уменьшает неправильность. (Кстати, именно поэтому метод называют градиентным спуском, а не подъемом! Часто наша цель в машинном обучении – минимизировать что-то плохое, например неправильность, а не максимизировать что-то хорошее, скажем высоту над уровнем моря.)
Метод градиентного спуска применим не только к кошкам; вы можете использовать его каждый раз, когда захотите, чтобы машина изучала какую-то стратегию на собственном опыте. Возможно, вам нужна стратегия, которая берет чьи-то рейтинги для сотен фильмов и предсказывает их рейтинги для еще не просмотренных картин; или стратегия, которая берет позицию в шашках или го и выдает ход, ставящий вашего противника в проигрышное положение; или стратегия, которая на основе видеосигнала с камеры автомобиля выдает движение рулевой колонки, упреждающее столкновение с мусорным баком. Все что угодно! Во всех случаях вы можете начать с какой-то предложенной стратегии, оценить, какие незначительные изменения максимально уменьшат неправильность в большинстве примеров, которые вы уже видели, внести эти изменения и повторить.
Я не хочу преуменьшать вычислительные проблемы. «Кошкотрон», скорее всего, придется обучать на миллионах изображений, а не на тысячах. Поэтому вычисление полной неправильности может потребовать сложения миллионов отдельных неправильностей. Даже если у вас очень мощный процессор, это затратно по времени! Вот почему на практике мы часто используем разновидность процесса под названием
Что мне нравится в стохастическом градиентном спуске, так это его странность. Представьте, например, что президент Соединенных Штатов принимает решения без какой-либо глобальной стратегии: глава государства окружен толпой кричащих подчиненных, где каждый требует скорректировать политику в соответствии с его собственными интересами. И президент ежедневно случайным образом выбирает одного из этих людей, выслушивает его и соответствующим образом меняет курс страны[297]
. Довольно нелепый (и опасный!) способ руководить правительством огромной страны, однако неплохо работающий в машинном обучении!В нашем описании пока отсутствует кое-что важное: как узнать, когда остановиться? Ну, это как раз просто: вы останавливаетесь, когда ваши мелкие изменения больше не дают никаких улучшений. Однако тут возникает большая проблема: возможно, на самом деле вы вовсе не на вершине!
Если вы – тот самый счастливый альпинист на рисунке, то при любом шаге влево или вправо заметите, что уклона вверх нигде нет. Вот почему вы счастливы! Вы на вершине!