Глубокое обучение — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(История)
м (rollbackEdits.php mass rollback)
 
(не показано 78 промежуточных версий 12 участников)
Строка 1: Строка 1:
'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.
+
[[Файл:Ml_areas.jpg|thumb|250px|Глубокое обучение как часть машинного обучения.]]
  
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.
+
'''Глубокое обучение''' (англ. deep learning) {{---}} совокупность широкого семейства методов машинного обучения, основанных на имитации работы человеческого мозга в процессе обработки данных и создания паттернов, используемых для принятия решений<ref>[https://www.investopedia.com/terms/d/deep-learning.asp Deep Learning, Investopedia]</ref>. Как правило, глубокое обучение предназначено для работы с большими объемами данных и использует сложные алгоритмы для обучения модели<ref>[https://www.quora.com/What-is-the-difference-between-Neural-Networks-and-Deep-Learning The difference between neural networks and deep learning]</ref>. На больших датасетах глубокое обучение показывает более высокую точность результатов в сравнении с традиционным машинным обучением. Зависимость производительности (качества результатов) от объема данных представлена на рисунке ниже.
 +
 
 +
{|align="center"
 +
|-valign="top"
 +
|[[Файл:Perfm_data.jpg|border|450px|thumb|left|Зависимость производительности от объема данных.]]
 +
|}
 +
 
 +
Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостатка вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.
 +
 
 +
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели во многом отличаются от биологического мозга (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся в нейробиологии.
  
 
== История ==
 
== История ==
* 1943 - Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref>
+
* 1943 {{---}} Искусственный нейрон Маккаллока — Питтса<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref> {{---}} узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона;
* 1949 - Принчип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref>
+
* 1949 {{---}} Принцип обучения нейронов Хебба<ref>[https://en.wikipedia.org/wiki/Hebbian_theory Hebbian theory, Wikipedia]</ref> {{---}} изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона имеет тенденцию к усилению;
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref>
+
* 1957 {{---}} Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref> {{---}} математическая или компьютерная модель восприятия информации мозгом;
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref>
+
* 1960 {{---}} Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref> {{---}} метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки;
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>
+
* 1969 {{---}} Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, WIkipedia]</ref>. В данной книге математически показаны ограничения перцептронов;
* 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref>
+
* 1974 {{---}} Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом<ref>[https://en.wikipedia.org/wiki/Backpropagation Backpropagation, Wikipedia]</ref> {{---}} метод вычисления градиента, который используется при обновлении весов многослойного перцептрона;
* 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref>
+
* 1980 {{---}} Первая свёрточная нейронная сеть предложена Кунихико Фукусимой<ref>[https://en.wikipedia.org/wiki/Convolutional_neural_network Convolutional_neural_network, Wikipedia]</ref> {{---}} специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры;
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом
+
* 1982 {{---}} Рекуррентные нейронные сети предложены Д. Хопфилдом {{---}} вид нейронных сетей, где связи между элементами образуют направленную последовательность;
* 1991 - Проблема "исчезающего" градиента была сформулирована С. Хочрейтом
+
* 1991 {{---}} Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени;
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>
+
* 1997 {{---}} Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными промежутками с неопределённой продолжительностью и границами;
* 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном
+
* 1998 {{---}} Градиентный спуск для сверточных нейронных сетей предложен Я. Лекуном;
* 2006 - Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубоких убеждений
+
* 2006 {{---}} Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубокого доверия. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям;
* 2012 - Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>
+
* 2012 {{---}} Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>. Дропаут (от англ. dropout) {{---}} метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети;
* 2012 - Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Начало эры нейронных сетей и глубокого обучения.
+
* 2012 {{---}} Нейронные сети побеждают в ImageNet Challenge<ref>[https://en.wikipedia.org/wiki/ImageNet#ImageNet_Challenge ImageNet Challenge, Wikipedia]</ref>. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения;
 +
* 2014 {{---}} Группа исследователей под руководством Зеппа Хохрейтера использовала глубокое обучение для определения токсичного воздействия лекарств и бытовых средств на окружающую среду. Данна работа была отмечена первым местом на соревновании "Tox21 Data Challenge"<ref>[https://tripod.nih.gov/tox21/challenge/leaderboard.jsp Tox21 Data Challenge Winners]</ref>;
 +
* 2016 {{---}} Программа для игры в го Google AlphaGo выиграла со счётом 4:1 у Ли Седоля, лучшего международного игрока в эту игру. AlphaGo, разработанная DeepMind, использует глубокое обучение с помощью многоуровневых нейронных сетей;
 +
* 2018 {{---}} Глубокое обучение впервые используется для планирования лучевой терапии<ref>[https://aapm.onlinelibrary.wiley.com/doi/abs/10.1002/mp.13271 Automatic treatment planning based on three‐dimensional dose distribution predicted from deep learning technique]</ref>.
  
Начиная с 2012 года машинное обучение во-многом фокусируется на глубоких сетях. Искусственный интеллект и машинное обучение обычно упоминаются в контексте глубокого обучения.
+
В настоящее время глубокое обучение используется [[Глубокое обучение#Применения | во многих сферах]].
Глубокое обучение используется [http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F во-многих сферах].
 
  
 
== Определение ==  
 
== Определение ==  
 
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:
 
'''Глубокое обучение''' {{---}} это класс алгоритмов машинного обучения, который:
  
* использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя.
+
* Использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя;
* может сочетать алгоритмы обучения с учителем (пример {{---}} классификация) и без учителя (пример {{---}} анализ образца).
+
* Может сочетать алгоритмы [[Обучение с учителем | обучения с учителем]]<sup>[на 28.01.19 не создан]</sup> (пример {{---}} классификация) и [[Обучение без учителя | без учителя ]]<sup>[на 28.01.19 не создан]</sup>  (пример {{---}} анализ образца);
* формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.
+
* Формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически {{---}} признаки более высокого уровня являются производными от признаков более низкого уровня;
 
+
{|align="center"
== Нейронные сети ==
+
|-valign="top"
* Искусственные нейронные сети (англ. artificial neural networks (ANN))<ref>[https://en.wikipedia.org/wiki/Artificial_neural_network Artificial neural network, Wikipedia]</ref>
+
|[[Файл:Network_dif.png|border|550px|thumb|left|Глубокие и неглубокие нейронные сети.]]
* Глубокие нейронные сети (англ. deep neural network (DNN))<ref>[https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks Deep neural networks , Wikipedia]</ref>
+
|}
  
 
== Применения ==
 
== Применения ==
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>
+
* Распознавание речи<ref>[https://en.wikipedia.org/wiki/Speech_recognition Speech recognition, Wikipedia]</ref>. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении;
* Компьютерное зрение<ref>[http://neerc.ifmo.ru/wiki/index.php?title=Задача_нахождения_объектов_на_изображении Задача нахождения объектов на изображении]<sup>[на 06.12.18 не создан]</sup></ref>
+
* [[:Задача нахождения объектов на изображении | Компьютерное зрение]]<sup>[на 28.01.19 не создан]</sup>. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз<ref>[https://www.sciencedirect.com/science/article/pii/S0893608012000524 Multi-column deep neural network for traffic sign classification]</ref>;
* Обработка визуальных изображений<ref>[https://en.wikipedia.org/wiki/Deep_learning#Visual_art_processing Visual art processing , Wikipedia]</ref>
+
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование<ref>[https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf Sequence to Sequence Learning with Neural Networks]</ref>;
* Обработка естественного языка<ref>[https://en.wikipedia.org/wiki/Natural_language_processing Natural language processing, Wikipedia]</ref>
+
* Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул {{---}} кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз;
* Обнаружение новых лекарственных препаратов
+
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах;
* Рекомендательные системы<ref>[https://en.wikipedia.org/wiki/Recommender_system Recommender system, Wikipedia]</ref>
+
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref>.
* Предсказание генномных онтологий в биоинформатике<ref>[https://en.wikipedia.org/wiki/Deep_learning#Bioinformatics Deep learning in bioinformatics, Wikipedia]</ref>
 
  
 
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.
 
Полный список возможных применений глубокого обучения<ref>[https://en.wikipedia.org/wiki/Deep_learning#Applications Applications of deep learning, Wikipedia]</ref>.
  
== Sigmoid function ==
+
== Transfer learning ==
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой ​​функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя.  
+
[[Файл:Transfer.jpeg|border|450px|thumb|Transfer learning. Иллюстрация из [https://habr.com/company/binarydistrict/blog/428255/ статьи] на habr.com.]]
 +
'''Transfer learning''' {{---}} это применение к решению задачи знаний, извлеченных нейронной сетью при решении другой задачи.  
  
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной.  
+
Глубокие нейронные сети требуют больших объемов данных для сходимости обучения. Поэтому часто встречается ситуация, когда для решаемой задачи недостаточно данных для того, чтобы хорошо натренировать все слои нейросети. Для решения этой проблемы и используется '''transfer learning'''<ref>[https://habr.com/company/binarydistrict/blog/428255/ Transfer Learning: как быстро обучить нейросеть на своих данных, habr.com]</ref>.  
  
[[Файл:sigmoid_function.png|border|500px|thumb|center|Рис 1. Sigmoid Function]]
+
Чаще всего '''transfer learning''' выглядит следующим образом: к натренированной на определенную задачу нейросети добавляется еще несколько скрытый слоев, которые позволяют использовать уже полученные знания для решения более конкретной задачи. Например, знания, полученные при обучении распознаванию различных предметов, могут применяться при решении задачи распознавания еды.
 
+
<div style="clear:{{{1|both}}};"></div>
Функция sigmoid, в отличие от ступенчатой ​​функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов <math>x (x_1, x_2, ..., x_m)</math> и весов <math>w (w_1, w_2, ..., w_m)</math> плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен ​​линейной комбинацией входов <math>x (x_1, x_2, ..., x_m)</math>.
 
 
 
== Rectified Linear Units (ReLU) ==
 
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.<ref>[https://en.wikipedia.org/wiki/Vanishing_gradient_problem Vanishing gradient problem, Wikipedia]</ref>
 
 
 
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.
 
 
 
'''Rectified Linear Unit''' {{---}} это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как <math>f(x)=max(0,x)</math>.
 
 
 
[[Файл:Relu.png|500px|thumb|center|Рис 2. Rectified Linear Units]]
 
 
 
Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.
 
  
 
== Фреймворки для глубокого обучения ==
 
== Фреймворки для глубокого обучения ==
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref>
+
* TensorFlow<ref>[https://en.wikipedia.org/wiki/TensorFlow TensorFlow, Wikipedia]</ref>;
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref>
+
* Microsoft Cognitive Toolkit<ref>[https://en.wikipedia.org/wiki/Microsoft_Cognitive_Toolkit Microsoft Cognitive Toolkit, Wikipedia]</ref>;
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref>
+
* Wolfram Mathematica<ref>[https://en.wikipedia.org/wiki/Wolfram_Mathematica Wolfram Mathematica, Wikipedia]</ref>;
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref>
+
* Keras<ref>[https://en.wikipedia.org/wiki/Keras Keras, Wikipedia]</ref>;
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref>
+
* Deeplearning4j<ref>[https://en.wikipedia.org/wiki/Deeplearning4j Deeplearning4j, Wikipedia]</ref>;
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref>
+
* Caffe<ref>[https://en.wikipedia.org/wiki/Caffe_(software) Caffe, Wikipedia]</ref>;
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref>
+
* Torch/PyTorch<ref>[https://habr.com/post/334380 PyTorch — ваш новый фреймворк глубокого обучения, habr]</ref>;
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref>
+
* MXNet<ref>[https://mxnet.apache.org MXNet, official site]</ref>;
* Chainer<ref>[https://chainer.org Chainer, official site]</ref>
+
* Chainer<ref>[https://chainer.org Chainer, official site]</ref>.
 
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.
 
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения<ref>[https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software Comparison of deep learning software, Wikipedia]</ref>.
  
 
== См. также ==
 
== См. также ==
* [http://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон Нейронные сети, перцептрон]<sup>[на 06.12.18 не создан]</sup>
+
* [[:Нейронные сети, перцептрон]]
* [http://neerc.ifmo.ru/wiki/index.php?title=Сверточные_нейронные_сети Сверточные нейронные сети]<sup>[на 06.12.18 не создан]</sup>
+
* [[:Сверточные нейронные сети]]
* [http://neerc.ifmo.ru/wiki/index.php?title=Рекуррентные_нейронные_сети Рекуррентные нейронные сети ]<sup>[на 06.12.18 не создан]</sup>
+
* [[:Рекуррентные нейронные сети]]
* [http://neerc.ifmo.ru/wiki/index.php?title=Обучение_с_подкреплением Обучение с подкреплением ]<sup>[на 06.12.18 не создан]</sup>
+
* [[:Обучение с подкреплением]]
  
 
== Примечания ==
 
== Примечания ==
Строка 91: Строка 90:
 
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]
 
* [https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f Multi-Layer Neural Networks with Sigmoid Function, Towards Data Science]
 
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]
 
* [https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning Rectified Linear Units (ReLU) in Deep Learning, Kaggle]
 +
 +
[[Категория: Машинное обучение]]
 +
[[Категория: Глубокое обучение]]

Текущая версия на 19:17, 4 сентября 2022

Глубокое обучение как часть машинного обучения.

Глубокое обучение (англ. deep learning) — совокупность широкого семейства методов машинного обучения, основанных на имитации работы человеческого мозга в процессе обработки данных и создания паттернов, используемых для принятия решений[1]. Как правило, глубокое обучение предназначено для работы с большими объемами данных и использует сложные алгоритмы для обучения модели[2]. На больших датасетах глубокое обучение показывает более высокую точность результатов в сравнении с традиционным машинным обучением. Зависимость производительности (качества результатов) от объема данных представлена на рисунке ниже.

Зависимость производительности от объема данных.

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

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

История

  • 1943 — Искусственный нейрон Маккаллока — Питтса[3] — узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона;
  • 1949 — Принцип обучения нейронов Хебба[4] — изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона имеет тенденцию к усилению;
  • 1957 — Модель перцептрона предложена Фрэнком Розенблаттом[5] — математическая или компьютерная модель восприятия информации мозгом;
  • 1960 — Дельта-правило обучения перцептрона[6] — метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки;
  • 1969 — Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"[7]. В данной книге математически показаны ограничения перцептронов;
  • 1974 — Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом[8] — метод вычисления градиента, который используется при обновлении весов многослойного перцептрона;
  • 1980 — Первая свёрточная нейронная сеть предложена Кунихико Фукусимой[9] — специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры;
  • 1982 — Рекуррентные нейронные сети предложены Д. Хопфилдом — вид нейронных сетей, где связи между элементами образуют направленную последовательность;
  • 1991 — Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени;
  • 1997 — Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером[10]. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными промежутками с неопределённой продолжительностью и границами;
  • 1998 — Градиентный спуск для сверточных нейронных сетей предложен Я. Лекуном;
  • 2006 — Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубокого доверия. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям;
  • 2012 — Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем[11]. Дропаут (от англ. dropout) — метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети;
  • 2012 — Нейронные сети побеждают в ImageNet Challenge[12]. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения;
  • 2014 — Группа исследователей под руководством Зеппа Хохрейтера использовала глубокое обучение для определения токсичного воздействия лекарств и бытовых средств на окружающую среду. Данна работа была отмечена первым местом на соревновании "Tox21 Data Challenge"[13];
  • 2016 — Программа для игры в го Google AlphaGo выиграла со счётом 4:1 у Ли Седоля, лучшего международного игрока в эту игру. AlphaGo, разработанная DeepMind, использует глубокое обучение с помощью многоуровневых нейронных сетей;
  • 2018 — Глубокое обучение впервые используется для планирования лучевой терапии[14].

В настоящее время глубокое обучение используется во многих сферах.

Определение

Глубокое обучение — это класс алгоритмов машинного обучения, который:

  • Использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя;
  • Может сочетать алгоритмы обучения с учителем[на 28.01.19 не создан] (пример — классификация) и без учителя [на 28.01.19 не создан] (пример — анализ образца);
  • Формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически — признаки более высокого уровня являются производными от признаков более низкого уровня;
Глубокие и неглубокие нейронные сети.

Применения

  • Распознавание речи[15]. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении;
  • Компьютерное зрение[на 28.01.19 не создан]. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз[16];
  • Обработка естественного языка[17]. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование[18];
  • Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул — кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз;
  • Рекомендательные системы[19]. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах;
  • Предсказание генномных онтологий в биоинформатике[20].

Полный список возможных применений глубокого обучения[21].

Transfer learning

Transfer learning. Иллюстрация из статьи на habr.com.

Transfer learning — это применение к решению задачи знаний, извлеченных нейронной сетью при решении другой задачи.

Глубокие нейронные сети требуют больших объемов данных для сходимости обучения. Поэтому часто встречается ситуация, когда для решаемой задачи недостаточно данных для того, чтобы хорошо натренировать все слои нейросети. Для решения этой проблемы и используется transfer learning[22].

Чаще всего transfer learning выглядит следующим образом: к натренированной на определенную задачу нейросети добавляется еще несколько скрытый слоев, которые позволяют использовать уже полученные знания для решения более конкретной задачи. Например, знания, полученные при обучении распознаванию различных предметов, могут применяться при решении задачи распознавания еды.

Фреймворки для глубокого обучения

Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения[32].

См. также

Примечания

Источники информации