Изучение внутренней работы базового алгоритма нейронной сети

Представьте себе: вы сидите за своим столом, сортируете свои цифровые файлы по папкам… снова. По частям раскидываешь их по отдельным папкам на рабочем столе, и вдруг через два часа. Это может быть очень близко для большинства из нас, но так быть не должно. Что, если бы существовала компьютерная программа, которая могла бы сортировать эти файлы за вас? Что мог почти думать сам за себя? И иметь безупречную точность в придачу? Встретиться…. барабанная дробь, пожалуйста… нейронная сеть! 🎉

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

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

Нейронные сети 🧠

Нейронная сеть — это разновидность искусственного интеллекта, или сокращенно ИИ. ИИ окружает вас прямо сейчас — в вашем устройстве Amazon Alexa, беспилотных автомобилях Waymo, светофорах, рекомендациях по онлайн-покупкам, поиске лекарств, распознавании лиц, пылесосах Roomba… список можно продолжить. Нейронные сети используют серию математических алгоритмов для распознавания основных шаблонов в наборе данных, и они используют эти шаблоны для прогнозирования результатов новых данных, которые им предоставляются. Искусственные нейронные сети пытаются имитировать работу человеческого мозга. Нейронные сети состоят из нейронов.каждый нейрон — это просто уравнение, которое принимает входные данные, умножает их на набор весов и передает результат следующему нейрону. Это может звучать как тарабарщина, но я объясню эти концепции немного подробнее.

Нейроны? Веса? Что это за колдовство? 🧙‍♂️

Вам может быть интересно, что же это за все эти причудливые слова. Поверьте, я чувствовал то же самое! Прежде всего, важно понять основы того, как работает человеческий мозг, поскольку именно по нему программисты ИИ моделируют свои нейронные сети. Человеческий мозг состоит примерно из 86 миллиардов нейронов, которые запускают электрический разряд ⚡️ между собой при столкновении с различными раздражителями. Различные части мозга отвечают за разные вещи, такие как эмоции, рассуждения и память. Все эти участки состоят из нейронов.

Искусственная нейронная сеть пытается воспроизвести то, как работает человеческий мозг, хотя и не совсем так. Поскольку человеческий мозг НАСТОЛЬКО сложен, программистам приходится резко упрощать процесс мышления и сводить его к набору математических уравнений, через которые данные обрабатываются для получения результата.

MLP

MLP — это самая простая форма искусственной нейронной сети. Они используют серию персептронов или уравнений с входными, выходными данными и весами, чтобы преобразовать ряд входных данных в единый выходной сигнал между 0 и 1. Затем этот выходной сигнал передается в другой слой персептронов, и процесс продолжается до тех пор, пока не будет достигнут единственный выход (или набор выходов, в зависимости от функции MLP). MLP имеет по крайней мере три слоя — входной слой, по крайней мере один скрытый слой и выходной слой. Скрытый слой упрощает различение данных, которые вы не можете классифицировать линейно — например, что-то вроде этого:

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

Наиболее важной частью MLP являются веса. Каждый вход нейронной сети проходит через «слои», где вход умножается на разные веса (обозначается буквой W). Веса сигнализируют о силе связи между двумя частями данных.

Мне нравится думать о весах как о семье. Ваш брат ближе к вам на генеалогическом древе, чем, скажем, ваш двоюродный брат. Твоя мать ближе к тебе на дереве, чем твоя двоюродная сестра когда-то удалена. Эти количества «родства» на генеалогическом древе соответствуют весам персептронов — более высокий вес указывает на брата или сестру, а меньший вес указывает на что-то вроде дважды удаленного троюродного брата. Веса соответствуют прочности соединения.

Вот рисунок, показывающий, как это работает в нейронной сети:

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

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

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

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

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

Например, если входные данные:

А веса такие:

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

Затем мы добавляем смещение к взвешенной сумме…

…и, наконец, значение передается в функцию активации, которая затем подготавливает вывод. Функция активации — это просто математическое уравнение, которое нормализует входные данные, превращая их в значения от 0 до 1 для чтения компьютером. Вы можете использовать сигмовидную функцию, функцию ReLU или функцию Tanh. Часто сигмовидная функция является лучшим выбором, потому что она обеспечивает плавный переход между нулем и единицей и более изменчивостью между выходами персептрона.

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

Вернемся к нашему предыдущему примеру, который выглядел так:

Каждый вход (для простоты установим их все равными 1) будет умножен на соответствующий вес, в данном случае на 1.

Затем взвешенные входные данные складываются вместе, чтобы создать взвешенную сумму.

Затем мы добавляем смещение к взвешенной сумме…

… и рассчитать конечный продукт.

Пропустив его через функцию активации, вы получите число от 0 до 1, в зависимости от того, какую функцию вы используете. Я пропустил число 5 через сигмовидную функцию и получил число 0,993307149076 — это число было затем округлено до двух знаков после запятой, что дало 0,99.

Это число от 0 до 1 и есть «яркость» нейрона — чем ближе к 0, тем тусклее, а чем ближе к 1, тем ярче. Эта «яркость» указывает на силу нейрона.

Если у вас возникли проблемы с этими концепциями (я знаю, что это много для понимания), я рекомендую посмотреть это видео на Youtube!

Вот как работает каждый отдельный нейрон (также известный как персептрон) — как это связано с сетью в целом?

MLP — сложная система персептронов

Нейронная сеть может быть такой простой:

Или вот так сложно:

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

Обучение MLP

Конечно, нейронная сеть не будет работать идеально с первого раза. Мы начинаем со случайных весов, и, очевидно, это не очень хорошо работает. Таким образом, мы должны «обучить» сеть на серии тренировочных входных данных, чтобы она могла корректировать свои веса для достижения оптимальной точности. Для этого мы помечаем большой набор обучающих данных выводом, который он должен дать. (Это называется обучением с учителем — есть также обучение без учителя, без меток, что является совершенно другой темой.) Мы пропускаем эти обучающие данные через наш MLP, и если ответ неверен, корректируются веса и смещения. Этот процесс повторяется снова и снова, пока MLP не сможет правильно классифицировать все обучающие данные. После этого мы запускаем некоторые новые данные, называемые тестовыми данными, через нейронную сеть, которую она никогда раньше не видела.

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

В нейронной сети обучающие данные аналогичны тренировочным вопросам, а тестовые данные — математическому тесту.

Так почему это важно?

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

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

MLP можно использовать для самых разных задач; например, простое распознавание изображений, категоризация файлов и данных, рекомендации по покупкам в Интернете, социальные сети и многое другое!

МЛП полезны во многих областях, и теперь вы знаете о них немного больше 🤩