Исследования в Machine Learning: как, кому и зачем

Всем привет, я Александр Гончар — AI Solution Architect в Mawi Solutions. Занимаюсь разработкой и внедрением state of the art решений для анализа биосигналов. В этой статье я расскажу про то, что делают исследователи в области искусственного интеллекта и как идеи из research переносятся на прикладные задачи, в чем их ценность и как начать заниматься более продвинутым машинным обучением.

Дисклеймер: речь пойдет не о новых «ResDenseXYZNet», которые на ImageNet дали еще плюс 0.05% в точности и надо срочно стянуть их модельки с GitHub, а более интересных и фундаментальных вещах :)

Как я пришел в Machine Learning

Для меня путешествие в мир машинного обучения (далее я буду жонглировать фразами «искусственный интеллект», «машинное обучение», «data science» как взаимозаменяемыми) началось давно. Это было летом после вымученного первого курса КПИ на кафедре прикладной математики, куда я поступил после окончания гимназии с углубленным изучением иностранных языков.

После первых двух сессий, когда я оказывался в шаге от отчисления, я начал задумываться над тем, что раз меня уже забросило в математику, то надо найти мотивацию и желание заниматься ею профессионально. Я просто начал гуглить что-то вроде «what applied mathematicians do» и относительно быстро узнал про тогда еще не настолько популярную область как machine learning. Мне понравилось, и я начал учиться по случайным урокам в интернете и, конечно, на знаменитом курсе Andrew Ng.

Через год я нашел свою первую работу по специальности, где сначала трудился «за еду». Спустя еще полгода я уже работал на двух, получая бесценный опыт, и даже совмещал это с учебой. Оценки в универе не только не ухудшились, а наоборот, стали только лучше, так как я вовсю занимался той самой прикладной математикой, которой должен был учиться.

О создании портативного кардиографа

Сегодня я заканчиваю магистратуру по математике в University of Verona, веду относительно популярный блог на Medium, читаю публичные лекции и отвечаю за машинное обучение в компании Mawi Solutions, где мы разработали свой портативный кардиограф на «стероидах» в виде машинного обучения. Почему кардиограф и сердце? Как минимум потому, что именно болезни сердца являются убийцами номер один в мире, и доступность анализа состояния сердца, хотя бы на уровне определения мерцательной аритмии и других сбоев ритма сердца, позволит спасти множество жизней за счет того, что человек сможет делать электрокардиограмму (ЭКГ) каждый день дома, а не у врача раз в пару лет, когда уже может быть поздно.

Конечно, помимо больших и глобальных целей есть много простых, но не менее важных. Кроме определения аномалий работы сердца, с помощью ЭКГ, которую делает наш браслет, можно следить за состоянием нервной системы, а это открывает огромный простор для анализа стресса и восстановления, сна и засыпания, эмоций. Мы также исследуем нестандартные кейсы, например, использование ЭКГ в качестве биометрического идентификатора (по сути, как отпечатка пальца) в совместном проекте с «ПриватБанком» и использование ЭКГ как биомаркера старения в исследовании с Insilico.

Кстати, мы приглашаем исследователей, у которых есть интересные идеи и гипотезы, но нет технической возможности собрать, отцифровать и проанализировать данные, присоединиться к нашей research-платформе. От нас — браслет, который трекает ЭКГ и все, что с ней связано, активность и сон человека (есть встроенный акселерометр), SDK и помощь с аналитикой. От вас — любые интересные эксперименты, хоть и о том, как каждая выкуренная сигарета влияет на состояние сердца.

Конкуренция за искусственный интеллект

Разумеется, искусственным интеллектом сейчас никого не удивишь, потому что он уже везде и потихоньку превращается в обычную часть нашей жизни. Разве что совсем чуть-чуть нас еще удивляют воссоздающие способности алгоритмов: генерация фейковых фото, видео, голосовых записей и немножко текстов). Компании уже не соревнуются в том, что у кого-то есть чат-бот, отвечающий на вопросы кастомеров, а у кого-то до сих пор команда SMM-щиков. Более того, потихоньку начинают умолкать споры о том, кто же лучше в ряде задач — человек или робот (разумеется, последний).

Конкуренция идет на нескольких уровнях. На уровне цифр — процента правильных решений, затраченного времени на разработку, скорости принятия решений в реальном времени, количества сэкономленных денег и других бизнес-показателей, ради которых это все в итоге и делается. И на уровне сложности инновации. У кого-то чат-бот, который на самом деле представляет собой кучу легаси кода с rule-based принятиями решений, с десятками версий, которые отдельно заточены под каждый из языков клиентов. А у кого-то state of the art нейронка, которая сама справляется с разными языками, да еще и есть speech synthesis алгоритм, так что можно не только попереписываться, а и поболтать.

В каком-то стартапе, связанном с диетологией, нейронка распознает 100 типов еды на картинке и записывает их названия, а у кого-то — 10000 блюд, да еще и автоматом подсчитает калории и сгенерирует рецепт. В задачах первого уровня часто можно соревноваться с помощью инженерии (оптимизировать код, инфраструктуру, нанять специалиста из более толкового универа, который даст +3.76% к точности) и UI/UX или продакт-дизайнера (более удобная интерпретация outputs нейронки, выбор правильных метрик). Со вторым все несколько сложнее — это уже вопрос настоящих исследований или адаптации существующих state of the art решений для конкретного продукта.

Как обучается ИИ

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

  • Дайте мне много (или не очень много) примеров входных и выходных данных.
  • Через какое-то время (от пары минут до недели) я научусь более-менее точно по более-менее похожим входным данным давать правильные выходные данные.

Например, в моем случае это могут быть 10 тысяч 30-секундных участков ЭКГ разных людей. Я хочу, чтобы алгоритм научился говорить для каждого участка, есть ли там аритмия или нет. То же самое происходит для изображений, видео, звука, временных рядов, заданных профилей клиентов и так далее. Как бы учился среднестатический человек?

  • Не просто смотрит на изображения, которые надо отнести к какой-то категории, а взаимодействует с контекстом, в котором эти изображения были получены. Более того, изображения человек будет «фотографировать» и анализировать сам, какие помогают решать задачу, а какие — нет (методом проб и ошибок, в отличие от supervised learning, где мы просто даем кучу картинок с тегами) (вот вам и reinforcement learning).
  • Не нужно много примеров объектов, чтобы разобраться в них. Зачем мне смотреть на тысячу изображений собак раз эдак по двадцать, чтобы понять, что это собака? (one-shot learning, few-shot learning, bayesian machine learning).
  • Соответственно не нужно много времени на обучение (теория оптимизации).
  • Может приспосабливаться к разным условиям. Ребенок, увидев котиков в книжке, с легкостью узнает их и в жизни, и на экране, даже в карикатурном виде (domain adaptation, transfer learning).
  • Может переносить знания и опыт с одной предметной области на другую (transfer learning, meta-learning).
  • С каждого канала информации, например слухового, одновременно берет много информации: кто говорит, какая интонация, какие конкретно слова и их смысл, какие фоновые звуки и так далее (multitask learning).
  • И наоборот, если мы хотим узнать что-то одно, например, определить эмоцию, с которой человек что-то говорит, то полезно и увидеть его, и услышать, и понять текст, который он произносит, а иногда даже дотронуться до руки (multimodal learning).
  • Может объяснить и мотивировать свои решения (interpretable AI).
  • И многое-многое другое (память, абстракции, ethics, logical reasoning, эволюция мышления и так далее).
  • ... и чтобы все это вообще автоматически делалось! (autoML).

Хорошая новость в том, что для прикладных задач нам не всегда нужно абсолютно все вышеперечисленное, но как минимум парочка пунктов бывают очень полезны. Нужна ли вам нейронка, которая работает с голосом только восточно-европейского акцента английского (это я про domain adaptation)? А если у вас автоматизированная инвестиционная система, вы точно будете доверять ей, как магической коробочке, при сделках на миллионы долларов или все-таки попросите объяснения (interpretable AI)?

Когда человек делает минутный замер ЭКГ, и я хочу поймать у него признаки мерцательной аритмии, других аномалий сердца, то нужно знать также, хорошо ли он выспался, его эмоциональное состояние, уровень стресса, биологический возраст сердца и еще парочку показателей. Хочу ли я обучать для всего этого десятки разных нейронок или мне хватит одной, которая за один раз даст мне все эти ответы?

Multitask learning

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

Рассмотрим простой пример: распознавание эмоций на лице человека. На вход — фотка лица, на выход — одна из 7 базовых эмоций (радость, грусть, злость, удивление, отвращение, страх, презрение). Сейчас нейронка должна сама как-то выучить соответствие пикселей, отвечающих за разные части лица разным эмоциям. А что если мы ей поможем, задавая напутствующие вопросы: «А поднялись ли брови?», «Открыт ли рот?». Фишка в том, что эти вопросы мы подаем именно как дополнительные задачи, которые это нейронная сеть должна научиться решать. Более того, мы можем покреативить дальше и добавить новые «подсказки», например, на основе того, что разные этнические культуры выражают свои эмоции по-разному. И это работает!

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

Как начать заниматься исследованиями и воплощать идеи в жизнь

Это все, конечно, круто, но как подготовиться, выбрать область, следить за новыми статьями, практиковать и вообще не потеряться в мире рисерча? Я подразумеваю, что вы уже на каком-то уровне занимаетесь машинным обучением или аналитикой. А если вы только думаете о смене деятельности, то вот отличная ссылка для новичков. Самое главное, как по мне, — это математическая база. Мне вообще тяжело представить занятия машинным обучением без знаний теории вероятности, алгебры, анализа, основ компьютерных наук. Но если мы говорим про research — я считаю, что без программы минимум магистратуры никак.

Я не самый большой фанат высших учебных заведений (хоть и учусь в них), но мне очень помогает понимание функционального анализа, дифференциальной геометрии, стохастических процессов и других «продвинутых» предметов для разбора публикаций с топовых конференций по машинному обучению. Даже если не хотите учиться в универе — найдите программы нормальных вузов типа Stanford, возьмите десяток курсов, посмотрите лекции или прочитайте рекомендованную литературу. После этого попробуйте сами для себя сдать какой-то выпускной экзамен (они тоже просто гуглятся). Также есть много мастер-классов выходного дня, где можно повторить материалы, которые уже подзабылись.

После того как мы разобрались с математикой, самое время начать ее воплощать в жизнь. С этим проще — надо всего лишь овладеть парой-тройкой основных инструментов для scientific computing, которые по совместимости и будут инструментами для машинного обучения. Экосистемы Tensorflow, NumPy и scikit-learn будут практически безошибочным выбором. Основной критерий тут — навык запрограммировать прототип алгоритма машинного обучения из любой статьи. Как находить такие статьи? Я уже писал об этом в своем блоге, поэтому не буду повторяться. Вкратце: следите за конкретными организациями и личностями из мира ИИ и о чем они между собой общаются.

И последнее: как же делаются рисерчи? Он самый простой, по крайней мере в контексте прикладных исследований. Вы просто берете проблему, которую вы или кто-то другой уже решает «обычным» способом, идею из статьи, которая, возможно, вообще не касается вашей задачи. Немного думаете над тем, могут ли они полюбить друг друга, и если да — соединяете их. Например, вы увидели статью по domain adaptation в компьютерном зрении и сразу подумали о том, как это поможет в вашем бизнесе по анализу видео, где датасеты есть в Full HD, а у вас старые видеокамеры висят. Или впечатлились, например, моделями, которые могут переводить с одного языка на другой, не имея параллельных текстов. Грубо говоря, модель учится переводить с английского на немецкий, имея две абсолютно разные книги. И вы вспомнили про свою ситуацию в анализе сигналов, где вам хорошо бы приводить данные с акселерометров разной природы к одному типу, а параллельно записывать с них возможности нет. Круто же!

Выводы

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

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

И еще 24 ноября на конференции Data Science UA я буду рассказывать более детально о том, что такое multitask learning, почему он работает, какие есть кейсы и state of the art решения в этой области исследований. А еще в тот же день проведу мастер-класс — будем запускать код, учить нейронки и все такое. Приходите, я буду очень рад всех видеть и пообщаться.

Похожие статьи:
Южнокорейская компания LG Electronics объявила о выходе на глобальные рынки её нового тонкого и лёгкого металлического смартфона LG Zero уже на...
Компания Google подвела очередные итоги использования различных версий операционной системы Android на мобильных устройствах. На ее сайте...
Компания Xiaomi готовит обновление популярной линейки Redmi Note, в которую может быть добавлена модель с металлическим корпусом. Аппарат...
Здравствуйте, уважаемые читатели, что вы обычно делаете, когда разбиваете дисплей?Меняли ли его сразу? Ходили ли с разбитым? Если...
До 9 березня триває реєстрація на подію DOU та Lobby X — «Арсенал талантів». Ярмарок вакансій у deftech відбудеться 14 березня...
Яндекс.Метрика