Привет, мир, и добро пожаловать в мой третий и последний пост, в котором описываю мой опыт участия в Full Stack Deep Learning Bootcamp в Калифорнийском университете в Беркли летом 2018 года. Найдите краткий обзор всей записи блога здесь и предыдущей записи блога "здесь".

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

Лекция 9 - Направления исследований

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

  • Кратковременное обучение и мета-обучение
  • Обучение с подкреплением
  • Имитационное обучение
  • Рандомизация домена
  • Архитектурный поиск
  • Неконтролируемое обучение
  • Обучение на протяжении всей жизни

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

В нем обсуждались некоторые основы RL, а также некоторые более сложные темы, такие как Meta RL (SNAIL и MAML). Это очень интересное исследование, но мне было трудно легко включить его в существующую установку RL. Я думаю, что им может потребоваться некоторое время, чтобы войти в отрасль.

В нем также говорилось об имитационном обучении, которое можно использовать, чтобы научиться выполнять задачу у человека-эксперта. Это может быть интересно, поскольку обычно они намного эффективнее работают с данными, чем начинать с нуля.

Еще одна действительно интересная тема, связанная с использованием RL в симуляторе, - это рандомизация доменов (иногда называемая путаницей доменов). По сути, идея состоит в том, что очень сложно что-то очень точно смоделировать. Однако часто очень возможно просто рандомизировать вашу среду, чтобы ваш ИИ стал устойчивым к такого рода вариациям. Фактически заставляет ИИ думать, что реальность - это просто еще одна конфигурация параметров окружающей среды.

Поиск архитектуры имел дело с искусственным интеллектом, а также с самими сетями. Были разработаны довольно интересные и странные сети, и это стало логическим шагом для ИИ, сделав упор в ML еще больше на сбор и подготовку данных, а не на разработку моделей. В теме обучения без учителя обсуждались некоторые интересные исследования генеративной неблагоприятной сети (GAN). Обучение на протяжении всей жизни было посвящено тому, как позволить моделям адаптироваться к изменяющемуся миру при развертывании (смещение распределения данных).

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

Выводы. Мне понравилось резюме RL, даже когда я уже знал большую часть материала. Этот доклад понравится всем, кто интересуется RL. В общем, было здорово видеть самые свежие исследования по всем направлениям. И раздел о том, как читать статьи, был действительно приятным бонусом, который я обязательно буду проверять чаще. Такие разговоры всегда полезны, чтобы еще больше воодушевить вас.

Лабораторная работа 6 и 7 - Развертывание

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

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

Затем мы узнаем, как подключить наше репозиторий GitHub к CircleCI, платформе непрерывной интеграции. Эта платформа будет запускать тесты при каждой фиксации, чтобы новые фиксации не нарушали предыдущие результаты. Поскольку вы будете использовать систему управления версиями программного обеспечения, такую ​​как Git, вы всегда можете вернуться, если некоторые изменения нарушат цикл интеграции. Если бы у вас были аналогичные версии данных, вы могли бы сделать то же самое и там. Важно понимать это различие с программным обеспечением. Проблема также может заключаться в ваших данных!

Следующим шагом было использование замечательного инструмента Docker для контейнеризации вашего классификатора. Обычно вы помещаете свой классификатор в простое веб-приложение. Здесь используется Flask - легкий веб-сервер на Python. На самом деле он не предназначен для использования в профессиональных целях, но для простого упражнения он вполне подойдет. Затем веб-приложение упаковывается в контейнер Docker, который затем встраивается в образ. Используя такой сервис, как AWS Lambda (или, например, Google Functions для Google Cloud Platform), мы могли бы затем запустить несколько из этих контейнеров. Это так называемая безсерверная архитектура, которая очень популярна в наши дни, поскольку ее легко масштабировать вверх и вниз в зависимости от вашего трафика или потребностей бизнеса.

Окончательное решение находите здесь.

Лекция 11 - Работа

Работа, работа, работа. К счастью, у меня уже есть работа, которая мне очень нравится. И у нас может быть один для вас (свяжитесь со мной, если вам нравится RL / ML / кодирование!). Эта лекция помогает начинающим профессионалам в области машинного обучения найти достойную работу. Учитывая, что учебный лагерь был расположен недалеко от Кремниевой долины, я не мог представить себе лучшего места для поиска работы. Людей мало, спрос огромен. Тем не менее, технические интервью, как известно, временами бывают жестокими. Этот разговор может помочь вам подготовиться к такому интервью.

Во-первых, в нем описаны различные роли (инженеры DevOps, данных и машинного обучения, исследователь машинного обучения и специалист по данным) и то, как разные роли образуют хорошую команду. Было интересно отметить, что пока нет четкого консенсуса относительно того, что делает команду машинного обучения идеальной. Большинство действительно считает, что необходимо сочетание навыков разработки программного обеспечения и машинного обучения. Однако есть некоторые разногласия по поводу исследователей машинного обучения, которых часто трудно интегрировать в обычные технические команды. Также некоторые считают, что инжиниринг свиданий должен быть отдельной командой, в то время как другие считают, что вы должны посылать этих ребят среди существующих команд. Мне это показалось очень интересным, поскольку мы собираемся создать нашу самую первую команду машинного обучения в Captain AI.

После нескольких полезных графиков, которые помогут вам решить, какая роль вам подходит, было несколько полезных советов по прохождению собеседования. Он варьировался от таких тем, как настройка проблемы (какие данные искать, какую модель использовать), до знания алгоритмов (что такое LSTM?), До теории машинного обучения и методов отладки.

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

Гостевая лекция 3 - Янцин Цзя

TensorFlow, Keras, PyToch, Keras внутри TensorFlow. Что со всеми фреймворками и какое это имеет значение? Янцин был идеальным парнем, чтобы разобраться во всех различных фреймворках и инструментах, поскольку он является создателем оригинального Caffe. Много работал над TensorFlow в Google, помогал разработать ONNX, формат обмена открытой нейронной сетью, и, наконец, работал в Facebook над разработкой PyTorch, который привлекает много внимания как удобная и удобная альтернатива доминирующему TensorFlow. .

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

Далее было проведено сравнение основных различий между фреймворками графов вычислений, такими как TensorFlow, которые не всегда интуитивно понятны для понимания, проектирования и обслуживания, но их легко оптимизировать и сериализовать для производства. Императивные наборы инструментов, не имеющие отдельного механизма выполнения, часто легче разрабатывать и поддерживать, но труднее оптимизировать и развертывать на нескольких платформах.

Затем он показал решения, принятые в Facebook в отношении выбора фреймворка. Они выбирают комбинацию PyTorchONNXCaffe2. Использование PyTorch для простого проектирования и экспериментов с моделями нейронных сетей. Когда эксперимент был признан успешным, они экспортировали модели в формат ONNX и импортировали его с помощью Caffe2, что обеспечило бы большую эффективность инфраструктуры.

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

Выводы. Отличный обзор различных фреймворков. Обновление, чтобы увидеть другой взгляд на это от того, кто действительно помогал создавать многие из существующих инструментов, кроме как использовать TensorFlow или PyTorch по очень произвольным причинам. Интересно видеть, что этот формат ONNX действительно набирает обороты и фактически используется Facebook. Замечательно, что, по-видимому, вполне возможно проводить эксперименты в рамках, отличных от инфраструктуры, хотя, думаю, вам также потребуется вдвое больше знаний.

Гостевая лекция 4 - Лукас Бевальд

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

Лукас Бевальд, соучредитель компании Crowd Flower, ныне известной как Figure Eight, огромной компании по маркировке данных, также создал Weights & Biases - систему управления экспериментами, которую мы использовали в последующих лабораториях.

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

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

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

Вывод

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