Немножко о нейронных сетях 21
Простой пример рабочей сети.
Рассмотрим пример сети, которая будет заниматься распознаванием примитивных картинок. В процессе обучения мы "запишем" в сеть несколько образов. Затем, в процессе использования, мы будем подавать на вход искаженные образы, а сеть должна будет определить, какой же образ имелся в виду.
В качестве "картинок" мы будем использовать поле 4х4 пикселя, причем каждый пиксель может быть либо закрашен (тогда на вход подается 1), либо не закрашен (тогда на вход подается 0). Количество входов, соответственно, равно 16, т.е. по одному входу на каждый пиксель. Пример картинки:
Выходов у нас тоже будет 16, т.е. на каждый пиксель. Номера входов и выходов будут соответствовать порядковому номеру пикселя: с 1го по 4 - верхняя строка, с 5 по 8 - вторая строка и так далее. Нейронная сеть в общем будет выглядеть следующим образом:
Напомню функции составных частей сети:
Каждый нейрон вычисляет сумму всех приходящих на него значений, а затем округляет полученное число: если оно больше 0, то на выходе устанавливает значение 1, иначе - 0.
Каждая связь (синапс) имеет свой коэффициент (множитель). Значение, установленное на выходе нейрона, передается на каждый нейрон следующего слоя с умножением на вес соответствующего синапса.
Процесс обучения выглядит следующим образом:
Подаем на вход один из оригинальных образов;
Смотрим, что получается на выходе;
Вычисляем ошибку на каждом выходе;
Корректируем веса синапсов;
Повторяем операцию с другими образами до тех пор, пока ошибка не исчезнет.
Поясню третий пункт: так как на вход мы подали оригинальный образ, то ясно, что после "распознавания" нейронной сетью, он не должен поменяться. Поэтому ошибку, например, на 1-м выходе, можно вычислить как:
С учетом того, что на входах и выходах у нас всегда либо 0, либо 1, то ошибки могут принимать значения: 0, 1, -1.
Четвертый пункт достоин отдельного поста, так как в нем заложена вся суть метода обратного распространения ошибки. Но пока что нам нужно понять в целом, как работает обучение, поэтому на пальцах скажем следующее:
Если ошибка на выходе какого-то нейрона равна 0, то все веса на входных связях правильные, их не корректируем.
Если ошибка на выходе равна 1, т.е. вход больше, чем выход, значит, сигнал слишком ослабляется. Увеличим веса на небольшое значение, называемое шагом обучения. Порядок шага обучения для нашего примера - 0,01.
Если ошибка на выходе равна -1, значит, веса нужно, наоборот, уменьшить.
С учетом этих соображений, для синапса, проходящего от нейрона номер i к нейрону с номером j, вес после корректировки можно определить следующим образом:
Где step - шаг обучения, e_j - ошибка на выходе j-го нейрона, а g_ij - коэффициент, учитывающий влияние изменения веса синапса на выходное значение при текущих значениях входа. Рассмотрим, например, нейрон №1 третьего слоя: он связан со всеми нейронами второго слоя. Если на выходе какого-то из нейронов второго слоя установилось значение 0, то, как ни меняй вес синапса, соединяющего этот нейрон с нашим, значение на нашем нейроне не изменится, ведь вес будет умножаться на 0. Поэтому производить корректировку этого синапса на основании данных текущего примера бессмысленно. А вот если на выходе нейрона второго слоя установилась 1, то при изменении веса синапса, соединяющего его с нашим нейроном №1, выходное значение нашего нейрона может измениться, т.е. можно исправить ошибку за счет корректировки веса.
На самом-то деле у коэффициента g куда более интересный математический смысл, но об этом - в отдельном посте.
Что ж, здесь мы вплотную подошли к этапу, где нам потребуется немножко математики. Прежде чем приступить к ней, посмотрим, как работает наша сеть после обучения.
Подадим на вход искаженные образы, и посмотрим, как распознает их система:





Наука | Научпоп
9.7K постов83.1K подписчиков
Правила сообщества
Основные условия публикации
- Посты должны иметь отношение к науке, актуальным открытиям или жизни научного сообщества и содержать ссылки на авторитетный источник.
- Посты должны по возможности избегать кликбейта и броских фраз, вводящих в заблуждение.
- Научные статьи должны сопровождаться описанием исследования, доступным на популярном уровне. Слишком профессиональный материал может быть отклонён.
- Видеоматериалы должны иметь описание.
- Названия должны отражать суть исследования.
- Если пост содержит материал, оригинал которого написан или снят на иностранном языке, русская версия должна содержать все основные положения.
- Посты-ответы также должны самостоятельно (без привязки к оригинальному посту) удовлетворять всем вышеперечисленным условиям.
Не принимаются к публикации
- Точные или урезанные копии журнальных и газетных статей. Посты о последних достижениях науки должны содержать ваш разъясняющий комментарий или представлять обзоры нескольких статей.
- Юмористические посты, представляющие также точные и урезанные копии из популярных источников, цитаты сборников. Научный юмор приветствуется, но должен публиковаться большими порциями, а не набивать рейтинг единичными цитатами огромного сборника.
- Посты с вопросами околонаучного, но базового уровня, просьбы о помощи в решении задач и проведении исследований отправляются в общую ленту. По возможности модерация сообщества даст свой ответ.
Наказывается баном
- Оскорбления, выраженные лично пользователю или категории пользователей.
- Попытки использовать сообщество для рекламы.
- Фальсификация фактов.
- Многократные попытки публикации материалов, не удовлетворяющих правилам.
- Троллинг, флейм.
- Нарушение правил сайта в целом.
Окончательное решение по соответствию поста или комментария правилам принимается модерацией сообщества. Просьбы о разбане и жалобы на модерацию принимает администратор сообщества. Жалобы на администратора принимает и общество Пикабу.