Udacity Deep Learning Nanodegree, AI Startup и уроки, которые я усвоил между ними

Лето 2018

Выпускник первого курса машиностроения

Будучи только что выпускником со степенью бакалавра в области машиностроения и промышленного строительства, я думал о том, как определить направление своей профессиональной карьеры. У меня была возможность вернуться к должности инженера по верификации оборудования, которую я выполнял в AMD в течение года моего профессионального опыта (совместной работы). Я мог бы также работать над некоторыми незавершенными проектами робототехники, чтобы найти работу в мехатронике. Но что-то внутри меня постоянно напоминало мне курс Введение в машинное обучение, который я прошел на факультете информатики в последний год. Меня поразили механизированные процессы распознавания образов, позволяющие компьютеру воспринимать данные. Возможно, будучи предвзятым СМИ, я чувствовал, что машинное обучение - это большая часть того, что ожидает меня в будущем.

В то время карьера в области искусственного интеллекта казалась далекой горой, имея степень инженера-механика и не имеющий соответствующего опыта. После некоторого исследования в Интернете; однако я наткнулся на множество полезных блогов о переключении карьеры на ИИ и о ресурсах MOOC для самообучения. Иногда это сбивало с толку, так как одновременно использовалось так много терминологии ИИ (искусственный интеллект, машинное обучение, глубокое обучение, наука о данных и т. Д.), Но после нескольких дней исследований я начал понимать. Теперь я считаю, что следующая диаграмма, которую я нашел в Интернете, довольно точно отражает объем:

Пытаясь найти организованный и сфокусированный онлайн-курс, который поддерживал бы меня в соответствии с графиком, я наткнулся на запись в блоге Дэниела Бурка о Нанодегре глубокого обучения Udacity e. Www.udacity.com был платформой для онлайн-обучения, предлагающей широкий спектр курсов, особенно в областях AI / ML. Их Nanodegree представлял собой интенсивный 4-месячный учебный онлайн-курс, который требовал завершения нескольких проектов для получения высшего образования (что также стоило 1200 долларов США). У них были наноразмеры в области искусственного интеллекта, науки о данных и аналитики данных, но, следуя совету Дэниэла, меня больше всего заинтересовала их наноразмерная степень глубокого обучения.

И вот оно. Как бы безумно это ни звучало, я пошел на это. Когда мои одноклассники подавали заявки на работу и проходили собеседования, я зарегистрировался на 4-месячную программу Deep Learning Nanodegree в Udacity.

Осень 2018 - весна 2019

Deep Learning Nanodegree от Udacity и NLP Nanodegree

Это было веселое время, наполненное изучением новых концепций и выполнением различных проектов глубокого обучения. Программа Udacity Deep Learning Nanodegree охватывала широкий спектр тем, включая CNN, RNN, GAN и их внутреннюю работу через обратное распространение, градиентный спуск и различные типы потерь при обучении.

Поскольку программа в значительной степени основывалась на проектах, я участвовал в соответствующем проекте после каждого раздела, который включал тестирование модели на разных наборах данных или воспроизведение результатов из исследовательской работы. Выполняя проекты, я научился создавать архитектуру модели глубокого обучения с помощью PyTorch, настраивать среду обучения и работать с CUDA GPU. Большинство моих ранних проектов глубокого обучения можно увидеть на моей странице Github. Я не буду вдаваться в подробности об отдельных проектах, но вот как выглядела вторая страница моего резюме после прохождения Udacity's Deep Learning, а также Natural Language Processing Nanodegrees:

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

Теперь (2,5 года спустя), оглядываясь на свою работу в качестве новичка, я обнаружил два основных недостатка:

  1. Я не проверял большую часть предоставленных данных.

Изображения / текстовые данные для моих проектов обычно предоставлялись Udacity или онлайн-репозиторием в четко организованных папках с помощью ярлыков, и я не смотрел намного ближе, чем визуализация / распечатка нескольких образцов данных. При отладке производительности модели я сосредоточился на оптимизации архитектуры модели или процедуры обучения, а не на проверке предоставленных данных. Это в некоторой степени понятно, поскольку большая часть того, что я узнал, касалась того, как моделирование и оптимизация, а не откуда модель училась.

2. Я больше сосредоточился на завершении как можно большего числа проектов (широта), а не на оптимизации / более глубоком изучении нескольких проектов (глубина).

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

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

Лето 2019 - весна 2020

Инженер по машинному обучению в AI Startup

В течение 11 месяцев я работал инженером-исследователем по машинному обучению в Neosapience Inc., стартапе, занимающемся разработкой голосовых актеров искусственного интеллекта, которые могут передавать человеческие эмоции. Их интерфейс продукта представлял собой веб-сайт, на котором пользователь мог ввести предложение и выбрать желаемый голос в зависимости от пола / возраста / личности. Я специализировался на аспекте обработки естественного языка, где я оптимизировал пользовательский текст до того, как он был передан в модель преобразования текста в речь, генерирующую голос. Я разработал модель семантической сегментации, которая разбивает введенное предложение на более короткие сегменты, поскольку более короткие тексты синтезируются с лучшим качеством, чем более длинные. Другие задачи включали сбор текстовых и речевых данных на английском языке с веб-сайтов с открытым исходным кодом, таких как medium.com.

В целом, это был сложный, но полезный опыт. Я бы резюмировал некоторые из самых ценных вещей, которые я узнал, следующим образом:

  • Читаю исследовательские работы по машинному обучению и применяю полученные знания в своих исследовательских экспериментах.
  • Продуктовый конвейер компании на основе ИИ: от исследований и разработок в области машинного обучения, серверной и интерфейсной разработки, дизайна пользовательского интерфейса и пользовательского интерфейса до бизнес-маркетинга.
  • Работа с реальными данными клиентов, в отличие от чистых, уже адаптированных данных для моих проектов Udacity; Практика увеличения и предварительной обработки данных для достижения желаемого результата
  • Работа с отличными товарищами по команде, которые делились своими навыками решения проблем

Я также осознал некоторые аспекты исследования, которые мне нужно было улучшить:

  • Вычисление количественной метрики теста (например, запоминания, точности, статистики и т. Д.) Для сравнения результатов между разными экспериментами вместо качественного анализа нескольких тестовых выборок.
  • Всегда сначала изучайте данные более внимательно, прежде чем искать подходящие модели глубокого обучения для решения проблемы.
  • Когда возникает проблема, нужно провести тщательное исследование связанных статей вместо того, чтобы пытаться построить модель с нуля.

Хотя работа была увлекательной, наблюдая за моими товарищами по команде, которые все имеют степень магистра в области машинного обучения, я чувствовал, что могу стать лучшим исследователем и получить дальнейшие навыки решения проблем с высшим образованием в области машинного обучения. Я подал заявку на обучение по программе магистра инженерных наук Университета Торонто на факультете промышленной инженерии, где можно было сделать акцент на аналитике и машинном обучении. Мне повезло, что меня приняли.

Лето 2020

В рамках подготовки к магистратуре по машинному обучению

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

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