Содержание статьи
Как устроена нейронная сеть и зачем ей слои
Несколько слов об обратном распространении ошибки
Давайте внимательно посмотрим на него. Вышенаписанная формула — это не что иное, как определение умножения матрицы на вектор. И в самом деле, если мы возьмем матрицу W размера n на m и выполним ее умножение на X размерности m, то мы получим другое векторное значение n-размерности, то есть как раз то, что надо.
Слои пулинга (или подвыборки) выбирают одни элементы из входных данных как наиболее важные и отбрасывают другие как менее значимые. Например, в случае обработки изображений, слой пулинга может взять квадратный участок изображения и выбрать из него самый яркий пиксель (максимальное значение) или усреднить значения пикселей (среднее значение). Это позволяет сократить количество данных, которые нужно обрабатывать, что, в свою очередь, уменьшает вычислительные затраты и время обучения модели.
Во время обучения слой Dropout случайным образом «выключает» (то есть игнорирует) определённый процент нейронов в предыдущем слое — и эти нейроны не участвуют в текущей итерации обучения. Модель вынуждена учиться по-другому, полагаясь на различные комбинации имеющихся нейронов для предсказания результата. Так слои исключения предотвращают переобучение модели — overfitting.
Правильная комбинация слоев и архитектур может значительно повысить производительность нейронной сети и качество результатов её работы. Различные типы нейронных сетей имеют свои особенности внутренней архитектуры, а что ещё важнее — та или иная архитектура лучше справляется с тем или иным типом задач. Вот пара примеров:
Один нейрон может превратить в одну точку входной вектор, но по условию мы желаем получить несколько точек, т. к. выходное Y способно иметь произвольную размерность, которая определяется лишь ситуацией (один выход для XOR, десять выходов, чтобы определить принадлежность к одному из десяти классов, и так далее). Каким же образом получить n точек? На деле все просто: для получения n выходных значений, надо задействовать не один нейрон, а n. В результате для каждого элемента выходного Y будет использовано n разных взвешенных сумм от X. В итоге мы придем к следующему соотношению:
Неправильный выбор архитектуры может привести к провалу. Бессмысленно пытаться заставить сверточную сеть, предназначенную для изображений, распознавать речь. Входные данные — спектрограммы речи — имеют другую структуру по сравнению с изображениями, и свёрточные слои будут неэффективны для их обработки. В этом случае лучше применить рекуррентную сеть, которая может последовательно обрабатывать аудиоданные и учитывать неочевидные связи в естественной человеческой речи.
Функция активации
Генеративно-состязательные сети (GAN) состоят из двух нейронных сетей — генератора и дискриминатора. Генератор использует слои для создания новых данных, а дискриминатор применяет слои для оценки реалистичности сгенерированных данных. Поэтому сетки, построенные на GAN, хорошо работают с задачами генерации новых данных — создания изображений или музыки.
Под искусственной нейронной сетью (ИНС) понимают математическую модель (включая ее программное либо аппаратное воплощение), которая построена и работает по принципу функционирования биологических нейросетей — речь идет о нейронных сетях нервных клеток живых организмов.
Пусть у нас уже есть нейронная сеть, но ведь ее ответы являются случайными, то есть наша нейросеть не обучена. Сейчас она способна лишь по входному вектору input выдавать случайный ответ, но нам нужны ответы, которые удовлетворяют конкретной поставленной задаче. Дабы этого достичь, сеть надо обучить. Здесь потребуется база тренировочных примеров и множество пар X — Y, на которых и будет происходить обучение, причем с использованием известного алгоритма обратного распространения ошибки.
Рекуррентные нейронные сети (RNN), включая LSTM и GRU, имеют петли обратной связи, позволяющие им обрабатывать последовательные данные по одному элементу за раз. Они используют специальные рекуррентные слои, которые запоминают предыдущие состояния и учитывают контекст, «видят» зависимости между последовательными элементами. Рекуррентные нейронные сети (RNN) или их модификации хороши для обработки текста или речи.
Применение Dropout во время обучения улучшает способность модели обобщать, экстраполировать полученные знания на новые, незнакомые данные. Это повышает производительность модели в реальных условиях, когда она сталкивается с данными, отличными от тех, на которых она обучалась. Это можно назвать гибкостью.
Говоря проще, ИНС можно назвать неким «черным ящиком», превращающим входные данные в выходные данные. Если же посмотреть на это с точки зрения математики, то речь идет о том, чтобы отобразить пространство входных X-признаков в пространство выходных Y-признаков: X → Y. Таким образом, нам надо найти некую F-функцию, которая сможет выполнить данное преобразование. На первом этапе этой информации достаточно в качестве основы.
Например, в случае распознавания изображений первые скрытые слои могут обнаруживать простые элементы (края и углы), а последующие слои комбинируют эти элементы в более сложные структуры (формы и объекты). Количество скрытых слоев потенциально бесконечно — их количество зависит от сложности задачи и архитектуры нейронной сети.
Но полученный вектор представляет собой неактивированное состояние (промежуточное, невыходное) всех нейронов, а для того, чтобы нам получить выходное значение, нужно каждое неактивированное значение подать на вход вышеупомянутой функции активации. Итогом ее применения и станет выходное значение слоя.