Что такое веса в нейросети

Синаптические веса в нейронных сетях – просто и доступно

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

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Автоматические методы обучения искусственных нейронных сетей совершенствуются постоянно. Уже сейчас автоматизм достиг такого уровня, что начальные значения весов можно задавать любые. Действительно, компьютерная программа будет постепенно корректировать веса в сторону уменьшения ошибки, и откуда начинать – не так уж и важно. Чем дальше начальная совокупность от решения, тем больше времени пройдет, вот и вся разница. Все близко к тому, что нажал кнопку, пошел в бассейн, пришел – сеть обучена. Если сеть посерьезнее, то нажал кнопку, уехал в отпуск, приехал через две недели – сеть обучена. Перед нажатием кнопки нужно только архитектуру задать. Хотя программы могут уже сами корректировать архитектуру сети, все более и более автоматизируясь. Так, с некоторой точки зрения, совокупность весов, а также методы их подбора, могут быть некими черными ящиками, в которых что-то как-то происходит и на выходе получаем допустимый уровень ошибки. Есть случаи, когда никто и не ожидал наличия закономерностей, а черный ящик взял и нашел. Например, в сеть заложили параметры – рост и вес. И результат – мужчина/женщина. Сеть самообучилась и выявила закономерность, и смогла на тестовой выборке достаточно точно определять, это мужчина или женщина. Хотя до этого никто и не задумывался именно об этой закономерности. Так что в принципе, можно совсем не изучать этот вопрос, полностью полагаясь на математическую теорию и компьютерное моделирование.

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

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

Прежде всего, освежим термины. Что есть нейронная сеть, синапсы и веса.

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

Нервную систему человека можно рассматривать как трехступенчатую.

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

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

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Синапсы – места соединения аксона одного нейрона с телом или отростком (дендритом или аксоном) другого нейрона. Через синапсы сигналы передаются от нейрона к нейрону.

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

У каждого синапса есть свой «вес», то есть как бы своя «важность», придаваемая значению сигнала, проходящего через данный синапс.

Получаем модель нейрона из трех элементов:

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

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

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросетиЧто такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

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

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Что все эти линии, кружочки и взвешенные суммы означают на практике?

Предположим, нужно определить, является ли объект автомобилем. Подходим, начинаем осматривать, заполняем чек-лист. Крыша есть – ставим галочку, добавляем баллы. Стекла есть, двери есть, щетки-дворники есть, четыре колеса есть – все это плюс баллы. При достижении заданного количества баллов считаем, что перед нами автомобиль. А вот если есть пропеллер, то это уже не автомобиль. Это может быть самолет, вертолет, какая-то специальная лодка, но не автомобиль. То есть важность наличия пропеллера такова, что сразу перечеркивает все «автомобильные» баллы до этого. В этом случае наличию пропеллера мы придадим большой «отрицательный» вес. Теперь посмотрим на крышу. Есть автомобили и без крыши. То есть наличие крыши не так важно для определения, что перед нами автомобиль, как, например, наличие колес. Наличие крыши скажет нам, что перед нами скорее автомобиль, чем котик или кружка, но не скажет точно, это автомобиль или нет. «Вес» наличия крыши будет меньше «веса» наличия колес. А если мы будем сравнивать автомобиль и телегу, то по наличию четырех колес можно и перепутать. Хорошо, что наличие мотора исправит ситуацию. Когда мы сложим все баллы, показывающие важность наличия данного пункта, мы определим, что баллов «автомобиль» больше, чем баллов «телега» или баллов «самолет». Вот так и определяется важность какого-либо параметра. Аналогично, для определения, что это котик важно наличие ушек, глаз, лап, усов, хвоста и так далее.

Суть синаптических весов от этого не меняется. В сети в 200 слоев и в сети в 1 слой – суть остается той же. Поэтому рассмотрим простой наглядный пример.

Рассмотрим обычный 13-ти сегментный цифровой индикатор.

Задача – определить цифру по горящим сегментам.

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Каждый сегмент будем считать рецептором.

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Если сегмент горит, то его значение равно 1, если не горит, то 0.

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

Составим таблицу где сторонами будут номер сегмента 1-13 и цифра 1-9.

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

В нашем примере нужно заполнить таблицу коэффициентами таким образом, чтобы при построчном суммировании перемножений коэффициентов и значений сегментов (1 – горит, 0 – не горит) максимальная сумма была бы в строке, соответствующей горящей цифре.

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

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

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Зададим первоначальные веса.

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Когда горят все сегменты, то максимальная сумма равна 13 и соответствует цифре «8».

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Отключим сегмент 13. Это соответствует цифре «0».

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Видим, что максимальная сумма равна 12, но одновременно в двух строках – цифры «8» и «0». Нужно скорректировать коэффициенты таким образом, чтобы сумма 12 горящих сегментов цифры «0» превышала бы сумму 13 горящих сегментов цифры «8». В нашем случае коэффициент должен быть просто больше 13/12, например, 1.1.

Теперь видим, что если горят сегменты цифры «0», то сумма в строке цифры «0» максимальна.

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Таким образом получаем конечную совокупность весов.

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

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

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

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

Источник

Нейронные сети для начинающих. Часть 2

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Добро пожаловать во вторую часть руководства по нейронным сетям. Сразу хочу принести извинения всем кто ждал вторую часть намного раньше. По определенным причинам мне пришлось отложить ее написание. На самом деле я не ожидал, что у первой статьи будет такой спрос и что так много людей заинтересует данная тема. Взяв во внимание ваши комментарии, я постараюсь предоставить вам как можно больше информации и в то же время сохранить максимально понятный способ ее изложения. В данной статье, я буду рассказывать о способах обучения/тренировки нейросетей (в частности метод обратного распространения) и если вы, по каким-либо причинам, еще не прочитали первую часть, настоятельно рекомендую начать с нее. В процессе написания этой статьи, я хотел также рассказать о других видах нейросетей и методах тренировки, однако, начав писать про них, я понял что это пойдет вразрез с моим методом изложения. Я понимаю, что вам не терпится получить как можно больше информации, однако эти темы очень обширны и требуют детального анализа, а моей основной задачей является не написать очередную статью с поверхностным объяснением, а донести до вас каждый аспект затронутой темы и сделать статью максимально легкой в освоении. Спешу расстроить любителей “покодить”, так как я все еще не буду прибегать к использованию языка программирования и буду объяснять все “на пальцах”. Достаточно вступления, давайте теперь продолжим изучение нейросетей.

Что такое нейрон смещения?

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Перед тем как начать нашу основную тему, мы должны ввести понятие еще одного вида нейронов — нейрон смещения. Нейрон смещения или bias нейрон — это третий вид нейронов, используемый в большинстве нейросетей. Особенность этого типа нейронов заключается в том, что его вход и выход всегда равняются 1 и они никогда не имеют входных синапсов. Нейроны смещения могут, либо присутствовать в нейронной сети по одному на слое, либо полностью отсутствовать, 50/50 быть не может (красным на схеме обозначены веса и нейроны которые размещать нельзя). Соединения у нейронов смещения такие же, как у обычных нейронов — со всеми нейронами следующего уровня, за исключением того, что синапсов между двумя bias нейронами быть не может. Следовательно, их можно размещать на входном слое и всех скрытых слоях, но никак не на выходном слое, так как им попросту не с чем будет формировать связь.

Для чего нужен нейрон смещения?

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети
Нейрон смещения нужен для того, чтобы иметь возможность получать выходной результат, путем сдвига графика функции активации вправо или влево. Если это звучит запутанно, давайте рассмотрим простой пример, где есть один входной нейрон и один выходной нейрон. Тогда можно установить, что выход O2 будет равен входу H1, умноженному на его вес, и пропущенному через функцию активации (формула на фото слева). В нашем конкретном случае, будем использовать сигмоид.

Из школьного курса математики, мы знаем, что если взять функцию y = ax+b и менять у нее значения “а”, то будет изменяться наклон функции (цвета линий на графике слева), а если менять “b”, то мы будем смещать функцию вправо или влево (цвета линий на графике справа). Так вот “а” — это вес H1, а “b” — это вес нейрона смещения B1. Это грубый пример, но примерно так все и работает (если вы посмотрите на функцию активации справа на изображении, то заметите очень сильное сходство между формулами). То есть, когда в ходе обучения, мы регулируем веса скрытых и выходных нейронов, мы меняем наклон функции активации. Однако, регулирование веса нейронов смещения может дать нам возможность сдвинуть функцию активации по оси X и захватить новые участки. Иными словами, если точка, отвечающая за ваше решение, будет находиться, как показано на графике слева, то ваша НС никогда не сможет решить задачу без использования нейронов смещения. Поэтому, вы редко встретите нейронные сети без нейронов смещения.

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

ВАЖНО знать, что иногда на схемах не обозначают нейроны смещения, а просто учитывают их веса при вычислении входного значения например:

input = H1*w1+H2*w2+b3
b3 = bias*w3

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

Как сделать чтобы НС давала правильные ответы?

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

Что такое градиентный спуск?

Это способ нахождения локального минимума или максимума функции с помощью движения вдоль градиента. Если вы поймете суть градиентного спуска, то у вас не должно возникнуть никаких вопросов во время использования метода обратного распространения. Для начала, давайте разберемся, что такое градиент и где он присутствует в нашей НС. Давайте построим график, где по оси х будут значения веса нейрона(w) а по оси у — ошибка соответствующая этому весу(e).

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Посмотрев на этот график, мы поймем, что график функция f(w) является зависимостью ошибки от выбранного веса. На этом графике нас интересует глобальный минимум — точка (w2,e2) или, иными словами, то место где график подходит ближе всего к оси х. Эта точка будет означать, что выбрав вес w2 мы получим самую маленькую ошибку — e2 и как следствие, самый лучший результат из всех возможных. Найти же эту точку нам поможет метод градиентного спуска (желтым на графике обозначен градиент). Соответственно у каждого веса в нейросети будет свой график и градиент и у каждого надо найти глобальный минимум.

Так что же такое, этот градиент? Градиент — это вектор который определяет крутизну склона и указывает его направление относительно какой либо из точек на поверхности или графике. Чтобы найти градиент нужно взять производную от графика по данной точке (как это и показано на графике). Двигаясь по направлению этого градиента мы будем плавно скатываться в низину. Теперь представим что ошибка — это лыжник, а график функции — гора. Соответственно, если ошибка равна 100%, то лыжник находиться на самой вершине горы и если ошибка 0% то в низине. Как все лыжники, ошибка стремится как можно быстрее спуститься вниз и уменьшить свое значение. В конечном случае у нас должен получиться следующий результат:

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Представьте что лыжника забрасывают, с помощью вертолета, на гору. На сколько высоко или низко зависит от случая (аналогично тому, как в нейронной сети при инициализации веса расставляются в случайном порядке). Допустим ошибка равна 90% и это наша точка отсчета. Теперь лыжнику нужно спуститься вниз, с помощью градиента. На пути вниз, в каждой точке мы будем вычислять градиент, что будет показывать нам направление спуска и при изменении наклона, корректировать его. Если склон будет прямым, то после n-ого количества таких действий мы доберемся до низины. Но в большинстве случаев склон (график функции) будет волнистый и наш лыжник столкнется с очень серьезной проблемой — локальный минимум. Я думаю все знают, что такое локальный и глобальный минимум функции, для освежения памяти вот пример. Попадание в локальный минимум чревато тем, что наш лыжник навсегда останется в этой низине и никогда не скатиться с горы, следовательно мы никогда не сможем получить правильный ответ. Но мы можем избежать этого, снарядив нашего лыжника реактивным ранцем под названием момент (momentum). Вот краткая иллюстрация момента:

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

Как вы уже наверное догадались, этот ранец придаст лыжнику необходимое ускорение чтобы преодолеть холм, удерживающий нас в локальном минимуме, однако здесь есть одно НО. Представим что мы установили определенное значение параметру момент и без труда смогли преодолеть все локальные минимумы, и добраться до глобального минимума. Так как мы не можем просто отключить реактивный ранец, то мы можем проскочить глобальный минимум, если рядом с ним есть еще низины. В конечном случае это не так важно, так как рано или поздно мы все равно вернемся обратно в глобальный минимум, но стоит помнить, что чем больше момент, тем больше будет размах с которым лыжник будет кататься по низинам. Вместе с моментом в методе обратного распространения также используется такой параметр как скорость обучения (learning rate). Как наверняка многие подумают, чем больше скорость обучения, тем быстрее мы обучим нейросеть. Нет. Скорость обучения, также как и момент, является гиперпараметром — величина которая подбирается путем проб и ошибок. Скорость обучения можно напрямую связать со скоростью лыжника и можно с уверенностью сказать — тише едешь дальше будешь. Однако здесь тоже есть определенные аспекты, так как если мы совсем не дадим лыжнику скорости то он вообще никуда не поедет, а если дадим маленькую скорость то время пути может растянуться на очень и очень большой период времени. Что же тогда произойдет если мы дадим слишком большую скорость?

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

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

Что такое Метод Обратного Распространения (МОР)?

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

А теперь давайте подробно разберем каждый этап. Если вы помните то в предыдущей статье мы считали выход НС. По другому это называется передача вперед (Forward pass), то есть мы последовательно передаем информацию от входных нейронов к выходным. После чего мы вычисляем ошибку и основываясь на ней делаем обратную передачу, которая заключается в том, чтобы последовательно менять веса нейронной сети, начиная с весов выходного нейрона. Значение весов будут меняться в ту сторону, которая даст нам наилучший результат. В моих вычисления я буду пользоваться методом нахождения дельты, так как это наиболее простой и понятный способ. Также я буду использовать стохастический метод обновления весов (об этом чуть позже).

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

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

H1input = 1*0.45+0*-0.12=0.45
H1output = sigmoid(0.45)=0.61

H2input = 1*0.78+0*0.13=0.78
H2output = sigmoid(0.78)=0.69

O1input = 0.61*1.5+0.69*-2.3=-0.672
O1output = sigmoid(-0.672)=0.33

Результат — 0.33, ошибка — 45%.

Так как мы уже подсчитали результат НС и ее ошибку, то мы можем сразу приступить к МОРу. Как я уже упоминал ранее, алгоритм всегда начинается с выходного нейрона. В таком случае давайте посчитаем для него значение δ (дельта) по формуле 1.
Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросетиТак как у выходного нейрона нет исходящих синапсов, то мы будем пользоваться первой формулой (δ output), следственно для скрытых нейронов мы уже будем брать вторую формулу (δ hidden). Тут все достаточно просто: считаем разницу между желаемым и полученным результатом и умножаем на производную функции активации от входного значения данного нейрона. Прежде чем приступить к вычислениям я хочу обратить ваше внимание на производную. Во первых как это уже наверное стало понятно, с МОР нужно использовать только те функции активации, которые могут быть дифференцированы. Во вторых чтобы не делать лишних вычислений, формулу производной можно заменить на более дружелюбную и простую формула вида:
Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети
Таким образом наши вычисления для точки O1 будут выглядеть следующим образом.

O1output = 0.33
O1ideal = 1
Error = 0.45

δO1 = (1 — 0.33) * ( (1 — 0.33) * 0.33 ) = 0.148

На этом вычисления для нейрона O1 закончены. Запомните, что после подсчета дельты нейрона мы обязаны сразу обновить веса всех исходящих синапсов этого нейрона. Так как в случае с O1 их нет, мы переходим к нейронам скрытого уровня и делаем тоже самое за исключение того, что формула подсчета дельты у нас теперь вторая и ее суть заключается в том, чтобы умножить производную функции активации от входного значения на сумму произведений всех исходящих весов и дельты нейрона с которой этот синапс связан. Но почему формулы разные? Дело в том что вся суть МОР заключается в том чтобы распространить ошибку выходных нейронов на все веса НС. Ошибку можно вычислить только на выходном уровне, как мы это уже сделали, также мы вычислили дельту в которой уже есть эта ошибка. Следственно теперь мы будем вместо ошибки использовать дельту которая будет передаваться от нейрона к нейрону. В таком случае давайте найдем дельту для H1:

H1output = 0.61
w5 = 1.5
δO1 = 0.148

δH1 = ( (1 — 0.61) * 0.61 ) * ( 1.5 * 0.148 ) = 0.053

Теперь нам нужно найти градиент для каждого исходящего синапса. Здесь обычно вставляют 3 этажную дробь с кучей производных и прочим математическим адом, но в этом и вся прелесть использования метода подсчета дельт, потому что в конечном счете ваша формула нахождения градиента будет выглядеть вот так:
Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети
Здесь точка A это точка в начале синапса, а точка B на конце синапса. Таким образом мы можем подсчитать градиент w5 следующим образом:

H1output = 0.61
δO1 = 0.148

GRADw5 = 0.61 * 0.148 = 0.09

Сейчас у нас есть все необходимые данные чтобы обновить вес w5 и мы сделаем это благодаря функции МОР которая рассчитывает величину на которую нужно изменить тот или иной вес и выглядит она следующим образом:
Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети
Настоятельно рекомендую вам не игнорировать вторую часть выражения и использовать момент так как это вам позволит избежать проблем с локальным минимумом.

Здесь мы видим 2 константы о которых мы уже говорили, когда рассматривали алгоритм градиентного спуска: E (эпсилон) — скорость обучения, α (альфа) — момент. Переводя формулу в слова получим: изменение веса синапса равно коэффициенту скорости обучения, умноженному на градиент этого веса, прибавить момент умноженный на предыдущее изменение этого веса (на 1-ой итерации равно 0). В таком случае давайте посчитаем изменение веса w5 и обновим его значение прибавив к нему Δw5.

E = 0.7
Α = 0.3
w5 = 1.5
GRADw5 = 0.09
Δw5(i-1) = 0

Δw5 = 0.7 * 0.09 + 0 * 0.3 = 0.063
w5 = w5 + Δw5 = 1.563

Таким образом после применения алгоритма наш вес увеличился на 0.063. Теперь предлагаю сделать вам тоже самое для H2.

GRADw6 = 0.69 * 0.148 = 0.1

Δw6 = 0.7 * 0.1 + 0 * 0.3 = 0.07

И конечно не забываем про I1 и I2, ведь у них тоже есть синапсы веса которых нам тоже нужно обновить. Однако помним, что нам не нужно находить дельты для входных нейронов так как у них нет входных синапсов.

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

H2input = 1 * 0.73 + 0 * 0.124 = 0.73
H2output = sigmoid(0.73) = 0.675

Результат — 0.37, ошибка — 39%.

Как мы видим после одной итерации МОР, нам удалось уменьшить ошибку на 0.04 (6%). Теперь нужно повторять это снова и снова, пока ваша ошибка не станет достаточно мала.

Что еще нужно знать о процессе обучения?

Нейросеть можно обучать с учителем и без (supervised, unsupervised learning).

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

Обучение без учителя — этот тип обучения встречается не так часто. Здесь нет учителя, поэтому сеть не получает желаемый результат или же их количество очень мало. В основном такой вид тренировок присущ НС у которых задача состоит в группировке данных по определенным параметрам. Допустим вы подаете на вход 10000 статей на хабре и после анализа всех этих статей НС сможет распределить их по категориям основываясь, например, на часто встречающихся словах. Статьи в которых упоминаются языки программирования, к программированию, а где такие слова как Photoshop, к дизайну.

Существует еще такой интересный метод, как обучение с подкреплением (reinforcement learning). Этот метод заслуживает отдельной статьи, но я попытаюсь вкратце описать его суть. Такой способ применим тогда, когда мы можем основываясь на результатах полученных от НС, дать ей оценку. Например мы хотим научить НС играть в PAC-MAN, тогда каждый раз когда НС будет набирать много очков мы будем ее поощрять. Иными словами мы предоставляем НС право найти любой способ достижения цели, до тех пор пока он будет давать хороший результат. Таким способом, сеть начнет понимать чего от нее хотят добиться и пытается найти наилучший способ достижения этой цели без постоянного предоставления данных “учителем”.

Также обучение можно производить тремя методами: стохастический метод (stochastic), пакетный метод (batch) и мини-пакетный метод (mini-batch). Существует очень много статей и исследований на тему того, какой из методов лучше и никто не может прийти к общему ответу. Я же сторонник стохастического метода, однако я не отрицаю тот факт, что каждый метод имеет свои плюсы и минусы.

Вкратце о каждом методе:

Стохастический (его еще иногда называют онлайн) метод работает по следующему принципу — нашел Δw, сразу обнови соответствующий вес.

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

Мини-пакетный метод является золотой серединой и пытается совместить в себе плюсы обоих методов. Здесь принцип таков: мы в свободном порядке распределяем веса по группам и меняем их веса на сумму Δw всех весов в той или иной группе.

Что такое гиперпараметры?

Гиперпараметры — это значения, которые нужно подбирать вручную и зачастую методом проб и ошибок. Среди таких значений можно выделить:

Что такое сходимость?

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети
Сходимость говорит о том, правильная ли архитектура НС и правильно ли были подобраны гиперпараметры в соответствии с поставленной задачей. Допустим наша программа выводит ошибку НС на каждой итерации в лог. Если с каждой итерацией ошибка будет уменьшаться, то мы на верном пути и наша НС сходится. Если же ошибка будет прыгать вверх — вниз или застынет на определенном уровне, то НС не сходится. В 99% случаев это решается изменением гиперпараметров. Оставшийся 1% будет означать, что у вас ошибка в архитектуре НС. Также бывает, что на сходимость влияет переобучение НС.

Что такое переобучение?

Переобучение, как следует из названия, это состояние нейросети, когда она перенасыщена данными. Это проблема возникает, если слишком долго обучать сеть на одних и тех же данных. Иными словами, сеть начнет не учиться на данных, а запоминать и “зубрить” их. Соответственно, когда вы уже будете подавать на вход этой НС новые данные, то в полученных данных может появиться шум, который будет влиять на точность результата. Например, если мы будем показывать НС разные фотографии яблок (только красные) и говорить что это яблоко. Тогда, когда НС увидит желтое или зеленое яблоко, оно не сможет определить, что это яблоко, так как она запомнила, что все яблоки должны быть красными. И наоборот, когда НС увидит что-то красное и по форме совпадающее с яблоком, например персик, она скажет, что это яблоко. Это и есть шум. На графике шум будет выглядеть следующим образом.

Что такое веса в нейросети. Смотреть фото Что такое веса в нейросети. Смотреть картинку Что такое веса в нейросети. Картинка про Что такое веса в нейросети. Фото Что такое веса в нейросети

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *