Интервью с Артемом Васильевым
В этом интервью мы с нашим гостем Артемом Васильевым будем обсуждать его личный карьерный трек и тренды в области компьютерного зрения. Артем работает в компании "Платформа Третье Мнение" разработчиком-исследователем методов компьютерного зрения. Также он преподает, консультирует и разрабатывает учебные материалы по нейросетям и их применению в научных исследованиях в МГУ. В нашем курсе Артем читает пятый модуль по компьютерному зрению, поэтому сегодня эта тема будет одной из основных.
Скажите пару вводных слов о себе, Артем.
Я сразу сделаю легкую ремарку. Тут я озаглавлен как сеньор биоинформатик, но было бы куда более честно сказать, что я занимаюсь компьютерным зрением в медицине. Я работаю в компании "Платформа Третье мнение" — это небольшой, но очень живой стартап, который занимается разработкой систем поддержки принятия решений для врачей в области лучевой диагностики, видеоаналитикой для больниц и разным медицинским компьютерным зрением. Поэтому "биоинформатик" мы держим в скобках; на самом деле я разработчик-исследователь.
Одна из основных наших тем — это ваш личный карьерный путь. Расскажите, пожалуйста, с чего все начиналось и каков ваш бэкграунд?
Я полагаю, мой карьерный трек несколько нетипичен для биоинформатика, потому что я учился на физическом факультете Московского университета на младших курсах. Я намеренно распределился на кафедру, которая занималась компьютерной теоретической физикой и где проводили массивные параллельные вычисления на суперкомпьютерах. Органично в ходе моей научной работы я столкнулся с необходимостью обрабатывать данные на компьютере — данные, которые представлялись в виде некоторых матриц и таблиц. На физическом факультете невозможно учиться, не научившись программированию на C++. Пережив этот шок, потом мне было уже несложно увидеть подходящие задачи для Python, например задачи визуализации, базовые работы с данными, простейшие модели линейной регрессии — все, чем сразу хочется воспользоваться, когда у вас много данных под рукой. Я достаточно самостоятельно разобрался в области программирования и вобрал в себя прикладные библиотеки типа sklearn и так далее.
Со временем мои знания программирования и машинного обучения прогрессировали, и уже при переходе в магистратуру я был приглашен участвовать в техническом институте. Мы разрабатывали систему, которая делает своеобразный прогноз погоды — только прогноз отказов для большого комплексного устройства из большого количества компонентов. Каждый компонент пишет данные в виде временного ряда, и по характерному паттерну взаимного изменения поведения большого количества временных рядов можно сказать, что в системе что-то идет не по плану, и нужно вызвать людей в специальных комбинезонах, чтобы они это устройство починили до того, как оно сломается. После полутора лет работы в этом проекте я был приглашен в компанию BostonGene. Я был сотрудником команды имиджинга и занимался алгоритмами автоматической сегментации и классификации клеток на мультиплексной иммуногистохимии и на картинках, окрашенных гематоксилином и эозином. После закрытия московского офиса компании BostonGene в 2022 году я начал исследовать рынок труда в области компьютерного зрения в Москве. Я обнаружил множество стартапов, работающих в сфере медицинской лучевой диагностики, и заметил лидеров рынка, таких как "Платформа Третье мнение", компанию "Цельс" и другие. Мне стало интересно применить свои знания в области компьютерного зрения и машинного обучения для разработки систем поддержки принятия решений для врачей. В последние два года я работал в команде, занимающейся анализом рентгенограмм грудной клетки и флюорографии.
Когда вы набирали опыт программирования и получали технический бэкграунд в математике, вы уже знали, что хотите заниматься машинным обучением? Какова была ваша стратегия в изучении этой области?
Честно говоря, когда я знакомился с такими методами, как линейная регрессия и алгоритм k-ближайших соседей, машинное обучение не было таким громким термином. Я не думал, что эта инженерная технология станет основной в моей карьере. У меня не было четко выстроенного плана по поглощению знаний в этой области. Моя математическая подготовка была довольно серьезной, но, возможно, избыточной для начала работы в машинном обучении. Если бы мне сейчас нужно было начать с нуля, я бы сосредоточился на базовой теории вероятностей и простых математических концепциях. Этой базы было бы достаточно для того, чтобы начать читать статьи и разбираться в алгоритмах.
Среди нас много биологов, интересующихся машинным обучением. Как вы считаете, где биологам ближе всего использовать методы машинного обучения и компьютерного зрения в их научной практике?
Машинное обучение бывает разным. Например, в компьютерном зрении, о котором я надеюсь подробно рассказать в нашем курсе, есть также часть, посвященная анализу последовательностей. Это может касаться языковых моделей, таких как ChatGPT, но те же технологии могут использоваться для анализа последовательностей ДНК и РНК. Все, что связано с обработкой последовательностей, так или иначе включает в себя машинное обучение. Это точно актуально сейчас, потому что это такая область, где накоплено большое количество данных. С ними невозможно работать исследователям просто глазами или руками, и приходится разрабатывать более эффективные инструменты.
Я, как вы представили, являюсь еще и консультантом на курсе по применению машинного обучения в МГУ. За время работы в этом курсе было достаточно большое количество разных студентов-биологов, которые применяли машинное обучение в своей практике.
Одна из работ связана с компьютерным зрением и была посвящена разработке автоматизированной системы слежения за модельными животными. В лаборатории это выглядело как загончик для мышей, в котором они могли перемещаться вдоль модельной области, и были расставлены камеры. Исследователям было необходимо понимать, где, в какой момент времени и какие мышки находятся, сколько времени они потратили на сон, еду и взаимодействие между собой. В эпоху до компьютерного зрения эта задача решалась при помощи PhD студентов, но куда логичнее заставить компьютер следить за тем, где ползают мышки, а потом просто сформировать отчет в виде тепловой карты.
В другом проекте студент изучал воздействие некоторого вещества на клетки, в частности на митохондрии. Суть была в том, что необходимо было клеточную культуру залить раствором этого вещества, получить ультрафиолетом и следить за послесвечением, которое образуется в видимом диапазоне. При этом нужно было следить за послесвечением каждой отдельной митохондрии на экране микроскопа. Такие задачи практически не решаются разумным количеством человеко-часов, когда мы будем пытаться, глядя в микроскоп, сравнить свечение каждой митохондрии с эталонной яркостью. Эта работа также стала возможной благодаря тому, что студент, имея внутри своей научной области некоторую задачу и получив эрудицию о том, какие в принципе бывают методы машинного обучения и какие задачи они могут решать, смог быстро сложить первое и второе. Он нашел место, где такая эффективность может быть достигнута с помощью машинного обучения и закрыл эту неэффективность.
Сколько времени биологам без базовой подготовки понадобилось для того чтобы выполнить эти задачи?
Студенты биологического факультета имеют базу математической подготовки. Так как они еще студенты, она у них была совсем недавно и пока что не успела остыть. Кроме того, и биологам, и даже, как я недавно узнал, на факультете психологии Московского университета есть курс линейной алгебры на один семестр, поэтому многим людям достаточно подтянуть программирование на Python. Порог входа не очень высокий даже для людей, которых нужно познакомить с базовыми библиотеками. Можно разобраться с методами качества, нужно разобраться с тем, какие алгоритмы обычно применяются к каким-то задачам.
Можно говорить о том, что, например, как устроено обучение на наших курсах в МГУ. Мы устраиваем по всему маршруту от азов линейных моделей и регрессии до простейших классификаций и продвинутых тем в области обучения с подкреплением. Это довольно далекая тема от старта. Вот на все это проходим в рамках 15 занятий по 3 часа. Это тяжело, это очень большой объем информации и степень усвоения не очень высокая. Но если у нас есть задача человека, у которого нет никакой эрудиции, он не может понять, какие в принципе есть инструменты для решения его собственных проблем, то познакомиться с этими инструментами за семестр университета — это вполне приемлемый объем.
Наш курс на OpenBio более специализирован в том смысле, что выбрали несколько направлений внутри биоинформатики: это анализ последовательностей и анализ изображений внутри домена медицинских снимков. Это будет знакомство с основным инструментарием, который может пригодиться при первом контакте с задачей, в которых в принципе может использоваться компьютерное зрение. Мне кажется, объем нашего курса будет достаточно. Его точно не будет достаточно, чтобы сразу на выходе получить сформировавшегося специалиста, который будет знать инфраструктуры данных для разметки, для запуска моделей в продакшн и как их донести до потребителя машинного обучения. Но это важный старт, чтобы в принципе разобраться с тем, какие есть задачи и как они решаются.
Могли бы вы подробнее рассказать, чем занимаются дата-сайентисты, о которых все говорят? Как выглядит их рабочий день?
В начале зацеплюсь за слово "дата-сайентист", потому что, на мой взгляд, такой профессии в последнее время можно встретить все реже и реже. Но вакансии все равно есть! Я видел такую аналогию: когда в начале нулевых появилось большое количество компаний, связанных с интернетом, и появилась профессия "компьютер-сайентист", она также была достаточно широко названа. И настоявшись долгое время, эта профессия пришла к нам в виде двух-трех десятков разделенных профессий – back-end разработчик, front-end разработчик, DevOps, менеджеры, аналитики – то есть появилась высокая гранулярность.
То же самое происходит с дата-сайенсом. По профессии "дата-сайентист" это и швец, и жнец, и игрец – все сразу. Это некий вымирающий вид, полезный только для стартапов с очень маленьким штатом. А сейчас произошла некоторая специализация. На мой взгляд, внутри этой специализации есть три направления компетенции, внутри каждого из которых можно вырасти. Первое – это программирование; второе – это обобщенно исследование и аналитика; третье – это people-менеджмент. Если мы пойдем в крайность, связанную с разработкой программного обеспечения, это будет набор вакансий, связанных с непосредственно доставкой ML-решений, написанием продакшн-кода, оптимизацией по требованию в реальном времени. Такие люди не придумывают сами модели с нуля – им приносят их как раз люди из второй группы, которые в своей работе не оглядываются каждую секунду на проблемы, связанные с тем, на чем это считать и как это считать. Нужно сначала решить задачу, а потом уже ее будут упаковывать другие люди. Третье направление связано с people-менеджментом. Оно существует, наверное, как и во многих таких технических специальностях из-за того, что достаточно сложно руководить коллективом, который занимается машинным обучением, не будучи совсем погруженным и в тему исследований, и в тему программирования.
Такие менеджеры изначально имеют IT-образование или гуманитарное?
В моем окружении все органически вырастали из технических специалистов – в первую очередь это серьезные разработчики или серьезные исследователи. Так устроено большинство компаний: на таких людей обычно менеджеры возлагают дополнительные обязанности, связанные с управлением проектом. Это не всегда успешная история. Я уверен, что лучший программист не всегда является лучшим менеджером и наоборот. Это не всегда успешная история. Я уверен, что лучший программист не всегда является лучшим менеджером и наоборот. Поэтому, как обычно, это все крайне индивидуальная история.
Как сейчас выглядит структура рынка ИИ-технологий: их создают для внутреннего пользования отдельные компании (“ин-хаус”) или есть тренды на доставку решений внешним пользователям?
На мой взгляд, есть компании, которые в принципе никогда не смогут себе позволить иметь машинное обучение как сервис, который они покупают сторонним образом. Это могут быть компании, которые работают с чувствительными данными – те же банки или центры, хранящие личные данные пациентов: их нехорошо просто отдавать кому-то наружу. В таких компаниях обычно есть огромное количество данных, и этих данных достаточно, чтобы устраивать стандартные пайплайны машинного обучения и пытаться настраивать какие-то модели. В компаниях поменьше потенциальный выигрыш от внедрения машинного обучения, получая его со стороны как сервис, гораздо выше, чем при развитии решения у себя изнутри. Пример, чтобы было понятно: допустим, у нас есть база знаний в компании, которая хранит информацию о том, чем она занимается, а также информацию о коллективе. Мы хотим сделать для нее интеллектуальный поиск, чтобы можно было как в Яндекс Нейро нажать кнопочку, чтобы нейронка почитала Вики и ответила мне на мой вопрос. Известно, как это сделать при помощи так называемого Retrieval Augmented Generation (RAG) – это такая технология, которой пару лет. Специалисты внутри NLP с ней знакомы. Можно в принципе нанять штат людей, которые это сделают внутри и будут периодически ее поддерживать, но это очень сложно – это дорогая система и очень дорогая команда.
Кроме того, я расскажу про свою компанию. Есть больницы и медицинские центры с рентгеновскими аппаратами. В принципе внутри каждой отдельной больницы или крупного медицинского центра можно было бы создать команду, которая бы разрабатывала систему поддержки принятия решений и настраивала бы ML-модели на основе компьютерного зрения, которые бы искали патологии на изображениях. Каждый медицинский центр делал бы это независимо. Но объем данных одного медицинского центра и объем экспертизы, которые может в принципе позволить такая команда, недостаточен для того, чтобы этот продукт имел достаточное качество. Например, для того чтобы обучить модель уверенно находить 20 типов патологических признаков на изображениях, нужно разметить порядка 10^6, то есть где-то миллион изображений. Столько изображений сложно разметить одному заказчику. Поэтому появляются компании вроде моей и других компаний на рынке отечественных радиологических исследований, которые готовы взять эту нагрузку на себя. В том числе компании готовы потратить большие деньги и ресурсы на исследовательскую работу – это траты несовместимые с бюджетами, которые были бы потрачены внутри в ин-хаусе. Поэтому вот два таких примера я назвал; они уже сейчас существуют и мне кажется этот тренд будет расширяться. Мы все чаще будем получать машинное обучение как сервис.
Можете пожалуйста прокомментировать утверждения о том, что платформа «Третье мнение» – лидер рынка? Как это измерить и как охарактеризовать?
Это абсолютно измеренный и подтвержденный факт. Есть законодательная инициатива – Московский радиологический эксперимент по использованию ИИ для анализа медицинских изображений. Этот государственный орган выступает связующим звеном между больницами и разными поставщиками ИИ-сервисов. Поставщики ИИ-сервисов получают долю потока больниц соответственно качеству, с которым они решают свою задачу. Есть два основных критерия качества: первый критерий – это площадь ROC-кривой; это такая базовая метрика для качества классификатора. А второй – техническая оценка зрелости сервиса как системы, к которой можно обращаться и ожидать что она ответит тебе за заданное время без ошибок.
На основе такой технической оценки стабильности и точности сервиса собирается некоторая интегральная оценка. На основе интегральной оценки сервисы ранжируются. И вот мы находимся сейчас на первом месте по обработке маммограмм, находимся очень высоко в лидерах по рентгенограммам грудной клетки и ФЛГ, и мы находимся недалеко от еще одной компании, которая занимается подобными вещами – "Цельс".
Видимо, область здравоохранения является драйвером внедрения ИИ-решений в практику. Какие направления имеют такие же перспективы роста?
Эта тенденция сформировалась благодаря эпидемии COVID-19. В тот момент больницы испытывали недостаток людей, которые смотрят рентгенограммы ГК и флюорограммы. Я уверен, что была некоторая долгосрочная и спокойная программа по внедрению ИИ в медицину. Но очевидным акселератором того, что появился большой государственный интерес в этом плане, и в том числе была подведена база под то, что ИИ-сервисы могут работать в рамках ОМС для конечных пациентов, во многом было благодаря ковиду. Получив такой первоначальный пинок и когда эти решения уже были внедрены, очень легко посчитать экономические эффекты от их внедрения. Экономический прямой эффект и понятные бизнес-метрики связаны с работой врачей.
Пока нельзя сказать, что после внедрения таких систем процент пропущенных, скажем, злокачественных образований на рентгенах значительно снизился, но можно сказать, что значительно снизилась нагрузка на врачей и снизилось время, которое врач тратит на одно единственное исследование.
Второй вопрос я бы, наверное, переформулировал в целом о том, какие есть тренды в машинном обучении в целом в индустриальных приложениях. Первое — понятная часть связана с тем, что все больше задач накопили так много данных, чтобы в принципе можно было заниматься машинным обучением. Так было с текстами, так было с голосом и видео. В рамках медицинской области этот тренд близко связан с общим трендом на мультимодальность. Под мультимодальностью в машинном обучении подразумевается способность моделей воспринимать разные типы структурированной информации – скажем, одновременно картинки и текстовое описание к ним. В контексте медицины это может означать, что мы можем во время работы нашей модели не только смотреть на изображения, которые сняли с пациента во время конкретного исследования, но и прочитать его историю болезни и посмотреть описание похожих снимков. Таким образом, мы можем улучшить качество работы наших алгоритмов. Внутри компьютерного зрения сейчас есть существенный тренд на создание foundation-моделей на основе трансформеров. Я думаю, те, кто интересуется тематикой искусственного интеллекта и машинного обучения, знают об успехе моделей типа ChatGPT и их аналогов. Их успех во многом связан с их высокой универсальностью: они обучены на огромном количестве данных и поэтому легко и дешево специализируются под решение вашей конкретной небольшой задачи. Сейчас мы можем взять предобученную foundation-модель, которая училась на огромном публично доступном датасете внутри каждой предметной области. Эту модель можно дешево и сравнительно несложно при помощи развившихся техник доучить, чтобы она работала на узком домене и специализировалась на нем. Поэтому тренд, если его охарактеризовать коротко, – появление машинного обучения там, где его никто не ждал еще совсем недавно из-за недостаточного объема данных.
У студента или магистранта еще есть возможность прорваться в область машинного обучения?
Шансы прорваться точно есть. Я думаю, тут нужно вспомнить о сложившемся рынке стартапов по компьютерному зрению, который работает в домене лучевой диагностики. Я не просто так называю это сложившимся рынком стартапов. Там нет крупных компаний. Некоторые крупные компании, типа Сбера, пытались в свое время зайти на этот рынок, но из-за некоторой неповоротливости большой компании они не смогли забежать быстро за более подвижными и гибкими маленькими командами. Поэтому сейчас все, что связано с IT healthcare и телемедициной — все, что может быть автоматизировано, мне кажется, это огромный рынок, который пока еще только формируется, и там почти нет больших игроков. Так же, как когда-то моя сравнительно маленькая компания с штатом в несколько человек выбилась в лидеры рынка, мне кажется, сейчас нет никаких принципиальных ограничений, чтобы это не произошло с другой компанией.
Как происходит трансфер технологий от разработчиков к врачам? В каком виде вы предоставляете результат и каким образом вы доказываете, что ваша разработка не врет?
Касательно доставки, у врачей-рентгенологов есть рабочие станции: это, как правило, цветной монитор с хорошим разрешением и широким динамическим диапазоном. На этот же экран в процессе работы нашего сервиса помимо снимка пациента выдается результат работы, где искусственный интеллект выделил по контуру все находки, которые на его взгляд требуют внимания врача. Кроме того, врачу предоставляется текстовый почти заполненный репорт, где не хватает только согласия с результатом обработки. Пока мы никак не взаимодействуем с пациентами — это исключительно помощник для врача. Наш сервис дополняет результат исследования за врача и позволяет ему не тратить лишний раз время на рутинное написание текста или лишний раз обратить его внимание на те области снимка, которые в конце рабочего дня он бы мог не злонамеренно, а из-за высокой нагрузки начать пропускать.
Доверие, как известно, требует выдержки. Уже достаточно долгое время наши сервисы доставляются в больницы. Большое количество врачей уже успело с ними повзаимодействовать, и эти сервисы были протестированы на больших датасетах. В целом, уже нет большого сомнения, что это работающие технологии. Могут быть проблемы в частностях — мы, возможно, в рамках курса успеем обзорно об этом поговорить, не углубляясь в детали. Но процедура принятия или непринятия врачами результатов ИИ очень близка к теме разметки медицинских данных в принципе. Если при разметке гистологии врачи часто согласны с каппой Коэна порядка 0,6, то при лучевой диагностике хороший показатель — это когда врачи обычно согласны друг с другом с каппой Коэна 0,3. Что в целом, конечно, полный провал. Но это связано с тем, что у разных врачей разные опыты: какие-то врачи всю жизнь проработали в тубдиспансере и знают, что какой-то признак на изображении точно связан с туберкулезом. А если похожий снимок дать врачу из другой области, он может просто не иметь такой насмотренности.
Существует мучительный процесс установления консенсуса в разметке. Первое, что мне хотелось сделать, когда я только начал заниматься этой областью, — это такая естественная мысль: "Давайте дадим сотне врачей разметить один снимок, и на нем получим нормальный ответ". Это как-то естественно и интуитивно. Но дело в том, что если мы возьмем большое количество случайных величин с большой дисперсией и сложим их между собой, то у итогового ответа дисперсия еще сильнее вырастет. Вместо лучшей разметки мы получим разметку, которая хуже, чем любая разметка отдельного человека. Это первый совершенно контринтуитивный шаг при работе с разметкой: приходится группировать врачей на основе опыта, на основе каких-то вкусов о том, как они подходят к разметке и так далее. В итоге доверие врачей связано с хорошими метриками ROC AUC. Когда эта метрика высокая, врач может быть уверен, что метод работает.
Можете рассказать, какие применения есть у компьютерного зрения в биологии и медицине? Рентгены, флюорография, КТ, МРТ, гистология, мультиканальное изображение и другие технологии — это отдельные ветки? Где человек получит универсальные знания, а где будет больше специализации?
У нас есть база компьютерного зрения — классические алгоритмы ИИ для поиска границ. Сюда же можно прикрутить все, что связано с задачами классификации и сегментации при помощи неровности для двумерных изображений. Это общая точка входа, которая будет полезна абсолютно всем, и вот поэтому мы это включили в курс. Если говорить о более специализированных сферах, то на примере лучевой диагностики — это разнообразные рентгеновские, КТ и МРТ-снимки. Здесь можно разделить все на большие группы: двумерное и трехмерное изображение. Несмотря на то что общий идеологический фреймворк работы с такими данными близок, работа с 3D значительно сложнее. Там используются свои архитектуры, требуется более интенсивные вычисления, и возникают больше проблем с качеством и количеством данных.
Второе большое направление — это гистология. Там есть изображения, которые очень похожи на изображения из реального мира; это просто окрашенные гематоксилином и эозином картинки. Бывают крайне многоканальные изображения, полученные при мультиплексном подходе. Несмотря на то что на первый взгляд многоканальное огромное изображение сильно не похоже на снимки, которые мы привыкли видеть с точки зрения алгоритмов, это в точности одно и то же. Неважно, внутри канала RGB входа будет канал Ki67 или какой-нибудь другой белковый маркер; алгоритму это в целом безразлично. Компьютерное зрение, которое применимо к 2D, стало обычным. В такой области специализация наступает скорее на типичных задачах сегментации. Часто я имею в виду следующее: легко представить себе проблемы, когда на изображении я хочу найти огромное количество объектов — это отдельные клетки или ядра этих клеток. Эти объекты могут в значительной степени друг на друга налезать. Для таких изображений требуются специализированные архитектуры, которые умеют лучше других находить границы тканей и клеток.
Это еще один сервис, который компания «Третье Мнение» представляет – можно следить за пациентами, чтобы, например, лежачего пациента вовремя перевернули, чтобы у него не образовались пролежни. Здесь появляется проблема в том, что это всегда видео, и работа идет уже не в рамках одной картинки. Но все равно мы можем решать задачи классификации. Однако с появлением еще одной размерности – задачи времени – алгоритмы тоже усложняются, а также возникают требования к вычислительным ресурсам. Если мы разрабатываем нейросеть для мультиплекса, нам не важно, что она будет обрабатывать полное изображение несколько секунд, потому что секунды – это все равно гораздо меньше, чем это заняло бы у гистопатолога. А если у нас есть больница или производство, на котором стоят 150 камер, и каждая камера пишет 60 кадров в секунду, мы хотим это все одновременно в режиме реального времени оценивать, поэтому появляется специализация на реал-тайме.
Как вы считаете, насколько российские разработки котируются на мировом уровне?
Если говорить по метрикам качества, не будет большим преувеличением или ложным кокетством сказать, что отечественные производители компьютерного зрения ничем не уступают мировым. Местами можно сказать, что они даже лучше, например, в области гистологии. На мой взгляд, то же самое можно сказать про софт, который используется в гемоанализаторах. Системы видеоаналитики для больниц также не хуже мирового уровня. Их правда не так много, потому что это очень сложные технологии производства, но мы проверили, что наша компания – лидер, и можно с уверенностью говорить об этом.
Вопрос про зарплату: иногда мы видим цифры в районе 300 000 рублей. То есть зарплаты хорошие, это правда?
Дипломатично отвечу, что да, такие зарплаты в области есть.
Можете рассказать про саму бинарную классификацию? Объясните, что там происходит, на примере задачи самой простой классификации изображения.
Давайте приземлим эту задачу на какой-то конкретный пример. Скажем, я хочу понять по гистологическому образцу, является ли это раковой опухолью или нормальной тканью. В первую очередь нужно понять, могу ли я не использовать машинное обучение. Такая задача решается только путем предварительного ресерча литературы и очень часто оказывается, что дорогой МЛ-проект следует приберечь для каких-то более амбициозных задач, а текущую задачу можно решить и без него. Допустим, этот этап мы прошли.
Машинное обучение начинается с данных: нам нужно понять, какие у нас есть данные в рамках решения задачи, какие данные есть в открытых публичных датасетах с лицензией, которые позволяют нам использовать их для нашей работы. Дальше нам нужно понять, требуется ли в задаче проводить собственную разметку или будет достаточно какой-то открытой информации по этой задаче, скажем, определение части ткани. Готовы ли мы забрать такое минимальное жизнеспособное решение относительно без собственного отдела разметки? Но часто у нас есть наши специфические данные, и мы должны отладить процесс получения разметки. Мы сформулировали задачу; в рамках этой задачи мы должны собрать достаточный набор данных в первую очередь, чтобы тестировать качество наших алгоритмов. Этот набор данных должен покрывать все возможные кейсы, которые нас интересуют. Допустим, для задачи определения опухоли — доброкачественная она или злокачественная — у нас должны быть тестовые данные с нормальной тканью. Должны быть разнообразные примеры опухолей или еще какие-то сложные примеры, чтобы показать потом, что мы уверены: мы получили что-то полезное. Вот это самые длинные и мучительные этапы, в которые в первую очередь нужно инвестировать все свое мысленное топливо.
Когда мы этот этап прошли и у нас есть некоторый набор данных, которые можно использовать для обучения, мы переходим к обучению модели. Это тоже итеративный процесс. Следует начать с самых простых моделей. Что такое простые модели? В каждой конкретной задаче будет по-разному. Мы на нашем курсе рассмотрим общий план классификации 2D-изображений — эта задача хорошо решена и существуют понятные технические инструменты, как это делать. Мы берем библиотеку Torch Image Models, возьмем из нее маленькую модель и доучим ее на наших данных. Дальше мы протестируем качество этой модели, попробуем понять, хорошо ли она работает по метрикам. Потом протестируем нашу модель на других данных и покажем ответы модели эксперту. Первые несколько десятков раз ответ будет неудовлетворительным, и нужно будет вернуться сначала или поправить что-то в процессе получения разметки данных, или попробовать новые модели, или поиграть в процессе обработки данных.
Когда мы пережили обучение модели, у нас будет на выходе нейросеть. Как обычно, сейчас она будет внутри фреймворка PyTorch, и нам потребуется подумать о том, как ее доставлять дальше пользователям, какие у нас есть ограничения по времени и ресурсам, сможет ли модель эффективно запускаться на компьютере и так далее. Это уже обычно решают специальные люди, когда в этом есть необходимость. А если в этом необходимости нет, мы просто можем запускать модель как питоновский скрипт для решения наших прикладных задач и периодически проверять ее качество работы. Зачем проверять? Например, мы всегда работали с одним поставщиком слайдов ткани, и вдруг у нас сменился поставщик. У другого поставщика, с другой микроскопией, немного по-другому выглядят изображения, с которыми мы работаем. Если мы во время эксплуатации нашего сервиса не будем проверять, что данные не изменились, мы можем получить на выходе произвольное качество. Машинное обучение — это просто способ аппроксимировать некоторые знания, которые заложены в наборе прецедентов, чтобы его переиспользовать на таких же данных. Если нам дадут другие данные, то и ответ будет другой.
Когда такую задачу решает новичок, сколько времени он обычно тратит, чтобы оценить ее качество и дать ей какую-то смысловую ценность?
Новичок может быть новичком в машинном обучении, но скорее всего задача у него появилась не просто так, а в контексте прикладной проблемы, которую он решает. И эту проблему наверняка кто-то решал до него. Поэтому много времени может уйти на анализ решений и хороших практик внутри этой задачи. В литературе можно почитать BioRxiv, залезть на GitHub и посмотреть открытый код. Вот это может занять дни для простой задачи и недетерминированное количество времени для действительно сложной задачи. Дальше именно написание рутинного кода для обучения модели широко переиспользуется. Например, после прохождения нашего курса у вас останется пример кода, в который можно подставить ваши данные. Код обучения модели качественно от этого не поменяется. Но главное, что вам нужно понимать — это как вы будете потом оценивать качество получившейся модели и какие данные подаете на вход. А вот технический каркас, кости и ребра решения от этого никуда не денутся. Поэтому это не самая времязатратная часть по вкладу исследователя, но она может быть затратна для компьютера. Например, если мы работаем с большим датасетом картинок, это может занимать дни или недели.
Какие задачи обычно спрашивают на собеседованиях на позицию junior специалиста в машинном обучении?
Нужно знать много всего. Нужно знать все про метрики качества, что они означают и что измеряют. Можно по табличке ответов модели и разметки попросить посчитать ROC AUC руками. Это отсекает большое количество людей, которые недостаточно времени потратили, чтобы разобраться, что же там на самом деле считается, хотя это самое важное. Дальше — про устройство моделей. Можно спросить, зачем нужны те или иные слои в нейросетях, какие параметры в них вставлять, архитектуры, чем UNet отличается от ResNet. И это не всегда обязательно высокоуровневый разговор. При найме в исследовательскую команду обязательно будет разговор про новые статьи, конференции и выступления. Важная часть работы именно исследователя, если уходить от стандартных понятно решаемых задач — это способность воспринимать и интерпретировать новые идеи из научных работ, понимать выступления и извлекать из этого выводы. Вопрос может звучать как: “Вы недавно посмотрели какой-нибудь доклад? Что нового и интересного вы там нашли?”
Если рассматривать начальные позиции, абсолютный маст-хэв — это метрики качества, а сразу рядом с ними — теория вероятности и статистика, потому что без них невозможно понять метрики качества.
Стоит положить с собой в базовый набор знание библиотеки PyTorch, особенно если вы хотите работать в компьютерном зрении; стандартные Torch Image Models и Segmentation Models PyTorch — с ними нужно иметь какой-либо практический опыт работы, что несложно, так как они довольно дружелюбные. С таким багажом можно идти на собеседование. Конечно, все это по умолчанию включает умение программировать на Python.