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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Глубокое обучение (глубинное обучение; англ. Deep learning) — совокупность методов машинного обучения (с учителем, с частичным привлечением учителя, без учителя, с подкреплением), основанных на обучении представлениям (англ. feature/representation learning), а не специализированным алгоритмам под конкретные задачи. Многие методы глубокого обучения были известны ещё в 1980-е (и даже ранее[1]), но результаты были невпечатляющими[2], пока продвижения в теории искусственных нейронных сетей (предобучение нейросетей с помощью специального случая ненаправленной графической модели, так называемой ограниченной машины Больцмана) и вычислительные мощности середины 2000-х (прежде всего, графических процессоров Nvidia, а в настоящее время и тензорных процессоров Google) не позволили создавать сложные технологические архитектуры нейронных сетей, обладающие достаточной производительностью и позволяющие решать широкий спектр задач, не поддававшихся эффективному решению ранее, например, в компьютерном зрении, машинном переводе, распознавании речи, причём качество решения во многих случаях теперь сопоставимо, а в некоторых случаях превосходит эффективность «белковых» экспертов[3].

История[править | править код]

Несмотря на то что термин «глубокое обучение» появился в научном сообществе машинного обучения только в 1986 году после работы Рины Дехтер[4], первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства»[5].

Другие глубокие архитектуры, в особенности те, которые специализируются на распознавании образов, берут своё начало с неокогнитрона, разработанного Кунихико Фукусимой в 1980 году. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов[6]. Несмотря на успешный опыт, для обучения модели потребовалось три дня, что существенно ограничивало применимость этого метода. Низкая скорость обучения связана со многими факторами, включая проблему исчезающих градиентов из-за большого разброса масштабов обучаемых параметров, которую в 1991 году анализировали Йорген Шмидхубер и Сепп Хохрайтер. Из-за этих проблем нейронные сети в 1990-х годах уступили место методу опорных векторов.

Глубокое обучение приобрело популярность в середине 2000-х годов, когда всё сошлось воедино: компьютеры стали достаточно мощными, чтобы обучать большие нейронные сети (вычисления научились делегировать графическим процессорам, что ускорило процесс обучения на порядок), наборы данных стали достаточно объёмными, чтобы обучение больших сетей имело смысл, а в теории искусственных нейронных сетей произошло очередное продвижение — статьи Хинтона, Осиндеро и Тэ[7], а также Бенджио[8], в которых авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки.

Определения[править | править код]

Глубокое обучение характеризуется, как класс алгоритмов машинного обучения, который[9]:

  • использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя. Система глубокого обучения может сочетать алгоритмы обучения с учителем и без учителя, при этом анализ образца представляет собой обучение без учителя, а классификация — обучение с учителем.
  • обладает несколькими слоями выявления признаков или параметров представления данных (обучение без учителя). При этом признаки организованы иерархически, признаки более высокого уровня являются производными от признаков более низкого уровня.
  • является частью более широкой области машинного обучения изучения представлений данных.
  • формирует в процессе обучения слои на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; слои образуют иерархию понятий.

Все определения констатируют

  1. наличие нескольких слоев нелинейной обработки
  2. обучение с учителем или без учителя признаков каждого слоя, формируя иерархию от низкого до высокого уровня[9].

Состав конкретных нелинейных слоёв зависит от решаемой проблемы. Используются как скрытые слои нейронной сети, так и слои сложных логических преобразований[10]. Система может включать скрытые переменные, организованные послойно в глубоких генеративных моделях, таких как узлы в глубокой сети доверия и глубокой ограниченной машине Больцмана.

Алгоритмы глубокого обучения противопоставлены алгоритмам неглубокого обучения по количеству параметризованных преобразований, с которыми сталкивается сигнал, распространяющийся от входного слоя к выходному слою, где параметризованным преобразованием считается такой блок обработки данных, у которого есть обучаемые параметры, такие как веса или пороги[11]. Цепочка преобразований от входа к выходу называется CAP — путем передачи ответственности (англ. credit assignment path, CAP). CAP описывают потенциальные причинные связи вдоль сети от входа к выходу, при этом путь в разных ветвях может иметь разную длину. Для нейронной сети прямого распространения (feedforward) глубина CAP не отличается от глубины сети и равна количеству скрытых слоев плюс один (выходной слой также параметризован). Для рекуррентных нейронных сетей, в которых сигнал может перескакивать через слои минуя промежуточные, CAP из-за обратной связи потенциально неограничен в длине. Не существует универсально согласованного порога глубины деления неглубокого обучения от глубокого обучения, но обычно считается, что глубокое обучение характеризуется несколькими нелинейными слоями (CAP > 2). Йорген Шмидхубер выделяет также «очень глубокое обучение», когда CAP > 10[11].

Содержание[править | править код]

Глубокое обучение выражается набором алгоритмов машинного обучения для моделирования высокоуровневых абстракций, применяя архитектуры, включающие многочисленные нелинейные преобразования[9][10][11][12][13].

В первую очередь к глубинному обучению относятся следующие методы и их вариации:

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

Глубокое обучение является апробированной выборкой из широкого семейства методов машинного обучения для представлений данных, наиболее соответствующих характеру задачи. Изображение, например, может быть представлено многими способами, такими как вектор интенсивности значений на пиксель, или (в более абстрактной форме) как множество примитивов, областей определённой формы, и т. д. Удачные представления данных облегчают решение конкретных задач — например, распознавания лиц и выражений лица[14]). В системах глубокого обучения автоматизирует сам процесс выбора и настройки признаков, проводя обучение признаков[en] без учителя или с частичным привлечением учителя, используя для этого эффективные алгоритмы и иерархическое извлечение признаков[en][15].

Исследования в этой области позволили усовершенствовать модели работы с большими объёмами немаркированных данных. Некоторые подходы возникли в результате достижений в области нейронаук, успехов интерпретации обработки информации, построения коммуникационных моделей в нервной системе, таких как нейронное кодирование, связанное с определением отношения между стимулом и нейронными реакциями и взаимосвязи электрической активности между нейронами в головном мозге[16].

Системы глубокого обучения нашли применение в таких областях, как компьютерное зрение, распознавание речи, обработка естественного языка, аудиораспознавание, биоинформатика, где для ряда задач были продемонстрированы существенно лучшие результаты, чем ранее.

Несмотря на успехи использования глубинного обучения у него всё же есть фундаментальное ограничение: модели глубинного обучения ограничены в том, что они могут представлять, и большинство программ нельзя выразить в виде непрерывного геометрического морфинга многообразия данных[17].

Осталось, однако, и скептическое представление, что глубокое обучение — не что иное, как модное слово или ребрендинг для нейронных сетей[18][19].

См. также[править | править код]

Примечания[править | править код]

  1. На самом деле, первые глубокие сети появились ещё в середине 1960-х: сети в виде глубоких перцептронов были описаны в работах советских учёных А. Г. Ивахненко и В. Г. Лапы — см. далее раздел «История».
  2. Исследователь нейронных сетей Джон Денкер (John Denker) в 1994 году заметил: «Нейронные сети — это второй лучший способ сделать практически что угодно».
  3. Ciresan, Dan; Meier, U.; Schmidhuber, J. (June 2012). “Multi-column deep neural networks for image classification”. 2012 IEEE Conference on Computer Vision and Pattern Recognition: 3642—3649. DOI:10.1109/cvpr.2012.6248110.
  4. Rina Dechter (1986). Learning while searching in constraint-satisfaction problems. University of California, Computer Science Department, Cognitive Systems Laboratory.
  5. Ивахненко А. Г., Лапа В. Г. Кибернетические предсказывающие устройства. — К.: «Наукова думка», 1965. — 216 с. — ISBN 978-5-458-61159-6.
  6. Yann LeCun et al. Backpropagation Applied to Handwritten Zip Code Recognition.
  7. A Fast Learning Algorithm for Deep Belief Nets
  8. Bengio, Yoshua (2012), "Practical recommendations for gradient-based training of deep architectures", arΧiv:1206.5533 
  9. 1 2 3 Deng, L.; Yu, D. (2014). “Deep Learning: Methods and Applications” (PDF). Foundations and Trends in Signal Processing. 7 (3—4): 1—199. DOI:10.1561/2000000039.
  10. 1 2 Bengio, Yoshua (2009). “Learning Deep Architectures for AI” (PDF). Foundations and Trends in Machine Learning. 2 (1): 1—127. DOI:10.1561/2200000006. Архивировано из оригинала (PDF) 2016-03-04. Проверено 2017-11-24. Используется устаревший параметр |deadlink= (справка)
  11. 1 2 3 Schmidhuber, J. (2015). “Deep Learning in Neural Networks: An Overview”. Neural Networks. 61: 85—117. arXiv:1404.7828. DOI:10.1016/j.neunet.2014.09.003. PMID 25462637.
  12. Bengio, Y.; Courville, A.; Vincent, P. (2013). “Representation Learning: A Review and New Perspectives”. IEEE Transactions on Pattern Analysis and Machine Intelligence. 35 (8): 1798—1828. arXiv:1206.5538. DOI:10.1109/tpami.2013.50.
  13. Bengio, Yoshua; LeCun, Yann; Hinton, Geoffrey (2015). “Deep Learning”. Nature. 521: 436—444. DOI:10.1038/nature14539. PMID 26017442.
  14. Glauner, P. (2015). Deep Convolutional Neural Networks for Smile Recognition (MSc Thesis). Imperial College London, Department of Computing. arXiv:1508.06535.
  15. Song, Lee, Neural Information Processing, 2013
  16. Olshausen, B. A. (1996). “Emergence of simple-cell receptive field properties by learning a sparse code for natural images”. Nature. 381 (6583): 607—609. Bibcode:1996Natur.381..607O. DOI:10.1038/381607a0. PMID 8637596.
  17. Francois Chollet. Chapter 9, Section 2 // Deep Learning with Python. — Manning, 2017. — 350 p. — ISBN 9781617294433.
  18. Deep Learning for Efficient Discriminative Parsing. Время от начала источника: 7min 45s.
  19. Gomes, Machine-Learning Maestro Michael Jordan on the Delusions of Big Data and Other Huge Engineering Efforts

Литература[править | править код]

  • Гудфеллоу Я., Бенджио И., Курвилль А. Глубокое обучение = Deep Learning. — М.: ДМК Пресс, 2017. — 652 с. — ISBN 978-5-97060-554-7.
  • Николенко С., Кадурин А., Архангельская Е. Глубокое обучение. — СПб.: Питер, 2018. — 480 с. — ISBN 978-5-496-02536-2.

Ссылки[править | править код]

Критика[править | править код]