Интервью с Machine Learning инженером
Machine learning — одна из самых востребованных областей разработки, которая подразумевает собой совокупность методов анализа данных и создания искусственного интеллекта. О том, что должен уметь и знать разработчик в этой сфере, DigitalHR рассказывает в новой статье.
Суть машинного обучения заключается в разработке алгоритмов, при которых задачи по обработке данных автоматизируются. То есть компьютер на основе большого количества схожих задач и алгоритмических методов обучается делать выводы и решать эти задачи самостоятельно. Такие самообучающиеся системы и математические модели часто называют нейросетью, однако нейросеть — лишь один из примеров моделей машинного обучения.
Специалисты в области машинного обучения занимаются разработкой таких алгоритмов и нейросетей. Области применения алгоритмов могут быть абсолютно разные. Компьютерное зрение, распознавание и сегментация изображений и видеопотока, распознавание текстов, прогноз событий, рекомендательные системы — все это области применения нейросетей и алгоритмов машинного обучения. В общем виде работу специалиста можно разделить на две составляющие: исследование (research) и разработка (development).
Зачастую, когда перед проектом стоят сложные и амбициозные задачи в области машинного обучения, большую часть времени специалисты посвящают исследованиям.
Чаще всего разработчики используют для таких задач Python и/или С++, а также ряд специальных библиотек/фреймворков: OpenCV, OpenCL, Caffe, Tensorflow.
Первое, что нужно оценивать — как будет подходить человек по характеру к существующей команде, и насколько сильно он интересуется выходящими работами. Ведь очень много работ публикуют, предлагают новые подходы, и возможно решение для вашей задачи уже есть, нужно за новыми статьями следить. Следующий важный момент — хорошое знание базовых основ (математика, базовые понятия машинного обучения и сверточных сетей). Дальше уже идет специализация под ваши задачи, если человек занимался нейронными сетями для распознавания речи, нельзя ожидать, что он будет все знать по машинному обучению в компьютерном зрении.
Опыт использования конкретных фреймворков также важен, но не обязателен, в целом поверхностно научиться работать с любым можно в обозримый период. Но вот если нужны какие-то тонкие моменты (написание функции потерь, работа со слоями напрямую), выходящие за рамки использования стандартных сверток и обучений, тут уже хорошое знание и опыт с конкретным фреймворком важны.
Станислав Веретенников, CTO Cherry labs
Вопросы для собеседования с Machine Learning инженером:
- Какие основные задачи выполняли на проекте?
- С какими типами архитектур нейросетей работали?
- Какие библиотеки и фреймворки использовали?
- Расскажите о самой интересной и сложной задаче?
- Какое соотношение разработки и исследований было на последнем проекте? Какое соотношение интересно сейчас?