MACHINE LEARNING ENGINEER –
КАРЬЕРА, ВЫЗОВЫ, ВОЗМОЖНОСТИ
Привет, здесь Владимир из DataWorkshop.

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

Камиль Кшик - инженер машинного обучения, выпускник курса "Практическое машинное обучение" - стал гостем 104-го эпизода подкаста "Бизнес-мысли". Камиль участвовал в первом выпуске курса, и я очень горжусь тем, насколько он продвинулся в области машинного обучения. Камиль - способный парень, который, конечно, справился бы и сам, но я очень рад, что у меня была возможность дать ему несколько советов. Это не обязательно касается машинного обучения как такового. Камиль создал для себя позицию в компании, где он работал, где не было Data Scientists, и он стал первым. Интересно, как разные встречи в нужное время с нужными людьми могут многое изменить.



В настоящее время Камиль работает в Cosmose, компании, которая в основном работает на китайском рынке, но также более широко в Азии (Япония, Малайзия) и занимается оффлайн-трафиком. Что это такое? Для сравнения, онлайн-трафик - это весь пользовательский трафик в Интернете, то есть электронные письма, текстовые сообщения, push-уведомления. Однако может быть и так, что существует поток пользователей, с которыми мы никогда никак не взаимодействовали, но хотели бы, чтобы они увидели нашу рекламу, например, люди в торговых центрах, которым мы хотели бы показать нашу рекламу. Как это работает? Когда мы гуляем по торговому центру, мы посещаем различные магазины.



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



Говоря о Cosmose, стоит упомянуть об их потоке данных. На момент нашего разговора у компании уже было более миллиарда единиц данных. Этот аппетит неуклонно растет - настолько, что ожидается, что к следующему году он превысит 2 миллиарда. Команда Камиля сильно выросла за счет необыкновенных талантов, которые присоединились к уходящим с рынка лидерам. Видно, что уже создана прочная инфраструктура.



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

Владимир:
Привет, Камиль. Представься: кто ты, чем зарабатываешь на жизнь и где живешь?
Камиль:
Меня зовут Камиль Кшик. Я работаю в сфере IT уже 8 лет. Я родом из окрестностей Кракова, а 3 года назад переехал в Варшаву в связи со сменой работы. В настоящее время я работаю инженером по машинному обучению в компании Cosmose. Это в сфере розничной торговли. В то же время, в качестве индивидуального предпринимателя, я уже 10 месяцев работаю с небольшой компанией из Штатов, которая занимается фитнес-тематикой.
Владимир:
Какую интересную книгу Ты недавно прочитал? Возможно, можешь процитировать одно ключевое предложение из нее?
Камиль:
Я помню, как в последний раз был гостем в "Бизнес мысли", и знаю, что ты всегда задаешь этот вопрос. Тогда я упомянул, что не читаю книг, кроме технических, и так получилось, что я до сих пор придерживаюсь этого мнения. Кроме того, книга, которую я собираюсь рекомендовать, будет технической, но я знаю, что многие твои читатели хотят развиваться, учиться и следовать за тобой на протяжении твоих курсов, поэтому я думаю, что эта книга будет отличным вариантом для рекомендации.




Она называется Hands-On Machine Learning with Scikit-Learn, Keras and TensorFlow, ее автор - Орельен Жерон. В конце 2019 года вышло второе издание, и это настоящий шедевр - всего 800 страниц. Сначала я боялся читать ее выборочно, рассматривая ее скорее как энциклопедию, но ее можно читать от начала до конца. Она написана мегапростым языком и содержит огромное количество информации, которую я так и не смог накопить ни на каких курсах или из интернета. Просто сборник всего.





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





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




В то время никто вокруг меня не говорил слишком много о машинном обучении - ни мои сверстники, никто на работе. Я почти ничего не читал об этом в Интернете. Для меня это была определенная ниша, золотая тема. Меня это очень увлекло, и, наверное, это была первая вещь в моей профессиональной жизни, которая увлекла меня, и я решил посвятить себя ее изучению. Сначала это были онлайн-курсы. Следующим курсом был Deep Learning Nanodegree на Udacity, но все это происходило где-то в Интернете, на английском языке, и я совершенно не знал, что происходит в Польше.


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




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




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




В мои обязанности входило прогнозирование того, сколько времени займет перевод, с возможным обнаружением аномалий, когда что-то может задержаться. Несмотря на это, компания тогда не слишком увлекалась этим, а я был еще неопытен и очень хотел заниматься машинным обучением. Когда ты проходишь все эти курсы и читаешь о каких-то пушках, AlphaGo, ты не хочешь заниматься KNN, k-means, какими-то простыми алгоритмами. Когда ты еще только в теме, у тебя возникает ощущение, что, может быть, где-то есть этот прекрасный мир, где все будет использоваться.




Однажды я поехал на хакатон Kaggle Days, который проходил в Варшаве. Там я встретил человека, который предложил мне работу, побудил меня обратиться в компанию Cosmose, где я сейчас работаю. Эта компания на самом деле уже тогда была сильно ориентирована на то, чтобы основывать свои продукты на решениях машинного обучения, искусственного интеллекта. Это было очень привлекательно для меня, и все получилось. Я сменил работу и работаю там по сей день.





Реальность также проверила, как выглядит мир машинного обучения и действительно ли это всегда rocket science . В целом я считаю, что это очень интересная профессия, и я ни о чем не жалею, я также доволен тем, где я нахожусь.
Machine Learning Engineer vs Программист
Владимир:
На что это похоже с точки зрения изменения перспективы? Ты был по обе стороны, сразу  как программист, а теперь на стороне Data Science, то есть работаешь с так называемыми R&D проектами, где у нас больше рисков, больше опасений и все чаще случается, что что-то не работает. В какой степени изменилось твое мышление, как справляешься с этими изменениями? Какой мир подходит тебе больше?
Камиль:
Да, различия кардинальны, когда речь идет о собственно программировании и программной инженерии, где мы также используем машинное обучение. Здесь гораздо больше неизвестных. В программировании, когда я работал в Scrum или в качестве разработчика Android, просто появлялись какие-то задачи, спринт заканчивался, что-то делалось, что-то не делалось. Единственной опасностью во всем этом было переоценить или недооценить задачу. Тогда спринт затягивался, и это была наша единственная проблема.
Вызовы
Владимир:
А как это в машинном обучении?
Камиль:
В машинном обучении в этих задачах было гораздо больше неизвестных. Трудно было сказать, сколько времени займет решение задачи. Будет ли модель работать или нет, правильные ли данные - масса вещей могла повлиять на то, достигнем ли мы результата, который удовлетворит нашего заказчика. В этом отношении эта работа была, конечно, намного сложнее, чем в Scrum, а также немного более стрессовой. Здесь я могу процитировать Кэсси Козырькову, которая сказала:
"Наука о данных, машинное обучение - не для перфекционистов".
Cassie Kozyrkov
Владимир:
;)
Камиль:
Я немного перфекционист по натуре и ежедневно чувствую, что мне хотелось бы, чтобы все работало идеально и чтобы все можно было оценить, и когда этого не происходит, это вызывает у меня определенный стресс. Кроме того, приходится считаться с тем, что будет гораздо больше хаоса.





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




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





Другой аспект заключается в том, что вам нужно иметь большую осведомленность, отличное знание того, как работает и функционирует бизнес. Я не рекомендую такой подход в целом, но можно работать по Scrum на основе того, что приходит задача, и мы просто делаем ее, нажимаем на кнопку in testing, in review, done, конец, двигаемся дальше. В машинном обучении создаваемые вами решения должны каким-то образом влиять на бизнес.




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





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




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





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




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




Как это происходит? В наше время у каждого есть смартфон. На этом смартфоне установлено множество приложений. Даже если сам ничего не устанавливаешь, как только покупаешь телефон, там уже что-то предустановлено. Если вы покупаете Samsung, вы можете сами убедиться, что Samsung Location Services там есть, и вы не сможете его обойти. Таким образом, информацию с наших мобильных телефонов собирают многие приложения. Наверное, ни для кого не секрет, что, например, Facebook собирает наши данные, но это делают и многие другие приложения. Затем эти данные попадают к различным поставщикам данных и могут быть приобретены.





Cosmose приобретает именно такие данные, разумеется, анонимизированные. Это не личные данные, просто журналы телефона, например, какие сети wi-fi мы видели, или какой GPS отображался где-то, или как работал гироскоп. Речь идет об общедоступных данных Android, которые вы можете прочитать на сайте, что они регистрируют. На сайте Cosmose указано, что он извлек данные из более чем 500 000 магазинов. У нас есть несколько методов выяснения состояния сигнала, по крайней мере, wi-fi в таких магазинах. Затем, покупая данные у различных поставщиков данных, мы сопоставляем эти данные с помощью машинного обучения, чтобы мы могли присвоить метку, определить местонахождение любого такого телефона, читающего в одном из этих магазинов в торговом центре. Вот так вкратце работает Cosmose AI - мы определяем местонахождение людей в магазинах.





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





Как происходит, что реклама действительно достигает этих людей? Существуют различные внешние сервисы, такие как Facebook, которые также располагают большим количеством информации о различных людях. Если мы отправляем им фрагмент данных, они могут сопоставить этот фрагмент данных со своими данными и, благодаря своим большим знаниям о пользователях, выйти на этих людей и, например, показать им рекламу на Facebook, то же самое в браузерах и так далее. Таким образом, наши клиенты могут охватить людей, которые никогда с ними не взаимодействовали. Они просто посещают некоторые магазины, и их данные попадают в общедоступную базу данных.
Владимир:
Такой классный пример - взять Galeria Krakowska (или любой другой торговый центр). Каждый магазин имеет определенное местоположение. Когда человек заходит в магазин, его "ловят" и записывают данные о его присутствии в определенных местах. Вы прогнозируете, какие магазины посетил человек?
Камиль:
Совершенно верно. Если человек мимо, тогда может быть какой-то внешний потенциал, т.е. человек, который видел магазин, но прошел мимо двери. Или человек, который вошел в магазин или совершил какое-то другое действие.
Владимир:
Я знаю, что ты не можешь много говорить, но я попробую поднять другую тему. Вы исследовали полмиллиона магазинов, и в блоге также говорится о более чем миллиарде смартфонов. Эта цифра впечатляет. С таким количеством смартфонов сколько записей, историй и т.д.? Как вы справляетесь с этим на уровне инфраструктуры, насколько это вообще сложная задача? Все ли возможно на данный момент? Вы просто нажимаете кнопку, и все работает, или вам приходится работать немного усерднее?
Камиль:
Да, я должен признать, что работа с таким объемом данных - это большой вызов. Кроме того, хочу отметить, что Cosmose изначально работала в основном в Китае, а там у нас Великая Китайская стена, и Китай хочет иметь клон всего технологического стека в центре, поэтому нам приходится иметь серверы как для Китая, так и для внешних регионов. В Cosmose в определенный момент мы достигли стадии, когда было трудно продолжать работу над созданием моделей машинного обучения, потому что в первую очередь нужно было заняться инфраструктурой. Данных было очень много, их объем рос и продолжает расти, поэтому нам пришлось привлечь большое количество инженеров для работы над всем этим.






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





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




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





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





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





Необходимо поддерживать порядок, т.е. определить один формат именования, чтобы столбец имел один и тот же тип данных, одно и то же имя в разных частях всей системы. Я также рекомендую использовать бинарный формат данных, а не текстовый, то есть заменить csv на пакеты данных, потому что они очень быстро читаются и записываются. Они хранят типы данных, столбцы, так что то, что нужно указать как int=8, не всегда нужно загружать как int=64. Такой файл занимает меньше места, а значит, и затраты меньше. Это минимальная оптимизация. Затем эти данные суммируются, и все это влияет на общее качество работы. Плюс, конечно, много мониторинга, Grafana - это традиционные вещи.
Владимир:
Стоит отметить роль data engineering-а. Это очень сильно прозвучало в твоем выступлении - вся инфраструктура данных имеет огромное значение. Создание хорошей инфраструктуры - это само по себе сложная задача, потому что вы не всегда знаете, что вам на самом деле нужно. Часто возникают гипотезы, особенно в стартапах, которые только развиваются, и все может быть по-разному. Сегодня бизнес такой, а завтра он может быть совершенно другим. Здесь довольно много проблем, но на самом деле стабилизация инфраструктуры позволяет ускорить рост. Мы говорили о миллиардах смартфонов и амбициях в отношении 2 миллиардов смартфонов и более 10 миллионов магазинов (2022 год). Видно, что аппетиты велики, поэтому эта инфраструктура также должна быть масштабируемой.
Камиль:
Это правда. Мы ставим перед собой высокие цели, и это правда, что когда я начинал работать в Cosmose, были опасения, как мы сможем все это масштабировать. Потребовались люди с большим опытом, чтобы понять, что все это совершенно не так.
Владимир:
Cosmose ассоциируется у меня прежде всего с Китаем, потому что ты начинал там. Теперь ты расширил зону деятельности, к чему мы еще вернемся. Но давай начнем с Китая. В Польше, в Европе мало знают о Китае, и это не случайно, потому что Китай работает таким образом, в плане инфраструктуры, что они с удовольствием забирают все данные, но не выдают их внешнему миру. Есть ли у тебя какие-нибудь интересные факты о сотрудничестве в Китае. Что больше всего удивляет? Как оно организовано?
Камиль:
Во-первых, Китай хочет, чтобы все данные хранились дома. Если мы хотим вести какой-либо бизнес в Китае, то наши серверы, будь то Google Cloud или AWS, должны находиться в Китае, а данные должны находиться в Китае. Кроме того, некоторые поставщики данных иногда не предоставляют прямой доступ к данным, то есть они просто загружают файл, который прилетает из-за Великой стены, а ты заходишь на какой-то удаленный компьютер и выполняешь работу на компьютере, который физически находится в Китае. Такие вещи также могут нарушить работу.
Владимир:
Мне любопытен масштаб. Эти миллиарды смартфонов в основном из Китая или по анонимности вы этого не знаете?
Камиль:
Это не только смартфоны из Китая, потому что Cosmose работает не только в Китае, мы также активно работаем в Японии и Малайзии. Данные с телефонов - это часто туристы, въезжающие, проезжающие через ту или иную территорию, так что это не только китайские данные.
Владимир:
Я имел в виду не китайцев, а скорее масштаб людей. Трудно найти информацию о миллиардах смартфонов в одной только Европе, потому что здесь максимум измеряется миллионами. Здесь живет меньше людей, а в азиатских странах население больше и по определению все примерно заметно больше.



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




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





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





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





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




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




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





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





Возвращаясь к Японии, здесь есть интересная история. Расскажи нам об этой истории.
Камиль:
В моем случае все получилось так: я интересуюсь Японией в целом. Я также изучаю японский язык, и когда я поступил в университет, на первом курсе, я прочитал на домашней странице Университета науки и технологий AGH, что существует ежегодная поездка, эта заявка на участие в программе "Vulcanus in Japan".




Это программа сотрудничества между Европейским союзом и Японией, в рамках которой каждый год от 20 до 50 инженеров отправляются учиться работать на японском языке. В рамках такой программы мы проходим 4 месяца языковой школы каждый день около 6 часов, а затем 8 месяцев стажировки в одной из компаний, которые решили принять участие в программе, и выставляем проект. У меня была возможность подать заявку на участие только с 3-го курса. С третьего раза мне это удалось. На 5-м курсе я поехал. Я получил должность в NTT, и это был целый отдел, целое здание, которое занималось машинным обучением, чем я и занимаюсь сегодня, но в то время мне это было не так интересно.





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




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

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




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





Что-то для работы с данными, что является SQL. Что касается возможности работы в облаке или использования AWS, то это очень желательно, потому что большинство данных хранится где-то на Google Drive, на S3. Что касается самого машинного обучения, когда я начинал, я был очень сосредоточен на том, чтобы в совершенстве знать, как работают алгоритмы, но это, наверное, не самое важное во всем этом, потому что если у вас есть голова на плечах, вы можете изучать алгоритмы в любое время, а работодатели, независимо от должности, всегда будут искать людей, которые могут соединять точки, комбинировать и думать, поэтому такие soft skills тоже важны.





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





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




Тот факт, что модель имеет AUC 0,9, связан ли он с тем, что компания получит от нее прибыль, или наоборот? Моя модель имеет 0,9, а у нас нет возможности ее использовать. Такие связи невероятно важно понимать.





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


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




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




Что касается курьезов, упоминаний, то, по моим наблюдениям, в последнее время наблюдается бум так называемых виртуальных youtubers. Были созданы так называемые Face Rig или 3D аватары, которые накладываются на людей, и очень многие люди сейчас транслируют, не показывая себя, а просто показывая свой аватар.




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





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





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




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




Я думаю, что мы будем сталкиваться со все большим и большим недовольством общественности, что приведет к реформам, правилам, которые защитят нас от всего этого, своего рода конфиденциальности данных. Таково мое скромное мнение.
Владимир:
Я также видел, что вместо обычных аватаров у нас теперь будет голос, и, возможно, некоторые 3D-персонажи. Интересный мир.
Камиль:
Синтезаторы голоса, которые отлично умеют выдавать себя за человека, - это уже так. Во всяком случае, у нас иногда появлялись какие-то научные работы, публикации, которые хорошо воспроизводили голос интервьюируемого. Распространение этого очень реально в будущем.
Владимир:
Спасибо, Камиль, что поговорил с нами сегодня. Я желаю тебе дальнейших успехов в области машинного обучения, продолжай расти. Думаю, ты еще многого добьешься в этой области. Спасибо. До встречи.
Камиль:
Большое спасибо и до новых встреч.
Приглашаем принять участие в авторском 4-х недельном курсе по Data Science.

Это мой авторский курс - на 20% состоит из теории - на 80% из практики.
Получаешь доступ к готовому окружению и пишешь код с первых уроков.

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

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

Присоединяйся сейчас и начни свое комфортное обучение.
Хочешь получить пробный урок по курсу - напиши нам  :)