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

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

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

Январь превратился в настоящие «американские горки»: с одной стороны, я начал работать днем ​​и ночью, готовя два новых доклада для представления на конференции ICML. С другой стороны, я закончил месяц посещением конференции AAAI на Гавайях, где я писал отрывки из этой статьи, сидя на солнышке в прекрасном заливе Ханаума. В промежутке между ними я присутствовал на большом выступлении в журнальном клубе, был наставником студента из Турции и пытался спасти наш вычислительный кластер от сбоя за день до крайнего срока ICML.

Но позвольте мне начать с начала месяца ...

2 января: покидая семью и возвращаясь в Стэнфорд

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

Это означает, что ваш консультант может позволить вам взять перерыв на неделю в середине октября, если вы почувствуете выгорание; но это также означало, что, поскольку крайний срок ICML приближался к середине января, я решил, что мне следует вернуться в Стэнфорд и начать работу над своими материалами для конференции. Это было задумчивое решение, но почти наверняка мудрое, как я понял, когда начал работать над своими материалами для ICML…

3–4 января: реализация VAE для Paper 1

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

В своей первой статье я работал над новым способом изучения скрытых функций в данных. Скрытые особенности - это способ представления сложных данных путем определения важных переменных низкого уровня, которые объясняют вариации на высоком уровне в данных. Например, если у вас есть несколько изображений лиц знаменитостей, каждое из них будет сильно отличаться от остальных. Но вы можете приблизить изображения, просто изменив несколько «размеров», таких как цвет кожи, угол лица и длина волос. .

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

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

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

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

Но если я хотел показать, что моя cVAE работает, мне нужна была базовая линия для сравнения. Естественным выбором будет стандартный VAE. Итак, я потратил пару дней на работу над следующим:

  • Загрузка и предварительная обработка набора данных изображений CelebA
  • Написание кода для VAE в TensorFlow (Keras) и обучение VAE в наборе данных изображений CelebA.

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

5–6 января: работа в выходные

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

Что я делал на выходных? Как я упоминал ранее, я работал над методом выявления скрытых факторов с большей специфичностью, чем те, которые просто доминировали в данных. Идея заключалась в использовании контрастного анализа (отсюда и название - контрастный VAE), метода, в котором вводится вторичный фоновый набор данных, который не содержит функций интерес. Я разработал контрастный VAE для явного моделирования скрытых функций, которые присутствовали как в первичном наборе данных, так и в фоновом наборе данных, а также тех, которые присутствовали только в первичном наборе данных.

Вот пример, иллюстрирующий эту идею. Предположим, у вас есть набор изображений рукописных цифр, состоящих на сложном фоне, как на изображениях травы. Мы назовем это целевым набором данных. У вас также есть изображения, состоящие только из травы (не обязательно те, которые используются в целевом наборе данных, но примерно такие же). Мы назовем это фоновым набором данных. Ниже приведены примеры каждого вида изображений:

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

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

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

7 января 2019 г .: Устранение неполадок в нашем кластере графических процессоров, Бэббидж 3

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

ResourceExhaustedError: OOM when allocating tensor

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

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

8 января: встреча с моим советником Ричардом

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

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

Ричард также дал мне зеленый свет на запуск контрастной статьи VAE. Он сказал, что, проведя еще несколько экспериментов, у меня должно быть достаточно результатов для статьи, и если бы я мог получить их к крайнему сроку ICML, это было бы хорошее место для отправки статьи.

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

для выбора небольшого подмножества независимых функций и восстановления оставшихся с высокой точностью. Если бы мы могли делать это систематически, то это сэкономило бы экспериментальные затраты и время, поскольку не все гены нужно было бы измерять - их можно было бы просто предсказать (или вменять) на основе небольшого подмножества измерил гены. Я просмотрел литературу по выбору функций и обнаружил, что большинство методов довольно старые, поэтому я предложил метод выбора функций, основанный на глубоком обучении, который мы назвали Мелиху «Конкретный автоэнкодер».

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

9 января: рисунки к работе 1

Первое, что я делаю при подготовке статьи для подачи на конференцию, - это подготавливаю цифры. Рисунки представляют структуру, вокруг которой я пишу остальную часть статьи. Итак, в среду, на следующий день после встречи с Ричардом, я начал готовить цифры для моей сравнительной статьи VAE. Один замечательный совет, который я прочитал от Захари Липтона, заключается в том, что Читатель должен понимать вашу статью, просто глядя на цифры или не глядя на них.

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

Когда я создавал фигуру, мне не нужно было слишком беспокоиться о том, чтобы сделать ее идеальной. Это должно было быть предварительным вариантом рисунка, который служил в основном в качестве заполнителя, на который мой советник мог взглянуть и использовать, чтобы дать мне существенную обратную связь. Я все еще, вероятно, потратил на фигуру излишне много времени, но лично мне очень нравится рисовать фигурки (я знаю, что не все аспиранты это делают), и когда я начинаю рисовать диаграммы ( обычно в Powerpoint, но иногда в LaTeX с использованием пакета tikz), я действительно вникаю в это. Я разработал фигуру в верхнем левом углу как предварительную версию, а фигуру в верхнем правом углу - как окончательную фигуру, появившуюся в статье. Я также создал рисунок для второй статьи, показывающий архитектуру конкретного автокодировщика, чем я особенно горд, поскольку он был полностью выполнен в LaTeX:

«Читатель должен понимать вашу статью, просто глядя на цифры или не глядя на цифры» - Захари Липтон

10 января: работа со студентом над Paper 2

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

Мы решили в качестве первого рисунка показать результаты использования конкретного автокодировщика в наборе данных рукописных цифр MNIST. Набор данных хорошо известен в сообществе машинного обучения. Хотя на самом деле нет смысла делать выбор функций в наборе данных, мы посчитали, что если бы мы могли проиллюстрировать 10 или 20 наиболее «важных» пикселей из всех 784 пикселей в каждом изображении, вместе с реконструкциями, которые только эти пиксели позволил бы, что сразу бы сообщило о силе метода. Мы создали изображение, которое выглядело так:

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

11 января: Journal Club

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

Частично это связано с огромным количеством газет, которые выпускаются каждый день. На ArXiv, сервере предварительной печати для документов, каждый день выпускается около 100 документов, поэтому невозможно поддерживать их все. В нашей лаборатории у нас есть система, в которой каждый человек в течение одного дня недели читает отрывки из всех статей по машинному обучению за этот день и делится теми, которые имеют отношение к остальной группе. Даже в этом случае трудно успевать, поэтому полезно завести дневной клуб, чтобы заставлять вас читать статьи.

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

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

Лично мне нравится читать эти статьи с простыми, новыми идеями - иногда даже больше, чем самому проводить исследования!

12–13 января: выходные не работают

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

14 января: Самостоятельное обучение трюку с соотношением плотности

Я вернулся к вопросу о распутывании, который мой советник Ричард поднял на нашей последней встрече. Было два популярных подхода к распутыванию, о которых я читал в литературе: FactorVAE и TCVAE. Изначально я планировал использовать TCVAE, потому что для FactorVAE требовалась отдельная нейронная сеть дискриминатора, но после просмотра алгоритма в статье TCVAE мне было трудно понять, что именно делают авторы. Я также не думал, что их подход будет хорошо работать в моей обстановке; Фактически, авторы статьи FactorVAE утверждали, что они пробовали алгоритм TCVAE в исходной настройке, для которой он был предложен, но не смогли воспроизвести хорошие результаты. Я не был уверен, могу ли я верить утверждениям конкурирующей статьи, или это было связано с академической политикой, но поскольку авторы FactorVAE описали свой метод более четко, я решил, что сначала должен попробовать его.

Чтобы использовать технику FactorVAE, мне нужно было понять нечто, называемое трюком с соотношением плотности. Удивительно, но мне не удалось найти хорошую научную статью, объясняющую этот трюк, но мне посчастливилось найти очень читаемую запись в блоге Шакира Мохамеда, который объяснил уловку ясным языком и четкой математикой LaTeX (ясность действительно имеет решающее значение !). Я внимательно прочитал сообщение самоучка математики, чтобы понять, как работает этот метод.

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

15 января: снова представляем Ричарду

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

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

К счастью, Ричард тоже доволен результатами и упомянул, что будет рад просмотреть статью, когда у меня будет готов черновик. Поскольку до крайнего срока ICML оставалась всего неделя, я удвоился и начал писать.

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

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

Эта статья основана на вопросе моего дорогого друга Али Абдаллы.