Глубокое обучение (глубинное обучение; англ.deep learning) — совокупность методов машинного обучения (с учителем, с частичным привлечением учителя, без учителя, с подкреплением), основанных на обучении представлениям (англ.feature/representation learning), а не специализированных алгоритмах под конкретные задачи. Многие методы глубокого обучения были известны ещё в 1980-е годы (и даже ранее[1]), но результаты не впечатляли[2], пока продвижения в теории искусственных нейронных сетей (предобучение нейросетей с помощью специального случая ненаправленной графической модели, так называемой ограниченной машины Больцмана) и вычислительные мощности середины 2000-х годов (в том числе использующие графические ускорители, программируемые пользователем вентильные матрицы и различные формы нейронных процессоров) не позволили создавать сложные технологические архитектуры нейронных сетей, обладающие достаточной производительностью и позволяющие решать широкий спектр задач, не поддававшихся эффективному решению ранее, например, в компьютерном зрении, машинном переводе, распознавании речи, причём качество решения во многих случаях теперь сопоставимо, а в некоторых превосходит эффективность человека[3].
Несмотря на то что термин «глубокое обучение» появился в научном сообществе машинного обучения только в 1986 году после работы Рины Дехтер[4], первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства» ещё в 1965 году[5].
Другие глубокие архитектуры, в особенности те, которые специализируются на распознавании образов, берут своё начало с неокогнитрона, разработанного Кунихико Фукусимой[англ.] в 1980 году. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов[6]. Несмотря на успешный опыт, для обучения модели потребовалось три дня, что существенно ограничивало применимость этого метода. Низкая скорость обучения связана со многими факторами, включая проблему исчезающих градиентов из-за большого разброса значений обучаемых параметров, которую в 1991 году анализировали Йорген Шмидхубер и Зепп Хохрайтер. Из-за этих проблем нейронные сети в 1990-х годах уступили место методу опорных векторов.
К 1991 году такие системы использовались для распознавания изолированных двумерных рукописных цифр, а распознавание трёхмерных объектов осуществлялось путём сопоставления двумерных изображений с трёхмерной объектной моделью, изготовленной вручную. В 1992 году создана модель кресцептрона[7][8][9] для распознавания трёхмерных объектов в загромождённых сценах.
В 1994 году Андре де Карвальо вместе с Майком Фэйрхерстом и Дэвидом Биссетом опубликовал экспериментальные результаты многослойной булевой нейронной сети, также известной как невесомая нейронная сеть, состоящая из трехуровневого самоорганизующегося модуля нейронной сети для выделения признаков (SOFT), а затем — модуль нейронной сети многоуровневой классификации (GSN). Каждый модуль прошёл независимое друг от друга обучение. Каждый слой в модуле извлекал объекты с растущей сложностью относительно предыдущего слоя.[10]
В 1995 году Брендан Фрей продемонстрировал, что можно обучить (в течение двух дней) сеть, содержащую шесть полностью соединённых слоев и несколько сотен скрытых юнитов[неизвестный термин], используя алгоритм сна-бодрствования, разработанный совместно с Питером Даяном и Хинтоном[11]. Многие факторы способствуют низкой скорости, включая проблему исчезающего градиента, проанализированную в 1991 году Зеппом Хохрайтером[12][13].
Более простые модели, которые используют ручные работы, специфичные для конкретной задачи, такие как фильтры Габора и метод опорных векторов (МОВ), были популярным выбором в 1990-х и 2000-х годах из-за вычислительных затрат искусственной нейронной сети (ИНС, англ. ANN) и отсутствия понимания того, как мозг связывает свои биологические сети.
Как поверхностное, так и глубокое обучение (например, рекуррентные сети) ИНС изучалась в течение многих лет[14][15][16]. Эти методы никогда не превосходили неоднородную смешанную Гауссову модель и скрытую модель Маркова, основанную на генеративных моделях речи, обученных дискриминационно[17]. Были проанализированы ключевые трудности, в том числе уменьшение градиента[12] и слабая временная корреляционная структура в нейронных прогностических моделях[18][19]. Дополнительными трудностями были отсутствие обучающих данных и ограниченная вычислительная мощность.
Глубокое обучение приобрело популярность в середине 2000-х годов, когда всё сошлось воедино: компьютеры стали достаточно мощными, чтобы обучать большие нейронные сети (вычисления научились делегировать графическим процессорам, что ускорило процесс обучения на порядок), наборы данных стали достаточно объёмными, чтобы обучение больших сетей имело смысл, а в теории искусственных нейронных сетей произошло очередное продвижение — статьи Хинтона, Осиндеро и Тэ[20], а также Бенджио[21], в которых авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки.
Революция в глубоком обучении
В 2012 году команда под руководством Джорджа Э. Даля выиграла конкурс «Merck Molecular Activity Challenge», используя многозадачные глубокие нейронные сети для прогнозирования биомолекулярной мишени одного препарата[22]. В 2014 году группа Хохрейтера использовала глубокое обучение для выявления нецелевых и токсических эффектов химических веществ, присутствующих в окружающей среде, в питательных веществах, продуктах домашнего обихода и лекарствах, и выиграла «Tox21 Data Challenge» от Национального института здравоохранения США, Управления по санитарному надзору за качеством пищевых продуктов и медикаментов и NCATS[23].
Значительное развитие в распознавании изображений или объектов ощущалось в период с 2011 по 2012 годы. Хотя сверточные нейронные сети (СНН), обученные обратному распространению, существовали в течение десятилетий, и GPU внедряли нейронные сети в течение многих лет, включая СНН, быстрые реализации СНН на GPU использовали для развития компьютерного зрения. В 2011 году этот подход впервые позволил добиться сверхчеловеческой производительности в конкурсе визуального распознавания образов. Также в 2011 году он выиграл конкурс рукописного ввода ICDAR, а в мае 2012 года — конкурс сегментации изображений ISBI[24]. До 2011 года СНН не играли основной роли на конференциях по компьютерному зрению, но в июне 2012 года доклад Циресана[25] на ведущей конференции CVPR показал, как максимальное объединение СНН на GPU может значительно улучшить многие результаты бенчмарков. В октябре 2012 г. аналогичная система была разработана Крижевским[26], коллектив которого выиграл крупномасштабный конкурс ImageNet со значительным преимуществом по сравнению с методами поверхностного машинного обучения. В ноябре 2012 года команда Циресана также выиграла конкурс ICPR по анализу больших медицинских изображений для выявления рака, а в следующем году MICCAI Grand Challenge по той же теме[27]. В 2013 и 2014 годах частота ошибок в задаче ImageNet с использованием глубокого обучения была ещё снижена вследствие аналогичной тенденции в широкомасштабном распознавании речи. Стивен Вольфрам в рамках проекта по идентификации изображений опубликовал эти улучшения[28].
Классификация изображений была затем расширена до более сложной задачи генерации описаний (подписей) для изображений, часто в виде комбинации СНН и LSTM[29][30][31][32].
Некоторые исследователи считают, что победа ImageNet в октябре 2012 года положила начало «революции глубокого обучения», которая изменила индустрию искусственного интеллекта[33].
В марте 2019 года Йошуа Бенжио, Джеффри Хинтон и Янн ЛеКун были награждены премией Тьюринга за концептуальные и инженерные прорывы, которые сделали глубокие нейронные сети критическим компонентом вычислений.
Нейронные сети
Искусственные нейронные сети (ИНС) — это вычислительные системы, основанные на принципах биологических нейронных сетей, составляющих мозг животных. Такие системы учатся (постепенно улучшают свои способности) выполнять задачи, как правило, без программирования для решения конкретных задач. Например, при распознавании изображений кошек они могут научиться распознавать изображения, содержащие кошек, анализируя примеры изображений, которые были вручную помечены как «кошка» или «нет кошки», и используя результаты анализа для идентификации кошек на других изображениях. Наибольшее применение ИНС нашли в программных приложениях, которые трудно выразить традиционным компьютерным алгоритмом, использующим программирование на основе правил.
ИНС основаны на наборе связанных единиц, называемых искусственными нейронами (аналог биологических нейронов в биологическом мозге). Каждое соединение (синапс) между нейронами может передавать сигнал другому нейрону. Принимающий (постсинаптический) нейрон может обрабатывать сигнал (сигналы) и затем сигнализировать о подключенных к нему нейронах. Нейроны могут иметь состояние, обычно представляемое действительными числами, обычно между 0 и 1. Нейроны и синапсы могут также иметь вес, который изменяется в процессе обучения, что может увеличивать или уменьшать силу сигнала, который он посылает далее.
Как правило, нейроны организованы в слои. Разные слои могут выполнять различные виды преобразований. Сигналы проходят от первого (входного) до последнего (выходного) слоя, возможно, после многократного прохождения слоев.
Первоначальная цель нейросетевого подхода состояла в том, чтобы решать задачи так же, как это делает человеческий мозг. Со временем внимание сосредоточилось на подборе определённых интеллектуальных способностей, что привело к отклонениям от биологии, таким как обратное распространение, или передаче информации в обратном направлении и настройке сети для отражения этой информации.
Нейронные сети используются для решения различных задач, включая машинное зрение, распознавание речи, машинный перевод, фильтрацию в социальных сетях, видеоигры и медицинскую диагностику.
Начиная с 2017 года нейронные сети обычно имеют от нескольких тысяч до нескольких миллионов единиц и миллионы соединений. Несмотря на то что это число на несколько порядков меньше, чем число нейронов в человеческом мозге, эти сети могут выполнять множество задач на уровне, превышающем возможности людей (например, распознавание лиц, игра в го)[34].
Глубокие нейронные сети
Глубокая нейронная сеть (глубинная нейронная сеть, ГНС, англ. DNN — Deep neural network) — это искусственная нейронная сеть (ИНС) с несколькими слоями между входным и выходным слоями[35][36]. ГНС находит корректный метод математических преобразований, чтобы превратить входные данные в выходные, независимо от линейной или нелинейной корреляции. Сеть продвигается по слоям, рассчитывая вероятность каждого выхода. Например, ГНС, которая обучена распознавать породы собак, пройдет по заданному изображению и вычислит вероятность того, что собака на изображении относится к определённой породе. Пользователь может просмотреть результаты и выбрать вероятности, которые должна отображать сеть (выше определённого порога, например), и вернуть в сеть предложенную метку. Каждое математическое преобразование считается слоем, а сложные ГНС имеют много слоев, отсюда и название «глубинные» или «глубокие» сети.
ГНС могут моделировать сложные нелинейные отношения. Архитектуры ГНС генерируют композиционные модели, в которых объект выражается в виде многоуровневой композиции примитивов[37]. Дополнительные уровни позволяют составлять элементы из более низких уровней, потенциально моделируя сложные данные с меньшим количеством единиц, чем мелкая сеть с аналогичными показателями[35].
Глубокая архитектура включает в себя множество вариантов нескольких основных подходов. Каждая архитектура нашла успех в определённых областях. Не всегда возможно сравнить производительность нескольких архитектур, если они не были оценены на одних и тех же наборах данных.
ГНС, как правило, представляют собой сети с прямой связью, в которых данные передаются от входного уровня к выходному уровню без обратной связи. Сначала ГНС создает карту виртуальных нейронов и назначает случайные числовые значения или «веса» соединениям между ними. Веса и входные данные умножаются и возвращают выходной сигнал от 0 до 1. Если сеть не точно распознала конкретный шаблон, алгоритм будет корректировать весовые коэффициенты, до тех пор, пока не определит коэффициенты, правильно обрабатывающие данные.[38]
обладает несколькими слоями выявления признаков или параметров представления данных (обучение без учителя). При этом признаки организованы иерархически, признаки более высокого уровня являются производными от признаков более низкого уровня.
является частью более широкой области машинного обучения изучения представлений данных.
формирует в процессе обучения слои на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; слои образуют иерархию понятий.
Все определения констатируют
наличие нескольких слоев нелинейной обработки
обучение с учителем или без учителя признаков каждого слоя, формируя иерархию от низкого до высокого уровня[39].
Алгоритмы глубокого обучения противопоставлены алгоритмам неглубокого обучения по количеству параметризованных преобразований, с которыми сталкивается сигнал, распространяющийся от входного слоя к выходному слою, где параметризованным преобразованием считается такой блок обработки данных, у которого есть обучаемые параметры, такие как веса или пороги[41]. Цепочка преобразований от входа к выходу называется CAP — путём передачи ответственности (англ.credit assignment path, CAP). CAP описывают потенциальные причинные связи вдоль сети от входа к выходу, при этом путь в разных ветвях может иметь разную длину. Для нейронной сети прямого распространения (feedforward) глубина CAP не отличается от глубины сети и равна количеству скрытых слоев плюс один (выходной слой также параметризован). Для рекуррентных нейронных сетей, в которых сигнал может перескакивать через слои минуя промежуточные, CAP из-за обратной связи потенциально неограничен в длине. Не существует универсально согласованного порога глубины деления неглубокого обучения от глубокого обучения, но обычно считается, что глубокое обучение характеризуется несколькими нелинейными слоями (CAP > 2). Йорген Шмидхубер выделяет также «очень глубокое обучение», когда CAP > 10[41].
Комбинируя эти методы, создаются сложные системы, соответствующие различным задачам искусственного интеллекта.
Глубокое обучение является апробированной выборкой из широкого семейства методов машинного обучения для представлений данных, наиболее соответствующих характеру задачи. Изображение, например, может быть представлено многими способами, такими как вектор интенсивности значений на пиксель, или (в более абстрактной форме) как множество примитивов, областей определённой формы, и т. д. Удачные представления данных облегчают решение конкретных задач — например, распознавания лиц и выражений лица[44]). В системах глубокого обучения автоматизирует сам процесс выбора и настройки признаков, проводя обучение признаков[англ.]без учителя или с частичным привлечением учителя, используя для этого эффективные алгоритмы и иерархическое извлечение признаков[англ.][45].
Исследования в этой области позволили усовершенствовать модели работы с большими объёмами немаркированных данных. Некоторые подходы возникли в результате достижений в области нейронаук, успехов интерпретации обработки информации, построения коммуникационных моделей в нервной системе, таких как нейронное кодирование, связанное с определением отношения между стимулом и нейронными реакциями и взаимосвязи электрической активности между нейронами в головном мозге[46].
Несмотря на успехи использования глубинного обучения, у него всё же есть фундаментальное ограничение: модели глубинного обучения ограничены в том, что они могут представлять, и большинство программ нельзя выразить в виде непрерывного геометрического морфинга многообразия данных[47].
Осталось, однако, и скептическое представление, что глубокое обучение — не что иное, как модное слово или ребрендинг для нейронных сетей[48][49].
↑На самом деле, первые глубокие сети появились ещё в середине 1960-х годов: сети в виде глубоких перцептронов были описаны в работах советских учёных А. Г. Ивахненко и В. Г. Лапы — см. далее раздел «История».
↑Исследователь нейронных сетей Джон Денкер (англ.John Denker) в 1994 году заметил: «Нейронные сети — это второй лучший способ сделать практически что угодно».
↑Deng, L.; Hassanein, K.; Elmasry, M. Analysis of correlation structure for a neural predictive model with applications to speech recognition // Neural Networks. 7 (2). — 1994. — С. 331–339. — doi:10.1016/0893-6080(94)90027-2.
↑Ciresan, D.; Meier, U.; Schmidhuber, J. Multi-column deep neural networks for image classification // IEEE Conference on Computer Vision and Pattern Recognition. — 2012. — С. 3642–3649. — ISBN 978-1-4673-1228-8. — doi:10.1109/cvpr.2012.6248110. — arXiv:1202.2745..
↑Ciresan, D.; Giusti, A.; Gambardella, L.M.; Schmidhuber, J. Mitosis Detection in Breast Cancer Histology Images using Deep Neural Networks // Proceedings MICCAI. Lecture Notes in Computer Science. 7908 (Pt 2): 411–418.. — 2013. — ISBN 978-3-642-38708-1. — doi:10.1007/978-3-642-40763-5_51. — PMID24579167.
↑Vinyals, Oriol; Toshev, Alexander; Bengio, Samy; Erhan, Dumitru. Show and Tell: A Neural Image Caption Generator // [cs.CV]. — 2014. — arXiv:1411.4555.
↑Fang, Hao; Gupta, Saurabh; Iandola, Forrest; Srivastava, Rupesh; Deng, Li; Dollár, Piotr; Gao, Jianfeng; He, Xiaodong; Mitchell, Margaret; Platt, John C; Lawrence Zitnick, C; Zweig, Geoffrey. From Captions to Visual Concepts and Back // [cs.CV]. — 2014. — arXiv:https://arxiv.org/abs/1411.4952.
↑Kiros, Ryan; Salakhutdinov, Ruslan; Zemel, Richard S. Unifying Visual-Semantic Embeddings with Multimodal Neural Language Models // [cs.LG]. — 2014. — arXiv:https://arxiv.org/abs/1411.2539.
↑Zhong, Sheng-hua; Liu, Yan; Liu, Yang. Bilinear Deep Learning for Image Classification // Proceedings of the 19th ACM International Conference on Multimedia. MM '11. New York, NY, USA: ACM. — 2011. — С. 343–352. — ISBN 9781450306164. — doi:10.1145/2072298.2072344.
↑Silver, David; Huang, Aja; Maddison, Chris J.; Guez, Arthur; Sifre, Laurent; Driessche, George van den; Schrittwieser, Julian; Antonoglou, Ioannis; Panneershelvam, Veda. Mastering the game of Go with deep neural networks and tree search // Nature: 529 (7587):. — January 2016. — ISSN1476-4687. — doi:10.1038/nature16961. — Bibcode: 2016Natur.529..484S. — PMID26819042.
↑Glauner, P. (2015). Deep Convolutional Neural Networks for Smile Recognition (MSc Thesis). Imperial College London, Department of Computing. arXiv:1508.06535.
↑Olshausen, B. A. Emergence of simple-cell receptive field properties by learning a sparse code for natural images (англ.) // Nature : journal. — 1996. — Vol. 381, no. 6583. — P. 607—609. — doi:10.1038/381607a0. — Bibcode: 1996Natur.381..607O. — PMID8637596.