Что такое обратное распространение? | Обучение нейронной сети

Обратное распространение — это контролируемый алгоритм обучения для обучения многослойных персептронов (искусственных нейронных сетей).

Но некоторым из вас может быть интересно, зачем нам нужно обучать нейронную сеть или в чем именно заключается смысл обучения.

Зачем нам нужно обратное распространение?

При разработке нейронной сети вначале мы инициализируем веса некоторыми случайными значениями или любой переменной для этого факта.

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

Хорошо, хорошо, мы выбрали некоторые значения веса в начале, но вывод нашей модели сильно отличается от нашего фактического вывода, т.е. значение ошибки огромно.

Теперь, как вы будете уменьшать ошибку?

По сути, что нам нужно сделать, нам нужно как-то объяснить модель, чтобы изменить параметры (веса), чтобы ошибка стала минимальной.

Скажем иначе, нам нужно обучить нашу модель.

Один из способов обучения нашей модели называется Backpropagation. Рассмотрим диаграмму ниже:

Обучение-A-Neural-Network-Backpropagation-Edureka-528x216.png

Позвольте мне резюмировать шаги для вас:

  • Вычислить ошибку — Насколько далеко выход вашей модели от фактического выхода.
  • Минимальная ошибка – Проверьте, минимизирована ли ошибка или нет.
  • Обновите параметры – Если ошибка велика, обновите параметры (веса и смещения). После этого снова проверьте ошибку. Повторяйте процесс, пока ошибка не станет минимальной.
  • Модель готова сделать прогноз — Как только ошибка станет минимальной, вы можете передать некоторые входные данные своей модели, и она выдаст результат.

Я почти уверен, теперь вы знаете, зачем нам нужно Backpropagation или зачем и в чем смысл обучения модели.

Сейчас самое время понять, что такое обратное распространение.

Что такое обратное распространение?

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

Давайте разберемся, как это работает на примере:

У вас есть набор данных с метками.

Рассмотрим приведенную ниже таблицу:

26.PNG

Теперь вывод вашей модели, когда значение «W» равно 3:

26-1.PNG

Обратите внимание на разницу между фактическим выводом и желаемым выводом:

26-2.PNG

Давайте изменим значение «W». Обратите внимание на ошибку, когда «W» = «4»

26-3.PNG

Теперь, если вы заметили, когда мы увеличиваем значение «W», ошибка увеличивается. Таким образом, очевидно, нет никакого смысла в дальнейшем увеличении значения ‘W’. Но что произойдет, если я уменьшу значение «W»? Рассмотрим таблицу ниже:

26-4.PNG

Теперь, что мы сделали здесь:

  • Сначала мы инициализировали некоторое случайное значение «W» и распространили его вперед.
  • Затем мы заметили, что есть какая-то ошибка. Чтобы уменьшить эту ошибку, мы распространились назад и увеличили значение «W».
  • После этого также мы заметили, что ошибка увеличилась. Мы узнали, что мы не можем увеличить значение «W».
  • Итак, мы снова распространились назад и уменьшили значение ‘W’.
  • Теперь мы заметили, что ошибка уменьшилась.

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

Рассмотрим график ниже:

Оптимизатор-1-768x601.png

Нам нужно достичь «Минимума глобальных потерь».

Это не что иное, как обратное распространение.

Давайте теперь разберемся с математикой обратного распространения.

Как работает обратное распространение?

Рассмотрим приведенную ниже нейронную сеть:

Обратное распространение-Пример-Обратное распространение-Edureka.png

Вышеупомянутая сеть содержит следующее:

  • два входа
  • два скрытых нейрона
  • два выходных нейрона
  • два предубеждения

Ниже приведены шаги, связанные с обратным распространением:

  • Шаг — 1: прямое распространение
  • Шаг — 2: Обратное распространение
  • Шаг – 3: объединение всех значений и расчет обновленного значения веса.

Шаг — 1: прямое распространение

Мы начнем с распространения вперед.

Прямое распространение обратное распространение Edureka.png

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

Выход-Прямое-Распространение-Обратное-Edureka-1.png

Теперь давайте посмотрим, каково значение ошибки:

Error-Backpropagation-Edureka.png

Шаг — 2: Обратное распространение

Теперь мы будем распространяться в обратном направлении. Таким образом мы попытаемся уменьшить ошибку, изменив значения весов и смещений.

Рассмотрим W5, мы рассчитаем скорость изменения ошибки относительно изменения веса W5.

Обратное распространение-Обратное распространение-Edureka.png

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

Обратное распространение-1-Обратное распространение-Edureka.png

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

Обратное распространение-2-Обратное распространение-Edureka.png

Давайте теперь посмотрим, насколько общий чистый вход O1 изменится по сравнению с W5?

Change-In-Weight-Backpropagation-Edureka-1.png

Шаг – 3: объединение всех значений и расчет обновленного значения веса.

Теперь давайте сложим все значения вместе:

Change-In-Error-WRT-Weight-Backpropagation-Edureka.png

Рассчитаем обновленное значение W5:

Updated-Weight-Value-Backpropagation-Edureka-768x183.png

  • Точно так же мы можем рассчитать и другие значения веса.
  • После этого мы снова будем распространяться вперед и вычислять результат. Снова посчитаем ошибку.
  • Если ошибка минимальна, мы тут же остановимся, иначе снова вернемся назад и обновим значения веса.
  • Этот процесс будет повторяться до тех пор, пока ошибка не станет минимальной.

Вывод:

Что ж, если мне нужно завершить обратное распространение, лучший вариант — написать для него псевдокод.

Алгоритм обратного распространения:

initialize network weights (often small random values)   **do**      **forEach** training example named ex         prediction = neural-net-output(network, ex)  _// forward pass_         actual = teacher-output(ex)         compute error (prediction - actual) at the output units         compute {\displaystyle \Delta w\_{h}} for all weights from hidden layer to output layer  _// backward pass_         compute {\displaystyle \Delta w\_{i}} for all weights from input layer to hidden layer   _// backward pass continued_         update network weights _// input layer not modified by error estimate_   **until** all examples classified correctly or another stopping criterion satisfied   **return** the network

Надеюсь, вам понравилось читать этот блог об обратном распространении. Если вы хотите читать больше таких блогов, вы можете кликните сюда.

Есть к нам вопрос? Пожалуйста, укажите это в разделе комментариев, и мы свяжемся с вами.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *