ЛУЧШИЕ ПРАКТИКИ В МАШИННОМ ОБУЧЕНИИ.

Привет, здесь Владимир из DataWorkshop.

Я веду подкаст "Бизнес мысли" (пока только на польском языке), на котором уже более 200 000 прослушиваний.
На русском языке мы будем публиковать статьи на основании подкастов.

Я практик. На подкастах я делюсь самым полезным и интересным из мира машинного обучения. Часто приглашаю гостей - они тоже практики и связаны с машинным обучением :)


Сегодня у меня в гостях Марцин Можейко. Это очень интересный, позитивный человек. У Марцина богатый профессиональный опыт - с одной стороны, жесткие, математические знания, с другой - знание программирования, а с третьей стороны, он все еще совмещает Data Science как инженер и пытается быть на грани этих миров, которые совсем не так просто совместить.

Марцин рассказывает о том, почему он это делает и как он определяет это для себя.
В последнее время он работал в TCL - китайской компании, имеющей филиал в Варшаве. Но он ушел оттуда. Почему он ушел, что он делает сейчас и как он связан с машинным обучением - обо всем этом мы сегодня поговорим.
Владимир:
Привет, Марцин. Расскажи о себе, чем занимаешься и где живешь?
Марцин:
Привет, меня зовут Марцин Можейко. В настоящее время я живу в Варшаве и занимаюсь машинным обучением в очень широком смысле, поскольку мне повезло, что в данный момент я больше работаю в академическом мире, но я много лет работал и в академическом мире, и в бизнесе, так что можно сказать, что я был и инженером, и исследователем, но я также довольно сильно увлекся бизнесом. Большое спасибо за приглашение, и я надеюсь, что мы сможем поделиться нашим опытом по этим темам.
Владимир:
Мы просто поговорим об академическом мире, об опыте, о предложении, которое у тебя было, и о том, каким было решение. Но скажи в начале: что ты недавно прочитали интересного и почему это стоит прочитать?
Марцин:
Я бы порекомендовал "Невидимые города"  Итало Кальвино. Это очень интересная литературная вещь. Книга имеет очень интересную форму. Она состоит из 64 рассказов, которые также имеют определенную, математическую, структуру. Число 64 связано с шахматной доской, поэтому есть разные предложения для чтения этой книги. Сюжет заключается в том, что Марко Поло путешествует в Китай, там он встречается с императором Китая и рассказывает ему о городах, которые он посетил. Каждая из этих 64 историй - это рассказ об одном городе. Я бы очень хотел порекомендовать эту книгу, потому что она очень математическая. Я думаю, что здесь говорится об очень интересном пространстве между творчеством и структурой. Творчество - это странник, а структура - встреченный император, и между этими двумя концами спектра идет дискуссия. Я был в восторге, поэтому я, конечно, очень рекомендую ее и инженерам, думаю, каждый почерпнет из нее что-то очень интересное.
Опыт в Machine Learning & Data Science
Владимир:
Большое спасибо за эту рекомендацию. Теперь Марцин расскажи немного больше о своем опыте в области Data Science, Machine Learning. Какими проектами тебе довелось заниматься до сих пор, в каких отраслях ты работал? Я знаю, что у тебя большой опыт.
Марцин:
Мне повезло, что я начал свою карьеру в то время, когда в Варшаве было очень мало инженеров. В результате я работал над очень большим количеством проектов из разных источников. Я считаю это огромной удачей. Я вообще начинал в PwC - консалтинговой компании, где мы работали исключительно с финансовыми данными или данными о клиентах. В то время мы работали над проблемой оттока кадров в банке, но у нас также была возможность заниматься обнаружением аномалий на датчиках.


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


А потом в течение 2 лет я работал главным инженером в консалтинговой компании в Варшаве, компания называлась Sigmoidal. Там мы работали над очень большим количеством проектов, которые касались как компьютерного зрения, так и распознавания речи. Но в основном это был естественный язык, но были и проекты, которые обычно основывались на исследованиях, даже из таких фундаментальных вопросов, как Machine Learning.


Параллельно с этой работой в свободное время я занимался академической деятельностью. У меня была ученая степень, но я писал диплом магистра. Мы как раз работали над проектами, связанными с обнаружением колоректального рака на изображениях. Позже, также в сотрудничестве с университетом, мы работали над генеративными моделями, в которых генерировали антибактериальные белки. У меня есть еще один опыт, но я подозреваю, что мы поговорим о нем позже, поэтому оставлю это на потом :).
Владимир:
Последняя компания, в которой ты работал - китайская компания TCL, имеющая филиал в Варшаве. Чем интересным ты там занимался?
Марцин:
Я думаю, как я уже говорил ранее, что мне очень повезло в работе с разными проектами, этот проект, вероятно, был самым удачным из всех, что со мной произошли. Часто бывает так, что в бизнес-проектах больше исследований или больше бизнеса, этот проект был и плодотворным в бизнесе, и плодотворным в исследованиях, так что это была огромная удача.

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


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

С другой стороны, таких архитектур, как мне кажется, все еще относительно немного. Таким образом, мы как бы преодолевали разрыв между этими архитектурами, и поэтому смогли охватить больше устройств и решить больше задач, что принесло нам огромное удовлетворение.
Владимир:
Расскажи немного больше об интересных задачах, которые вы решали. Перечисли некоторые из проблем и какие решения были получены в результате.
Марцин:
Мне кажется, что в данный момент мы говорим о Transfer Learning, но оно проходит в две фазы. В некотором смысле первая фаза заключается в том что мы берем определенную архитектуру и эта архитектура в некотором смысле используется в наших приложениях, но есть и второй такой Transfer Learning (назовем его Meta Transfer Learning), который заключается в том, что это перенос в некотором смысле от исследований, Академии, к бизнесу в том смысле, что именно Академия в некотором смысле придумывает проблему. То есть, когда, например, Академия хочет построить определенную сеть, которую исследователи считают быстрой, то автоматически, по мере того, как бизнес перенимает у них эти алгоритмы, происходит передача убеждения в том, что эта архитектура быстрая.


На данный момент мне кажется, что это связано еще и с тем, что такое общее исследование имеет дело с общепоставленными проблемами. Таким доминирующим фактором, определяющим, является ли сеть быстрой, является количество операций, выполняемых в данной сети. Мы можем посмотреть, например, как быстро каждая свертка (если говорить о сверточных сетях) выполняет определенное количество операций сложения или умножения или операций над числами десятичных переменных. Именно это число является универсальным фактором, определяющим, будет ли сеть выполняться быстро или медленно. Те сети, которые оптимизированы в Академии в соответствии с этим стандартом для быстрого выполнения, впоследствии начинают работать в бизнесе.

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


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

Второй фактор, о котором, как мне кажется, тоже мало говорят, - это слой конкретного двигателя. Например, когда речь идет о смартфонах, мы также можем просто выполнять сети на разных устройствах, используя разные движки. Два основных из них - TF Lite, который очень популярен в настоящее время и сопровождает TensorFlow. Это как раз такой движок, который выполняет вычисления нейронной сети на многих устройствах. Но также есть, например, движок, который называется SNPE и связан с чипами Snapdragon.

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

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

Поэтому могут возникать такие нелогичные ситуации, что уменьшение сети приведет к ее замедлению.



SNPE, с другой стороны, гораздо интереснее. А именно, SNPE предпочитает количество фильтров, кратное 32, а любое другое количество фильтров плохо поддерживается. Иногда оказывается, что уменьшение этой сети или даже увеличение фильтра буквально на 1 может полностью перевернуть время вывода. Так что здесь есть очень большой простор для совершенствования, очень большой простор для оптимизации. Многие из этих вещей, я думаю, даже нуждаются в изучении. Это тот вид дополнительного пространства в оптимизации модели, который я нахожу увлекательным, и я подозреваю, что он не широко известен.

Владимир:
Расскажи, чем закончился проект? Что чувствуешь, когда твоя модель или модель, к которой ты каким-то образом прикоснулся, крутится на миллионах устройств?
Марцин:
Мы просто разрабатывали алгоритмы, чтобы оптимизировать эти модели для различных устройств. Как минимум, одну модель, насколько я знаю. К сожалению, я ушел из TCL месяц назад, но об одной я знаю на 100% точно. В итоге я получил очень способную команду, а также поисковую систему для этих архитектур, которая сейчас продолжает разрабатываться, и дюжина моделей уже стоит в очереди на развертывание. Ощущение чудовищно приятное.

У нас тоже были подобные задачи по улучшению фотографий в галерее, так что я думаю, что это, безусловно, мега приятно, когда просто кто-то сможет аккуратно улучшить свою фотографию в свое удовольствие, используя мой алгоритм. Должен признаться, что при мысли об этом у меня всегда теплеет на сердце. И здесь у меня есть как минимум миллион причин для того, чтобы что-то подобное произошло.
Владимир:
При записи этого подкаста мы используем камеру. Я просто вижу за твоей спиной множество разных книг. Есть книги по математике, инженерные книги. Это попытка понять, кто ты есть на самом деле - хочешь ли ты стать математиком или инженером? Играться с архитектурой, выбирать, что лучше оптимизировать, - это больше похоже на работу инженера. Как ты к этому относишься?
Марцин:
Это вопрос, который я, например, должен был задать себе в какой-то момент. Я заметил, что в разных местах я чувствовал, что не совсем вписываюсь. Когда я изучал математику, я начинал с такой очень инженерной стороны, хотя, конечно, сама красота математики, даже эстетическая и синтетическая, захватывала меня. С другой стороны, когда я больше двигался в этом направлении, я также чувствовал, что чего-то не хватает - не хватало технической стороны.

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

Умение называть вещи своими именами очень важно для того, чтобы найти общий язык и понять, что важно и чего нам действительно нужно достичь.

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

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

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

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

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

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

В этой практике, с другой стороны, это настолько тяжелая инженерная работа, что трудно поднять голову и посмотреть на нее, потому что мы сосредоточены на выполнении конкретных задач. Я тоже не нашел себя в этом, поэтому нашел себе такую промежуточную нишу. Мне посчастливилось работать и в бизнесе, и в академической среде, и разрабатывать и решать задачи, и это было огромным счастьем и радостью для меня - наблюдать множество плохих и хороших названий, и именно в этом эстетико-практическом процессе я теперь могу создавать свои собственные, что, безусловно, большое счастье для меня.
Владимир:
Слушая тебя, я хочу использовать эту способность называть вещи. Давай на минутку вернемся к китайской компании TCL. Как получилось, что, с одной стороны, ты сделал очень крутой проект, чувствуется  по голосу, что ты очень гордишься этим, но с другой стороны, ушел. Расскажи, что произошло?
Марцин:

Это очень интересное явление. Я ушел, потому что получил очень хорошее предложение получить докторскую степень и работать в группе вычислительной онкологии в отделении MIM в Варшаве. Должен признаться, что по личным и профессиональным причинам я не брал докторскую степень, речь шла и о материальных вещах.



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


Но когда дело доходит до ее наименования, я бы назвал это таким трудным решением, в котором, как мне кажется, возобладали такие давние внешние мотивы.
Владимир:
Чувствую, как мощно резонирует помощь. Я думаю, что также очень разумно и логично использовать потенциал, который создает технология, в правильном контексте. Здесь громкие аплодисменты.
Рассвет искусственного интеллекта в Китае
Владимир:
Но я все же продолжу тему, касающуюся китайской компании TCL. Мир Китая довольно закрыт, и, с одной стороны, ты знаешь, что там многое происходит. Ты работал в компании, где у тебя был контакт с китайцами, ты почувствовал разницу в их мышлении, в том, как они работают. Расскажи нам о своих мыслях по этому поводу, чем такой классический европейский подход отличается от китайского?
Марцин:
Возможно, я могу начать с такой вещи, которая может показаться анекдотичной. Однако большинство компаний в Польше, если и сотрудничают с такими далекими зарубежными странами, то это компании в США. Это интересно тем, что есть разница во времени - когда там рано, здесь поздно. В результате, естественно, используется классический режим работы программиста, который работает в более поздние часы. С Китаем разница в другом направлении. Соответственно, основные часы таких пересечений, которые мы проводили с нашими китайскими коллегами, приходились на утро. В результате, контактами с Китаем занималось в основном руководство компании.

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

Что касается таких моих наблюдений, полученных в результате ограниченного контакта, то, похоже, больше всего меня впечатлил вопрос масштаба. Я говорю это не с точки зрения количества производимых вещей или масштабов рынка, конечно, но также масштабов всей окружающей среды и того, как развиваются технологии. Компания, в которой я работал, - TCL - занимается производством экранов, и в какой-то момент было даже сделано заявление и поощрение со всех сторон: "Послушайте, везде, где мы можем разместить экран, было бы неплохо добавить к нему искусственный интеллект".

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

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

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

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

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

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

Мне кажется, что в ближайшие несколько лет будет чудовищно интересно наблюдать за тем, как эти различия приведут к появлению таких продуктов. Это были мои самые трогательные наблюдения.
Владимир:
Каждый из нас, даже если мы соприкасаемся с этим рынком, всегда находится в таком сегменте, потому что масштабы огромны, и попытаться как-то систематизировать то, что там происходит и к чему это ведет, наверное, не так просто, но это так полезно. Есть живой организм, который в настоящее время сильно развивается.

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

Передовой опыт в Machine Learning
Владимир:

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



Марцин:

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


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



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


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


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


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


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


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


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


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


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



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


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


Подводя итог, мне кажется, что я мало рассказывал о самих моделях, в основном о программировании. Мне кажется, это тоже хорошая практика, чтобы все было вместе (я говорю о долгосрочных проектах).

Бизнес и академический мир - можно ли работать вместе?
Владимир:
Все перечисленные тобой моменты крутые, они очень сильно резонируют, на них стоит обратить внимание, а также, вероятно, нужно несколько раз обжечься, чтобы понять, что ты имел в виду. Ты также сказал, что собираешься защищать докторскую диссертацию только ради благих целей. Поговорим немного об этом, но под другим углом. Есть академический мир и бизнес — они сильно отличаются друг от друга, у них совершенно разный подход к ML-проектам, а также совершенно другая динамика, разные цели вопреки видимости.

Видишь ли ты возможность эффективного сотрудничества между академическим миром и бизнесом? Что должно произойти, чтобы такое сотрудничество вообще состоялось, и если оно состоится, что нужно сделать, чтобы оно было эффективным? Возможно, ты знаешь какие-то конкретные примеры начала такого сотрудничества?

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


Марцин:

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


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



С одной стороны, мне кажется (я также думаю в терминах моего факультета MIM), что каждый последующий год действительно выпускаются великие программисты, которых уважают во всем мире. Они также являются людьми, которые очень быстро адаптируются в бизнесе, их очень высоко ценят, так что с этой точки зрения я думаю, что это, безусловно, здорово. С другой стороны, мне кажется, что это такая особенность такого IT-образования в первую очередь. Мне кажется, что в случае с Data Science все обстоит несколько иначе. Первая проблема, которая здесь возникает, заключается в том, что в рамках академической подготовки можно, естественно, выполнить очень ограниченное количество проектов.


Я считаю это двумя самыми большими ограничениями. Первое ограничение - это просто время. Поскольку мы говорили о лучших практиках и решениях машинного обучения, которые прослужат дольше, мы склонны думать о системах, которые прослужат много лет. Из своего опыта я знаю, что существуют системы, которые живут 7, 10 лет и так далее, и ты знаешь, что к этому трудно подготовиться на 6-месячном курсе или годичной магистратуре. Поэтому мне кажется, что мы не будем немного перескакивать через это.


Однако, насколько я знаю, здесь запущена очень крутая инициатива - со следующего года в МИМ начнется новый курс, связанный с искусственным интеллектом, и мне кажется, что очень интересное решение, которое там появится, - это необходимость стажировки. Насколько я помню, она выдается на один год. Я бы даже продлил ее до 2 лет, потому что мне кажется, что чем дольше люди работают вместе и чем дольше они находятся в контакте с вещью, которая живет гораздо дольше, чем эти 3 месяца или 6 месяцев, тем лучше, и это, конечно, учит хорошим практикам и дает вам хорошую интуицию того, что важно, а что нет.


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


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


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


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


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


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


Мне кажется, что особенно когда речь идет о третьем мире, который является самым масштабным миром, есть пространство, которое, как ни парадоксально, влияет на бизнес гораздо больше, чем другие на данный момент. Мне нравится думать, что этот нынешний мир, самый шумный мир, мне нравится сравнивать его с Формулой-1, которая является такой интересной, высокопрофессиональной гонкой, с камерами со всего мира. Все знают, что там происходит, знают водителей, все хотят получить что-то из этого автомобильного мира и так далее. Мы все слышим, что время от времени появляется какая-то новая разработка в новой машине, новый алгоритм, который был настроен на эти 3%.


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


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


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


Второй источник, который кажется мне гораздо более тонким, заключается в том, что у меня сложилось впечатление, что все знают эти треки. Я был страшно увлечен недавним исследованием, потому что когда, например, мы думаем о таком наборе, как CIFAR-10, в настоящее время мне кажется, что количество тренировок на этом CIFAR, особенно с мощным развитием neural architecture search, то есть количество моделей, которые тренировались на этом CIFAR, я подозреваю, что уже превышает количество звезд в этой части галактики. Недавно кто-то попытался провести такой простой эксперимент, в котором он просто попытался создать новые данные для этого CIFAR, которые будут похожи на существующие данные, но все равно будут новыми.


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


Вторая проблема, которая здесь возникает, - это проблема шумихи. Когда я работал в компании Sigmoidal, мы участвовали в конкурсе. Вместе с другими командами нас пригласили принять участие в конкурсе. Призом в этом конкурсе было подписание контракта на разработку технологии для этого клиента. Я бы также добавил, что это был один из самых рискованных отделов для этого клиента.


Поэтому, когда мы отправились на этот конкурс, который длился два дня, мы очень сильно сосредоточились на том, чтобы правильно оформить эти данные, очистить их, найти все потенциальные риски. Мы очень сильно сконцентрировались на этих рисках. В конце концов, мы не выиграли это соревнование, потому что победила команда, которая установила BERT на инфраструктуру клиента в течение двух дней. Так что через два дня я наконец-то смог поставить BERT. Дело в том, что эта новая технология была очень важна.


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


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


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


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


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


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


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


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


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


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


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


Такое мое видение этой среды.

Владимир:
Пример с Формулой 1 был интересен тем, что достаточно немного изменить поворот, и уже эталон может развалиться или стать еще хуже. А в бизнесе не то что поворот меняется, там река может внезапно появиться.


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

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

Будущее  Machine Learning
Владимир:
Спасибо за все эти мысли. Мы приближаемся к концу. Наконец, давай немного поиграем в футуролога или мечтателя и попробуем сделать такой прогноз о том, что может произойти через некоторое время. Известно, что это не всегда легко, но мне кажется, ты любишь думать о будущем, поэтому я думаю, что этот вопрос также будет очень уместен: какие вехи, по твоему мнению, мы преодолеем через пять или десять лет в машинном обучении и что будет достижимо тогда?
Марцин:

Это очень хороший вопрос. Я упомянул, что, как мне кажется, следующие 5 или 10 лет могут отличаться от нынешних. Мне уже кажется, что мы постепенно видим, что, например, в этом году у нас впервые было меньше заявок, чем в прошлом, а это значит, что появились первые симптомы насыщения третьего мира, самого динамичного мира. Поэтому у меня сложилось впечатление, и я также тихо надеюсь, что, возможно, приоритеты этих исследований изменятся. Мне кажется, что следующие вехи будут связаны с такими вещами, которые сейчас менее изучены.



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



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


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


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


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

Владимир:

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



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

Большое спасибо за приглашение и до встречи, пока.

Сделай свои первые шаги в Data Science, став участником закрытого клуба в DataWorkshop.

Присоединяйся сейчас и начни свое комфортное обучение.