Мы знаем, что прием на работу в #MachineLearning может быть трудным. Toptal представил набор вопросов для собеседований по машинному обучению. Вы можете читать, комментировать и добавлять свои собственные исходные сообщения.

1. Зачем нам нужен набор для проверки и набор тестов? В чем разница между ними?

При обучении модели мы разделяем доступные данные на три отдельных набора:

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

Таким образом, если мы опустим набор тестов и будем использовать только набор проверки, оценка проверки не будет хорошей оценкой обобщения модели.

2. Что такое стратифицированная перекрестная проверка и когда ее следует использовать?

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

Например, если у нас есть набор данных с 10% категории A и 90% категории B, и мы используем стратифицированную перекрестную проверку, у нас будут те же пропорции в обучении и проверке. Напротив, если мы используем простую перекрестную проверку, в худшем случае мы можем обнаружить, что в наборе проверки нет образцов категории A.

Стратифицированная перекрестная проверка может применяться в следующих сценариях:

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

3. Почему ансамбли обычно получают более высокие баллы, чем отдельные модели?

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

Для создания ансамбля нужны разноплановые модели. Разнообразия можно добиться за счет:

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

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

4. Что такое регуляризация? Вы можете привести несколько примеров методов регуляризации?

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

Некоторые методы регуляризации:

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

5. В чем проклятие размерности? Можете ли вы перечислить способы справиться с этим?

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

Есть разные варианты борьбы с проклятием размерности:

  • Выбор функций. Вместо того, чтобы использовать все функции, мы можем обучаться на меньшем подмножестве функций.
  • Уменьшение размерности. Существует множество методов, позволяющих уменьшить размерность элементов. Анализ главных компонентов (PCA) и использование автокодировщиков являются примерами методов уменьшения размерности.
  • Регуляризация L1. Поскольку он создает разреженные параметры, L1 помогает справиться с входными данными большой размерности.
  • Разработка функций. Можно создавать новые функции, объединяющие несколько существующих функций. Например, мы можем получить такую ​​статистику, как среднее или медианное значение.

6. Что такое несбалансированный набор данных? Можете ли вы перечислить способы справиться с этим?

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

Существуют различные варианты работы с несбалансированными наборами данных:

  • Передискретизация или недостаточная выборка. Вместо выборки с равномерным распределением из обучающего набора данных мы можем использовать другие распределения, чтобы модель увидела более сбалансированный набор данных.
  • Пополнение данных. Мы можем добавлять данные в менее часто используемые категории, изменяя существующие данные контролируемым образом. В примере набора данных мы могли бы перевернуть изображения с заболеваниями или добавить шум к копиям изображений таким образом, чтобы болезнь оставалась видимой.
  • Использование соответствующих показателей. Если бы в примере набора данных у нас была модель, которая всегда давала отрицательные прогнозы, она достигла бы точности 98%. Существуют и другие показатели, такие как точность, отзыв и F-оценка, которые лучше описывают точность модели при использовании несбалансированного набора данных.

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

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

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

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

8. Какие факторы объясняют успех и недавний рост глубокого обучения?

Успех глубокого обучения за последнее десятилетие можно объяснить тремя основными факторами:

  1. Больше данных. Доступность массивных помеченных наборов данных позволяет нам обучать модели с большим количеством параметров и получать самые современные оценки. Другие алгоритмы машинного обучения не масштабируются так же хорошо, как глубокое обучение, когда дело доходит до размера набора данных.
  2. GPU. Обучающие модели на GPU позволяют сократить время обучения на порядки по сравнению с обучением на CPU. В настоящее время передовые модели обучаются на нескольких графических процессорах или даже на специализированном оборудовании.
  3. Улучшения в алгоритмах. Активация ReLU, отключение и сложная сетевая архитектура также были очень важными факторами.

9. Что такое увеличение данных? Вы можете привести несколько примеров?

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

Компьютерное зрение - одна из областей, где очень полезно увеличение объема данных. Есть много модификаций, которые мы можем сделать с изображениями:

  • Изменить размер
  • Горизонтальный или вертикальный переворот
  • Повернуть
  • Добавлять шум
  • Деформировать
  • Изменить цвета

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

10. Что такое сверточные сети? Где мы можем их использовать?

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

Преимущество сверточных слоев перед полностью связанными слоями состоит в том, что количество параметров намного меньше. Это приводит к лучшему обобщению модели. Например, если мы хотим изучить преобразование изображения 10x10 в другое изображение 10x10, нам потребуется 10 000 параметров при использовании полностью подключенного слоя. Если мы используем два сверточных слоя, первый из которых имеет девять фильтров, а второй - один фильтр, с размером ядра 3x3, у нас будет только 90 параметров.

Сверточные сети применяются там, где данные имеют четкую размерную структуру. Анализ временных рядов является примером использования одномерных сверток; для изображений используются 2D-свертки; а для объемных данных используются трехмерные свертки.

В компьютерном зрении преобладают сверточные сети с 2012 года, когда AlexNet выиграл конкурс ImageNet.

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

Первоначально опубликовано на www.toptal.com.