Найти в Дзене
Будни Нейронщика

Как работает обучение нейронных сетей? Обратное Распространение Ошибки. Коротко о нейронных сетях.Часть 3.

Настало знаменательное время - сегодня мы поговорим о великом и ужасном обратном распространении ошибки. У большинства людей данный этап изучения нейронок полностью отбивает всё желание разбираться в теме дальше. Я и сам длительное время пытался игнорировать данную тему, но для общего понимания происходящего мы должны хотя бы немного коснуться этого, вообще говоря, математического явления, которое и позволяет нейронным сетям "обучаться". Как мы помним, обучение - это один из этапов создания нейронных сетей, который отсутствует у стандартных алгоритмов. Давайте начнём с общих слов об обучении, как обычно, на пальцах. Предупрежу сразу, что в данной статье я не буду приводить конкретные формулы. Вы их и так сможете найти по первому запросу. Мы рассмотрим Обратное Распространение Ошибки на более жизненном примере. При обучении проводится загрузка базы данных в нейронную сеть. Конечно же, существуют определённые проблемы с форматом этих самых данных. Например, вы не можете загружать в н

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

Предупрежу сразу, что в данной статье я не буду приводить конкретные формулы. Вы их и так сможете найти по первому запросу. Мы рассмотрим Обратное Распространение Ошибки на более жизненном примере.

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

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

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

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

Хорошо, преобразовали. Подали в нейронную сеть. Что там происходит внутри?

В начальный момент времени веса устанавливаются случайным образом, вся база проходит через нейронку, и после первого прохода - первой эпохи обучения - начинает играть то самое Обратное Распроранение Ошибки. В двух словах: оно и позволяет изменять веса после каждой эпохи для улучшений результатов предсказаний (нейронка же даёт вероятностей результат - по сути предсказание). Как же это работает? Объясню на примере обычного производства изделия.

-2

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

В данном примере технологи, конструктора и производство - это нейроны, их действия- это связи, а заказчик - мы, пользователи. На этапе обучения мы не можем сказать, что конкретно нам не нравится и что-то поменять. Мы видим лишь точность и ошибку. А ошибки нас не устраивают всегда. Однако, при обучении нейронная сеть так же видит ошибку (да-да, не точность, а только ошибку). И вы не поверите, но Обратное Распространение Ошибки распространяет ошибку обратно🙃. По всем слоями вплоть до первого.

-3

Для нашего примера: производство передаёт конструкторам, что заказчик недоволен (знают только это, про отверстие никто ничего не говорил), конструктора чешут голову и передают это дальше. Ошибка вернулась к технологам- в исходную точку. Далее все три группы судорожно, в хаосе, начинают что-то менять. Технологи отрабатывают прямоугольную дырку. Конструктора рисуют овальную, а производство создаёт круглую. В результате заказчик доволен. И ему не важно, что там было внутри предприятия.

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

Однако пусть изменения и почти случайны- выводы результата от этих изменений нейронка запоминает и после следующих эпох использует для новых корректиктировок. При большой выборке изменений мы, в идеале, получим лучшие веса. Возможно, вы слышали, что обучение проводится в 1000 эпох и более. Это все поэтому - чтобы корректировать веса.

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

Добавлю, что чем дальше нейрон находится от выходного слоя, тем меньшее влияние на него оказывается. В нашем примере начальник предприятия (а-ля первый слой) мог вообще не знать, что кому-то что-то не нравится. Как вы понимаете, данное затухание влияния - это довольно глобальная проблема. Есть определённые способы её решения, но они не абсолютны.

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

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

Однако для житейского практического применения вам НИКОГДА не потребуется лично разбирать каждую связь в нейронке и смотреть, где и что происходит при градиентном спуске.

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

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

А на этом у меня всё

Обнял-приподнял и спасибо за внимание 💙