Я недавно закончил Udacity Deep Learning Foundations Nanodegree и хочу поделиться своим опытом работы с программой.

Мотивация

После 20 лет чистой разработки программного обеспечения в различных областях, от обработки изображений до веб-приложений и в компаниях разного размера, от стартапов (один из которых я был соучредителем) до традиционных немецких предприятий, я искал что-то новое. В последние годы мы видим огромный прогресс в машинном обучении и, в частности, в искусственном интеллекте и его практическом применении. Есть масса интересных продуктов и исследований, в которых применяются эти методики. Поскольку я понятия не имел, как это работает, но хотел знать, я решил начать путешествие в эту страну чудес.

Путь к Udacity

Я практичный человек, и мне сложно что-то изучать, не применяя это к реальным задачам. Я прошел курс Data Science на Coursera, но он был для меня слишком академическим.

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

Я слышал, что Udacity предлагает практические курсы, и решил попробовать. В основном я хотел поступить на курс Искусственный интеллект Udacity, но чувствовал себя недостаточно подготовленным для этого. К счастью, Udacity открыла фонд глубокого обучения и рекламировала его как подготовительный этап к курсу искусственного интеллекта, поэтому я подал заявку в январе 2017 года (первая когорта).

Инструменты

Будучи студентом, вы в основном работаете с Python, NumPy и TensorFlow. Настоятельно рекомендую установить Анаконду - это значительно облегчает жизнь. И не волнуйтесь - Udacity дает вам довольно хорошее введение в инструментарий и среду разработки.

Мне, как профессиональному разработчику, было довольно легко догнать библиотеки, раньше я не работал.

Аппаратное обеспечение

В основном я работал на своем ноутбуке 6-летней давности Lenovo Thinkpad T510 с установленной Ubuntu. У него процессор Intel i5, 8 ГБ оперативной памяти и нет графического процессора с возможностью обучения. Этого было достаточно для разработки моделей и исправления ошибок, но для обучения это было очень медленным. Udacity предоставляет 100 долларов на AWS и инструкции по его настройке. Я использовал инстансы EC2 с графическим процессором и обучал там свои модели. Недавно Udacity тесно сотрудничает с FloydHub, и вы можете использовать его вместо AWS.

Содержание курса

Основы глубокого обучения - это нейронные сети, их предыстория и концепции. Будучи студентом, вы реализуете простые нейронные сети с нуля, используя только NumPy, а затем переходите к (более) сложным архитектурам и используете более интеллектуальные библиотеки, такие как TensorFlow. Курс состоит из 4 основных частей:

  • Введение в нейронные сети, где вас учат, что такое нейронная сеть (входы, выходы, скрытые слои, веса и т. Д.), Основные концепции, такие как прямое и обратное распространение, и как построить нейронную сеть.
  • Сверточные нейронные сети (CNN). Здесь вы поймете, что делает CNN такими особенными и какие задачи (классификация изображений, распознавание изображений) они могут решить.
  • В частности, рекуррентные нейронные сети (RNN) и долговременная память (LSTM). Здесь вы получите представление о различных архитектурах RNN и LSTM и о том, какие проблемы вы можете решить с их помощью (генерация текста, языковой перевод, автокодировщик).
  • Генеративные состязательные сети (GAN). Сети GAN довольно новые, но они дают очень впечатляющие результаты, генерируя что-то разумное из буквально шума.

Каждая часть зарабатывает свою программу, поэтому не ждите очень глубокого, достаточно широкого обзора возможностей. Затем определите наиболее интересную тему (для меня это были CNN) и начните изучать ее подробнее.

Как обучаются студенты

В отличие от большинства курсов Udacity, Deep Learning Foundations не предполагает самостоятельного обучения. У вас есть крайние сроки для выполнения вашей работы. Материалы курса разделены на части и выпускаются каждую неделю - 1 или 2 урока в неделю плюс короткое видео от Siraj Raval, плюс вы можете участвовать в его еженедельной живой сессии. Контент от Siraj доступен бесплатно - вы можете проверить его на YouTube.

Такой способ обучения был мне как раз - я немного ленив и мне нужен толчок ;-) Контент от Сираджа мне совсем не понравился, и, в конце концов, я отказался от просмотра его видео. Я знаю, что есть МНОГО людей, которым нравятся его уроки, но лично мне это не удавалось.

Структурированные уроки - это способ получить объяснение определенной темы, а затем решить проблему самостоятельно. Если вы застряли, инструктор предложит свое решение и объяснит, как оно работает. Исходники с упражнениями и решениями доступны на GitHub.

Уроки были разного качества. Лучшие уроки дали Эндрю Траск, Винсент Ванхаук и Ян Гудфеллоу. Главный инструктор, Мэт Леонард, делал и старается изо всех сил, и мне это очень понравилось.

Мне, студенту первой группы, не повезло, так как материалы курса не были продуманными, и с тех пор Udacity значительно улучшился. Я полагаю, что, будучи студентом более поздних когорт, вам понравится лучшее качество :-)

Дополнительные материалы

Во время каждого урока Udacity предоставляет множество ссылок на дополнительные материалы, которые можно прочитать и посмотреть, если вы хотите копнуть глубже. Я нашел эти ссылки очень полезными, много читал и смотрел, так как мне нравится знать, как все работает под капотом.

Честно говоря, я ожидал более подробных объяснений. Но если подумать - инструктор не может, например, объяснить CNN лучше, чем Андрей Карпаты. Так почему бы просто не дать приблизительное представление и позволить людям читать и смотреть дополнительные материалы от экспертов, если они хотят.

Проекты

Всего реализовал 5 проектов:

  • Простая нейронная сеть для прогнозирования ежедневных поездок на велосипедах
  • Классификация изображений по набору данных CIFAR-10 с использованием CNN
  • Языковой перевод с использованием LSTM
  • Генерация сценария ТВ с использованием LSTM
  • Генерация лиц с использованием GAN

Проекты были сложными. Будучи студентом, вы получите подготовленный блокнот Python и необходимые вспомогательные функции, а также должны реализовать основные части нейронной сети. Таким образом, вы не реализуете все с нуля и можете многое использовать из упражнений, над которыми работали на уроках. При подаче заявки были рассмотрены проекты. Обычно через 1–2 часа я получаю очень ценный личный отзыв от рецензента.

Единственным разочарованием стал второй проект - в программе Udacity рекламировали «Распознавание изображений», но затем заменили на более простую «Классификацию изображений» :-(

Вы можете проверить мое решение на GitHub.

Сообщество

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

Сотрудники Udacity принимают активное участие и действительно прислушиваются к вашим отзывам. Это одна из причин, по которой качество материалов значительно улучшилось.

Необходимое время

Мне потребовалось 4 месяца по 8–12 часов в неделю, чтобы закончить и получить высшее образование. Я мог бы сбросить его до 5-6 часов в неделю, пропуская дополнительные материалы. Я настоятельно рекомендую потратить время, прочитать больше, углубиться и попытаться создавать модели самостоятельно - это прекрасное чувство - видеть, как ваша собственная работа дает разумные результаты!

Расходы

Курс стоит 400 $, это недешево. Обеспечивает ли это соотношение цены и качества? Для меня ответ однозначно «да». Мне понравился курс, и я многому научился за последние 4 месяца. Кроме того, если бы я посчитал 100 долларов для AWS и 100 долларов для подачи в программы искусственного интеллекта, самоуправляемого автомобиля или робототехники Nanodegree, то это будет стоить меньше 400 долларов :-) Так что деньги были хорошим вложением.

Следующие шаги

Я рассматриваю основы глубокого обучения как подготовительный этап к более сложной программе Nanodegree для инженеров по искусственному интеллекту. Я достиг своих целей. Сейчас сделаю перерыв и, скорее всего, подам заявление на этот курс. В конце концов, я хочу переключиться с чистой разработки программного обеспечения на инженера по машинному обучению / искусственному интеллекту и надеюсь, что программы Udacity Nanodegree мне помогут.

Заключение

Последние 4 месяца были очень интересными и напряженными (у меня есть постоянная работа и семья), мне очень понравились учебные материалы, упражнения, проекты и сообщество, и я определенно сделаю это снова.

Я настоятельно рекомендую эту программу Foundations новичкам и людям с небольшим опытом, которые хотят понять, какие проблемы вы можете решить с помощью нейронных сетей и как практически создавать решения. С другой стороны, опытные люди могут найти программу скучной или недостаточно требовательной.

Перед подачей заявки нужно быть готовым не только читать / смотреть материалы курса, но и делать упражнения. Вместо этого вам следует запланировать время для дополнительного чтения и попробовать все самостоятельно, если вы хотите извлечь максимальную пользу из обучения.

Я хочу поблагодарить команду Udacity за отличный опыт работы с программой Deep Learning Foundations.