Алгоритмы машинного обучения (Tencent, Alibaba, NetEase) | Технические документы Nuggets

машинное обучение алгоритм WeChat Тенсент

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

Tencent одобрил заранее

Когда моя девушка находится в Гуанчжоу и не хочет менять работу, инженер алгоритмов машинного обучения WeChat — самая подходящая должность для моей стажировки, поэтому я сначала попросил своих одноклассников из Tencent протолкнуть волну, и получил ее без какой-либо подготовки Предварительно согласовал телефон с одной и с двух сторон и без происшествий повесил трубку.

сторона телефона

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

Вторая сторона телефона

  • Я рассказал о статье и, наконец, спросил меня, с каким алгоритмом я сравнивал, практическую значимость моего исследования, текущий уровень отрасли.
  • Проблема программирования: распечатайте спиральную матрицу, хотите, чтобы я дал работоспособный результат. Очень простой вопрос, я уже давно не находил неправильного символа, поэтому у меня должно быть плохое впечатление.
  • Команда проверки занятого порта в линуксе не знакома с линуксом, поэтому я не стал на нее отвечать.
  • Что такое АУК? Я сказал, что это площадь под кривой ROC, но я не могу вспомнить, что такое ROC. Я работаю с последовательностями данных и никогда не занимался бинарной классификацией.
  • Разница между LR и SVM. Я сказал, что функция потерь другая, а потом сказал, что SVM лучше справляется с нелинейностью через технику ядра, но фронт плохой, и язык здесь плохо организован.

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

Поболтав с одноклассниками на работе, Лай Ню Кэ почистил писания для лица кистью и сформулировал простой обзор содержания и план решения проблем с кистью. Мне потребовалась неделя, чтобы просмотреть первые 11 глав книги-арбуза и первые 11 глав книги по глубокому обучению, а также ответить на тридцать или сорок средних вопросов по leetcode (связанный список, строка, итерация, поиск в глубину, куча, дерево, динамическая программирование и т. д. Каждый день чистите один тип вопросов, чтобы потренировать свои руки), и подготовьте для себя вводную версию интервью после завершения 2 работ, и позвольте учащимся продвигать Али и NetEase и войдите в процесс письменного тестирования Tencent.

Офлайн-интервью Tencent

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

одна сторона

  • Говоря о документе, были подробно обсуждены некоторые ключевые детали, были подняты некоторые разумные вопросы, и на все они были даны ответы.
  • Я спросил о моем понимании глубокого обучения, а затем написал алгоритм BP от руки.Если я хотел написать его на псевдокоде, я даже сказал, что написал очень псевдопсевдокод.
  • Разница между LR и boost, на этот раз я усвоил предыдущие уроки. Сначала я подробно рассказал, что такое LR и как он был получен. Затем я рассказал, что такое Boost и для чего он используется. Возьмем Adaboost и GDBT в качестве простого примера. и, наконец, поговорим о связи и различии между ними.
  • Когда я спросил меня о разнице между LR/Boost и Наивным Байесом, я ответил о разнице между генеративной моделью и дискриминационной моделью.
  • Код разрыва: переверните верхнюю букву k в списке. Задача перелистывания связанного списка очень проста и решается быстро.Обратите внимание на обработку головного узла и не делайте ошибок.Это не должно быть проблемой.
  • Наименьшая подстрока, охватывающая все символы строки, просто для представления идей. 76-й вопрос Leetcode — самый простой на высокой сложности. Задача строковой подстроки — это, по сути, скользящее окно, а сложность перемещения указателей начала и хвоста — O(n).Однако в то время я не думал о скользящем окне и предложил только O(n^2). ).

две стороны

  • Насчет бумаги мы тоже говорили долго и очень подробно, вроде более подробно, чем одна сторона. По сути, я рассказал о каждом дизайне и спрошу, рассматривал ли я другие идеи и что произойдет, если я перейду к другим методам.
  • Код разрыва рук: найдите наибольшую прямоугольную область, состоящую из всех единиц в матрице 0-1. Этот вопрос является 85-м вопросом Leetcode, высокая сложность. Найдите путь или покрытие на матрице, идите сразу к ДП, я замазал соответствующий носитель самым сложным квадратом, и написал его по линии идеи, но код слишком некрасивый и не лаконичный.
  • У меня есть географические координаты, как мне быстро запросить ближайшие из всех моих десятков миллионов пои. Я хотел ответить «разделяй и властвуй», иерархическое индексирование и т. д., но на самом деле интервьюер спрашивал, как спроектировать структуру данных, чтобы она была самой быстрой, и как хранить пары координат, такие как x и y, в качестве ключей, но он не ответил к его удовлетворению Ответ.
  • Короче говоря, последние два вопроса заставили интервьюера оставить комментарии о том, что навыки программирования нуждаются в улучшении.

HR сторона

  • Расскажите о том, какие исследования я провел, чем они полезны и где их можно использовать в WeChat.
  • Упомянул оценку меня интервьюером, и рассказал о ситуации, что я был заранее одобрен и повесил трубку, и спросил меня, что я думаю и как оцениваю интервьюера только сейчас.
  • Спросите меня, что я знаю о WeChat, что я знаю о бизнес-группе WeChat и почему я голосовал, если я недостаточно знал об этом.
  • Почему вы выбрали Гуанчжоу (из-за своей девушки), и спросили о простой ситуации с вашей девушкой, и спросили, выбрали ли вы WeChat, потому что ваша девушка в Гуанчжоу
  • Спросите меня, где еще я голосовал (Alibaba и NetEase Games), и почему я голосовал за Али, а не в Гуанчжоу.
  • Каковы преимущества, которые подходят WeChat
  • Какой вы хотите видеть свою рабочую среду
  • Спросите о времени стажировки

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

Али Дианмен

Помимо Tencent, я также попросил своих одноклассников попробовать Ali, инженера-алгоритма-машинного обучения. На данный момент есть три раунда телефейса, и мы все еще ждем продолжения.

одна сторона

  • Разговор о документах похож на процесс предварительного утверждения Tencent, главным образом потому, что я говорю о том, чтобы не вдаваться в слишком много вопросов.
  • Я в основном моделирую данные последовательности и спросил меня о разнице между Марковым и RNN.
  • Вопрос по программированию: очень простой вопрос, появляется строка символов с k-м номером, исходный вопрос о leetcode пишется очень быстро, и я просто проанализировал его, когда вы спросили меня о сложности.

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

две стороны

  • Послушайте, как я говорю и о газете, не вдаваясь в подробности.
  • Спросите меня, как я обучал RNN в статье, что мне делать, если она не сходится, ответьте на ошибку обучения и ошибку теста, кстати, как быть с недообучением и переобучением, и как моя модель определяет количество слоев и скрытый размер, и какие меры против переобучения используются.
  • Задав актуальную сцену, пользователь вводит координату, как ему подтолкнуть соответствующий POI. Описание проблемы немного неясно, и мое понимание немного сбивает с толку. Давайте поговорим о персонализированных пушах, основанных на характеристиках пользователей, сходстве и социальных связях. Также говорится, что если информация о пользователе в обучающих данных не полностью отмечена, это проблема с частичным наблюдением, и POI может быть сначала кластеризован или встроен.
  • Я упомянул о полуконтролируемом, а далее спросил при маркировке POI, если информация о координатах неточна и дискретна, а семантика аннотаций каждого пользователя также разнообразна, как с этим быть. Ответ Координаты могут быть сгруппированы вместе в небольшой области как POI. При маркировке пользователь может голосовать с ограниченным количеством меток. После маркировки большего количества контента используйте иерархическую кластеризацию, модель темы и другие методы для маркировки POI. Метка категории.

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

Три стороны

  • Говоря о документах, на этот раз я говорил более небрежно, и интервьюер спросил больше деталей, например, в моей первой статье использовалась тензорная декомпозиция, и меня спросили, как сделать тензорную декомпозицию и как ввести больше пользовательских функций. Как оптимизировать тензорное разложение и что делать, если сходимость медленная? Я упомянул оптимизацию второго порядка и спросил меня, полезна ли здесь оптимизация второго порядка? Почему это полезно? Когда я говорил о второй статье, я спросил, использовал ли я word2vec или что-то в этом роде.
  • Вы спрашивали меня о xgboost и случайном лесу? Я не знаю xgboost, поэтому рассказал об основных принципах буста, основных принципах adaboost и gdbt, принципах бэггинга и случайных лесах.
  • Я вроде еще что-то спрашивал потом, но забыл. . Упс

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

Инженер по исследованиям и разработке искусственного интеллекта NetEase Game

Поскольку я хотел поехать в Гуанчжоу, я также проголосовал за инженера по искусственному интеллекту NetEase Games, но допустил ошибку в процессе внутреннего продвижения, поэтому меня не повысили.Я также ответил на вопрос по программированию в письменном тесте, и один из трех был AC, и, наконец, мне дали уведомление об интервью.
Когда HR уведомил меня, меня попросили подготовить компьютер, но вопросов по программированию на собеседовании не было. Мы только встретились 13-го числа, и два интервьюера встретились по телефону вместе, сказав, что ждут результата, я не знаю, есть только одна сторона или другая.

сторона телефона

  • Я кратко представил направление своего исследования, а затем начал рассказывать о статье, которая также была кратким введением.
  • Спросите меня, какие ML и DL более знакомы, я говорю DL, а затем другой интервьюер конкретно спрашивает DL.
    • Сначала спросите, как устроена RNN во второй статье, каковы преимущества многозадачной структуры обучения, используемой в ней, и как корректируется вес многозадачности.
    • Что делать, если сетевой эффект плохой, увеличить объем данных? На него по-прежнему отвечают недообучение и переобучение.Недообучения в принципе нет, и переоснащение может быть полезным.
    • Тогда я спросил, какой смысл в подгонке? Ответ Данные по-прежнему недостаточны или так же необъективны, как и существующая обучающая выборка.
    • Затем я попрошу вас переоснастить модель и много дополнительных данных.Как судить, полезны ли данные? Я думал о сэмплировании, но какое-то время не помнил, что делать.В конце концов, интервьюер сказал, что я могу сэмплировать переобученную модель и бегать, чтобы увидеть ошибку.
    • Продолжайте спрашивать, какие еще способы решения переобучения, как решить переобучение в моей статье
  • Затем переключитесь на другого интервьюера и снова начните спрашивать о знаниях ML.
    • Позвольте мне сначала представить, какой контент традиционного машинного обучения я использовал в своей статье.
    • Разница между тренировочными целями LR и SVM — старая проблема.
    • Знаете какой параметр нормы штрафа? Я ответил L1, L2 является основным, и я также видел, как Фробениус делал программный обмен параметрами в чужих статьях. Тогда спросите меня, в чем разница между L1 и L2.
    • Метод отбора признаков, я сказал, что использую непосредственно модель дерева.Модель дерева сама по себе может отбор признаков, а может и L1, уменьшение размерности, а больше я ничего не знаю.
    • В сценарии с текстовой классификацией, как извлекать функции, как разрабатывать индикаторы оценки и как настраивать гиперпараметры.

У Netease есть три курса по программированию в письменном тесте, но на собеседовании нет программирования. Я чувствую, что много читал о Мяньцзин, и метод опроса NetEase больше всего соответствует Мяньцзин.

В общем, я сделал две статьи, поэтому на собеседовании будет много времени на разговоры о бумагах, а другие вещи очень просто задавать, и я дал им все вопросы по программированию, когда они часто идут не так.
Если это степень магистра, вам может понадобиться больше подготовительных проектов или конкурсов. И я написал всю диссертацию сам, поэтому обсуждение с интервьюером не является фальшивым, и меня практически никогда не спрашивали, когда я говорил о статье. Студентам магистратуры и бакалавриата, возможно, придется очень тщательно и глубоко разбираться в проектах и ​​конкурсах, в которых они участвуют.
С точки зрения навыков интервьюирования, самое главное - проявлять инициативу и говорить все, что вы знаете (конечно, это должно быть организованно и логично), и вы не можете говорить то, что спрашивает интервьюер, особенно когда вы задаете вопросы, которые вам не нравятся. вы не знаете много, и вы никогда не должны задавать вопросы, о которых вы мало знаете.В , постарайтесь показать, что вы знаете как можно больше (например, если вы спросите меня о xgboost, я не знаю много, поэтому я начну с основной идеи буста и вкратце скажу adaboost и gdbt).

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

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

Ссылка на техническое эссе Nuggets ?Nuggets.IM/post/5ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh…