☰ Оглавление

Что осталось за сценой в задаче для одного нейрона

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

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

Давайте рассмотрим, на какие упрощения мы пошли.

Задача

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

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

Это универсальное свойство нейрона. Если бы входов было бы три — x, y, z (и ещё bias, конечно), то нейрон будет делить трёхмерное пространство по плоскости.

Поэтому, если бы мы задали нашему нейрону задачку вида:

.?..............
......####......
....####?###....
......####......
............?...

Он бы не справился. Не смог бы «осознать» эту картинку.

Именно поэтому для реальных задач используются многослойные сети.

А мы подсунули нашему нейрону такую задачку, которая будет ему по зубам.

Устройство нейрона и функция активации

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

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

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

На практике, в качестве функции активации, стараются использовать гладкие функции. Например сигмоиду.

Кстати, поэтому, настоящие нейроны, в отличии от нашего, не отвечают «да» или «нет», а лишь выдают вероятность того или иного ответа.

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

Устройство нейрона и опорный сигнал

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

Процесс обучения: обучающая подпоследовательность и переобученность

Это важный момент. Нейронная сеть (как любая другая модель в машинном обучении) может переобучиться. Это значит, что она зазубрила правильные ответы, подходящие к обучающим данным, но «не сделала выводы». Если такой сети подать данные, отличные от обучающих, она выдаст неудовлетворительные результаты.

Поэтому-то и разделяют два набора данных: на одном проводят обучение, а на другом — проверяют качество ответов нейронной сети.

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

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

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

Процесс обучения: обратное распространение

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

Однако, наш пример на столько прост, что суть метода можно и не уловить. А она не очень сложна: обучение происходит от выходных слоёв нейронов к входным. То есть, в направлении, обратном направлению принятия решения.

Метод имеет ряд тонкостей, связанных с учётом весов и вкладов разных нейронов слоя. Здесь я не буду вдаваться в детали. Думаю, что суть вы уловили.