Массовый стекинг моделей ML в production: реально или нет? |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-09-23 03:01 Довольно часто нас спрашивают, почему мы не устраиваем соревнований дата-сайентистов. Дело в том, что по опыту мы знаем: решения в них совсем не применимы к prod. Да и нанимать тех, кто окажется на ведущих местах, не всегда имеет смысл. Такие соревнования часто выигрывают с помощью так называемого китайского стекинга, когда комбинаторным способом берут все возможные алгоритмы и значения гиперпараметров, и полученные модели в несколько уровней используют сигнал друг от друга. Обычные спутники этих решений — сложность, нестабильность, трудность при отладке и поддержке, очень большая ресурсоёмкость при обучении и прогнозировании, необходимость внимательного надзора человека в каждом цикле повторного обучения моделей. Смысл делать это есть только на соревнованиях — ради десятитысячных в локальных метриках и позиций в турнирной таблице. Но мы попробовали Примерно год назад мы решили всё же попробовать применить стекинг в production. Известно, что линейные модели позволяют извлекать полезный сигнал из текстов, представленных в виде bag of words и векторизованных с помощью tf-idf, несмотря на большую размерность таких векторов. Наша система уже производила такую векторизацию, поэтому для нас было не очень трудно объединить векторы для резюме, вакансии и на их основании научить логистическую регрессию так, чтобы она прогнозировала вероятность клика кандидата с заданным резюме по заданной вакансии. Затем этот прогноз используется основными моделями в качестве дополнительного признака, так как модель считает метапризнак. Прелесть в том, что даже при ROC AUC 0,7 сигнал от таких моделей-метапризнаков является полезным. Внедрение дало около 2 тысяч откликов в сутки. А главное — мы поняли, что можно двигаться дальше. Линейная модель не учитывает нелинейных взаимодействий между признаками. Например, не может учесть, что если в резюме есть «C», а в вакансии «системный программист», то вероятность отклика становится очень большой. К тому же у вакансии и резюме кроме текста есть много числовых и категориальных полей, а в резюме текст разделяется на множество отдельных блоков. Поэтому мы решили добавить для линейных моделей квадратичное расширение признаков и перебрать все возможные сочетания tf-idf-векторов из полей и блоков. Мы попробовали метапризнаки, которые прогнозируют вероятность отклика при различных условиях:
Затем с помощью feature selection отобрали те несколько десятков метапризнаков, которые давали максимальный эффект, провели A/B-тесты и выпустили в production. В результате мы получили более 23 тысяч новых откликов в сутки. Некоторые из признаков вошли в топ признаков по силе. Например, в рекомендательной системе, топ признаков —
в модели на XGBoost, фильтрующей подходящие резюме:
в ранжирующей модели на XGBoost:
Хороший результат показывает, что из этого направления можно извлечь ещё определённое количество откликов и приглашений в сутки при тех же затратах на маркетинг. Например, известно, что при большом количестве признаков у логистической регрессии вырастает вероятность переобучения. Пусть мы используем для текстов резюме и вакансии tf-idf vectorizer со словарём из 10 тысяч слов и словосочетаний. Тогда в случае с квадратичным расширением в нашей логистической регрессии будет 2*10 000+10 000? весов. Понятно, что при такой разреженности на каждый отдельный вес могут существенно влиять даже отдельные случаи «в резюме было редкое слово такое-то — в вакансии такое-то — пользователь кликнул». Поэтому сейчас мы пробуем сделать метапризнаки на логистической регрессии, в которых коэффициенты квадратичного расширения сжимаются с помощью факторизационных машин. Наши 10 000? весов представляются в виде матрицы латентных векторов размерностью, к примеру, 10 000x150 (где размерность латентного вектора 150 мы выбрали сами). При этом отдельные случаи при сжатии перестают играть большую роль, и модель начинает лучше учитывать более общие закономерности, а не запоминать конкретные случаи. Также мы используем метапризнаки на нейросетях DSSM, о которых уже писали, и на ALS, о которых тоже писали, но упрощённо. Всего внедрение метапризнаков к настоящему моменту дало нам (и нашим клиентам) более 44 тысяч дополнительных откликов (лидов) на вакансии в сутки. В результате упрощённая схема стекинга моделей в рекомендациях вакансий по резюме теперь стала такой: Таким образом, стекинг в production имеет смысл. Но это не тот автоматический, комбинаторный стекинг. Мы заботимся о том, чтобы модели, на основании которых создаются метапризнаки, оставались простыми и в максимальной степени использовали существующие данные и рассчитанные статические признаки. Только так они могут оставаться в production, не превращаясь постепенно в неподдерживаемый чёрный ящик, и остаются в состоянии, когда их можно повторно обучать и улучшать. Источник: m.vk.com Комментарии: |
|