@recoilme   2 weeks ago visitor: 46   follow: 28   favorite: 0

Скучный пост про машинное обучение

Так случилось, что я работаю в крупнейшей сети нативной рекламы в России. Для понимания масштаба - у нас больше уников в месяц, чем, например во Вконтакте. И при всей моей личной ненависти к рекламе и отслеживающим алгоритмам - я именно тот парень, благодаря которому вы знаете “что сказал Галкин о разводе с Пугачевой”. Точнее один из тех парней) Прямо сейчас в нашем бизнесе пик сезона и я пишу алгоритм, который учится зарабатывать в два раза больше денег на показах рекламы, благодаря машинному обучению.

**Назовем это проблемой “Аукциона”. **

Дело в том, что за слот в котором показывается это жалкое объявление на вашем мониторе - одновременно борятся сотни тысяч рекламных компаний. И эта довольно сложная и интересная задача. Ну на самом деле не сотни тысяч, до собственно борьбы за этот слот - доходят десятки, но это всё равно много. Классические алгоритмы - проводят аукцион. Допустим есть два рекламодателя. Один готов заплатить рубль за клик по объявлению, второй копейку - за просмотр. И надо выбрать, какое именно дно дна - показать выгоднее. Классическое решение данной проблемы - это перевести вознаграждение к единному знаменателю и выбрать победителя. Допустим - пересчитаем ставку за клик (cpc) и ставку за показ(cpm) - в ecpm - это награда за тысячу показов. Эффективная цена за тысячу показов. И тут начинается целый ворох проблем. Но самая главная - дело в том, что пока накопится стат значимое количество показов, необходимое для расчета eCPM - мы будем терять деньги - так как по правилу Паретто - 20% объявлений - приносят 80% дохода. А в жизни все еще сложнее и хуевее. И не сложно посчитать, что если бы мы не показывали совсем дно дна - мы заработали бы вдвое больше.

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

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

Например, люди сидят и размечают датасет с картинками - это котик - а это собачка. Через 100000 иттераций - машина начнет сама определять где котик а где собачка. Или другой пример - загружают миллион игр в Доту - и машина учится играть в эту игру и потом копирует стратегии и тактики успешных игроков и комманд. Уже начали понимать в чем подвох?

Машин ленинг это тупой алгоритм копирующий то - чему его научили

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

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

Ребята из лабораторий Uber смогли наконец сделать ИИ, который end-to-end играет (и выигрывает) в Montezuma’s Revenge. Это одна из сложнейших игр, выпущенных Атари, стыдно сказать, но я её так и не прошел. А вот ИИ её проходит, да ещё и пробивает человеческий рекорд.

У Убера есть хороший рассказ про их подход Go Explore, но видео кажется нагляднее. https://youtu.be/L_E3w_gHBOY

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

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

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