оригинал:любовь лето.com/deep-learn я…
Автор: Сергиос Карагианнакос.
Поскольку статья немного длинная, она будет разделена на верхнюю и нижнюю статьи и будет развиваться отдельно.
Введение
Глубокое обучение стало популярным с тех пор, как нейронная сеть превзошла людей в соревновании по распознаванию изображений в 2012 году, но в то время лишь немногие люди могли предсказать, что произойдет дальше.
За последнее десятилетие стало доступно все больше и больше алгоритмов, и все больше и больше компаний начали применять эти алгоритмы в своей повседневной деятельности.
В этой статье постарается представить все важные алгоритмы глубоких алгоритмов и сетевых структур в течение многих лет, в том числе те, которые используются в приложениях, используемых в приложениях для обработки естественного языка. Некоторые из них очень широко используются, но каждый алгоритм имеет свои преимущества и недостатки.
Основная цель этой статьи — дать вам общее представление об этой области и дать вам знать, какой алгоритм использовать в различных конкретных ситуациях, поскольку некоторые люди могут чувствовать себя потерянными и сбитыми с толку при обучении с нуля. Я полагаю, что после прочтения этой статьи вы будете знать определения этих алгоритмов и то, как их использовать.
содержание
Каталог этой статьи выглядит следующим образом:
- Что такое глубокое обучение?
- Нейронные сети
- Нейронные сети с прямой связью (FNN)
- Сверточные нейронные сети (CNN)
- Рекуррентные нейронные сети (RNN)
- Рекурсивная нейронная сеть
- Автоэнкодеры
- Сети глубокого доверия и ограниченные машины Больцмана
- Генеративно-состязательные сети
- Transformers
- Граф нейронных сетей
- Обработка естественного языка на основе глубокого обучения
- Вложение слов
- Моделирование последовательности
- компьютерное зрение на основе глубокого обучения
- Локализация и обнаружение объектов
- Детекторы одиночного выстрела (SSD)
- Семантическая сегментация
- Оценка позы
1. Что такое глубокое обучение?
Согласно определению Википедии [1]:
Глубокое обучение (также известное как глубокое структурированное обучение или дифференциальное программирование) является членом семейства алгоритмов машинного обучения, основанных на искусственных нейронных сетях и репрезентативном обучении, и его обучение может быть контролируемым, полуконтролируемым или неконтролируемым.
На мой взгляд, глубокое обучение — это серия алгоритмов, рожденных человеческим мозгом, которые обрабатывают данные и создают шаблоны для принятия решений, а также расширяют и улучшают единую модельную структуру, называемую искусственной нейронной сетью.
2. Нейронные сети
Подобно человеческому мозгу, нейронные сети [2] также включают множество нейронов. Каждый нейрон принимает входной сигнал, умножает его на соответствующий вес, суммирует и вводит в нелинейную функцию. Эти нейроны расположены друг над другом и организованы слоями. Как показано слева на следующем рисунке:
Что, если бы это было реализовано на пути нейронов в мозгу? Результат показан справа на рисунке выше, и нейронная сеть является отличным аппроксиматором функции.
Предполагая, что каждое поведение и каждая система могут быть в конечном счете представлены математической функцией (некоторые из которых могут быть очень сложными), если мы сможем найти такую функцию, мы сможем понять все о системе, но найти эту функцию очень сложно, поэтому нам нужно оценить нейронную сеть.
обратное распространение
Нейронная сеть изучает целевую функцию с помощью большого количества данных и итеративного алгоритма, такого как обратное распространение [3]. Мы передаем данные в сеть, она выводит результат, и мы сравниваем вывод с ожидаемым результатом (через функцию потерь) и корректируем веса на основе разницы.
Продолжайте повторять этот процесс. Способ корректировки весов заключается в использовании метода нелинейной оптимизации.Стохастический градиентный спуск[4] для достижения.
После обучения в течение определенного периода времени сеть сможет выдавать очень хорошие результаты, поэтому обучение на этом заканчивается. То есть мы получаем приблизительную функцию.Когда в сеть подаются входные данные с неизвестным результатом, сеть выдает результат в соответствии с изученной приближенной функцией.
Вот пример, чтобы лучше проиллюстрировать процесс. Например, у нас сейчас есть задача, в которой нужно идентифицировать картинки с деревьями. Мы передаем в сеть любую категорию картинок (т. реальную категорию изображения (с деревьями или нет) для сравнения, а затем настройки сети.
По мере увеличения количества обучающих изображений сеть делает все меньше и меньше ошибок. Теперь мы можем передать неизвестное изображение (необучающее изображение) в сеть, и сеть сообщит нам, содержит ли это изображение дерево.
За последние несколько лет исследователи предложили множество очень неожиданных улучшений и усовершенствований этой оригинальной идеи.Каждая новая структура сети соответствует определенным задачам и обеспечивает более высокую точность и скорость. Далее мы представим эти модели одну за другой.
3. Нейронные сети с прямой связью (FNN)
Прямая нейронная сеть обычно принимаетполносвязный слой[5], что означает, что нейроны каждого слоя связаны со всеми нейронами следующего слоя. Эта структура, также известная как многослойный персептрон, первоначально родилась в 1958 году, как показано на рисунке ниже. Однослойный персептрон может изучать только линейные модели разделения, а многослойный персептрон может изучать нелинейные отношения между данными.
Многослойные персептроны хорошо справляются с задачами классификации и регрессии, но по сравнению с другими алгоритмами машинного обучения многослойные персептроны не так легко сходятся. Кроме того, чем больше обучающих данных, тем выше точность многослойного персептрона.
4. Сверточные нейронные сети (CNN)
Сверточная нейронная сеть используетФункция свертки[6]. Вместо того, чтобы использовать все нейроны между слоями для соединения, сверточный слой позволяет соединить только некоторые нейроны между двумя слоями (то есть рецептивное поле).
В определенной степени CNN пытается регуляризировать на основе FNN, чтобы предотвратить переоснащение (то есть способность обученной модели к обобщению плохая), а также может хорошо определять пространственные отношения между данными. Сетевая структура простой CNN показана на следующем рисунке.
Из-за своей способности хорошо определять пространственные отношения между данными, CNN в основном используется в приложениях компьютерного зрения, таких как классификация изображений, распознавание видео, анализ медицинских изображений и автономное вождение [7].
Кроме того, CNN также можно использовать в сочетании с другими типами моделей, такими как рекуррентные нейронные сети и автокодировщики, одним из примеров которых является распознавание символьного языка [8].
5. Рекуррентные нейронные сети (RNN)
Рекуррентные нейронные сети хорошо подходят для данных, зависящих от времени, и используются для прогнозирования временных рядов. Сетевая модель будет иметь форму обратной связи, то есть возвращать выход на вход. Вы можете думать об этом как о цикле, переходя от вывода обратно к входу, передавая информацию обратно в сеть, поэтому сетевая модель имеет возможность запоминать исторические данные и применять их для прогнозов.
Чтобы улучшить производительность модели, исследователи модифицировали исходные нейроны и создали более сложные структуры, такие как блоки GRU [9] и блоки LSHM [11], как показано на следующих фигурах соответственно. LSTMS широко используются в задачах обработки естественного языка, включая перевод, генерацию речи, генерацию речи от текста и т. Д.
6. Рекурсивная нейронная сеть
Рекуррентная нейронная сеть — это еще одна форма рекуррентной нейронной сети, разница в том, что рекуррентная нейронная сеть представляет собой древовидную структуру, поэтому она может моделировать иерархию в обучающем наборе.
Обычно используется в преобразовании речи в текст и семантическом анализе при обработке естественного языка, поскольку эти задачи связаны с двоичными деревьями, контекстом и анализом на основе естественного языка, но рекуррентные нейронные сети работают медленнее, чем рекуррентные нейронные сети.
Ссылаться на
- Хорошо. Wikipedia.org/wiki/deep_come…
- karpathy.github.io/neuralnets/
- блестящий.org/wiki/обратный пиар…
- Как и во втором.IO/оптимизация-…
- любовь summer.com/neural_net для…
- любовь summer.com/neural_net для…
- любовь summer.com/self_Vin дня…
- любовь summer.com/sign-LAN висит…
- woohoo.course RA.org/lecture/NLP…
- Лето любви.com/bit con_pre’s…
Добро пожаловать в мой общедоступный аккаунт WeChat--Рост алгоритма обезьяны, или отсканируйте QR-код ниже, чтобы общаться, учиться и развиваться вместе!