139

Педиатр-программист: Как я попал в Майкрософт | "Практика в Майкрософт Бинг в Сан-Франциско", часть 6 из 7 (пост 2)

Второй 6-й части про практику, первый был здесь.

Часть 1: Поворот
Часть 2: (лирическое отступление) Школа и медвуз
Часть 3: Microsoft Student Partners Germany
Часть 4: Подготовка к интервью
Часть 5: Интервью (пост1) (пост2)
Часть 6: Практика в Майкрософт Бинг в Сан-Франциско (пост1) (пост2)
Часть 7: Работа в Майкрософт Бинг изнутри

Для связи используйте мой ник здесь и Гугл :)
----------

В общем, я перебрал несколько подходов, остановился на наиболее перспективном и занимался анализом различных факторов на тип блока текста. Я написал несколько программ для анализа текста, его разметки вручную для генерации gold standard (который мне был нужен для расчета метрик, таких как precision и recall), самообучающийся движок для анализа текстов на основе многих страниц из одного источника (то есть для случая, когда мы можем предполагать одинаковый дизайн, но разный контент в n связных документах).

Предварительная же оценка моей работы, написанная моими двумя руководителями по итогам первых 6-8 недель, была скорее негативной, чем позитивной. «Не всегда способен оценить сложность и приоритет задач», «зачастую работает над менее приоритетными задачами, в то время как более приоритетная задача остается без внимания», «небрежно относится к срокам, которые может пропустить без какой-либо видимой причины» -- все это оказалось для меня совершенно неожиданным. И правда, примерно на 7-й неделе я потерял две недели работы из-за того, что у меня приказал долго жить жёсткий диск и была потеряна работа порядка полутора недель (я не делал бакапы каждый день), да, мне бывало откровенно скучно на наших рабочих встречах, так как мой проект не имел прямого отношения к тому, над чем работала наша группа. Но даже с учетом этого я не ожидал такой степени негатива.

Я попытался прояснить ряд моментов, особенно что касалось «сроков», со своими руководителями, ведь мы никогда не определяли сроки, на что получил просто феерический ответ – “we had some implicit deadlines” (у нас был ряд негласных сроков). Ну кто бы мог подумать, что их вопросы – «а успеешь ли ты до пятницы?» и т.п., которые я просто принимал за предположения, считались ими конкретными сроками выполнения работы.

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

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

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

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

Однако не самая хорошая характеристика придала мне сил – терять мне в любом случае было нечего (кроме, возможно, опасности попасть в какой-нибудь «черный список» с пометкой no hire, но об этом я в тот момент совсем не думал). Поэтому я решился на такой шаг и за 5 недель до окончания проекта я бросился со всеми силами на изучение и, по мере изучение, внедрение методик машинного обучения в своем проекте.

Это сейчас, в 2015 году, когда машинное обучение стало модной технологией, найти хороший и даже бесплатный курс в интернете не представляет больших проблем. Coursera предлагает целый ряд курсов, от объемно-теоретических, как курс профессора Andrew Ng, до сугубо-прикладных, как курс от университета John Hopkins. Да и на других платформах предостаточно интересных курсов с заданиями и разобранными ответами. Тогда же я смог найти лишь какой-то мутный туториал на R, который мне посоветовали использовать мои руководители, но который за три дня изучения и «научного тыка» не сильно продвинул меня к моей цели.

Когда я уже начал выдыхаться я вдруг вспомнил, что я же блин специалист по MS SQL Server, а в состав этого сервера входит отдельный движок для машинного обучения – SSAS, SQL Server Analytical Services. Когда, еще в целях подготовки докладов для Microsoft Student Partner Program, я занимался этим движком и у меня были базовые знания о том, как создавать модель, как распределять данные, как обучать модель и проводить cross-validation.

В результате я за три дня сделал несколько моделей для своих данных: от простых decision trees и nave bayes, до довольно большой по размерам (насколько мне позволил сервер) нейронной сети, которую я особенно долго тренировал на своих данных. После сравнения всех трёх моделей, к моему удивлению, модель, построенная на decision trees, выдавала наилучшие значения как для precision, так и для recall для моей задачи.

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

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

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

(завершение истории по тех причинам в первом комментарии)
46
Автор поста оценил этот комментарий

(завершение истории, по техническим причинами здесь как комментарий)

 

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

Вечером этого же дня, перед самолётом, начальник зашел ко мне попрощаться, так как он больше меня не увидит, и спросил, как бы между прочим: «не считай это предложением, но что ты думаешь о работе в Майкрософт в США?». Я удивился, но честно ответил, что это для меня практически невозможно, так как у моей жены была очень хорошая работа в Германии, которой мы не можем рисковать и я не думаю, что ей и моему сыну будет легко в США.


Моя практика закончилась опять не очень гладко: во время финального доклада лаптоп решил поставить критическое обновление и перезагрузиться, в результате половину моего 30-минутного доклада я пытался его оживить и потом за оставшиеся 15 минут рассказать весь доклад. После доклада мы группой сходили в ближайший ресторан, отметили окончания моей практики, я попрощался со всеми. Это была пятница. Выходные я провел очень бурно: всю субботу ездил по Сан Франциско на экскурсионном автобусе (до этого у меня не было на это время), а воскресенье потратил на поездку в Алькатрац и на Остров Ангелов. В понедельник вечером моё самолет вылетал обратно из Сан Франциско в Гамбург…


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


Рекрутер довольно быстро перешел к делу «Алекс, я получил твою окончательную характеристику от твоих руководителей сегодня утром – и она просто замечательная! Поздравляю с успешным завершением практики. Мы хотим сделать тебе предложение о работе в Майкрософт, включая переезд в США из Германии по завершении твоей учебы. Я посмотрел, сколько мы можем тебе предложить в данной ситуации, и эта сумма составляет столько-то в год. К сожалению, это предложение является non-negotiable, то есть ты не можешь торговаться за его условия, а можешь лишь либо принять, либо отклонить его.»

Пока я летел обратно решение уже было принято моей семьей. Мы стали готовиться к переезду в США через пару лет…


раскрыть ветку
9
Автор поста оценил этот комментарий

Прочитал все от начала до конца. Осознал что я безвольное чмо.
Теперь этот пост осел в моей голове в виде доп. мотиватора, спасибо!
P.S. работаю в банке на самой скучной в мире должности, пару месяцев назад понял что начинаю тупеть. Через неделю отрабатываю последний день и меняю сферу деятельности на программирование. :)

раскрыть ветку
7
DELETED
Автор поста оценил этот комментарий

Это что-то из разряда фантастических фильмов!

Читаю опять же с упоением.

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

С нетерпением жду следующую часть! (жаль что последнюю((

раскрыть ветку
6
Автор поста оценил этот комментарий

вот бля второй пост где вспомнили про бекапы хоть ты на работу едь

5
DELETED
Автор поста оценил этот комментарий
Комментарий удален. Причина: данный аккаунт был удалён
раскрыть ветку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества