October 2, 2019

Введение. Веса связей

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

Как и в нашей голове, компьютерные нейроны общаются друг с другом неравноправно. Некоторым нейронам легче докричаться до своих соседей чем другим. Благодаря этому некоторые нейроны имеют большее влияние чем другие.

Когда мы растём, развиваемся, обучаемся наш организм сам выбирает какие нейронные связи более важны для нас. Им он уделяет много энергии на развитие. Остальным же связям остаётся мало энергии, в следствие чего они деградируют и погибают, оставляя место более важным. Тем самым мы начинаем всё лучше и лучше делать то, что важно для нас. Благодаря этому получается, что разная важность связей в мозгу позволяет ему учиться.

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

В компьютере важность связи между нейронами характеризуется таким числом как вес связи. Чем больше вес связи – тем более важна эта связь по сравнению с другими. Когда к нейрону приходят разные сигналы от двух соседей-нейронов, то он будет прислушиваться к тому, связь с которым имеет больший вес.

Меняя веса связей в нейросети, можно изменить то, что она будет выдавать в качестве ответа. Однако, просто раздав каждой связи в нейросети вес, она будет совершать ошибки, пытаясь решить поставленную перед ней задачу. Запустив один раз нейросеть, она скорее всего совершит ошибку. Поэтому её веса связей нужно немного поменять чтобы этой ошибки больше не было и ответ получился верным.

Изменить веса можно двумя способами: вручную и автоматически. Менять веса связей вручную – всё равно что выполнять роль организма нейросети, выбирая какие связи для неё важны, а какие нет. Эта роль очень скучная и унылая, ведь придётся считать вес для каждой нейронной связи, которых в нейронках могут быть миллионы.

Уж лучше поручить эту роль кому-то другому, например, самой нейросети. Пусть она сама понимает, где и в чём она ошиблась, и сама себя исправляет. По итогу получится самостоятельное, автоматическое обучение нейросети, или, говоря более пафосно, машинное обучение.

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

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

Вместе они объединяются в Power-Ranger-Нейросеть, готовую решить предоставленную ей задачу настолько хорошо, насколько это возможно. Правда если задача сложная, то на это у неё уйдёт внушительное количество времени и огромные вычислительные мощности.

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

 

Придётся разобраться в таких крупных вопросах как:

Какие формулы использует компьютер? Почему они именно такие?

Что такое архитектура и топология нейронной сети и как они влияют на её обучение?

Какие существуют алгоритмы оптимизации вычислений? Как их применять?

Какие существуют алгоритмы обучения нейросетей?

Математический анализ?!!

И так далее… и так далее… и так далее…

Об этом и не только об этом мы напишем в будущих статьях этой серии если эта наберёт 10 лайков. Спасибо за прочтение!