Глубокое обучение
Глубокое обучение (англ. deep learning) — совокупность широкого семейства методов машинного обучения, основанных на обучении представлениям, а не специализированным алгоритмам под конкретные задачи. Глубокое обучение может быть с учителем, с частичным привлечением учителя, без учителя и с подкреплением. Несмотря на то, что данный раздел машинного обучения появился еще в 1980-х, до недавнего времени его применение было сильно ограничено из-за недостака вычислительных мощностей существовавших компьютеров. Ситуация изменилась только в середине 2000-х.
На создание моделей глубокого обучения оказали влияние некоторые процессы и паттерны, происходящие в биологических нейронных системах. Несмотря на это, данные модели имеют множество различий с биологическим мозгом (и в структуре и в функциях), что делает невозможным использование теорем и доказательств, применяющихся нейробиологии.
История
- 1943 - Искусственный нейрон Маккаллока — Питтса[1] — узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона.
- 1949 - Принчип обучения нейронов Хебба[2] — изначально наблюдаемая причинно-следственная связь между активациями пре- и постсинаптического нейрона, имеет тенденцию к усилению.
- 1957 - Модель перцептрона предложена Фрэнком Розенблаттом[3] — математическая или компьютерная модель восприятия информации мозгом.
- 1960 - Дельта-правило обучения перцептрона[4] — метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки.
- 1969 - Выход книги Марвина Минска и Сеймура Паперта "Перцептроны"[5]. В данной книге математически показаны ограничения перцептронов.
- 1974 - Метод обратного распространения ошибки впервые предложен А. И. Галушкиным и Дж. Вербосом[6] — метод вычисления градиента, который используется при обновлении весов многослойного перцептрона.
- 1980 - Первая свёрточная нейронная сеть предложена Кунихико Фукусимой[7] — специальная архитектура искусственных нейронных сетей использующая некоторые особенности зрительной коры.
- 1982 - Рекуррентные нейронные сети предложены Д. Хопфилдом — вид нейронных сетей, где связи между элементами образуют направленную последовательность.
- 1991 - Проблема "исчезающего" градиента была сформулирована С. Хочрейтом. Проблема "исчезающего" градиента заключается в быстрой потере информации с течением времени.
- 1997 - Долгая краткосрочная память предложена С. Хочрейтом и Ю. Шмидхубером[8]. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными лагами с неопределённой продолжительностью и границами.
- 1998 - Градиентный спуск для сверточных нейронных сетей предложена Я. Лекуном.
- 2006 - Публикации Г. Хинтона, С. Осиндера и Я. Теха об обучении сетей глубоких убеждений. Данные публикации, а также их активное освещение в средствах массовой информации смогли привлечь внимание ученых и разработчиков со всего мира к глубоким сетям.
- 2012 - Предложение дропаута Г. Хинтоном, А. Крижевски и И. Шутковичем[9]. Дропаут (от англ. dropout) — метод регуляризации искусственных нейронных сетей, предназначен для предотвращения переобучения сети.
- 2012 - Нейронные сети побеждают в ImageNet Challenge[10]. Данное событие ознаменовало начало эры нейронных сетей и глубокого обучения.
Начиная с 2012 года машинное обучение во-многом фокусируется на глубоких сетях. Искусственный интеллект и машинное обучение обычно упоминаются в контексте глубокого обучения.
Глубокое обучение используется во-многих сферах.
Определение
Глубокое обучение — это класс алгоритмов машинного обучения, который:
- использует многослойную систему нелинейных фильтров для извлечения признаков с преобразованиями. Каждый последующий слой получает на входе выходные данные предыдущего слоя.
- может сочетать алгоритмы обучения с учителем (пример — классификация) и без учителя (пример — анализ образца).
- формирует в процессе обучения слои выявления признаков на нескольких уровнях представлений, которые соответствуют различным уровням абстракции; при этом признаки организованы иерархически - признаки более высокого уровня являются производными от признаков более низкого уровня.
Нейронные сети
Применения
- Распознавание речи[13]. Все основные коммерческие системы распознавания речи (например, Microsoft Cortana, Xbox, Skype Translator, Amazon Alexa, Google Now, Apple Siri, Baidu и iFlyTek) основаны на глубоком обучении.
- Компьютерное зрение[14]. На сегодняшний день системы распознавания образов основанные на глубоком обучении уже умеют давать более точные результаты, чем человеческий глаз[15].
- Обработка естественного языка[16]. Нейронные сети использовались для реализации языковых моделей еще с начала 2000-х годов. После изобретения LSTM помогла улучшить машинный перевод и языковое моделирование[17].
- Обнаружение новых лекарственных препаратов. К примеру, нейронная сеть AtomNet использовалась для прогнозирования новых биомолекул - кандидатов для лечения таких заболевания, как вирус Эбола и рассеянный склероз.
- Рекомендательные системы[18]. На сегодняшний день глубокое обучение применяется для изучения пользовательских предпочтений во многих доменах.
- Предсказание генномных онтологий в биоинформатике[19].
Полный список возможных применений глубокого обучения[20].
Sigmoid function
У ступенчатых функций есть определенное количество ограничений, связанных с ее линейностью. Если функция активации является линейной, то независимо от количества складываемых скрытых слоев в нейронной сети, конечный результат по-прежнему будет являеться линейной комбинацией исходных входных данных. Эта линейность означает, что она не может реально охватить сложность нелинейных задач, таких как оператор XOR или различные паттерны, разделенные кривыми или кругами. Другой проблемой является то, что перцептрон с ступенчатой функцией не очень «стабилен», то есть может перейти из состояния 0 в 1 и из 0 в 1 при небольших изменениях в любом из весов входного слоя.
Для того, чтобы избежать данных проблем, в нейронных сетях используется sigmoid функция в качестве активационной.
Функция sigmoid, в отличие от ступенчатой функции, вводит нелинейность в выбранную модель нейронной сети. Нелинейность означает, что выход, получаемых из нейрона, который является произведением некоторых входов
и весов плюс смещение, а затем помещаемый в sigmoid функцию, не может быть представлен линейной комбинацией входов .Rectified Linear Units (ReLU)
Несмотря на множество сильных сторон sigmoid функции, у нее есть значительные недостатки. Производная такой функции крайне мала во всех точках, кроме сравнительно небольшого промежутка. Это сильно усложняет процесс улучшения весов с помощью градиентного спуска. Эта проблема усугубляется в случае, если модель содержит больше слоев. Данная проблема называется проблемой исчезающего градиента.[21]
Функция ReLU имеет производную равную 0 для всех отрицательных значениях и 1 для положительных. Таким образом, когда обучение происходит на датасетах разумного размера, обычно находятся точки данных, дающие положительные значения для любого выбранного узла. Таким образом, средняя производная редко бывает близка к 0, что позволяет продолжать градиентный спуск.
Rectified Linear Unit — это наиболее часто используемая активационная функция при глубоком обучении. Данная функция возвращает 0, если принимает отрицательный вход, в случае же положительного входа, функция возвращает само число. Таким образом функция может быть записана как
.Функция ReLU отлично работает в большинстве приложений, в результате чего она получила широкое распространение. Данная функция позволяет правильно учитывать нелинейности и взаимодействия.
Фреймворки для глубокого обучения
- TensorFlow[22]
- Microsoft Cognitive Toolkit[23]
- Wolfram Mathematica[24]
- Keras[25]
- Deeplearning4j[26]
- Caffe[27]
- Torch/PyTorch[28]
- MXNet[29]
- Chainer[30]
Сопоставление фреймворков, библиотек и отдельных программ для глубокого обучения[31].
См. также
- Нейронные сети, перцептрон[на 06.12.18 не создан]
- Сверточные нейронные сети[на 06.12.18 не создан]
- Рекуррентные нейронные сети [на 06.12.18 не создан]
- Обучение с подкреплением [на 06.12.18 не создан]
Примечания
- ↑ 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
- ↑ Artificial neural network, Wikipedia
- ↑ Deep neural networks , Wikipedia
- ↑ Speech recognition, Wikipedia
- ↑ Задача нахождения объектов на изображении[на 06.12.18 не создан]
- ↑ 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
- ↑ Vanishing gradient problem, Wikipedia
- ↑ 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