1. Типы нейронных сетей
Как правило, базовую структуру модели нейронной сети можно разделить на два типа в зависимости от того, осуществляется ли обратная связь с вводом информации: нейронная сеть с прямой связью и нейронная сеть с обратной связью.
1.1 Нейронная сеть с прямой связью
В нейронной сети с прямой связью информация вводится из входного слоя, и нейроны в каждом слое получают входные данные предыдущего уровня и выводят на следующий уровень до выходного слоя. Отсутствует обратная связь (петля) во всей сетевой передаче входной информации. То есть вывод любого слоя не повлияет на тот же слой, который можно представить направленным ациклическим графом.
Общие нейронные сети с прямой связью включают сверточные нейронные сети (CNN), полностью связанные нейронные сети (FCN), генеративно-состязательные сети (GAN) и т. д.
1.2 Нейронная сеть обратной связи
В нейронной сети с обратной связью нейроны могут не только получать сигналы от других нейронов, но и получать свои собственные сигналы обратной связи. По сравнению с нейронной сетью с прямой связью, нейроны в нейронной сети с обратной связью имеют функцию памяти и имеют разные состояния в разное время. Распространение информации в нейронной сети с обратной связью может быть односторонним или двусторонним, поэтому его можно представить ориентированным циклическим графом или неориентированным графом.
Общие нейронные сети с обратной связью включают рекуррентные нейронные сети (RNN), сети с долговременной кратковременной памятью (LSTM), сети Хопфилда и машины Больцмана.
2. Введение в классическую модель нейронной сети
Полностью подключенная нейронная сеть (FCN)
Полносвязная нейронная сеть является наиболее распространенной сетевой структурой в глубоком обучении, и существует три основных типа слоев: входной слой, скрытый слой и выходной слой. Каждый нейрон текущего слоя связан с входным сигналом каждого нейрона предыдущего слоя. В каждом процессе соединения сигнал из предыдущего слоя умножается на вес, добавляется смещение, а затем проходит через нелинейную функцию активации, через несколько составных простых нелинейных функций, чтобы получить сложное входное пространство для карты выходного пространства.
Сверточная нейронная сеть (CNN)
Изображения имеют очень высокую размерность, поэтому для обучения стандартной сети с прямой связью распознаванию изображений потребуются тысячи входных нейронов, что, в дополнение к очевидной высокой вычислительной нагрузке, может привести ко многим проклятиям размерности в нейронных сетях. Проблема. Сверточные нейронные сети предоставляют решение для уменьшения размерности изображений с помощью слоев свертки и объединения. Поскольку сверточный слой поддается обучению, но имеет значительно меньше параметров, чем стандартные скрытые слои, он может выделять важные части изображения и распространять каждую важную часть вперед. В традиционных CNN последние несколько слоев являются скрытыми слоями, которые используются для обработки «информации о сжатом изображении».
Остаточная сеть (ResNet)
Существует проблема с глубокими нейронными сетями с прямой связью.По мере увеличения количества слоев сети сеть будет деградировать: по мере увеличения количества слоев сети потери обучающей выборки постепенно уменьшаются, а затем имеют тенденцию к насыщению.Если глубина выше, вместо этого возрастут потери обучающей выборки. Чтобы решить эту проблему, остаточные сети используют пропущенные соединения для распространения сигналов по уровням.
Генеративно-состязательные сети (GAN)
Генеративно-состязательная сеть — это сеть, специально предназначенная для генерации изображений, состоящая из двух сетей: дискриминатора и генератора. Задача дискриминатора состоит в том, чтобы отличить, было ли изображение извлечено из набора данных или сгенерировано генератором, а задача генератора состоит в том, чтобы сгенерировать изображение, достаточно реалистичное, чтобы дискриминатор не мог сказать, реально это изображение или нет. Со временем под тщательным наблюдением два соперника соревнуются друг с другом, каждый пытается успешно улучшить другого. Конечным результатом является хорошо обученный генератор, который создает фотореалистичные изображения. Дискриминатор — это сверточная нейронная сеть, целью которой является максимальное повышение точности идентификации реальных и поддельных изображений, а генератор — деконволюционная нейронная сеть, целью которой является минимизация производительности дискриминатора.
Вариационный автоэнкодер (VAE)
Автокодировщик изучает сжатое представление ввода (которое может быть последовательностью изображений или текста), например, сжимая ввод, а затем распаковывая его обратно, чтобы он соответствовал исходному вводу, в то время как вариационный автокодер изучает параметры распределения вероятностей представляемые данные. Вместо того, чтобы просто изучать функцию, которая представляет данные, он получает более подробное и детальное представление данных, выборку из распределения и создание новых выборок входных данных.
Transformer
Transformer — это классическая сетевая структура, предложенная Google Brain, которая состоит из классической модели Encoder-Decoder. На приведенном выше рисунке весь слой Encoder состоит из 6 структур левой части Nx. Весь декодер состоит из 6 кадров правой части Nx.После того, как выходные данные декодера преобразуются линейным слоем, они вычисляются слоем softmax для вывода окончательного результата прогнозирования.
Рекуррентная нейронная сеть (RNN)
Рекуррентная нейронная сеть — это особый тип сети, который содержит петли и самоповторения, отсюда и название «петля». Позволяя информации храниться в сети, RNN используют рассуждения из предыдущего обучения, чтобы принимать более обоснованные решения о предстоящих событиях. Для этого он использует предыдущие прогнозы как «контекстные сигналы». Из-за своей природы RNN часто используются для решения последовательных задач, таких как дословное создание текста или прогнозирование данных временных рядов (например, цен на акции). Они также могут обрабатывать входные данные произвольного размера.
Сеть с долговременной кратковременной памятью (LSTM)
Структура LSTM специально разработана для решения проблемы исчезновения и взрыва градиента в RNN, изучающей длинную контекстную информацию, и в структуру добавляются блоки памяти. Эти модули можно рассматривать как микросхемы памяти в компьютере — каждый модуль содержит несколько циклически связанных ячеек памяти и три вентиля (ввод, вывод и забывание, которые эквивалентны записи, чтению и сбросу). Входы информации могут взаимодействовать с нейронами только через каждые ворота, поэтому ворота учатся открывать и закрывать разумно, чтобы предотвратить взрыв или исчезновение градиентов.
Сеть Хопфилда
Нейронная сеть Хопфилда представляет собой однослойную нейронную сеть с обратной связью, которая полностью связана друг с другом. Каждый нейрон является как входом, так и выходом, и каждый нейрон в сети передает свой выход всем остальным нейронам через вес связи, и в то же время получает информацию, передаваемую всеми остальными нейронами.
3. Думая о дизайне сетевой структуры
На практике, помимо непосредственного выбора некоторых классических нейронных моделей для проверки в сочетании с задачами, иногда нам также необходимо спроектировать и оптимизировать структуру сети. Две основные проблемы, которые необходимо учитывать при проектировании сетевой структуры:
- Как должны быть связаны нейронные единицы?
- Сколько нейронов нужно?
3.1 Как должны быть связаны нейронные единицы?
То есть, как спроектировать базовую архитектуру нейронной сети, есть две дизайнерские идеи:
- Внедрение человеческих априорных данных в структуру модели
Например, CNN разрабатываются на основе сверточного предположения об инвариантности перевода для задач изображения, или RNN разрабатываются на основе рекурсивного предположения о рекурсивной природе языка. Для предшествующих знаний, несомненно, относительно эффективно проектировать сетевую структуру на основе опыта, но введение слишком большого количества сложного опыта не является «элегантным», и если опыт неправильный, спроектированная структура может дать сбой.
- Структуры, динамически изучаемые и вычисляемые машиной
Такие общие методы поиска, как поиск архитектуры нейронной сети (NAS), включают: случайный поиск, байесовскую оптимизацию, эволюционные алгоритмы, обучение с подкреплением, алгоритмы на основе градиента.
3.2 Сколько нужно нейронов?
Нейронная сеть состоит из входного слоя, скрытого слоя и выходного слоя:
- Входной слой: это входной слой объектов данных, а размер объектов входных данных соответствует количеству нейронов в сети.
- Скрытый слой: средний уровень сети, который принимает выходные данные предыдущего уровня сети в качестве текущего входного значения, а также вычисляет и выводит текущий результат на следующий уровень. Количество скрытых сетевых нейронов напрямую влияет на подгонку модели.
- Уровень вывода: сетевой уровень, который выводит окончательный результат. Количество нейронов в выходном слое представляет собой количество категорий классификации (Примечание: при выполнении двух классификаций, если функция активации выходного слоя принимает сигмоид, количество нейронов в выходном слое равно 1; если используется классификатор softmax , выход Количество нейронов слоя равно 2, что соответствует количеству категорий классификации;)
Обычно определяются нейроны входного слоя и выходного слоя сети.Главное учитывать глубину и ширину скрытого слоя.Исходя из игнорирования проблемы деградации сети, обычно чем больше нейронов (вычислительных единиц) в скрытом слое, чем больше , тем больше у моделиемкость(емкость) для достижения лучшего эффекта подгонки.
Для поиска подходящей глубины и ширины сети обычно используются такие методы, как ручная настройка параметров, случайный поиск и байесовская оптимизация. Вот развернутый вопрос:
В чем разница в эффекте увеличения ширины и глубины нейронной сети?
- 1. С точки зрения подгонки увеличение глубины намного эффективнее, чем ширины
Для того же эффекта ширина, которая должна быть увеличена, намного больше, чем глубина, которую нужно увеличить. В статье Делалло, Бенжио и др. «Мелкие и глубокие сети суммированного произведения» предлагается, чтобы для некоторых специально построенных полиномиальных функций неглубокие сети требовалиувеличение индексаколичество нейронов, эффект подгонки может соответствовать глубокой сети с полиномиальным ростом.
- 2. С точки зрения масштаба параметров увеличение глубины требует гораздо меньше параметров, чем ширина.
В качестве примера возьмем нейронную сеть на рисунке выше.Если ширину одного слоя увеличить на 3 нейрона, добавится 6 весовых параметров связанных с ним переднего и заднего слоев. Непосредственное добавление сетевого слоя из 3 нейронов добавит только 3 параметра веса.
- 3. Функционально функция слоя глубины аналогична «генерации функций», а слой ширины похож на «функции памяти».
Увеличение глубины сети может получить более абстрактные и высокоуровневые функции, а увеличение ширины сети может получить более богатые функции.
Конечно, глубина и ширина не являются полностью противоположными. Увеличение глубины и ширины увеличивает количество изучаемых параметров, тем самым увеличивая способность нейронных сетей к подгонке. При проектировании сетей необходимо соблюдать баланс между глубиной и широтой.
Статья впервые публикуется на паблике "Расширенный алгоритм", обратите внимание на более оригинальные статьи