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

Математика, стоящая за функцией нейрона

Я обозначил все нейроны буквой f, которые для меня выполняют какую-то функцию. Функция может быть разной в зависимости от типов нейронов, которые вы хотите выбрать для решения сложной задачи. Но давайте начнем с линейного уравнения f(x)=Wx+B. Подробнее о линейной функции можно прочитать в блоге моего друга Пареша

X = вход нейрона

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

B = смещение для нейрона

Y = выход нейрона

Основная функция нейрона:

Суммирование (∑): выполнить суммирование всех входных данных, умноженных на веса плюс смещение.

Threshold (f): пороговая функция, которая запускает нейрон. Также известна как функция активации. Примером функции активации является ступенчатая функция, которая говорит, что результат суммирования достигает заданного порогового значения; нейрон сработает с пороговым значением, в противном случае он будет равен нулю. Выбор активации зависит от проблемы либо регрессия, классификация

Как обучается нейрон?

Процесс обучения нейрона включает в себя чтение входных данных X и попытку найти ответ Y путем настройки значения W (синаптического веса), которое является основой всего контролируемого процесса обучения. В обучении с учителем мы предоставляем сети обучающие данные, имеющие входные и выходные данные. Настоящая цель процесса обучения состоит в том, чтобы найти ок. Значение веса, которое будет соответствовать всем значениям с меньшей погрешностью. Популярный алгоритм для этого называется обратное распространение. Алгоритм обратного распространения первоначально был представлен в 1970-х годах, но его важность не была полностью оценена до знаменитой статьи 1986 года Дэвида Румельхарта, Джеффри Хинтона и Рональда Уильямса. В этой статье описывается несколько нейронных сетей, в которых обратное распространение работает намного быстрее, чем более ранние подходы к обучению, что позволяет использовать нейронные сети для решения проблем, которые ранее были неразрешимы. Сегодня алгоритм обратного распространения — это рабочая лошадка обучения в нейронных сетях.

Я смоделирую простой процесс обучения для вентиля И. Ниже приведены входные и выходные таблицы логического элемента И:

Выше приведена нейронная диаграмма с двумя входными данными, принимающими все комбинации 0 или 1. Давайте инициализируем синаптический вес некоторым значением, скажем, «0,1», и, поскольку мы будем вручную оптимизировать сеть, чтобы найти лучший вес для решения, я собираюсь используйте скорость обучения 0,1, что означает, что после каждой итерации процесса обучения я буду обновлять веса, увеличивая их на 0,1, тренироваться снова, пока мы не найдем окончательный вес, который решает вышеуказанную сеть.

Итерация 1 (первый проход)

Примените суммирование к первой записи: (0 x 0,1) + (0 x 0,1) = 0

Передайте суммирование ступенчатой ​​функции с пороговым значением, равным 1: если X ‹ 1, то 0, иначе 1, что в этом случае выводит 0

Выход ступенчатой ​​функции сравнивается с фактическим значением.

Точно так же примените к другим трем строкам значение веса 0,1.

Вы видите, что конечный результат точен на 75%, и его необходимо улучшить. Давайте проведем процесс обучения, увеличив вес, добавив 0,1.

Итерация 2 (второй проход)

Примените суммирование к первой записи: (0 x 0,2) + (0 x 0,2) = 0

Передайте суммирование ступенчатой ​​функции с пороговым значением, равным 1: если X ‹ 1, то 0, иначе 1, что в этом случае выводит на 0

Точно так же примените к другим трем строкам значение веса 0,2.

Все еще не улучшено и сидит с 75%. Продолжайте тренировочный процесс.

Итерация 3

.

.

.

Итерация 6

Применить ко всем строкам со значением веса 0,6

Точность достигла 100% с 6-й итерации.

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

В следующем блоге я попытаюсь представить описанную выше симуляцию с кодом C#, который будет более интересен программистам. Это только начало, и нам нужно понять основы, прежде чем углубляться в проектирование очень сложной сети. Быть в курсе!!!!

Исходное сообщение: http://www.tech-quantum.com/function-of-the-neuron/