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

Материал из Викиконспекты
Перейти к: навигация, поиск
(ПО для глубокого обучения)
(История)
Строка 4: Строка 4:
  
 
== История ==
 
== История ==
Стоит отметить, что первый общий рабочий алгоритм для глубоких многослойных перцептронов прямого распространения был опубликован в книге советских учёных Алексея Григорьевича Ивахненко и Валентина Григорьевича Лапы «Кибернетические предсказывающие устройства». Сам термин «глубокое обучение» появился в научном сообществе машинного обучения в 1986 году в работе израильско-американской ученой Рины Дехтер «Learning While Searching in Constraint-Satisfaction-Problems»<ref>[https://www.researchgate.net/publication/221605378_Learning_While_Searching_in_Constraint-Satisfaction-Problems Learning While Searching in Constraint-Satisfaction-Problems]</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>
Многие архитектуры глубокого обучения берут своё начало с искусственной нейронной сети Neocognitron<ref>[https://en.wikipedia.org/wiki/Neocognitron Neocognitron, Wikipedia]</ref>, представленной в 1980 году Кунихикой Фукусимой. Особенное влияние данная сеть оказала на архитектуры, использующиеся для компьютерного зрения. В 1989 году Яну Лекуну удалось использовать алгоритм обратного распространения ошибки для обучения глубоких нейросетей для решения задачи распознавания рукописных ZIP-кодов<ref>[https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf Backpropagation Applied to Handwritten Zip Code Recognition]</ref>. Хотя алгоритм работал, на его обучение потребовалось 3 дня, что существенно ограничевало применимость данного метода. Из-за низкой скорости обучения нейронные сети в 1990-х годах уступили место методу опорных векторов.
+
* 1957 - Модель перцептрона предложена Фрэнком Розенблаттом<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref>
 
+
* 1960 - Дельта-правило обучения перцептрона<ref>[https://en.wikipedia.org/wiki/Delta_rule Delta rule, Wikipedia]</ref>
Популярность глубокое обучение приобрело в середине 2000-х годов. Этому способствовали несколько факторов:  
+
* 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"<ref>[https://en.wikipedia.org/wiki/Perceptrons_(book) Perceptrons book, 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>
* произошли существенные продвижения в теории искусственных нейронных сетей. В появившихся статьях авторы показали, что можно эффективно предобучать многослойную нейронную сеть, если обучать каждый слой отдельно при помощи ограниченной машины Больцмана, а затем дообучать при помощи метода обратного распространения ошибки;
+
* 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом
* технология привлекли внимание крупных медиа, {{---}} первым из мировых СМИ об этом написал The New York Times.
+
* 1991 - "Проблема исчезающего градиента" была сформулирована С. Хочрейтом
 +
* 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером<ref>[https://en.wikipedia.org/wiki/Long_short-term_memory Long short-term memory, Wikipedia]</ref>
 +
* 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном
 +
* 2006 - Глубокая модель предложена Г. Хинтоном, С. Осиндером и Я. Техом
 +
* 2012 - Предложение исключений(дропаута) Г. Хинтоном, А. Крижевски и И. Шутковичем<ref>[https://en.wikipedia.org/wiki/Dropout_(neural_networks) Dropout, Wikipedia]</ref>
 +
* 2012 - Нейронные сети побеждают ImageNet<ref>[https://ru.wikipedia.org/wiki/ImageNet ImageNet, Wikipedia]</ref>. Начало эры нейронных сетей и глубокого обучения.
  
 
== Определение ==  
 
== Определение ==  

Версия 19:22, 7 декабря 2018

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

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

История

  • 1943 - Искусственный нейрон Маккаллока — Питтса[1]
  • 1949 - Принчип обучения нейронов Хебба[2]
  • 1957 - Модель перцептрона предложена Фрэнком Розенблаттом[3]
  • 1960 - Дельта-правило обучения перцептрона[4]
  • 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"Ошибка цитирования Отсутствует закрывающий тег </ref>
  • 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой[5]
  • 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом
  • 1991 - "Проблема исчезающего градиента" была сформулирована С. Хочрейтом
  • 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером[6]
  • 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном
  • 2006 - Глубокая модель предложена Г. Хинтоном, С. Осиндером и Я. Техом
  • 2012 - Предложение исключений(дропаута) Г. Хинтоном, А. Крижевски и И. Шутковичем[7]
  • 2012 - Нейронные сети побеждают ImageNet[8]. Начало эры нейронных сетей и глубокого обучения.

Определение

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

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

Нейронные сети

  • Искусственные нейронные сети (англ. artificial neural networks (ANN))[9]
  • Глубокие нейронные сети (англ. deep neural network (DNN))[10]

Применения

  • Распознавание речи[11]
  • Компьютерное зрение[12]
  • Обработка визуальных изображений[13]
  • Обработка естественного языка[14]
  • Обнаружение новых лекарственных препаратов
  • Рекомендательные системы[15]
  • Предсказание генномных онтологий в биоинформатике[16]

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

Sigmoid function

У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой ​​функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя.

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

Рис 1. Sigmoid Function

Функция 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 функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.[18]

Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.

Rectified Linear Unit — это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как [math]f(x)=max(0,x)[/math].

Рис 2. Rectified Linear Units

Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.

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

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

См. также

Примечания

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