Чтобы лучше понять, как работает обратное распространение

Хотя использование Excel/Google Таблиц для решения реальной проблемы с алгоритмами машинного обучения, безусловно, плохая идея, реализация алгоритма с нуля с помощью простых формул и простого набора данных очень полезна. понять, как работает алгоритм.

Я написал эти статьи, чтобы объяснить, как градиентный спуск работает для линейной регрессии и логистической регрессии:

В этой статье я расскажу, как реализовал простую нейронную сеть с градиентным спуском (или обратным распространением) в Excel.

Если вы не знакомы с принципом нейронных сетей, я написал эту статью, чтобы объяснить его очень наглядно. И если вы хотите реализовать это с помощью python с нуля, я также написал эту статью.

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

Теперь давайте запачкаем руки!

Google Sheet для ML с нуля

Если вы хотите получить Google Sheet, поддержите меня на Ko-fi.

И вы можете получить все таблицы Google, которые я создал (линейная регрессия с градиентным спуском, логистическая регрессия, нейронные сети, KNN, k-средние и многое другое) по ссылке ниже.

https://ko-fi.com/s/4ddca6dff1

Простая нейронная сеть

Набор данных

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

Нейронная сеть

Данные неразделимы линейно. Таким образом, логистической регрессии будет недостаточно. Если вы читали мою статью о том, сколько слоев вы должны выбрать при построении нейронной сети, то должны знать, что для этого набора данных будет достаточно одного скрытого слоя с двумя нейронами. Здесь мы будем использовать сигмовидную функцию в качестве функции активации.

Чтобы напомнить, что нейронная сеть — это математическая функция, вот функция, связанная с графиком выше.

Как видите, диаграмма нейронной сети с кружками и ссылками намного нагляднее показывает все коэффициенты.

Реализация функции

На листе m (для модели) листа Excel/Google я реализую функцию со следующими значениями коэффициентов.

Как вы знаете, если вы читали эту статью о функции стоимости, существует несколько глобальных минимумов. Это только один набор (среди прочих) удовлетворительных значений этих коэффициентов.

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

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

Это была легкая часть. Теперь вопрос: как эти значения находятся для коэффициентов? Давайте сделаем часть обратного распространения.

Градиентный спуск

В листе gd (для градиентного спуска) вы можете найти все детали расчета.

Входы

Сначала у нас есть входные данные:

И начальные значения для коэффициентов. Таким образом, вы можете изменить эти значения, чтобы поиграть с градиентным спуском.

Прямое распространение

Для столбцов от AG до BP мы имеем фазу прямого распространения. Сначала мы вычисляем A1 и A2, затем выход.

Функция стоимости

Для столбцов от BQ до CN мы вычисляем ошибки и функцию стоимости. Мы стараемся делать все расчеты подробно, чтобы избежать ошибок.

Напомним, есть функция стоимости:

Обратное распространение

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

Для столбцов от CO до DL у вас есть частные производные для a11 и a12:

В столбцах от DM до EJ у вас есть частные производные для b11 и b12:

В столбцах от EK до FH у вас есть частные производные для a21 и a22:

В столбцах от FI до FT у вас есть частные производные для b2:

И, наконец, мы суммируем все частные производные, связанные со всеми 12 наблюдениями, в столбцах от Z до FI.

Градиентный спуск

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

Во время спуска функция стоимости снижается, поэтому мы также можем это визуализировать. Я вычисляю в столбце Y.

Для каждого набора значений коэффициентов мы можем визуализировать вывод нейронной сети. Я использовал лист mh (модель скрыта) для создания следующего графика:

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

Заключение

Как видите, для набора данных из 12 наблюдений мы можем реализовать градиентный спуск в Excel. С 300 итерациями, шагом 0,1 и некоторыми хорошо выбранными начальными значениями мы можем создать несколько хороших визуализаций градиентного спуска и удовлетворительный набор значений для 7 определяемых коэффициентов.

Играйте с Google Таблицей!

Вы можете изменить некоторые значения и визуализировать все промежуточные результаты:

  • набор данных
  • начальные значения
  • шаг градиентного спуска

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

Нейронная сеть — это один из видов контролируемого алгоритма машинного обучения. Хотите получить полный обзор алгоритмов контролируемого машинного обучения? Тогда вам стоит прочитать эту статью: