Основы нейронных сетей

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

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

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

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

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

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

Нейронная сеть состоит из 3 основных частей:

Входной слой

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

Скрытые слои

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

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

Выходной слой

Этот слой просто объединяет информацию из последнего скрытого слоя сети для вывода всей необходимой информации из программы.

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

Обучение нейронных сетей

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

Оптимизация весов и смещений

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

Хотя эта статья охватывала только базовую теорию нейронных сетей, существует множество сложных вычислений и матричных операций, которые фактически используются для выполнения всех этих сложных процессов. Еще многое предстоит узнать - от типов нейронных сетей (таких как RNN, CNN и GAN) до других важных обучающих вычислений, таких как градиентный спуск.

21 век вращается вокруг использования данных, а искусственный интеллект - самый мощный из когда-либо созданных инструментов обработки данных. Из-за этого искусственный интеллект подорвет любую отрасль. Неважно, учитель вы, повар, юрист или врач. Искусственный интеллект на 100% способен разрушить вашу отрасль. Не верите мне? ИИ может создавать индивидуальные планы уроков для студентов, создавать новые креативные рецепты, составлять юридические документы и ставить высокоточные диагнозы различных заболеваний. Хорошо это или плохо, но ИИ изменит мир.

Исходное сообщение:



Если вам понравилась эта статья:

  • Следуйте за мной в Medium и свяжитесь со мной в LinkedIn, чтобы быть в курсе моих работ!
  • Подпишитесь на мою рассылку, чтобы следить за моим путешествием !: