6.2. Обучение градиентными методами
Проектирование и обучение нейронной сети мало отличается от обучения любой
другой модели методом градиентного спуска. В разделе 5.10 мы описали, как постро-
ить алгоритм машинного обучения путем задания процедуры оптимизации, функции
стоимости и семейства моделей.
Основное различие между линейными моделями, встречавшимися нам до сих
пор, и нейронными сетями состоит в том, что из-за нелинейности нейронной сети
большинство интересных функций потерь оказывается невыпуклыми. Это озна-
чает, что нейронные сети обычно обучаются с помощью итеративных градиентных
оптимизаторов, которые просто находят очень малое значение функции стоимости,
а не с помощью методов решения линейных уравнений, применяемых при обучении
моделей регрессии, или алгоритмов выпуклой оптимизации, гарантированно сходя-
щихся к глобальному оптимуму, которые используются при обучении логистической
регрессии или модели опорных векторов. Алгоритм выпуклой оптимизации сходится
при любых начальных параметрах (теоретически на практике он устойчивый, но мо-
жет столкнуться с численными проблемами). Метод стохастического градиентного
спуска, применяемый к невыпуклым функциям потерь, не дает таких гарантий схо-
димости и чувствителен к начальным значениям параметров. Для нейронных сетей
прямого распространения важно инициализировать все веса небольшими случай-
ными значениями. Смещения можно инициализировать нулями или небольшими
положительными значениями. Итеративные алгоритмы градиентной оптимизации,
применяемые для обучения сетей прямого распространения и почти всех прочих глу-
боких моделей, подробно описаны в главе 8, а инициализация параметров обсужда-
ется в разделе 8.4. Пока достаточно понимать, что алгоритм обучения почти всегда
основан на использовании градиентного спуска для минимизации функции стоимо-
сти тем или иным способом. Конкретные алгоритмы являются улучшением и уточ-
нением идей градиентного спуска, описанных в разделе 4.3, а чаще всего алгоритма
стохастического градиентного спуска из раздела 5.9.
Мы, конечно, можем обучать методом градиентного спуска и такие модели, как
линейная регрессия и опорные векторы, и так действительно делают, когда обучаю-
щий набор очень велик. С этой точки зрения, обучение нейронной сети не сильно
отличается от обучения любой другой модели. Для нейронной сети вычисление гра-
диента несколько сложнее, но все равно его можно выполнить эффективно и точно.
В разделе 6.5 мы опишем, как найти градиент с помощью алгоритма обратного рас-
пространения и его современных модификаций.
Как и для других моделей машинного обучения, для применения обучения на ос-
нове градиента нужно выбрать функцию стоимости и способ представления выхода
Do'stlaringiz bilan baham: |