Сообщество Open Data Science (ODS) уже известно на Хабре по открытому курсу машинного обучения (OpenML). Сегодня мы поговорим с его создателем об истории ODS, людях и наиболее популярных методах машинного обучения (по версии Кaggle и проектам индустрии). За интересными фактами и технической экспертизой — прошу под кат.
Алексей Натекин natekin . Основатель ряда проектов, связанных с машинным обучением и анализом данных. Диктатор и координатор Open Data Science — крупнейшего в Восточной Европе онлайн-сообщества Data Scientist-ов.
— Как появилась идея создания сообщества? С чего все началось? Почему выбор пал на Slack и кто стоял у истоков?
Алексей Натекин: Дело было в 2014 году, когда подходил к концу третий набор на нашу бесплатную образовательную программу в DM Labs (DM: Data Mining). Мы уже прошли материал и хотели перейти к совместной работе над проектами. Это была первая итерация веселых задач — анализ порнотегов, определение депрессии в соцсетях, игровые данные с Доты. Сразу была концепция, что проекты надо делать открытыми и привлекать к движухе не только участников курсов, но и более шарящих ребят.
Поэкспериментировав с колхозными чатиками во ВКонтакте и самопальным Вордпрессом, мы выяснили, что все это для нормальной работы не годится. К счастью, уже в начале 2015 года стал потихоньку набирать известность Slack, и мы воспользовались им в качестве площадки для проектов и общения. Он оказался очень удобным, и мы почти сразу на нем же и остановились.
В тот момент мы много не думали о том, что это все надо обернуть в какую-то красивую идеологию, и просто назвали это дело Open Data Science. Эта фраза встречалась только в одной конференции (так и называющейся Open Data Science Conference), а связка из открытой науки и совместного просвещения в DS (Data Science) — и других научить, и самому что-то узнать — была хорошим базовым вариантом, чего мы хотели. Все-таки Open Data и Open Science уже были, оставалось только самим придумать и реализовать недостающее звено.
Мы стартовали как проектный чатик, в котором быстро возникло много экспертных и технологических каналов, также связанных с DS дискуссий. Можно сказать, что фокус больше сместился в локальный Stack Overflow на русском. Проекты жили своей жизнью, а активность перешла в общие дискуссии.
К счастью, мы быстро собрали большую массу экспертизы по основным, связанным с DS направлениям и технологиям, и в ODS сформировался первый костяк людей. В любой момент можно было спросить что-то по интересующему тебя направлению и получить дельный совет от разбирающегося в этом человека.
На тот момент профессиональные сообщества по DS в том виде, в котором они есть сейчас, если и были, то представляли собой либо аудиторию каких-то регулярных митапов по одному направлению, либо оказывались закрытыми и сильно привязанными к конкретному месту (например, студенты ВУЗов).
Мы сразу были за то, чтобы объединять и объединяться, поэтому начали интегрироваться с митапами и разными группами: Moscow Independent DS Meetup, ML-тренировки (начавшиеся до ODS после SNA-хакатона в Питере), митапы по R, Big Data и потом Deephack, Deep Learning Meetup, DS Meetup из Mail.ru и многие другие.
Занятный факт: на одной из зимних посиделок мы узнали, что на этом митапе кончилась плата, и, чтобы его не прибрали к рукам очередные Big Data-спамеры, мы резко подорвались оплатить потерянный Mail.ru аккаунт MDSM — оплата все еще капает с моей карточки :)
Так исторически сложилось, что самые активные ребята, с которыми мы совместно строили ODS, также являлись организаторами. Поэтому мы не только помогали друг другу со спикерами, пиаром и оргвопросами, но и со своей стороны быстро начали придумывать и проводить новые мероприятия и форматы. Среди них и DataFest, как самая крупная в Восточной Европе и СНГ DS конференция, и DS Case Club, как бесценная по контенту серия мероприятий про реальную пользу DS в бизнесе, и data-завтраки со своим необычным, но так полюбившимся людям форматом.
И, конечно, мы скооперировались с компаниями: например, с Яндексом сделали серию мероприятий Data & Science, а со Сбербанком — Sberbank Data Science Journey. По последним подсчетам, у нас накопилось более 20 регулярных мероприятий по всему СНГ.
Экспансия не заставила себя долго ждать — мы делились наработками и стартовали наши мероприятия и развитие DS в других городах и странах: сперва Москва с Питером, потом Екатеринбург, Новосибирск, Нижний Новгород и Калининград, затем Украина с Киевом, Львовом и Одессой, Белоруссия с Минском и еще все новые и новые города по СНГ.
Сейчас в админо-организаторской команде 35 человек из 4-х стран. Есть активные участники, собирающиеся на встречи в США, Германии, Норвегии и Израиле, но мы еще работаем над глобализацией. Так у нас в Slack 7,5 тысяч человек из 20-ти часовых поясов, более 3-х тысяч из которых заходят хотя бы раз в неделю. Так что глобальный потенциал есть.
Есть ли у нас аналоги и конкуренты? Было бы очень круто, если бы в том виде, в котором мы выросли, в мире был хоть один аналог — мы бы с ним скооперировались. К сожалению, в США, которые считаются лидером в DS/ML, ничего аналогичного нам по духу нет и вряд ли появится.
Митапы захламлены платным маркетинговым мусором, локальные сообщества очень жестко привязаны к университетам и компаниям (отдельная тусовка в Гугле, отдельная — в Амазоне, отдельная — в Фейсбуке и так далее). А на Machine Learning Meetup найти тех, кто занимается собственно машинным обучением, сложно — на 100 человек, как правило, и 10 не найдется: сплошь интересующиеся, зеваки, евангелисты и пиарщики. Зато на профильных конференциях действительно мировой уровень, и случайных людей почти нет.
AI Researchers slack, созданный сразу после прошлогодней конференции NIPS, который собрал за 9 месяцев 1000 человек и где в первую неделю видели Ian Goodfellow, по сути, мертв: в нем 24 тысячи сообщений. У нас в неделю пишется под 30 тысяч сообщений, а суммарно их — почти 1,5 млн. Есть KDnuggets, как эдакая DS блог-платформа. Можно сказать, что самое крупное общающееся DS сообщество обитает на Kaggle (не удивлюсь, если у нас сообщений больше, чем у них). Но аналога, совмещающего и площадку, и мероприятия, и прочие инициативы вроде обучения мы пока не видели.
— Фраза «Стакать xgboost-ы» превратилось в мем, так что же такое xgboost и зачем его нужно стакать? Алексей Натекин: Xgboost — это конкретная реализация алгоритма градиентного бустинга. Сам алгоритм используется повсеместно как крайне мощная модель общего назначения — и в production, включая поисковики Яндекса, Mail.ru, Microsoft и Yahoo, и на соревновательных площадках — как Kaggle. Xgboost — это, во-первых, очень эффективно написанный код, позволяющий учить модели быстрее и продуктивнее. А во-вторых, в xgboost добавлены дополнительные плюшки и регуляризация, чтобы сами деревья были устойчивее.
Сам xgboost достаточно хорош, чтобы использовать его без каких-либо махинаций. На Kaggle, да и вне его, это стало no-brainer-решением, которое достают с полки и знают, что оно, как правило, дает очень хороший результат. Вот так вот: бесплатного ланча, конечно, не существует (прим., это отсылка к No Free Lunch Theorem), но xgboost попробовать в очередной задаче стоит.
Однако на Kaggle основная задача — получить наилучший результат в рейтинговой таблице. Неоднократно этот наилучший результат сводился к десяткам людей, борющихся за третий, четвертый и пятый знаки после запятой, пытаясь выбить хоть немного дополнительной точности. Давно известен способ с точностью выскребать такие крохи — с помощью алгоритмов стакинга и многоуровневого ансамблирования.
Если очень аккуратно и грамотно обучить вместо одной модели пару десятков, а над их предсказаниями — еще пару десятков, таким образом удается соскрести еще немного точности. Цена этого — куда большие вычислительные затраты, которые никто в здравом уме не будет повторять на практике, но на Kaggle никто не обещал здравый ум и реалистичность задач.
Таким образом, зачастую решение победителя — человека, занявшего первое место, представляло собой несколько слоев застаканных xgboost-ов. Xgboost — потому что мощно и быстро. Застаканных — потому что надо занять первое место.
Фраза «стакать xgboost-ы» — это, по сути, насмешка над бессмысленной и беспощадной сутью Kaggle-конкурсов, многие из которых можно решить грубой силой и жутким, с точки зрения практической пользы, решением. Но, тем не менее, выигрышным на Kaggle.
— Говорят, что xgboost показывает отличные результаты в практических приложениях. Можешь ли ты привести пример, где xgboost действительно на порядок сильнее конкурентов? И есть ли какая-то рационализация, почему это происходит на таких данных?
Алексей Натекин: Смотря что считать конкурентом. Вообще, градиентный бустинг лежит под капотом такого широкого числа приложений, что сложно собрать их все: это и антифрод/антиспам, и всевозможные прогнозы в финансовых компаниях, и поисковые системы крупнейших компаний, как я писал выше. Ну и Kaggle задачи, несмотря на всю свою игрушечность в постановках, в большинстве конкурсов, где данные не сильно разреженные и не являются картинками, тоже, как правило, выигрываются градиентным бустингом + каким-то ансамблированием поверх, особенно когда нужно выжать дополнительную точность.
Сказать, что бустинг на порядок сильнее конкурентов, нельзя, так как ни в одном из бизнес-приложений никто не расскажет, какие результаты были у тех или иных моделей на реальных данных. Да и сам результат бустинга часто является не то чтобы на голову выше ближайших конкурентов: случайного леса, нейронок или SVM.
Просто бустинг лучше всего проработан с точки зрения реализаций и является очень гибким семейством методов, ввиду чего подстроить бустинг под конкретную задачу — несложное дело. А про рационализацию — почему именно бустинг работает и в чем фишка — могу порекомендовать пару своих (1, 2) туториалов и один — Александра Дьяконова.
— В анонсе твоего доклада на Smartdataconf отмечается, что люди ожидают от xgboost такого же ускорения на GPU, как и нейросети. Можешь ли интуитивно рассказать, за счет чего нейросети получают такой прирост производительности?
Алексей Натекин: Как размышляет рядовой дата сатанист-стахановец интеллектуального труда? Вот есть нейросетки, для них сделали классное железо и топовые видеокарты с тысячами специально оптимизированных ядер. А Nvidia сама говорит: наше железо продвинет и ускорит AI, что бы это ни значило. Отсюда нереалистичные ожидания того, что GPU можно использовать и в более широком круге задач.
В нейросетях основная часть операций, выполняемых как при обучении, так и при предсказании — матричные умножения. Сейчас честнее сказать, что это работа с тензорами, но суть та же: нужно очень много рутинных матричных операций.
GPU для этого идеально подходят, так как тут больше вычислительных ядер при меньшей стоимости и энергопотреблении. А на отсутствие расширенного набора функций можно смело не обращать внимание.
Но из-за этого на GPU становится сложно сортировать массивы и делать рекурсивные вычисления, зато рассчитать свертку и перемножить матрицу — очень дешево. Отсюда встает насущный вопрос: а что будет, если мы попробуем на GPU начать учить деревья решений, так повсеместно используемые на практике? И насколько осмыслена эта затея by design, что называется?
— И почему это не происходит в случае с xgboost и другими алгоритмами машинного обучения и что нужно сделать, чтобы использовать GPU для обучения?
Алексей Натекин: GPU отлично подходит для тех алгоритмов, которые адаптированы под GPU. Вы же не будете, как я уже писал, строить на GPU индексы? Для более широкого применения GPU в остальных задачах машинного обучения, кроме нейросетей, надо придумать эффективные реализации алгоритмов под GPU. Либо, что более вероятно, вдохновившись уже имеющимися версиями CPU-алгоритмов, создать на их основе новые алгоритмы, подходящие для эффективного вычисления на GPU. Либо дождаться более широкого релиза Intel phi, про который ходят разные легенды. Но это уже не GPU и совсем другая история.
— И в завершение, вопрос по железу: на какие параметры стоить обратить внимание при покупке GPU-карт для машинного обучения? Что сейчас используют люди из top Kaggle?
Алексей Натекин: По факту, покупают в основном 1080Ti, так как у них наиболее оптимальное соотношение цены, скорости и 11 гигабайт памяти. Из Titan X и 1080Ti выбирают последний. Датасеты все равно давно в память не помещаются, поэтому чем больше памяти, тем больше всего можно запихнуть в обработку. Но вообще всем интересно, что будет в следующем поколении карточек: как только они появятся, их надо будет покупать очень быстро.
Если вы так же болеете машинным обучением и анализом данных, как и мы, вам могут показаться интересными вот эти доклады нашей грядущей конференции SmartData 2017, которая пройдет в Питере 21 октября:
- Карты, бустинг, 2 стула (Алексей Натёкин, Open Data Science)
- CatBoost — следующее поколение градиентного бустинга (Анна Вероника Дорогуш, Яндекс)
- Рекомендательные системы: от матричных разложений к глубинному обучению в поточном режиме (Михаил Камалов, Epam Systems)
- Deep Learning: Распознавание сцен и достопримечательностей на изображениях (Андрей Бояров, Mail.Ru Group)
- Neurona: зачем мы научили нейросеть писать стихи в стиле Курта Кобейна? (Иван Ямщиков, Институт Макса Планка, Лейпциг, Германия / Creaited Labs)
Автор: MaxJoint