Найти тему
Будни Нейронщика

Что такое нейрон? Коротко о нейронных сетях. Часть 2.

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

Дело было как. Сидели люди в середине XX века и решили поприкалываться - пособирать из проводов макаронного монстра. По итогу получили чудовище под названием персептрон, примерно как на картинке.

-2

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

Давайте для начала углубимся в то, а что такое нейрон? По факту нейрон - это базовая вычислительная ячейка (или структурный элемент) нейронных сетей, как алгоритма. Объясним на картинке:

-3

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

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

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

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

Круто, в нейроне происходит сумма входных данных. Но это не всё. Дальше нейрон должен ответить на вопрос: жить или не жить? Дело в том, что после суммирования и нормализации (делаем так, чтобы во всех нейронах одного этапа-слоя данные были в виде чисел от 0 до 1) происходит некое преобразование, называемое функцией активации. Функция активации - это (в основном) - пороговое преобразование. Грубо говоря, если число в нейроне больше чем 0.5, то всё окей, ответ -жить, данные идут дальше. Если число меньше 0.5, увы, ответ - не жить. Ничего не напоминает? на этом этапе уже должны закрадываться подозрения, что преобразования в нейроне - это и есть срабатывание ассоциаций. Как будто данные - это информация из зрения, обоняния, осязание, слуха, а весА - набор гормонов. Оно друг с другом взаимодействует и мы получаем ассоциацию.

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

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

-4

Думаю, по паутине внутри всего лишь восьми бирюзовых кружочков уже становится понятно, почему именно сеть. А теперь представьте, на что способны тысячи, миллионы, МИЛЛИАРДЫ и т.д. нейронов, если каждый из них - это отдельный признак-ассоциация. Прошу заметить, что связей-весов в многослойных нейронках на порядки больше.

В чат-гпт примерно 100 триллионов нейронов, а в нашем мозге 100 миллиардов, живите с этим.

В завершении статьи для особо пытливых умов хочу рассказать один маленький математический нюанс. Посмотрим на правый верхний нейрон - верхний во втором слое. В него входят 4 связи из 4 нейронов. Логично, но! Математически вектор из 4 чисел (данные на выходе из первого слоя) умножается на вектор из 4 чисел (веса), то есть это график линейной функции без смещения у=кх. А теперь представим следующую картину на декартовых осях:

-5

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

-6

Нейрон смещения не принимает в себя данные из предыдущих слоёв, внутри него всегда 1 (b*1=b), а его вес реализует тот самый сдвиг графика вверх и вниз.

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

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

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

Наука
7 млн интересуются