Содержание статьи
Как устроена нейросеть
Применение разных типов архитектур в бизнесе
Слои Dropout помогают предотвратить переобучение модели и улучшить её способность обобщать данные. Переобучение происходит, когда модель слишком хорошо запоминает тренировочные данные, но плохо работает на новых, незнакомых данных. Слои исключения помогают избежать этой проблемы.
Однако первые успехи нейросетей привели к завышенным ожиданиям, которые они не смогли оправдать. В конце 1960-х правительство США, где проводились основные исследования нейросетей, резко урезало финансирование подобных разработок, посчитав их не оправдывающими себя.
Рекуррентные нейронные сети (RNN), включая LSTM и GRU, имеют петли обратной связи, позволяющие им обрабатывать последовательные данные по одному элементу за раз. Они используют специальные рекуррентные слои, которые запоминают предыдущие состояния и учитывают контекст, «видят» зависимости между последовательными элементами. Рекуррентные нейронные сети (RNN) или их модификации хороши для обработки текста или речи.
Неправильный выбор архитектуры может привести к провалу. Бессмысленно пытаться заставить сверточную сеть, предназначенную для изображений, распознавать речь. Входные данные — спектрограммы речи — имеют другую структуру по сравнению с изображениями, и свёрточные слои будут неэффективны для их обработки. В этом случае лучше применить рекуррентную сеть, которая может последовательно обрабатывать аудиоданные и учитывать неочевидные связи в естественной человеческой речи.
Каждый тип слоёв вносит свой вклад в обработку данных нейросетью, позволяя ей извлекать различные типы признаков и закономерностей. Комбинируя эти слои в различных архитектурах, можно создавать мощные модели для решения задач компьютерного зрения, обработки естественного языка и других областях.
В 1943 году американские учёные — нейрофизиолог Уоррен Маккалок и нейролингвист Уолтер Питтс написали статью о том, как могут работать нейроны. Они первыми предложили термин «искусственный нейрон» и смоделировали рабочую искусственную нейронную сеть на основе электрических схем.
Но в отличие от Монте-Кристо у него есть входной S-слой (сенсорный). Туда мы подаем числа в промежутке [0..1]. Например, картинка с котиком. Берём каждую точку, преобразуем в градации серого и записываем во входной узел по правилу, где 0 — белый цвет, а чем ближе к 1, тем более тёмные мысли у нашей точки.
Слои пулинга (или подвыборки) выбирают одни элементы из входных данных как наиболее важные и отбрасывают другие как менее значимые. Например, в случае обработки изображений, слой пулинга может взять квадратный участок изображения и выбрать из него самый яркий пиксель (максимальное значение) или усреднить значения пикселей (среднее значение). Это позволяет сократить количество данных, которые нужно обрабатывать, что, в свою очередь, уменьшает вычислительные затраты и время обучения модели.
TL;DR
Сверточные нейронные сети (CNN) обычно состоят из чередующихся сверточных слоёв и слоёв пулинга, за которыми следуют один или несколько полносвязных слоев. Благодаря операции свёртки слои в CNN эффективно извлекают пространственные признаки из изображений и демонстрируют высокую точность на задачах классификации изображений. Соответственно, такой тип сеток хорош для задач компьютерного зрения, например, распознавания объектов на фото.
Как и люди, нейросети могут правильно решать новые задачи, опираясь на предшествующий опыт. Эти умные программы анализируют новую информацию, обобщают её и применяют выученные шаблоны к новым задачам. Если дать нейросети примеры «правильной» работы для решения задачи, то она может совершенствовать свою работу дальше.
Нейронные сети состоят из множества взаимосвязанных узлов — по аналогии с биологией человека их называют нейронами. Каждый нейрон получает входные данные, обрабатывает их и передает результат следующему нейрону. Эта структура напоминает работу человеческого мозга, где нейроны соединены синапсами, передающими электрические сигналы. В искусственных нейронных сетях нейроны образуют слои, а информация передаётся от одного слоя к другому.
Нейронные сети имитируют работу человеческого мозга, чтобы обрабатывать и анализировать данные. Они обучаются на большом объёме информации, выявляя закономерности и связи между сущностями. Это позволяет им выполнять сравнительно сложные когнитивные задачи — распознавать изображения, обрабатывать естественный язык и прогнозировать сценарии развития событий в специфических областях.
Применение Dropout во время обучения улучшает способность модели обобщать, экстраполировать полученные знания на новые, незнакомые данные. Это повышает производительность модели в реальных условиях, когда она сталкивается с данными, отличными от тех, на которых она обучалась. Это можно назвать гибкостью.
Настроения в обществе тоже были далеки от оптимизма. Людей пугала мысль, какую власть могут получить «думающие машины», способные программировать сами себя. Писатели-фантасты (Айзек Азимов, Гарри Гаррисон) в своих произведениях размышляли, какое влияние нейросети окажут на общество, и не всегда их прогнозы были радужны. Но программисты продолжали мечтать о компьютере, который мог бы сам исправлять ошибки разработчиков.
По-настоящему нейросети рванули вперёд с 2000-х годов, когда появилась подходящая для них техническая база. Это позволило к 2006 году разработать концепцию глубокого обучения нейросетей — вида машинного обучения на огромных массивах данных, после которого многоуровневые нейросети могли решать задачи без участия человека. Теперь нейронные сети куда эффективнее решают прикладные задачи.
При этом вы потыкались в обучающие статьи. Всё было непонятно. С первых же страниц начали грузить интегралами и градиентными спусками. Вы решили пойти на курсы. Там ещё хуже. Курс занимал 4-12 месяцев. А стоил как крыло самолета: 100-200 тыс руб. Ну, небольшое такое крыло. Да и мотивация ниже плинтуса без волшебных пинков от учителя.
База
Далее промежуточные — A-ассоциативные слои. Они также содержат значения [0..1]. Они соединяются ребрами с предыдущими и последующими слоями. Веса рёбер находятся в пределах [0..1], задаваемые произвольно. Значение узла А-слоя — это сумма произведений весов нейронов на веса рёбер. Полученная сумма может получиться больше 1, поэтому её «нормализуют», чтобы она попала в интервал [0..1]. Для этого используют функции активации.
Во время обучения слой Dropout случайным образом «выключает» (то есть игнорирует) определённый процент нейронов в предыдущем слое — и эти нейроны не участвуют в текущей итерации обучения. Модель вынуждена учиться по-другому, полагаясь на различные комбинации имеющихся нейронов для предсказания результата. Так слои исключения предотвращают переобучение модели — overfitting.
Слои нормализации решают эту проблему, выравнивая, нивелируя разницу во входных данных. Они вычисляют среднее значение и стандартное отклонение входных данных для мини-батча и нормализуют их, чтобы значения были в диапазоне от 0 до 1. Это помогает нейросети обучаться быстрее и лучше обобщать данные.
Генеративно-состязательные сети (GAN) состоят из двух нейронных сетей — генератора и дискриминатора. Генератор использует слои для создания новых данных, а дискриминатор применяет слои для оценки реалистичности сгенерированных данных. Поэтому сетки, построенные на GAN, хорошо работают с задачами генерации новых данных — создания изображений или музыки.
Нейросеть (англ. neural network) — математическая модель нейронной сети, которая имитирует работу человеческого мозга. Нейросети состоят из множества взаимосвязанных искусственных нейронов, способных обрабатывать большие массивы данных и находить в них сложные закономерности. Возможности нейросетей позволяют ИИ-помощникам понимать речь, генерировать связный текст, распознавать и создавать изображения.
В 1958 году американский психолог Корнеллского университета Фрэнк Розенблатт повторил математическую модель нейросети с помощью компьютерного кода. Его нейрокомпьютер «Марк-1» был построен на идее персептрона — математической модели биологического нейрона. Нейросеть имела один слой (данные от входа сразу шли на вывод), но её уже можно было обучить. Она могла сама относить объекты по категориям. Например, распознавать печатные буквы на карточках.