[ЗАСТАВКА] В
этом уроке мы поговорим об алгоритмах оптимизации параметров нейронной сети.
Задача оптимизации параметров — это задача минимизации функции ошибки.
Функция ошибка...
функция ошибки зависит от выборки, от структуры нейросети, то есть числа слоев,
нейронов, видов функций активации, и от значения вектора параметров.
На графике показана функция ошибки для двух параметров:
по оси абсцисс и ординат отложено значение этих параметров,
а по оси аппликат — значение функции ошибки.
Функция ошибки может иметь значительное число локальных минимумов,
которые даже в пространстве малой размерности нелегко обнаружить.
Есть два типа алгоритмов:
алгоритмы стохастической оптимизации и алгоритмы градиентного спуска.
В случае стохастической оптимизации мы
случайно перебираем решения вектора параметров w там,
где они могут доставить минимум функции ошибки, например,
случайным перебором или с помощью генетического алгоритма,
который последовательно модифицирует значения вектора параметров.
Или с помощью моделируемого отжига, который изменяет значения
параметров по расписанию и сначала ищет минимум в широкой области,
а потом сужает область поиска до нахождения глобального минимума.
Алгоритм локальной аппроксимации функции ошибки минимизирует не саму
функцию ошибки, а функцию, которая ее аппроксимирует в окрестности точки w.
Например, удобно аппроксимировать с помощью квадратичной функции.
В многомерном случае эта квадратичная форма...
в многомерном случае эта квадратичная функция имеет вид квадратичной формы.
На каждом шаге алгоритма мы находим минимум такой функции и
сдвигаем окрестность,
в которой продолжаем аппроксимацию и поиск минимума исходной функции.
Алгоритм градиентного спуска предполагает, что функция ошибки дифференцируема,
то есть она квадратичная или кросс-энтропийная, и, задавая значения
параметров w, можно вычислить значение функции ошибки и ее градиент.
На рисунке по оси абсцисс и ординат показано значение
параметров — у нас опять двумерное пространство параметров,
по оси аппликат показано значение функции ошибки.
И требуется, отправляясь из исходной точки wC, спуститься к точке минимума wB,
шагая в направлении от градиента — ∇ с индексом w Q.
При этом, конечно же, надо помнить, что точка wB может оказаться как глобальным
минимумом, так и локальным минимумом, как, например, точка w с индексом A.
Градиентный спуск — это пошаговая процедура нахождения параметров.
У нас каждый следующий шаг зависит от
предыдущего и от суммы градиентов
функции ошибки на одном-единственном объекте.
Обозначим эту ошибку буквой φ,
обозначим ее частную производную по параметрам ∇wφ.
α — это величина шага, который мы делаем,
и k — это номер итерации итерационной процедуры.
Шагаем до тех пор, пока значение функции ошибки не стабилизируется.
Вариант градиентного спуска — это стохастический градиентный спуск.
Нам совсем не обязательно использовать всю выборку для вычисления градиента.
Предлагается направление градиента вычислить
для случайно выбранного объекта x, и, таким образом,
наш градиентный спуск будет выглядеть следующим образом: wk +1 — это
wk на предыдущем шаге + α — длина шага,
∇wφ — это градиент на единственном объекте.
И данная процедура использует случайно переупорядоченные объекты
и продолжается до стабилизации функции ошибки.
Очень популярный и быстрый алгоритм
— это алгоритм обратного распространения ошибки backpropagation, или backprop.
Для каждого нейрона сети и одного объекта выборки x
вычисляется значение выхода нейрона — оно зависит от выходов предыдущих нейронов,
и это вычисление называется прямым распространением.
И производную ошибки по значению нейрона и по его
параметрам — эта производная зависит от значений последующих
нейронов и называется обратным распространением.
Существует проблема затухания градиента при обратном распространении:
при больших значениях входов нейрона значения
производной функции активации стремятся к 0,
например, для сигмоидной функции и для гиперболического тангенса,
как это показано на графиках.
При этом градиент функции ошибки не распространяется по слоям.
Преимущества и недостатки обратного распространения функции ошибки.
Преимущества: градиент вычисляется за время, сравнимое с вычислением всей сети,
алгоритм подходит для многих дифференцируемых функций
активации и функции ошибки, необязательно использовать всю выборку.
Но возможна медленная сходимость к решению,
решение может быть в локальном минимуме и возможно переобучение сети.
Итак, для оптимизации используются как стохастические, так и градиентные методы.
Стохастические методы требуют многократного угадывания вектора
параметров и могут работать довольно долго.
Градиентные методы требуют дифференцирования функции ошибки,
но могут застревать в локальных минимумах,
и поэтому выбор метода оптимизации остается прикладным искусством и,
конечно же, зависит от характера решаемой задачи.
Далее мы поговорим о регуляризации и прореживании нейронной сети.