Я надеюсь, что вы можете мне помочь, так как у меня есть несколько вопросов на эту тему. Я новичок в области глубокого обучения, и хотя я сделал несколько уроков, я не могу связать или отличить понятия друг от друга.
Я надеюсь, что вы можете мне помочь, так как у меня есть несколько вопросов на эту тему. Я новичок в области глубокого обучения, и хотя я сделал несколько уроков, я не могу связать или отличить понятия друг от друга.
Ответы:
Давайте сначала попробуем решить очень простую задачу классификации. Скажем, вы модерируете веб-форум, который иногда наводнен спам-сообщениями. Эти сообщения легко распознать - они чаще всего содержат определенные слова, как «купить», «порно» и т.д., и 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 и используется для обычного контролируемого обучения. Обратите внимание, что предварительная подготовка проводится послойно. Это значительно уменьшает пространство решения для алгоритма обучения (и, следовательно, количество необходимых обучающих примеров), поскольку ему нужно только изучить параметры внутри каждого слоя без учета других слоев.
Уже некоторое время здесь проводится неконтролируемая предварительная подготовка, но недавно были найдены другие алгоритмы, улучшающие обучение как в сочетании с предварительной подготовкой, так и без нее. Одним из ярких примеров таких алгоритмов является выпадение - простая техника, которая случайным образом «выбрасывает» некоторые нейроны во время обучения, создает некоторые искажения и предотвращает слишком тесное отслеживание сетей следования данных. Это все еще горячая тема для исследования, поэтому я оставляю это читателю.
Сначала мы должны понять, почему нам нужно глубокое обучение. Для построения моделей ML нужны тестовые данные с метками (контролируемыми или неконтролируемыми). Во многих областях, поскольку данные растут, поддерживать данные с метками сложно. Сети глубокого обучения не нуждаются в маркированных данных. Алгоритмы глубокого обучения могут определить метки. Таким образом, это устраняет необходимость в специалистах по предметам предлагать ярлыки для данных, что очень важно в области распознавания речи, компьютерного зрения и понимания языка. Распознавание изображений в Google Cat - очень интересный эксперимент. Также интересно знать «Джеффри Хинтон» профессора, которого нанял Google.
http://www.wired.com/2014/01/geoffrey-hinton-deep-learning/
Вы можете получить больше понимания, как вы исследуете в этой структуре.
Глубокое обучение существует уже давно. Машины CNN, RNN, Boltzmann, конечно, выглядят как новые технологии, но они были разработаны давно. Проверьте историю глубокого обучения
https://en.wikipedia.org/wiki/Deep_learning#History
Возрождение Deep Learning связано с тем, что вычислительные мощности увеличились в геометрической прогрессии с того времени. С ноутбуком, оснащенным графическими процессорами, вы можете обучать сложную модель глубокого обучения очень маленькому времени по сравнению с предыдущими днями. Модели глубокого обучения также очень эффективны эмпирически. Современное состояние в области изображений, речи и многих других областях - это модели глубокого обучения.
Я считаю, что из-за этих факторов мы видим, что многие сообщества НЛП / МЛ сместили свое внимание на глубокое обучение.