Почему сообщества НЛП и машинного обучения заинтересованы в глубоком обучении?

24

Я надеюсь, что вы можете мне помочь, так как у меня есть несколько вопросов на эту тему. Я новичок в области глубокого обучения, и хотя я сделал несколько уроков, я не могу связать или отличить понятия друг от друга.

user3352632
источник
8
В основном потому, что они обеспечивают самые современные результаты и устраняют необходимость в разработке функций.
Эмре
2
Я бы предложил не использовать НЛП и ОД вместе в таком контексте, как если бы они были сопоставимыми объектами. Это ИМХО два отчетливо отдельных поля. Несмотря на то, что в НЛП используется множество подходов, методов, алгоритмов и инструментов по ОД, НЛП является прикладной областью, тогда как ОД является (более) общей.
Александр Блех

Ответы:

27

Зачем использовать глубокие сети?

Давайте сначала попробуем решить очень простую задачу классификации. Скажем, вы модерируете веб-форум, который иногда наводнен спам-сообщениями. Эти сообщения легко распознать - они чаще всего содержат определенные слова, как «купить», «порно» и т.д., и URL на внешние ресурсы. Вы хотите создать фильтр, который будет предупреждать вас о таких подозрительных сообщениях. Оказывается, это довольно просто - вы получаете список функций (например, список подозрительных слов и наличие URL-адреса) и обучаете простой логистической регрессии (также известной как персептрон), то есть модель типа:

g(w0 + w1*x1 + w2*x2 + ... + wnxn)

где x1..xnваши возможности (либо наличие определенного слова или URL), w0..wn- ученые коэффициенты и g()является логистической функцией в результате макияжа быть между 0 и 1. Это очень простым классификатор, но для этой простой задачи она может дать очень хорошие результаты, создавая граница линейного решения. Предполагая, что вы использовали только 2 объекта, эта граница может выглядеть примерно так:

линейная граница

Здесь 2 оси представляют особенности (например, количество вхождений определенного слова в сообщение, нормализованное вокруг нуля), красные точки остаются для спама, а синие - для обычных сообщений, а черная линия показывает разделительную линию.

Но вскоре вы заметите , что некоторые хорошие сообщения содержат много вхождений слова «купить», но никаких ссылок или расширенное обсуждение порно обнаружения , не на самом деле refferring в порнофильмах. Линейная граница решения просто не может справиться с такими ситуациями. Вместо этого вам нужно что-то вроде этого:

нелинейная граница

Эта новая нелинейная граница принятия решений является гораздо более гибкой , т. Е. Она может соответствовать данным гораздо ближе. Существует много способов достижения этой нелинейности - вы можете использовать полиномиальные характеристики (например x1^2) или их комбинацию (например x1*x2) или проецировать их в более высокое измерение, как в методах ядра . Но в нейронных сетях это обычно решается путем объединения персептронов или, другими словами, путем создания многослойного персептрона, Нелинейность здесь происходит от логистической функции между слоями. Чем больше слоев, тем более сложные узоры могут быть покрыты MLP. Однослойный (персептрон) может обрабатывать простое обнаружение спама, сеть из 2-3 слоев может уловить сложные комбинации функций, а сети из 5-9 слоев, используемые крупными исследовательскими лабораториями и такими компаниями, как Google, могут моделировать весь язык или обнаруживать кошек. на изображениях.

Это существенная причина иметь глубокие архитектуры - они могут моделировать более сложные шаблоны .

Почему глубокие сети трудно тренировать?

При наличии только одного признака и линейной границы принятия решения на самом деле достаточно иметь только 2 обучающих примера - один положительный и один отрицательный. С несколькими функциями и / или нелинейной границей решения вам нужно на несколько порядков больше примеров, чтобы охватить все возможные случаи (например, вам нужно не только найти примеры с word1, word2и word3, но также со всеми возможными их комбинациями). А в реальной жизни вам нужно иметь дело с сотнями и тысячами объектов (например, словами на языке или пикселями на изображении) и, по крайней мере, несколькими слоями, чтобы иметь достаточную нелинейность. Размер набора данных, необходимый для полного обучения таких сетей, легко превышает 10 30 примеров, что делает невозможным получение достаточного количества данных. Другими словами, со многими функциями и многими уровнями наша функция принятия решений становится слишком гибкойчтобы быть в состоянии узнать это точно .

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

В нейронных сетях было несколько попыток (значимо) уменьшить сложность (гибкость) функции принятия решений. Например, сверточные сети, широко используемые в классификации изображений, предполагают только локальные соединения между соседними пикселями и, таким образом, пытаются изучать только комбинации пикселей внутри небольших «окон» (скажем, 16x16 пикселей = 256 входных нейронов) в отличие от полных изображений (скажем, 100x100 пикселей = 10000 входных нейронов). Другие подходы включают в себя разработку функций, то есть поиск конкретных, обнаруженных человеком дескрипторов входных данных.

Обнаруженные вручную особенности очень перспективны. Например, при обработке естественного языка иногда полезно использовать специальные словари (например, содержащие слова, относящиеся к спаму) или отлавливать отрицание (например, « не хорошо»). А в компьютерном зрении такие вещи, как дескрипторы SURF или функции типа Хаара , практически незаменимы.

Но проблема с ручным проектированием функций состоит в том, что буквально годы нужны для того, чтобы придумать хорошие дескрипторы. Более того, эти особенности часто специфичны

Необслуживаемая предварительная подготовка

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

глубокое обучение

После такой (неконтролируемой) предварительной подготовки сеть обычно преобразуется в MLP и используется для обычного контролируемого обучения. Обратите внимание, что предварительная подготовка проводится послойно. Это значительно уменьшает пространство решения для алгоритма обучения (и, следовательно, количество необходимых обучающих примеров), поскольку ему нужно только изучить параметры внутри каждого слоя без учета других слоев.

И дальше ...

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

ffriend
источник
3
Прекрасное объяснение это!
Dawny33
6

Сначала мы должны понять, почему нам нужно глубокое обучение. Для построения моделей ML нужны тестовые данные с метками (контролируемыми или неконтролируемыми). Во многих областях, поскольку данные растут, поддерживать данные с метками сложно. Сети глубокого обучения не нуждаются в маркированных данных. Алгоритмы глубокого обучения могут определить метки. Таким образом, это устраняет необходимость в специалистах по предметам предлагать ярлыки для данных, что очень важно в области распознавания речи, компьютерного зрения и понимания языка. Распознавание изображений в Google Cat - очень интересный эксперимент. Также интересно знать «Джеффри Хинтон» профессора, которого нанял Google.

http://www.wired.com/2014/01/geoffrey-hinton-deep-learning/

Вы можете получить больше понимания, как вы исследуете в этой структуре.

i5Vemula
источник
1
Глубокое обучение не может понять ярлыки (как это может быть?), Но только изучить особенности. Вам все еще нужно некоторое количество помеченных данных и контролируемое обучение для решения таких задач, как классификация или регрессия.
друг
0

Глубокое обучение существует уже давно. Машины CNN, RNN, Boltzmann, конечно, выглядят как новые технологии, но они были разработаны давно. Проверьте историю глубокого обучения

https://en.wikipedia.org/wiki/Deep_learning#History

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

Я считаю, что из-за этих факторов мы видим, что многие сообщества НЛП / МЛ сместили свое внимание на глубокое обучение.

ШАШАНК ГУПТА
источник