вопросы по машинному обучению на собеседовании
Собеседование по Data Science: чего от вас ждут
Data Science – область очень перспективная. За прошлый год мы в ЕРАМ получили 210 резюме от людей, которые хотят заниматься Data Science. Из них на техническое интервью мы пригласили 43 человека, а предложили работу семи. Если спрос большой, почему так?
Мы поговорили с техническими интервьюерами и выяснили: проблема многих кандидатов в том, что они плохо представляют, чем занимаются аналитики данных. Поэтому их знания и навыки не всегда релевантны для работы. Кто-то считает, что опыта работы с Big Data достаточно, чтобы работать в Data Science, кто-то уверен, что хватит просмотра нескольких курсов по машинному обучению, некоторые думают, что хорошо разбираться в алгоритмах необязательно.
Дмитрий Никитко и Михаил Камалов – аналитики данных и технические интервьюеры из ЕРАМ – рассказали, чего ждут на собеседованиях от кандидатов, какие вопросы задают, что ценится в резюме и как подготовиться к собеседованию.
В разных компаниях понимание того, что делают аналитики данных, разное. Кто-то понимает это понятие шире, кто-то – уже. Вот что делают такие специалисты в ЕРАМ:
В ЕРАМ сделали тест, который рекрутеры присылают кандидатам до собеседования. Часть, где нужно выбрать верный вариант, проверяется автоматически. Часть, в которой содержатся развернутые ответы на вопросы, читают технические интервьюеры.
Что нужно уметь
Если коротко, аналитик данных – это человек, который умеет программировать (в большинстве случаев на Python), разбирается в статистике, математике, алгоритмах и владеет английским.
Английский нужен не только для того, чтобы читать специализированную литературу и разбираться с документацией. Многие аналитики напрямую общаются с иностранными заказчиками. Кстати, здесь пригодится еще и умение переводить с языка дата-сайентиста на тот, что понятен бизнесу.
Обязательно ли профильное образование?
Важно хорошо знать математику, и высшее техническое образование – большой плюс. Большинство дата-сайентистов в ЕРАМ по образованию математики, программисты или физики. Но это не жесткое требование – у нас есть сотрудник-лингвист, а недавно мы взяли еще и социолога, который после окончания университета обрабатывал результаты социологических исследований, создавал модели, занимался прогнозированием и анализом социальных графов. Такой опыт – релевантный для работы в Data Science, поэтому кандидат был нам интересен.
В общем, нельзя сказать, что человек с техническим образованием нам подойдет, а с гуманитарным – нет. Все зависит от навыков и опыта. Например, компьютерный лингвист, который научился писать код, – более интересный кандидат, чем Big Data-инженер, работавший с MapReduce и Hadoop, но не разбирающийся в алгоритмах, или чем обладатель научной степени по статистике без опыта работы.
Что ценится в резюме
Больше всего ценится опыт работы. Если вы уже работали в Data Science, подробно напишите, что делали, какие алгоритмы использовали и какие навыки у вас есть.
Если у вас нет опыта работы, большим плюсом в резюме станет:
Что спрашивают на собеседовании
Цель собеседования по Data Science, как и везде, – понять, насколько хорошо человек разбирается в своей предметной области. Сначала интервьюер задает вопросы по основам машинного обучения и статистики. По ответам можно понять глубину и ширину знаний кандидата по базовым вопросам. После этого задают специфические вопросы, например, по обработке естественного языка, работе с временными рядами или рекомендательными системами. Если кандидат говорит, что умеет работать с графами, изображениями или другими данными, его спросят и об этом.
Универсальные солдаты встречаются крайне редко, и вопросы на собеседовании зависят от опыта кандидатов. Обычно спрашивают о прошлых проектах, о том, какие технологии они использовали и почему. После этого могут попросить порассуждать. И конечно зададут несколько теоретических вопросов.
Вот какие вопросы могут задать на собеседовании:
— Какие методы предотвращения переобучения (регуляризации) для нейронных сетей вы знаете? Как они работают? Куда вставлять batch normalization?
— Чем отличается нейронная сеть с одним выходом и сигмоидальной функции активации и такая же нейронная сеть, но с двумя выходами и softmax?
— Представим, что у нас есть многослойная полносвязанная сеть с нелинейной функцией активации. Что будет с нейронной сетью, если мы уберём нелинейность?
— Для чего используют global pooling?
— Как оценивают качество в задачах object detection?
— Какие архитектуры нейронных сетей для семантической сегментации вы знаете?
— Как и зачем использовать transfer learning?
— Как правильно тестировать качество моделей в работе с временными рядами?
— Что мы должны делать с сезонностью в данных?
— Как искать аномалии во временных рядах?
• Обработка естественного языка
— Что лежит в основе моделирования тематик? Как работает этот алгоритм? Как вы выберете число тематик, которые будут обучаться этим алгоритмом?
— У вас есть текст отзывов и рейтинг, пользователи используют 5-балльную шкалу. Как бы вы построили систему, которая сможет предсказывать оценку по тексту отзыва? Как оценивать качество этой системы?
В ходе рассуждений и решения задач интервьюеры задают много уточняющих вопросов и пытаются поместить кандидата в «боевые условия». Наример, кандидат предлагает решение, а интервьюер добавляет новые условия к задаче.
«Что вы будете делать, если дата-сет несбалансированный?»
«Как вы будете решать проблему, если есть пропуски в данных?»
«Как поступите, если будут выбросы в данных?»
Помимо этого, могут спросить, как кандидат организует свое рабочее время, как логирует эксперименты, следит ли за их воспроизводимостью, как обрабатывает большие объемы данным и строит пайплайны обработки данных.
Типичные ошибки на собеседованиях
• Кандидат не понимает, как работают алгоритмы, которые он использовал
Интервьюеры всегда спрашивают об алгоритмах, которые использовали кандидаты: какие параметры в них есть, как их настроить. Если ответа нет, или кандидат отвечает, что настроил алгоритм «по наитию» – это плохо. Если вы берете алгоритм, стоит потратить время, чтобы понять, как его настроить.
• Кандидат не понимает, как применять свои знания в «боевых условиях»
Бывает так: кандидат хорошо знает теорию, но не представляет, как справляться с проблемами на проектах. Важно не только уметь находить инсайты в данных, делать фича-инжинеринг, строить модели, но и понимать, как поместить все это в продакшен или сделать решение, которое будет работать быстрее.
• Кандидат не может рассуждать самостоятельно
Если человек слишком часто отвечает на вопрос: «Я погуглю» – это нехороший знак. Конечно, дата-сайентисты гуглят, но уметь рассуждать самостоятельно тоже важно: иногда встречаются проблемы, для которых нет готового решения, и нужно придумывать что-то свое.
• Кандидат выдумывает, как работает система
Иногда люди не могут ответить на вопрос, как работает та или иная система, и начинают придумывать, надеясь попасть пальцем в небо. Так делать не рекомендуется: интервьюер это заметит. Лучше честно сказать: «Я не знаю», тогда останется больше времени на другие вопросы. Вероятность, что вас спросят о том, в чем разбираетесь, вырастет.
Список литературы
Всем, кто хочет заниматься Data Science, советуем посмотреть/прочитать:
25 прикольных вопросов для собеседования по машинному обучению
Могут ли вопросы на собеседовании по машинному обучению быть одновременно прикольными и глубокими?
Sep 17, 2018 · 5 min read
Многие из исследователей данных изучают машинное обучение (МО) в основном с точки зрения практического специалиста. Как следствие, мы можем сосредотачиваться скорее на освоении как можно большего количества новых пакетов, фреймворков и методик, чем на глубоком рассмотрении основополагающих теоретических аспектов МО. Кроме того, в этом материале моё определение машинного обучения включает в себя обыкновенное статистическое обучение (т. е. не ограничивается глубинным обучением).
Однако пытливый, рассудительный и упорн ы й ум может придумать множество чудесных вопросов по МО, разбор ответов на которые прекрасно способен обнаружить более глубокие его аспекты. В общем, такие вопросы могут помочь высунуть голову из кучи с картинки выше. Мы ведь не хотим целыми днями перемешивать данные — мы хотим нырнуть в глубины свойств, странностей и тонкостей методик машинного обучения и проникнуться ими…
В конце концов, в интернете хватает статей о «стандартных вопросах для собеседования по машинному обучению». Может, сделать кое-что другое, поинтереснее?
Сразу скажу: я публикую эти вопросы, просто чтобы вдохновить вас на размышления и разговоры. Готовых ответов не даётся. В некоторых вопросах есть подсказки, но они на самом деле больше для обсуждений, они не указывают на определённый ответ. Каждый вопрос заслуживает подробного обсуждения. Нет какого-то одного ответа. Некоторые вопросы заумные, а некоторые просто забавные. Приятного чтения 🙂 Вдобавок я вставил смешной мем после каждого 5-го вопроса…
Прикольные вопросы
Как проходят секции по машинному обучению на собеседованиях в Яндекс
Каждый сервис компании Яндекс во многом основан на анализе данных и методах машинного обучения. Они требуются и для ранжирования результатов веб-поиска, и для поиска по картинкам, и для формирования рекомендательных блоков. Машинное обучение позволяет нам создавать беспилотные автомобили и голосовых ассистентов, уменьшать время бесполезного простоя для таксистов и уменьшать время ожидания для их клиентов. Все приложения и не перечислить!
Поэтому мы всегда испытываем потребность в специалистах по анализу данных и машинному обучению. Одним из важнейших этапов собеседования в Яндекс для них является общая секция по машинному обучению, о которой я и расскажу в этой статье. Пример модельной задачи для этой секции и возможного содержания ответа по ней я разобрал в видео, которое недавно стало доступно на YouTube. В этой статье я подробнее расскажу о том, чего мы ждём от сильного кандидата на такой секции и почему мы сформулировали именно такие критерии.
1. Собеседования по машинному обучению в Яндексе
Старшие и ведущие сотрудники в Яндексе умеют самостоятельно превращать задачи, сформулированные в бизнес-терминах, в корректно поставленные задачи машинного обучения; выбирать подходящие методы решения, формировать признаковые описания, строить процесс обновления моделей и корректного контроля их качества; наконец, проверять, что полученные решения отвечают изначальным бизнес-требованиям.
В значительной степени эти люди влияют и на //формирование// бизнес-требований: люди, непосредственно работающие с данными, могут лучше всех в мире знать, какие характеристики сервисов влияют на их популярность и полезность, какие проблемы пользователей необходимо решать и на каких показателях это скажется.
Как правило, наши лучшие сотрудники обладают ещё и экспертными знаниями в специфических областях — например, компьютерном зрении, построении языковых моделей или моделей для рекомендательных или поисковых сервисов.
Мы очень ценим наших сотрудников и их экспертизу и хотим, чтобы внешние кандидаты также соответствовали этому уровню. Для проверки этого одна или несколько секций могут быть посвящены специальным вопросам, таким, как компьютерное зрение или методы обучения ранжированию. Одна из секций обязательна посвящена «общим» вопросам: постановке задачи, формированию целевой функции и обучающей выборки, приёмке моделей. Именно о ней сейчас и пойдёт речь.
Разумеется, полный спектр требований применим лишь к тем кандидатам, что претендуют на позиции старших или ведущих специалистов. Кандидатам, рассчитывающим на middle- или junior-позиции, не обязательно уметь всё перечисленное, но им стоит знать, что соответствующие навыки чрезвычайно полезны для карьерного роста – и в Яндексе, и в других компаниях.
В зависимости от требований подразделения также может потребоваться алгоритмическая секция с написанием кода или даже архитектурная секция.
2. Постановка задачи
Итак, основной задачей секции является проверка, насколько кандидат способен самостоятельно разобраться с задачей во всём её объёме, начиная от её постановки и заканчивая вопросами приёмки в пользовательских экспериментах.
Секция начинается с формулировки задачи в бизнес-терминах. Скажем, может потребоваться создать сервис, подсказывающий близлежащие заведения, рекомендующий определённые товары или ранжирующий интересные пользователям фильмы или музыку.
Начать можно с определения возможных приложений рассматриваемой задачи. Сколько пользователей будет у получившегося решения, кто они, для чего им требуется эта функциональность, как они о ней узнают? Кандидат может задать все эти вопросы, а может предложить собственное видение ответов (последний вариант, конечно же, предпочтителен).
Исходя из причин возникновения задачи формулируются бизнес-метрики, а затем и метрики, подходящие для оптимизации в процессе обучения или выбора моделей. Показатель чрезвычайно высокого класса кандидата — если выбор метрик для оптимизации продиктован физическим смыслом решаемой задачи. Простейший пример такого рода — использование DCG-like метрик для задач ранжирования или AUC-like метрик для некоторых специфичных задач классификации.
Здесь же необходимо затронуть вопрос формирования обучающей выборки. Какие данные для её формирования необходимы, как их получать? Что является событием для нашего обучения? Требуется ли осуществлять семплирование? Если да, то как его делать?
3. Методы машинного обучения
После того, как задача в полной мере сформулирована, можно приступать к обсуждению методов её решения.
Здесь необходимо выбрать модель, которая будет строить решение, и обосновать свой выбор. Стоит рассказать о том, какой функционал потерь оптимизируется в процессе построения модели и почему именно он является хорошим выбором для оптимизации тех метрик, о которых шла речь в предыдущем пункте. Также полезно рассмотреть используемый метод оптимизации.
Следующий обязательный для обсуждения пункт — пространство признаков. Классный специалист способен сходу придумать несколько десятков или даже сотен признаков в новой задаче, предварительно разбив их на несколько классов сообразно используемым видам данных (например, признаки могут зависеть только от пользователя, а могут – от пары «пользователь — объект»).
Дополнительным плюсом будет рассмотрение проблемы cold start. Когда сервис Яндекс.Такси уже создан, мы можем использовать информацию о реальных поездках для оптимизации методов маршрутизации по городу; когда уже есть поисковая система Яндекс, можно использовать действия пользователей для получения сигналов о том, какие документы релевантны запросам. Но что делать, если сервис ещё не создан, а решаемая задача критична для его функционирования? Нужно предложить какой-то способ построения достаточно хорошего решения в этом случае.
4. Контроль качества
Наконец, когда решение готово, необходимо удостовериться в том, что оно достаточно хорошо. Если новому решению предшествовало некоторое предыдущее — необходимо понять, является ли новое решение более качественным.
В этот момент кандидату необходимо продемонстрировать свои способности в формулировании экспериментов для проверки соответствующих гипотез. Здесь нужно выбрать модель эксперимента и способ проверки статистической значимости изменений. Скажем, это может быть обычный A/B эксперимент на пользователях сервиса, а может быть экспертное оценивание результатов работы. Какие при этом показатели необходимо отслеживать? За чем и как необходимо следить, чтобы обеспечить корректность эксперимента?
5. Как преуспеть на секции
Уровень кандидата полностью определяется тем, насколько самостоятельно и глубоко ему удалось изложить решение поставленной задачи. Хорошо проведённая секция по машинному обучению неотличима от секции, известной у наших западных коллег как ML System Design, а слабая секция может быть похожа на обсуждение какого-либо специального вопроса — например, оптимизации LLH линейными разделяющими правилами.
При этом мы хорошо понимаем, что в задачах машинного обучения зачастую неясно, какой метод сработает и сработает ли вообще хотя бы какой-нибудь. Поэтому чувствуйте себя свободно, обсуждайте задачу с собеседником так, как будто это ваш коллега, с которым вы решили обсудить возможные варианты решения задачи, возникшей в процессе обычной работы. Мы не требуем, чтобы описанное на секции решение было гарантированно хорошим — мы лишь хотим, чтобы оно имело под собой разумное обоснование, позволяющее поверить, что вы справитесь с подобной задачей в реальных условиях.
Например, мы не требуем досконального знания различных статистических критериев, но ожидаем, что вы осознаёте важность корректной проверки гипотез и обладаете достаточной квалификацией, чтобы при необходимости эти методы применять. Аналогично, на этой секции не требуется подробного описания работы методов машинного обучения, но ожидаем, что вы сумеете обоснованно выбирать те или иные модели для своих задач.
При этом вы вольны углубляться в хорошо известные вам области. Уделяйте им больше времени в своём ответе и меньше говорите о том, в чем ваши знания не так глубоки. Мы понимаем, что невозможно быть специалистом во всех областях и при этом ценим интеллектуальную честность. Если кандидат хорошо понимает свои сильные и слабые стороны и способен открыто об этом говорить — это очень хороший признак. Кроме того, это позволяет эффективно тратить время секции: оно будет в большей степени потрачено на выявление сильных сторон кандидата.
Наконец, приведу несколько источников, изучить которые будет полезно как для того, чтобы успешнее работать над проектами, связанными с машинным обучением, так и для того, чтобы подготовиться к секции по машинному обучению.
📊 Проверьте свои навыки: еще 26 вопросов с собеседований по Data Science с ответами
Сможете ли вы ответить на все?
Вот еще 26 вопросов с собеседований по Data Science и ответов на эти вопросы (первые 26 можно найти здесь). Вопросы упорядочены по темам от математики и статистики к алгоритмам и далее к глубокому обучению и NLP, а вопросы по организации данных разбросаны между ними. Я рекомендую читать вопросы и пытаться ответить на них самостоятельно, прежде чем переходить к проверке своего ответа.
Будь вы студентом вуза или опытным профессионалом, любой может проверить (или освежить) свои навыки, потратив совсем немного времени.
Сможете ли вы правильно ответить на все вопросы? Поехали!
1). Какие формы ошибок выборки (selection bias) можно встретить в данных?
2). Определите Процент ошибок (Error Rate), Достоверность (Accuracy), Чувствительность/Полноту (Sensitivity/Recall), Специфичность (Specificity), Точность (Precision) и F-меру (F-Score)
Рассмотрим матрицу ошибок, где T – это истинный результат (True), F – ложный результат (False), P – позитивный результат (Positive), а N – негативный (Negative):
3). Чем корреляция отличается от ковариации?
Корреляция считается лучшей техникой для измерения и количественной оценки соотношения между двумя переменными, и измеряет, насколько сильна зависимость между ними.
Ковариация измеряет степень, в которой две случайные переменные изменяются в цикле. Иначе говоря, она измеряет систематическую зависимость переменных друг от друга, при которой изменение одной переменной приводит к соответствующим изменениям второй.
4). Почему A/B тестирование эффективно?
A/B тестирование – это тестирование гипотезы для рандомизированного эксперимента с двумя переменными A и B. Его цель – идентифицировать любые изменения, например, на web-странице, на которой клиенты из группы A получают приветствие «Добрый день», а клиенты из группы B – «Добро пожаловать». A/B тестирование эффективно, поскольку оно минимизирует сознательное предубеждение – люди из группы А не знают, что они из группы А, что существует группа B и наоборот. Это хороший способ получить данные о честной переменной. Однако A/B тестирование трудно проводить для любого контекста, кроме Интернет-бизнесов.
Иллюстрация A/B тестирования (источник)
5). Как бы вы сгенерировали случайное число от 1 до 7, имея всего один шестигранный кубик?
Одно из решений – это бросить кубик два раза. При этом количество возможных комбинаций равно 6*6 = 36. Если исключить одну комбинацию (например, 6 и 6), останется 35 возможных комбинаций. Если мы назначим по 5 комбинаций (порядок имеет значение!) каждому из 7 возможных результатов, мы получим случайное число от 1 до 7.
Например, мы выбросили (1, 2). Поскольку мы, гипотетически, назначили комбинации бросков (1, 1), (1, 2), (1, 3), (1, 4) и (1, 5) результату 1, то наше случайно сгенерированное число будет равно 1.
6). В чем разница между унивариационным, бивариационным и мультивариационным анализом?
Унивариационный анализ – это методы статистического анализа, требующие только одной переменной. Он включает диаграммы, гистограммы и «ящики с усами» (boxplots).
Бивариационный анализ пытается понять соотношение между двумя переменными. Это может включать диаграммы рассеяния (scatter plot), контурные диаграммы и анализ временных рядов.
Мультивариационный анализ имеет дело с несколькими переменными, чтобы понять влияние этих переменных на целевую переменную. Он может включать обучение нейронных сетей для предсказаний или получение SHAP-графиков важности значений/комбинаций для нахождения самого важного признака. Он также может включать диаграммы рассеяния с третьим параметром в виде цвета или размера точек.
7). Что такое кросс-валидация? Какие проблемы она пытается решить? Почему она эффективна?
Кросс-валидация – это метод определения, насколько хорошо модель обобщается на весь набор данных. Традиционное разделение данных на тестовые и тренировочные, при котором часть данных случайно выбирается для обучения модели, а остальные данные – для тестирования, может привести к тому, что модель будет хорошо работать на одних случайно выбранных фрагментах тестовых данных и плохо работать на других фрагментах. Иными словами, метрики будут соответствовать не качеству модели, а случайному выбору тестовых данных.
Кросс-валидация (источник)
Кросс-валидация делит данные на n сегментов. Модель обучается на n-1 сегментах и тестируется на оставшемся сегменте. Затем модель заново инициализируется и обучается на другом наборе из n-1 сегментов. Этот процесс повторяется, пока модель не предскажет значения для всех данных (результаты предсказаний усредняются). Кросс-валидация полезна, поскольку она предоставляет более полное представление о качестве модели на всем наборе данных.
8). Что означает слово «наивный» в «Наивном Байесовском классификаторе»?
Наивный Байесовский алгоритм основан на теореме Байеса, которая описывает вероятность события, основываясь на предыдущем знании условий, которые могут иметь отношение к этому событию. Алгоритм считается «наивным», поскольку делает ряд предположений, которые могут быть или не быть верными. Вот почему этот алгоритм может быть очень мощным, если он используется правильно – он может пропустить поиск знания, которое другие алгоритмы должны искать, просто принимая на веру его истинность.
9). Какие ядра используются в SVM?
Есть четыре вида ядер SVM:
10). Как справиться с переобучением Деревьев Решений?
Деревья Решений часто имеют высокое смещение (bias), поскольку суть алгоритма включает нахождение нишевых паттернов данных и создании новых узлов дерева специально для таких ниш. Если это не контролировать, дерево решений создаст такое огромное количество узлов, что будет отлично работать на тренировочных данных, но очень плохо на тестовых. Один из методов борьбы с переобучением деревьев решений называется подрезкой (pruning).
Дерево решений, переобученное под данные (источник)
Обрезка – это метод сокращения деревьев решений посредством удаления тех секций дерева, которые мало помогают классификации. Это позволяет обобщить дерево решений и заставляет алгоритм создавать только узлы, важные для структуры данных, а не просто шум.
11. Объясните и дайте примеры коллаборативной фильтрации, фильтрации контента и гибридной фильтрации
Коллаборативная фильтрация – это форма рекомендательной системы, которая определяет то, что может понравиться пользователю, исключительно по его рейтингам. Все атрибуты товара изучаются посредством взаимодействия с пользователем или отбрасываются. Один из примеров коллаборативной фильтрации – это факторизация матриц.
Фильтрация контента – другая форма рекомендательной системы, выдающая рекомендации исключительно исходя из внутренних атрибутов товаров и клиентов, таких, как цена товара, возраст клиента и т.п. Один из способов добиться фильтрации контента – найти сходство между вектором профиля и вектором товара, например, косинусную меру сходства.
Гибридная фильтрация берет лучшее из обоих подходов, комбинируя коллаборативную фильтрацию и фильтрацию контента для получения лучших рекомендаций. Однако выбор метода фильтрации зависит от контекста из реального мира, и гибридная фильтрация не всегда будет лучшим методом.
12). В чем разница между bagging и boosting для ансамблей?
Bagging – это метод обучения ансамблей, при котором готовятся несколько поднаборов данных случайным выбором из всего набора данных (они могут перекрываться). После этого все модели обучаются на одном поднаборе, и их решения собираются вместе с помощью какой-либо функции.
Boosting – это итеративная техника, которая изменяет вес наблюдения в зависимости от последней классификации. Если наблюдение было классифицировано правильно, его вес увеличивается, и наоборот. Бустинг уменьшает ошибку смещения и строит сильные предсказательные модели.
13). В чем разница между жестким и мягким голосованием в ансамблях?
При жестком голосовании финальная классификация каждой модели ансамбля (например, 0 или 1) аггрегируется – возможно, с помощью среднего значения или моды.
Мягкое голосование – это когда аггрегируются итоговые вероятности (например, 85% вероятность классификации 1), обычно с помощью среднего значения.
Мягкое голосование может в некоторых случаях принести преимущества, но может привести к переобучению и недостаточному обобщению модели.
Мы наконец достигли половины! (источник)
14). В вашем компьютере 5Гб ОЗУ, а вам нужно обучить модель на 10-гигабайтовом наборе данных. Как вы это сделаете?
Для SVM может сработать частичное обучение. Набор данных можно разбить на несколько наборов меньшего размера. Поскольку SVM – это алгоритм с низкими вычислительными требованиями, в данном сценарии это может быть лучшим выбором.
Если данные не подходят для SVM, можно обучить нейронную сеть с достаточно малым размером пакета (batch size) на сжатом массиве NumPy. В NumPy есть несколько инструментов для сжатия больших наборов данных, которые интегрированы в широко распространенные пакеты нейронных сетей вроде Keras/Tensorflow и PyTorch.
15). Теория глубокого обучения известна довольно давно, но лишь недавно получила большую популярность. Как вы думаете, почему глубокое обучение так поднялось за последние годы?
Глубокое обучение растет очень быстро, поскольку лишь недавно оно стало необходимым. Недавно усовершенствованные методы сдвига от физических экспериментов к онлайновым означают, что можно собрать намного больше данных. Вследствие перехода покупок в онлайн глубокое обучение получило больше возможностей повысить доход и вероятность возврата покупателей, чем, допустим, в физических бакалейных лавках. Стоит отметить, что две крупнейших модели машинного обучения на PyTorch (Tensorflow и PyTorch) были созданы крупными корпоративными компаниями Google и Facebook. Кроме того, развитие GPU позволило обучать модели быстрее.
(Хотя этот вопрос и не связан напрямую с теорией, способность ответить на него означает, что вы следите за картиной в целом и имеете представление о том, как ваш анализ может быть полезен с корпоративной точки зрения)
16). Как бы вы инициализировали веса нейронной сети?
Самый широко встречающийся метод – инициализировать веса случайно, близкими к нулю значениями. Затем правильно выбранный оптимизатор может сдвинуть веса в нужном направлении. Если пространство ошибок слишком крутое, оптимизатору может быть сложно избежать локального минимума. В этом случае может быть хорошей идеей инициализировать несколько нейронных сетей в различных локациях пространства ошибок, чтобы повысить шанс нахождения глобального минимума хотя бы одной из моделей.
17). Каковы последствия установки неправильной скорости обучения?
Если скорость обучения слишком мала, обучение модели будет слишком медленным, поскольку веса будут изменяться ненамного. Однако, если скорость обучения слишком велика, это может привести к тому, что функция потерь будет беспорядочно прыгать вследствие сильных изменений весов. Модель может не сойтись в какой-то одной точке или даже отклониться от минимума, если данные слишком хаотичны для обучения нейронной сети.
18). Объясните разницу между эпохой, пакетом (batch) и итерацией.
19). Какие три основных вида слоев обычно используются в сверточных нейронных сетях? Как они обычно сочетаются?
Три основных вида слоев, используемых в сверточных нейронных сетях – это:
Сверточная нейронная сеть обычно состоит из нескольких последовательностей сверточного, активационного и группирующего слоев. За всем этим могут следовать один или два полносвязных слоя или слоя исключения (dropout) для дальнейшего обобщения, и последним идет полносвязный слой.
20). Что такое слой исключения (dropout), и чем он может помочь?
Слой исключения сокращает переобучение нейронной сети, предотвращая комплексную со-адаптацию к тренировочным данным. Слой исключения служит маской, случайным образом предотвращая связи с некоторыми узлами. Иными словами, в процессе обучения примерно половина нейронов слоя исключения будет деактивирована, что заставляет нейроны нести больше информации, чем оставалось после деактивированных нейронов. Иногда слои исключения используются после слоев максимальной группировки (max-pooling).
Нейронная сеть перед применением исключения и после него (источник)
21). Если говорить упрощенно и на фундаментальном уровне, что делает недавно разработанный BERT лучше, чем традиционные модели NLP?
Традиционные модели NLP, чтобы познакомиться с текстом, получают задачу предсказания следующего слова в предложении (например, слово «dogs» в предложении «It’s raining cats and ___»). Другие модели могут дополнительно обучаться предсказывать предыдущее слово в предложении по контексту после него. BERT случайным образом маскирует слово в предложении и заставляет модель предсказывать это слово, исходя из контекста до и после него – например, слово «raining» в предложении «It’s _____ cats and dogs».
Это значит, что BERT может усвоить более сложные зависимости между словами, которые нельзя предсказать только по предыдущему (или только по следующему) контексту. Конечно, BERT имеет множество других улучшений, таких, как различные слои кодирования, но на фундаментальном уровне его успех обусловлен способом чтения текста.
22). Что такое «Распознавание Именованных Сущностей» (Named Entity Recognition, NER)?
NER, также известная как идентификация сущностей, выделение сущностей или извлечение сущностей – это подзадача извлечения информации, направленная на нахождение и классификацию именованных сущностей в неструктурированном тексте по категориям – таким, как имена, организации, локации, суммы денег, время и т.д. NER пытается разделить слова, которые пишутся одинаково, но означают разные вещи, и корректно идентифицировать сущности, содержащие под-сущности, например, «America» и «Bank of America».
23). Вам дали большой набор данных твитов, и ваша задача – предсказать их тональность (положительная или отрицательная). Объясните, как бы вы проводили предварительную обработку данных.
Поскольку твиты наполнены хэштегами, которые могут представлять важную информацию, и, возможно, создать набор признаков, закодированных унитарным кодом (one-hot encoding), в котором ‘1’ будет означать наличие хэштега, а ‘0’ – его отсутствие. То же самое можно сделать с символами ‘@’ (может быть важно, какому аккаунту адресован твит). В твитах особенно часто встречаются сокращения (поскольку есть лимит количества символов), так что в текстах наверняка будет много намеренно неправильно записанных слов, которые придется восстанавливать. Возможно, само количество неправильно написанных слов также представляет полезную информацию: разозленные люди обычно пишут больше неправильных слов.
Удаление пунктуации, хоть оно и является стандартным для NLP, в данном случае можно пропустить, поскольку восклицательные знаки, вопросы, точки и пр. могут нести важную информацию, в сочетании с текстом, в котором они применяются. Можно создать три или большее количество столбцов, в которых будет указано количество восклицательных знаков, вопросительных знаков и точек. Однако перед передачей данных в модель пунктуацию следует убрать из текста.
Затем нужно провести лемматизацию и токенизацию текста. В модель следует передать не только чистый текст, но и информацию о хэштегах, ‘@’, неправильно написанных словах и пунктуации. Все это, вероятно, повысит точность предсказаний.
24). Как можно определить сходство двух абзацев текста?
Первый шаг – это перевести абзацы в числовую форму с помощью векторизатора – например, «мешка слов» (bag of words) или TF/IDF. В данном случае «мешок слов» может быть лучше, поскольку набор текстов совсем невелик. Кроме того, он может дать лучшее представление о тексте, ведь TF/IDF предназначен преимущественно для моделей.
После этого для измерения сходства между двумя векторами можно использовать косинусную меру или Евклидово расстояние между ними.
25). В наборе из N документов один случайный документ содержит T терминов. Термин ‘hello’ встречается в этом документе K раз. Чему равно произведение TF (Term Frequency) и IDF (Inverted Document Frequency), если термин ‘hello’ встречается примерно в трети всех документов?
Формула для Term Frequency = K/T, а формула для IDF – это логарифм отношения количества всех документов к количеству документов, содержащих термин (то есть, log(1/(1/3)) = log(3). Поэтому значение TF/IDF для слова ‘hello’ будет равно K * log(3) / T.
26). Существует ли универсальный набор стоп-слов? В каких случаях вы бы расширили набор стоп-слов, и в каких, наоборот, уменьшили его?
В библиотеке NLTK на Python’е задан общепринятый набор стоп-слов (для английского языка), но в некоторых случаях список стоп-слов нужно расширить или сократить, в зависимости от контекста. Например, для твитов набор стоп-слов придется сократить, поскольку у нас не так много текста. Следовательно, важная информация может быть выражена небольшим количеством символов, и удаление того, что мы посчитаем стоп-словами, может привести к потере этой информации.
С другой стороны, если мы имеем дело с тысячей коротких рассказов, мы можем захотеть удалять больше стоп-слов, не только для экономии машинного времени, но и для упрощения нахождения разницы между этими рассказами, каждый из которых, вероятно, будет содержать множество стоп-слов.
На сколько вопросов вам удалось ответить правильно? Эти вопросы касаются статистики, алгоритмов, глубокого обучения, NLP, организации и понимания данных – так что они должны послужить хорошим показателем вашего знакомства с концепциями Data Science.
Если вы еще не сделали этого, проверьте себя на первых 26 вопросах с собеседований.