01.09.2017

Перевод «Создай свою нейросеть» — 4

4 часть перевода готова!

Заканчиваем ходить вокруг да около и переходим непосредственно к теме книги — нейросетям.

В этой части перевода мы рассмотрим биологические нейронные сети и сравним их с традиционными компьютерами. Затем мы построим модель искусственного нейрона и в итоге перейдем непосредственно к искусственным нейросетям.

Вы можете скачать PDF версию перевода.

Приятного чтения!

Оглавление

1.6 Нейроны — природные вычислительные машины

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

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

Самый основной вычислительный элемент любого биологического мозга — нейрон.

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

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

Как много нейронов необходимо нам для выполнения интересных и сложных задач? Человеческий мозг в среднем содержит около 100 тысяч миллиардов нейронов! У плодовых мушек около 100 000 нейронов, позволяющих ей летать, питаться, избегать опасности, находить еду и выполнять много других сложных задач. Современные компьютеры сейчас могут работать симулировать работу 100 000 нейронов. У круглых червей всего 302 нейрона — сущий пустяк по сравнению с компьютерами. Однако, эти черви могут выполнять такие действия, с которыми никак не справятся традиционные компьютерные программы.

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

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

Может быть надо представлять нейроны в виде линейных функций, прямо как мы делали раньше? Идея хорошая, но нет. Ответ биологического нейрона вовсе не является результатом применения линейной функции ко входу. То есть ответ нейрона не считается так:

\[ \text{выход нейрона} = (\text{константа} \times \text{вход}) + (\text{возможно, еще константа}) \]

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

Функция, которая принимает входной сигнал и создает выходной, принимая во внимание некоторый порог называется функцией активации. Существует много разных функций активации. Одна из таких — функция единичного скачка:

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

Мы можем улучшить функцию единичного скачка. S-образная функция на графике ниже называется сигмоида. Она гораздо более гладкая, чем угловатая функция единичного скачка. Природа редко использует острые углы.

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

Вот так выглядит уравнение сигмоиды, которую также часто называют логистической функцией:

\[ y = \frac{1}{1+e^{-x}} \]

На первый взгляд уравнение выглядит страшно. Буква ​\( e \)​ это математическая константа, которая равна 2.71828… Это очень интересное число, которое встречается в любых областях математики и физики. Точки в конце 2.71828 я поставил потому что цифры дробной части этого числа никогда не заканчиваются. Такие числа в математике трансцендентными. Это очень интересная тема, но для наших целей это не имеет значения и вы можете считать, что ​\( e=2.71828 \)​.

Интересный факт. Если ​\( x=0 \)​, то ​\( e^{-x} = 1 \)​, так как любое число в степень 0 равно 1. Имеем ​\( 1/(1+1) = 1/2 \)​. Это означает, что сигмоида пересекает ось ​\( y \)​ в точке ​\( y = 1/2 \)​.

На самом деле есть еще одна серьезная причина использовать именно сигмоиду вместо множества других ​\( S \)​-образных функций, которые тоже могут отвечать за выход нейрона. Причина в том, что сигмоиду очень удобно использовать для вычислений, которые мы вскоре будем делать. С другими функциями процесс серьезно усложняется.

Давайте теперь попробуем построить модель искусственного нейрона.

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

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

 

Если сумма всех сигналов оказалось меньше порога, то нейрон подавляет проходящий через него сигнал. А вот если ​\( x \)​ оказался больше или равен порогу, то нейрон пропускает сигнал через сигмоид и выдает результат. Важно заметить, что нейрон может отреагировать в том случае, если на некоторые входы поступил очень мощный сигнал, а на остальные небольшой. А может получиться, что на все входы поступили не очень мощные сигналы, но их суммы все же хватило для преодоления порога и активации нейрона. Именно в этом и кроется двойственность и неопределенность, присущая нейронам, а значит и нейронным сетям.

В реальности нейронные сети принимают электрический сигнал с помощью дендритов и если сумма сигналов ото всех дендритов выше порога, то нейрон передает измененный сигнал по аксону к дендритам других нейронов.

Рисунок ниже демонстрирует этот принцип связи нейронов друг с другом:

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

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

На диаграмме выше изображено три слоя, в каждом из которых находятся по 3 искусственных нейрона. Каждый нейрон имеет связи со всеми нейронами в предыдущем и следующим слоях. Великолепно! Но что из диаграммы выше отвечает за процесс обучения? У нас ведь должны быть какие-то параметры, которые мы можем изменять для минимизации погрешности. Есть ли на этой диаграмме что-то, что можно произвольно менять?

Можно пытаться менять сумму входящих в нейрон сигналов. Можно также искать подходящий наклон сигмоиды. На практике заниматься такими расчетами очень сложно. Самый простой способ — менять силу связей между искусственными нейронами.

Сила связи выражается ее весом. Вес связи умножается на значение проходящего по связи сигнала. Маленький вес будет уменьшать проходящий по этой связи сигнал. Большой вес дополнительно усилит сигнал.

Поясню, что означают эти маленькие буквы с цифрами в индексах. Вес ​\( w_{3,2} \)​ означает вес связи от искусственного нейрона 3 к нейрону 2 следующего слоя. Например, ​\( w_{1,2} \)​ есть значение, на которое уменьшается или увеличивается сигнал, который идет от первого нейрона в слое ко второму нейрону в следующем слое. На диаграмме ниже подсвечены рассмотренные выше связи и их веса:

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

Это как? Дело в том, что в процессе обучения веса некоторых связей станут равны 0 или очень близко к нему. А это означает, что они просто подавят проходящий через связь сигнал, так как любое число при умножении на 0 тоже равно 0. Такие «мертвые» связи никакой роли играть не будут. По мере обучения, нейросеть сама определяет, какие связи ей нужны, а какие нет. Лучшим шагом от нас тут будет просто связать все нейроны друг с другом и предоставить сети решать самой, что нужно, а что нет.

Ключевые моменты

  • Биологические мозги способны решать сложнейшие задачи полета, пропитания, изучения других языков и избегания хищников несмотря на то, что они работают медленнее и имеют меньше памяти, чем современные компьютеры.
  • Биологические мозги не позволяют испорченным или зашумленным сигналам серьезно повлиять на результаты в сравнении с традиционными компьютерами.
  • Искусственные нейронные сети являются упрощенными моделями биологических мозгов.
Аватара автора Петр Радько

Петр Радько

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

Комментарии

viral
viral

Респект. Честно я конечно верил что ты займёшься в плотную нейросетями на форуме, но не ожидал что так оперативно будешь переводить.

если не секрет какую вордпресс тему используете на сайте?

wpDiscuz
Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: