Сайт proglib.io опубликовал план освоения глубокого обучения на базе открытых источников крупных университетов, статей и видеороликов специалистов анализа данных.
Глубокое обучение – темная магия наших дней, невероятно мощная и доступная практически всем, а не только таким гигантам, как Google, Amazon или Tesla. Да и самим компаниям при найме сотрудников в этой области важно, чтобы человек имел опыт по решению реалистичных кейсов. Единственные необходимые предварительные знания для прохождения этой учебной программы – базовое знание синтаксиса Python.
Неделя 1 – Математические основы глубокого обучения
Глубокое обучение, конечно, основывается на математике, в особенности на таких ее разделах, как линейная алгебра, теория вероятности, статистика и математический анализ. Очевидно, что не все из этих крупных областей математического знания нужны для понимания глубокого обучения. Полезный источник необходимой прикладной математики – книга с простым названием Deep Learning Book, первая часть которой как раз и посвящена этим вопросам.
После прочтения первой части вы можете попробовать создать свою первую простую нейросеть. Как это можно сделать, показано в представленном видео:
Для повышения качества понимания имеет смысл прочитать замечательную статью Эндрю Траска «Пишем нейронную сеть в 11 строк». Наконец, в завершение недели ознакомьтесь с методом обратного распространения ошибки (backpropagation):
После того, как вы основательно разберетесь с этими базовыми понятиями и принципами, все остальные виды нейросетей можно рассматривать как усложненные вариации сетей прямого распространения.
Неделя 2 – Сверточные нейронные сети
В то время как нейронные сети прямого распространения подходят для задач поиска соответствия между входными и выходными числовыми данными, сверточные нейронные сети нашли активное применение в анализе изображений и задачах компьютерного зрения. Отличным ресурсом для изучения этого типа нейросетей является курс по сверточным нейронным сетям на Coursera команды Эндрю Ына.
Хорошее дополнение этого курса – конспект лекций Андрея Карпатова по его Стэнфордскому курсу CS231.
Также сверточные нейронные сети рассматривались в деталях без использования высокоуровневых оберток фреймворков в видео Сираджа Равала (автора этого плана):
Чтобы проверить усвоенные знания, напишите и обучите свою сверточную сеть на одном из распространенных наборов данных с изображениями, не используя пока при этом библиотеки машинного обучения.
Неделя 3 – Рекуррентные нейронные сети
Следующим логичным шагом после перехода от чисел к изображениям является переход от изображений к видео, и вообще обработке форматов данных, где важно время или последовательность прихода данных. Среди наиболее распространенных способов решения подобных задач выделяются модели рекуррентных нейронных сетей.
Хорошего понимания рекуррентных нейросетей позволит достичь еще один курс команды Эндрю Ына – Sequence Models, также располагающийся на Coursera. Этот курс включает такие важные для понимания рекуррентных сетей вопросы, как долгая краткосрочная память и управляемый рекуррентный блок. Если у вас возникнут трудности с рекуррентными нейросетями на основе LSTM, обратите внимание на эту публикацию и посмотрите данное видео.
Для самопроверки напишите программу, обрабатывающую какую-либо из интересных вам последовательных задач (аудио, видео, временные последовательности) при помощи модели рекуррентной нейросети.
Неделя 4 – Инструменты глубокого обучения
Если до этого в учебном плане основной акцент делался на том, чтобы детально разобраться в устройстве самых популярных типов нейросетей с применением лишь математических библиотек, то теперь настало время ознакомиться с наиболее популярными фреймворками глубокого обучения – TensorFlow и высокоуровневой оболочкой Keras. Эти фреймворки позволяют не делать основную массу рутинной работы. Кроме того, TensorFlow поддерживает все необходимые этапы работы с моделями нейросетей, позволяя осуществлять не только их построение, но и тестирование, обучение и хранение обученных моделей для применения в промышленных проектах.
Одной из оптимальных точек вхождения является Стэнфордский курс CS 20: Tensorflow for Deep Learning Research.
Соответствующий плейлист видеолекций есть на YouTube. Как всегда, имеется и ускоренная альтернатива – плейлист Сираджа Равала.
Keras служит оболочкой фреймворка, позволяющей сделать процесс создания и обучения моделей еще проще. Ознакомьтесь с официальной документацией Keras – ее стиль вполне соответствует задачам, решаемым самой библиотекой. О Keras мы также писали ранее на нашем сайте.
Частой проблемой, с которой сталкиваются специалисты в области глубокого обучения на больших датасетах, является нехватка вычислительных ресурсов. По этой причине имеет смысл пораньше ознакомиться с облачными сервисами, предоставляющими доступ к кластерам GPU, и узнать о главных преимуществах и недостатках основных игроков этого рынка.
Для проверки освоения инструментария, напишите классификатор изображений с использованием TensorFlow, либо возьмите задачу, которую вы решали в конце второй недели, и реализуйте ее при помощи изученных инструментов.
Неделя 5 – Генеративно-состязательные нейросети
Генеративно-состязательные сети (generative adversarial networks) представляют собой описанный в 2014 году Яном Гудфеллоу алгоритм, построенный на комбинации двух нейронных сетей с противоположными целями, из-за чего возникает антагонистическая игра. Один из наиболее популярных примеров, нашедших свое применение для обработки изображений, – это модель переноса авторского стиля, когда картинка может быть обработана так, как если бы ее писал известный художник.
Наблюдается тенденция, что генеративно-состязательные сети, несмотря на их недавнее возникновение, уже стали вытеснять в соответствующих продуктах крупных компаний рекуррентные нейросети. Это горячая тема, но какие-либо серьезные курсы пока не успели появиться, и чтобы включиться в курс дела, проще посмотреть последние видеоролики по соответствующему запросу и реализовать генеративно-состязательные нейросети при помощи изученных на четвертой неделе инструментов. Чтобы разобраться в математике генеративно-состязательных сетей, прочитайте статью Лилиан Венг. Иллюстрация примера из статьи представлена в видеоролике ниже.
Неделя 6 – Глубокое обучение с подкреплением
На основе обучения с подкреплением (reinforcement deep learning) созданы технологии, ставшие прорывами последнего времени в области искусственного интеллекта, такие как AlphaGo, Atari Deep Q-learning и другие. Об этом типе обучения мы недавно рассказывали подробно. Чтобы в деталях освоить глубокое обучение с подкреплением, пройдите недавно анонсированный свободный курс Сергея Левина в университете Беркли CS 294.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]