Глубокое обучение
Глубокое обучение (англ. 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].
В настоящее время глубокое обучение используется во многих сферах.
Определение
Глубокое обучение — это класс алгоритмов машинного обучения, который:
- Использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя.
- Может сочетать алгоритмы обучения с учителем[на 12.12.18 не создан] (пример — классификация) и без учителя [на 12.12.18 не создан] (пример — анализ образца).
- Формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически — признаки более высокого уровня являются производными от признаков более низкого уровня.
Применения
- Распознавание речи[15]. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.
- Компьютерное зрение[на 06.12.18 не создан]. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз[16].
- Обработка естественного языка[17]. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование[18].
- Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул — кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.
- Рекомендательные системы[19]. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.
- Предсказание генномных онтологий в биоинформатике[20].
Полный список возможных применений глубокого обучения[21].
Transfer learning
Transfer learning - это применение к решению задачи знаний, извлеченных нейронной сетью при решении другой задачи.
Глубокие нейронные сети требуют больших объемов данных для сходимости обучения. Поэтому часто встречается ситуация, когда для решаемой задачи недостаточно данных для того, чтобы хорошо натренировать все слои нейросети. Для решения этой проблемы и используется transfer learning[22].
Чаще всего transfer learning выглядит следующим образом: к натренированной на определенную задачу нейросети добавляется еще несколько скрытый слоев, которые позволяют использовать уже полученные знания для решения более конкретной задачи. Например, знания, полученные при обучении распознаванию деревьев, могут применяться при попытке распознавания новогодних ёлок.
Фреймворки для глубокого обучения
- TensorFlow[23]
- Microsoft Cognitive Toolkit[24]
- Wolfram Mathematica[25]
- Keras[26]
- Deeplearning4j[27]
- Caffe[28]
- Torch/PyTorch[29]
- MXNet[30]
- Chainer[31]
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения[32].
См. также
- Нейронные сети, перцептрон[на 06.12.18 не создан]
- Сверточные нейронные сети[на 06.12.18 не создан]
- Рекуррентные нейронные сети[на 06.12.18 не создан]
- Обучение с подкреплением[на 06.12.18 не создан]
Примечания
- ↑ Deep Learning, Investopedia
- ↑ The difference between neural networks and deep learning
- ↑ Artificial neuron, Wikipedia
- ↑ Hebbian theory, Wikipedia
- ↑ Perceptron, Wikipedia
- ↑ Delta rule, Wikipedia
- ↑ Perceptrons book, WIkipedia
- ↑ Backpropagation, Wikipedia
- ↑ Convolutional_neural_network, Wikipedia
- ↑ Long short-term memory, Wikipedia
- ↑ Dropout, Wikipedia
- ↑ ImageNet Challenge, Wikipedia
- ↑ Tox21 Data Challenge Winners
- ↑ Automatic treatment planning based on three‐dimensional dose distribution predicted from deep learning technique
- ↑ Speech recognition, Wikipedia
- ↑ Multi-column deep neural network for traffic sign classification
- ↑ Natural language processing, Wikipedia
- ↑ Sequence to Sequence Learning with Neural Networks
- ↑ Recommender system, Wikipedia
- ↑ Deep learning in bioinformatics, Wikipedia
- ↑ Applications of deep learning, Wikipedia
- ↑ Transfer Learning: как быстро обучить нейросеть на своих данных, habr.com
- ↑ TensorFlow, Wikipedia
- ↑ Microsoft Cognitive Toolkit, Wikipedia
- ↑ Wolfram Mathematica, Wikipedia
- ↑ Keras, Wikipedia
- ↑ Deeplearning4j, Wikipedia
- ↑ Caffe, Wikipedia
- ↑ PyTorch — ваш новый фреймворк глубокого обучения, habr
- ↑ MXNet, official site
- ↑ Chainer, official site
- ↑ Comparison of deep learning software, Wikipedia