Алексей Озерин — эксперт по машинному обучению, занимался компьютерным зрением в Яндексе, а также обработкой естественного языка и нейросетями в технологических стартапах. Мы узнали у него, что такое нейросети, для чего их используют и как программистам начать работать с Machine Learning.
- Для каких задач применяют ML и нейросети
- Как разрабатываются нейросети
- Как попасть в индустрию
- Карьерный путь в сфере ML
- Прошлое, настоящее и будущее
- Вклад разработчиков в развитие нейросетей
- Что в итоге
Меня зовут Алексей Озерин, сейчас я — эксперт по машинному обучению в агротехническом стартапе OneSoil. Учился на физика в МФТИ, занимался теоретической физикой, а потом ушел в программисты.
В 2012 году во всем мире случился бум в области развития нейросетей, до России он докатывался довольно долго. К 2015-2016 году появилось много стартапов и инициатив, связанных с нейросетями. В это же время я пришел работать в классную лабораторию Deephacklab, разрабатывать прототипы — поиск и генерация текстов. Проекты были в зачаточном состоянии, но очень интересными.
В 2018 году я перешел в Яндекс как Senior Developer, чтобы работать с компьютерным зрением. Решал разные задачи в области Machine Learning (ML) — с картинками, видео и текстами, вплоть до 2022 года. В 2019-2021 вел курс по DL в ВШЭ и был научруком у студентов.
Сейчас я работаю в стартапе, который занимается сельским хозяйством, — с помощью нейронных сетей по спутниковым снимкам предсказываю, что где растет и когда убирают поля.
Изучите дата-аналитику на Хекслете Пройдите нашу профессию «Аналитик данных» — эта сфера может идеально подойти для использования нейросетей в будущем.
Для каких задач применяют ML и нейросети
Есть много прикладных задач, которые решаются с помощью эксперта, простых правил и специально подобранных алгоритмов. Когда данных становится много, у нас появляется возможность извлекать из них полезные знания, обходя ограниченность простых подходов. С помощью ML можно рассчитывать риски — например, предсказать, выплатит ли человек кредит, или рассчитать будущие цены на квартиры.
Есть отдельная группа задач, для которых нейросети особенно хороши: находить похожие картинки, звуки и посты, генерировать изображения и тексты. Конечно, искать похожие аудио можно и без нейросетей — приложение Shazam прекрасно работало даже в первых версиях. Но обучение алгоритмов с помощью нейросетей дает дополнительные возможности.
Сейчас даже люди, далекие от ML, наслышаны про три направления их использования:
- Генерация текстов — спасибо чат-боту ChatGPT
- Генерация картинок — спасибо Stable Diffusion и Midjourney
- Генерация музыки — спасибо Jukebox.
Творчество нейросети Midjourney
Как разрабатываются нейросети
В этой части статьи будет немного хардовой информации, связанной с математикой и ML. Если вы ничего не поймете или захотите понять больше, советуем пройти наш курс по математической логике для программистов
Нейросеть — это формула, которая из одного массива чисел делает другой массив. Формула большая и длинная, может быть с миллионами параметров, но собирается из довольно простых операций — арифметики, элементарных функций (синусы, косинусы, экспоненты и даже более простые, вроде взятия степени) и суперпозиции.
Выше пример одной из решаемых задачек: классификация изображений на условные тысячу классов. Входной массив здесь — просто массив пикселей картинки, выходной — вектор с вероятностями, что изображено на картинке. Выходной массив может быть и картинкой (например, как в задачах pix2pix на улучшение картинок или дорисовывание). Входной массив может быть не картинкой, а последовательностью слов — так, например, происходит в генерации картинок по тексту.
С отдельными элементами входного массива обычно не работают: действия собирают в слои и применяют операцию ко всему массиву сразу. Котика на картинке распознают независимо от того, в какой части картинки он находится.
Саму формулу пишут не как аналитическую формулу, а вычислительным графом — это рецепт для калькулятора, в каком порядке и что делать с входным и промежуточным массивами.
Источник: https://arxiv.org/abs/1812.01187
Вот характерный пример ResNet50. Очень популярная, старая и довольно простая моделька. Она может показаться сложной, но операции — простые, а концепция вычислительного графа позволяет работать со сложными формулами. В этих слоях скрываются числа, они же — веса — коэффициенты в большой формуле. Сначала параметры инициализируют небольшими случайными числами, а затем улучшают с помощью градиентного спуска. Так система самообучается.
Расчеты по этой формуле обычно происходят на движке, написанном на С/C++. Обвязку к этому движку обычно делают на Python. Есть языки, которые считаются более производительными, чем Python, например, C++ и Lua. Но на них сейчас нейросети почти не пишут, кроме низкоуровневых сетей для устройств. Знания Python достаточно, чтобы писать крутые вещи.
Есть библиотеки, позволяющие упростить процесс разработки. Крутые обертки и сборники моделей — одна из причин, почему сейчас стало популярно разрабатывать нейросети. Например, проект Hugging Face — это платформа для разработки и использования моделей и приложений на основе искусственного интеллекта, особенно в области обработки естественного языка (Natural Language Processing). Интерфейсы моделей отвязаны от математики, это простые и конкретные инструкции, что именно сделать, чтоб получить результат. А вот при использовании фреймворков PyTorch, Jax и TensorFlow для работы с данными и машинного обучения придется плотнее взаимодействовать с математикой.
Как попасть в индустрию
Нейросетями можно заниматься как прикладной технологией в коммерческой разработке, так и использовать их в качестве инструмента для исследований в научных лабораториях.
В 2016 году, чтобы попасть в лабораторию, занимающуюся нейросетями, ничего особенного знать и уметь не требовалось. Сейчас порог входа в исследовательские лаборатории, где применяют эту технологию, увеличился. Нужно соответствовать высоким требованиям: знать математику, хорошо кодить, иметь научные публикации. Такой уровень экспертизы есть у небольшой части людей.
Вакансий публикуется больше не в области исследований, а в прикладных проектах. Прикладными проектами может заниматься обычный разработчик. Для этого нужно уметь кодить, решать задачи и использовать системный подход. Нужно учиться делать базовые вещи максимально аккуратно. А все остальное получится в свое время.
Самое тяжелое умение — на грани hard skills и soft skills — понимать, что делаешь. Подвох в том, что данные могут лежать в каком угодно виде, и надо уметь грамотно их обрабатывать. Если есть десятки CSV, которые ссылаются друг на друга, нужно правильно соединить их между собой по ключам и в процессе ничего не потерять и не приобрести. Это сложная задача для людей, которые хотят создавать искусственный интеллект.
Чтобы стать разработчиком нейросетей, должен быть искренний, неиссякаемый интерес к этому. Желательно иметь в голове образ результата, абстрактное желание заниматься нейросетями ни к чему не приведет. «Я хочу сделать систему, которая может взять сэмпл голоса и научиться подменять на него любой другой голос» — это круто.
Сильная образовательная база не так важна, как любознательность и усидчивость. Однако, если в вузе вы хорошо изучили математику и алгоритмы, ваш инструментарий будет богаче. Многие задачи, которые встречаются в моей работе сейчас, я научился решать еще в университете.
Помимо математических знаний и опыта разработки, здорово обладать профильной экспертизой — это помогает быстрее находить очевидные глупости и лучше понимать ценность решения. Нейросеть — это лишь инструмент, которым можно овладеть за короткий срок, а профильный опыт накапливается довольно долго. Выбирайте сферу, в которой у вас есть такой опыт. Например, если умеете работать с микроконтроллерами, портировать какие-то штуки на железки, то идите специалистом по нейросетям в промышленность. А если хорошо знаете банковскую сферу, ее риски и ограничения, то в банк.
Определитесь, к какому результату стремитесь именно вы. Можно копать в сторону определенного класса задач и пройти специализированные курсы:
- По компьютерному зрению — например, Стэнфордский курс CS231n: Convolutional Neural Networks for Visual Recognition
- По обработке текстов на естественном языке (NLP)
- По графовым нейронным сетям.
Эти курсы дадут хорошее представление о том, как все работает и что можно делать с помощью нейросетей. А параллельно с обучением стоит искать работу: лучше всего учится и запоминается то, что совпадает с рабочими обязанностями.
Карьерный путь в сфере ML
Карьерный путь специалиста в нашей области простой:
Анализируешь профильный опыт —> Ищешь точку приложения своих знаний и навыков —> Начинаешь работать —> Закрываешь пробелы и учишь новое на материалах подходящего уровня, которые соответствуют твоему опыту.
Я точно не знаю, как сейчас выглядит рынок ML-вакансий в России. Но те, что есть, в основном не для джуниоров. Все ищут сеньоров, и это очень плохо — отсутствует преемственность поколений. Будущий хороший специалист должен приходить в компанию джуном и учиться там у сеньоров и мидлов. Через некоторое время он матереет, легко справляется с типовыми задачами, становится способен исследовать что-то новое и продвигать индустрию. Если компания нанимает только сеньоров, она не растит джунов и не поставляет на рынок новых специалистов.
На мировой рынок, безусловно, сейчас влияет кризис в бигтехе (Big Tech). Стартапы стали получать значительно меньше инвестиций и перестали нанимать стажеров. Сокращения в компании Meta* (Объявлена в России «экстремистской организацией», ее деятельность в РФ запрещена. Мы вынуждены указывать это по требованию российских властей), Google, Microsoft привели к уменьшению вакансий, и это беда. Кризис в основном бьет по джунам и мидлам, которые хотели вкатиться в эту область.
Кажется, Яндекс все еще приглашает на стажировки. Это хорошо, потому что прийти стажером в крупную технологическую компанию — большая удача. На стажировку берут вчерашних выпускников и собеседуют их не так, как опытных разработчиков: смотрят, хороши ли они в математике — в области, релевантной задачам компании. Мидлов на собеседованиях спрашивают про опыт работы, а по математике не гоняют.
Если опыта нет, полезно работать над опенсорс-проектами. Есть такое движение — AI for social good, когда специалисты по ML решают какую-нибудь общественно полезную задачу. Например, были проекты помощи в поисках пропавших людей или затонувших кораблей. Это очень хорошее направление деятельности, в которое можно прийти новичком с горящими глазами, а уйти с ценным опытом.
Читайте также: Как выбрать свой первый опенсорс проект: большая инструкция от Хекслета
Необязательно ставить высокие благородные цели. Важно взять задачу и довести ее до конца, наступив на положенное количество граблей. Почти наверняка у каждого разработчика есть знакомый ML-специалист, преподаватель в области искусственного интеллекта или блогер, который делает материалы на эту тему. Имеет смысл написать ему и попросить задачку для новичка — так можно найти ментора или научного руководителя.
У IT в целом репутация непыльной работы. Во многих компаниях сотрудники перерабатывают и выгорают. Работа может быть и не пыльная, но стресс и нервы тут точно есть.
Прошлое, настоящее и будущее
Картины, нарисованные нейросетями, которые так восхищают современных пользователей, — не новость для нашей индустрии. GANы для генерации картинок появились еще в 2014 году и произвели фурор среди специалистов, но для широкой публики результаты получались невзрачными.
Большие компании копят данные и контент всю историю своего существования. С картинками прорыв случился в 2012 со знаменитым Imagenet, а вот в текстах Imagenet-момент зрел почему-то дольше. Теперь, когда нашлось столько вариантов применения для картинок и текстов, созданных нейросетями, дело за музыкой и голосом.
Сфера AI получила такое развитие только тогда, когда крупные компании увидели в этом перспективу. Нейросети помогают захватывать новые рынки, привлекать аудиторию. Поиск Google и Яндекс долгое время был построен на солидных, классических технологиях. Нейронные сети появились здесь совсем недавно. Сначала это были алгоритмы, потом — эвристики с подобранными параметрами, потом — какие-то простые ML-вещи. Нейросетей долго не было, потому что отвечать на запросы пользователей с их помощью сильно дороже, чем с помощью классических решений. А в поиске время ответа важно.
Раньше нужно было потратить год работы команды из ста человек, чтобы улучшить пользовательский опыт на пару процентов. С приходом нейросетей оказалось, что можно увеличить показатели качества на те же два процента, если в течение месяца обучать алгоритм. Стало ясно, что в это выгодно вкладываться.
За годы работы крупные компании — Google, Microsoft, Яндекс — накопили много данных. Они начали тренировать на этих данных большие нейросети, чтобы решить множество внутренних и внешних задач.
Пару лет назад «Яндекс» запустил нейросеть «Балабоба». Технология позволяла решать различные задачи, связанные с текстами. Это выглядело как простой сервис для генерации текстов, но технология позволила решать разные прикладные задачи внутри компании — без сбора больших датасетов и привлечения разработчиков.
Это очень прикладные вещи: иногда нужно переписать формулировки, иногда найти в объявлении контактную информацию. Затратив пару месяцев работы команды, можно не просто увеличить показатели счастья юзеров, но и сразу решить целую пачку проблем на нескольких проектах.
Вот такой странноватый анекдот сочинила нейросеть «Балабоба»
Благодаря вложениям больших компаний на рынке стали появляться результаты работы разработчиков нейросетей. Сейчас люди успешно пишут письма и дипломы с помощью ChatGPT, генерят картинки с помощью StableDiffusion и делают потрясающие аватарки в Lensa или Prisma. Пользователи любят с их помощью менять и стилизовать изображения. Я тоже пользуюсь этой технологией: у меня на аватарке стоит картинка, сгенерированная нейросетью. Трудно сказать, почему это так популярно. Но факт остается фактом: в этой области все еще много стартапов, которые легко привлекают инвестиции.
Моя аватарка после обработки нейросетью
Вклад разработчиков в развитие нейросетей
Время от времени кто-то из разработчиков предлагает классные идеи и сам же воплощает их в жизнь — в рамках коммерческого проекта или просто в виде домашнего задания.
В 2016 году люди, работающие с текстами, стали пользоваться моделью, которую популяризовал Андрей Карпатый — сейчас очень известный специалист. Он был главой направления AI в компании Tesla и вел Стэнфордский курс по ML. Он написал один из популярных постов про рекуррентные нейронные сети.
Все кинулись искать полезное применение этой технологии. Модель была маленькая, она не позволяла решать много задач, но люди вдохновились. Вклад Карпатого в генерацию текстов огромный. Он популяризовал неизвестную технологию, привлек широкий круг разработчиков. Те стали генерировать идеи, проверять гипотезы и заметно продвинули отрасль вперед.
Видео Карпатого про языковое моделирование
Опенсорс дает большой вклад в развитие ML. Популярнейший фреймворк машинного обучения PyTorch для языка Python — полностью опенсорсный продукт. Известная библиотека для машинного обучения TensorFlow — изначально внутренняя библиотека Google, которую компания со временем перевела в опенсорс, и с тех пор ее развивает комьюнити. Среди контрибьюторов все еще много людей из Google, но влияние комьюнити велико.
Такими опенсорсными проектами пользуются абсолютно все, кто занимается обучением нейросетей и применяет их в своих проектах. Если разработчик делает коммиты в PyTorch, это классная строчка в его резюме — он сделал полезный вклад для всего сообщества. Поэтому разработчики заинтересованы в том, чтобы контрибьютить в громкие опенсорсные проекты.
Важный вклад делают журналисты и блогеры в мире науки, которые занимаются пересказом статей, рассказывают аудитории, какова была изначальная идея, как она менялась. Как правило, это классные специалисты с личным брендом, им можно доверять. В ML ярко проявляется тенденция, что с помощью личного бренда можно находить хорошую работу, получать гранты и участвовать в интересных проектах.
Кроме Андрея Карпатого, стоит упомянуть научного сотрудника Google Себастиана Рудера, Константина Воронцова с опенсорс-курсом по ML, преподавателей Школы Академии Данных, которые создали свой онлайн-учебник по машинному обучению, Валеру Бабушкина и других ребят, которые ведут научно-популярные Telegram-каналы и рассказывают про интересное в области ML.
Что в итоге
- Нейросети отлично умеют находить и генерировать тексты, картинки и музыку. Но на этом их возможности не заканчиваются.
- Нейросетями можно заниматься как прикладной технологией в коммерческой разработке, а можно использовать их в качестве инструмента для исследований в научных лабораториях. В первое легче попасть, а для второго порог входа выше. Вакансий тоже больше в коммерческой разработке.
- Рынок сейчас не перегрет, поэтому зарплаты у ML-специалистов на уровне зарплат разработчиков.
- Знания Python достаточно, чтобы писать нейросети и пользоваться ими, а специальные библиотеки упрощают взаимодействие с математикой.
- Опенсорс дает большой вклад в развитие ML: большинство популярных библиотек и фреймворков с лицензиями — с открытым исходным кодом.
Изучите дата-аналитику на Хекслете Пройдите нашу профессию «Аналитик данных» — это станет вашим первым шажком в работе с нейросетями.