Как работает обратное распространение в нейронных сетях



Книга Как работает обратное распространение в нейронных сетях



Нейронные сети обучаются путем итеративной настройки параметров (весов и смещений) на этапе обучения. В начале параметры инициализируются случайно сгенерированными весами, а смещения устанавливаются равными нулю. Затем данные пропускаются через сеть в прямом направлении, чтобы получить выходные данные модели. И наконец, выполняется обратное распространение. Процесс обучения модели обычно включает в себя несколько итераций прямого прохода, обратного распространения и обновления параметров.


В этой статье мы поговорим о том, как обратное распространение обновляет параметры после прямого прохода, и рассмотрим простой, но подробный пример обратного распространения. Прежде чем приступить, определимся с данными и архитектурой, которые будем использовать.




Данные и архитектура


Набор данных содержит три признака, а целевой класс имеет только два значения  —  1 для прохода и 0 для ошибки. Задача состоит в том, чтобы отнести точку данных к одной из двух категорий, т. е. выполнить двоичную классификацию. Мы будем использовать только один обучающий пример для большей понятности.


Рисунок 1

На рисунке 1 показаны данные и архитектура нейронной сети, которые мы будем использовать. Обучающий пример помечен соответствующим фактическим значением 1. Эта нейронная сеть 3-4-1 является сетью с плотной связью: каждый узел в текущем слое связан со всеми нейронами в предыдущем слое, за исключением входного. Однако мы исключили некоторые связи, чтобы излишне не нагружать рисунок. Прямой проход дает на выходе 0,521.


Важно понимать: прямой проход позволяет информации идти в одном направлении  —  от входного к выходному слою, а обратное распространение выполняет противоположную задачу. Оно проводит данные от выхода назад, обновляя параметры (веса и смещения).



Обратное распространение  —  метод контролируемого обучения, используемый в нейронных сетях для обновления параметров, чтобы сделать прогнозы сети более точными. Процесс оптимизации параметров осуществляется с помощью алгоритма оптимизации, называемого градиентным спуском (мы разберем это понятие чуть ниже).



Прямой проход дает прогноз (yhat) цели (y) с потерями, которые фиксируются функцией затрат (E), определенной как:


Уравнение 1. Функция затрат

Здесь m  —  количество примеров обучения, а L  —  ошибка/потери, возникающие при предсказании моделью значения yhat вместо фактического значения y. Целью является минимизация затрат E. Это достигается путем дифференцирования E относительно параметров (wrt, весов и параметров) и регулировки параметров в направлении, противоположном градиенту (поэтому алгоритм оптимизации называется градиентным спуском).


В этой статье мы рассматриваем обратное распространение на примере обучения 1 (m=1). При таком рассмотрении E сводится к следующему уравнению:


Уравнение 2. Функция затрат для одного примера обучения



Выбор функции потерь L


Функция потерь L определяется в зависимости от поставленной задачи. Для задач классификации подходящими функциями потерь являются кросс-энтропия (также известная как логарифмическая функция потерь) и кусочно-линейная функция потерь, тогда как для задач регрессии подходят такие функции потерь, как средняя квадратичная ошибка (MSE) и средняя абсолютная ошибка (MAE).


Кросс-энтропия  —  функция, подходящая для данной задачи двоичной классификации (данные имеют два класса, 0 и 1). Кросс-энтропия как функция потерь для двоичной классификации может быть применена к данному примеру прямого прохода на Рисунке 1, как показано ниже:


Уравнение 3. Кросс-энтропия для двоичной классификации, примененная к нашему примеру

Здесь t=1  —  истинная метка, yhat=0,521  —  выход модели, а ln  —  натуральный логарифм по основанию 2.


Поскольку теперь мы понимаем архитектуру нейронной сети и функцию затрат, которую будем использовать, можем перейти непосредственно к рассмотрению шагов проведения обратного распространения.




Данные и параметры


В таблице ниже приведены данные по всем слоям нейронной сети 3–4–1. На 3-нейронном входе указаны значения из данных, которые мы предоставляем модели для обучения. Второй/скрытый слой содержит веса (w) и смещения (b), которые нужно обновить, а выход (f) на каждом из 4 нейронов во время прямого прохода. Выход содержит параметры (w и b) и выход модели (yhat)  —  это значение фактически является прогнозом модели на каждой итерации обучения модели. После одного прохода вперед yhat=0,521.


Рисунок 2. Инициализация данных и параметров

A. Уравнения обновления и функция потерь


Важно! Вспомните информацию из предыдущего раздела: E(θ)=L(y, yhat), где θ  —  это параметры (веса и смещения). То есть, E  —  это функция от y и yhat, а yhat=g(wx+b), следовательно, yhat  —  это функция от w и b. x  —  переменная данных, а g  —  функция активации. E является функцией w и b и, следовательно, может быть дифференцирована относительно этих параметров.


Параметры на каждом слое обновляются с помощью следующих уравнений:


Уравнения 4. Уравнения обновления

Здесь t  —  шаг обучения, ϵ  —  скорость обучения (гиперпараметр, задаваемый пользователем). Он определяет скорость обновления весов и смещений. Мы будем использовать ϵ=0,5 (это произвольный выбор).


Из уравнений 4 получаются следующие обновленные суммы


Уравнение 5. Обновление сумм

Как было сказано ранее, поскольку мы работаем с двоичной классификацией, мы будем использовать в качестве функции потерь кросс-энтропию, определяемую как:


Уравнение 6. Кросс-энтропия как функция потерь для двоичной классификации

Мы будем использовать сигмоидную активацию для всех слоев:


Уравнение 7. Сигмоидная функция.

Здесь z=wx+b  —  взвешенный вход в нейрон плюс смещение.




B. Обновление параметров на выходном скрытом слое


В отличие от прямого прохода, обратное распространение работает в обратном направлении от выходного слоя к слою 1. Нам нужно вычислить производные/градиенты относительно параметров для всех слоев. Для этого нужно понять цепное правило дифференцирования.


Цепное правило дифференцирования гласит, что если y=f(u) и u=g(x), т. е. y=f(g(x))), то производная от y в отношении x будет равна:



Проще говоря, нужно поработать над производной внешней функции, прежде чем переходить к внутренней.


В нашем случае мы имеем:


Цепное правило дифференцирования

Возьмем в работу пример обновления w²₁₁ и b²₁. Будем следовать маршрутам, показанным ниже.


Рисунок 3. Информационный поток обратного распространения

B1. Вычисление производных для весов


По цепному правилу дифференцирования имеем:



Примечание: при оценке приведенных выше производных относительно w²₁₁ все остальные параметры рассматриваются как константы, т. е. w²₁₂, w²₁₃, w²₁₄ и b²₁. Производная от константы равна 0, поэтому некоторые значения были исключены в приведенной выше производной.


Далее приведена производная сигмоидной функции.



Далее  —  производная функции потерь кросс-энтропии.



Производные по отношению к трем другим весам на выходном слое следующие (можете проверить):



B2. Вычисление производных для смещения


Нам нужно вычислить:



В предыдущих разделах мы уже вычислили ∂E и ∂yhat, осталось только выполнить следующие действия:



Мы использовали те же аргументы, что и раньше. Все остальные переменные, кроме b²₁, считаются константами, поэтому при дифференцировании они уменьшают 0.



До сих пор мы вычисляли градиенты относительно всех параметров на слоях “выход-вход”.


Рисунок 4. Градиенты на слоях “выход-вход”

На данном этапе мы уже готовы обновить все веса и смещения на слоях “выход-вход”.


B3. Обновление параметров на слоях “выход-вход”



Вычислите остальные значения таким же образом и сверьте их с таблицей ниже.


Рисунок 5. Обновленные параметры на слоях “скрытый-выход”

C. Обновление параметров на слое “скрытый-выход”


Как и раньше, нам нужны производные E относительно всех весов и смещений на этих слоях. Всего у нас есть 4x3=12 весов для обновления и 4 смещения. В качестве примера возьмем w¹₄₃ и b¹₂. Маршруты показаны на рисунке ниже.


Рисунок 6. Обратное распространение информации на слои “скрытый-вход”

C1. Градиенты весов


Для весов нам нужно вычислить производную (следуйте по маршруту на Рисунке 6, если следующее уравнение покажется вам слишком сложным):





По мере того, как мы будем проходить через каждую из приведенных выше производных, обратите внимание на следующие важные моменты.



  • На выходе модели (при нахождении производной E по отношению к yhat) мы фактически дифференцируем функцию потерь.

  • На выходах слоев (f), где мы дифференцируем wrt z, мы находим производную функции активации.

  • В двух вышеприведенных случаях дифференцирование относительно весов и смещений данного нейрона дает одинаковые результаты.

  • Взвешенные входы (z) дифференцируются относительно параметров (w и b), которые нужно обновить. В этом случае все параметры остаются постоянными, кроме интересующего нас параметра.




Выполнив тот же процесс, что и в разделе B, получаем следующее.



  • Взвешенные входы для слоя 1:




  • Производную сигмоидной функции активации, примененной к первому слою:




  • Взвешенные входы выходного слоя. f-значения  —  выходы скрытого слоя:




  • Функцию активации, применяемую к выходу последнего слоя:




  • Производную функции потерь кросс-энтропии для двоичной классификации (wrt по отношению к yhat):



Мы можем объединить все это в следующее уравнение:



C2. Градиенты смещения


Используя те же понятия к b¹₂ мы имеем:



Все значения градиентов для слоев “скрытый-вход” приведены в таблице ниже:


Рисунок 7. Градиенты на слоях “скрытый-вход”

На этом этапе мы готовы к вычислению обновленных параметров на слоях “скрытый-вход”.


C3. Обновление параметров на слоях “скрытый-вход”


Вернемся к уравнениям обновления и поработаем над обновлением параметров w¹₁₃ и b¹₃.



Итак, сколько же параметров нужно обновить?


У нас есть 4x3=12 весов и 4x1=4 смещения на слоях “скрытый-вход”, а также 4x1=4 веса и 1 смещение на слоях “выход-скрытый”. Это в общей сложности 21 параметр. Они называются обучаемыми параметрами.


Все обновленные параметры для слоев “скрытый-вход” показаны ниже:


Рисунок 8. Обновленные параметры для слоев “скрытый-вход”

Теперь у нас есть обновленные параметры для всех слоев на Рисунке 8 и Рисунке 5 благодаря обратному распространению ошибки. Выполнение прямого прохода с этими обновленными параметрами дает прогноз модели: yhat, равный 0,648 по сравнению с 0,521. Это означает, что модель обучается  —  приближается к истинному значению 1 после двух итераций обучения. Другие итерации дают результаты 0,758, 0,836, 0,881, 0,908 и 0,925.




Определения



  • Эпоха. Одна эпоха  —  процесс, при котором весь набор данных проходит через сеть один раз. Она включает в себя один инстанс прямого прохода и обратного распространения.

  • Размер пакета. Это количество примеров обучения, одновременно пропущенных через сеть. В данном случае у нас один пример обучения. При наличии большого набора данных их можно пропускать через сеть пакетами.

  • Количество итераций. Одна итерация равна одному проходу с использованием примеров обучения, заданных в качестве размера пакета. Один проход  —  это прямой проход и обратное распространение.


Пример. Если у нас есть 2000 примеров обучения и задан размер пакета 20, то для завершения 1 эпохи потребуется 100 итераций.


Заключение


В этой статье мы рассмотрели обратное распространение на примере. Мы увидели, как цепное правило дифференцирования используется для получения градиентов различных уравнений  —  функции потерь, функции активации, уравнений взвешивания и уравнений выходного слоя. Мы также обсудили, как можно использовать производную по отношению к функции потерь для обновления параметров на каждом слое.



86   0  
    Ничего не найдено.

Добавить ответ:
Отменить.