Сергей Иванов

Сергей Иванов

Неделя
Jun 15, 2020 → Jun 21, 2020
Темы
PhD
Графы
Академия
Образование
Кулстори

Архив недели @SergeyI49013776

Понедельник


Привет, меня зовут Сергей Иванов. Research Scientist в Criteo, Ph.D. в ML, и любитель графов. Меня можно найти @SergeyI49013776 в твиттере, в телеге ttttt.me/graphML, на медиуме medium.com/@sergei.ivanov….

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

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

Начну с моей собственной истории. Я родился и вырос в городе Саратове, что на Волге. Как-то так получилось, что математика была единственным предметом в школе, что я легко понимал и любил. Плюс еще олимпиады по математике... 1/

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

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

откуда я мог это знать в 17 лет, находясь в Саратове? В общем мех-мат так мех-мат. Теперь надо поступить. Поступал я в 2007 году, тогда бакалавриат был распространен только для педагогических специальностей, тогда как все учились пять лет, на специалиста...

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

ЕГЭ тогда не было, надо было лично приехать во все университеты и сдать отдельные экзамены. Перечить я не стал, денег у меня своих не было, поступил в Саратовский Государственный Университет (СГУ). На мех-мат.

Надо сказать, что долгое время я считал, что мех-мат СГУ не сильно отличается от мех-мата МГУ. Те же предметы, в том же объёме. 2 года матана, год функана, год ТФКП, год диффгема, год сопромата и т.д. Это так. Но чего я не учел...

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

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

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

в 2006 СГУ занял первое место в мире по главной олимпиаде ACM. Но во время обучения я не могу сказать, что я увлекался программированием и скорее считал себя чистым математиком. Как результат у меня были хорошие оценки по всем предметам, но...

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

Год был 2012 и как раз начали появляться магистратуры. Я решил, что надо сначала сделать перевалочный пункт, где-то в Москве или в Питере, подучиться в маге, и потом подать на PhD в США. Итак, мне 21, я закончил с отличием мех-мат СГУ и поступаю в магистратуру в ИТМО, в Питере.

Мотивация была такая. Есть такой чувак Russ Tedrake (MIT) groups.csail.mit.edu/locomotion/rus… который занимается роботами. Сейчас это называется Reinforcement Learning, в те времена называлось Control Theory. В общем я влюбился в то, что он делает и...

решил во что бы то ни стало поступить на PhD в MIT. Наивности было запредельно. Но глядя назад, это даже помогло: если бы я сразу знал какой объем работы надо переделать, чтобы поступить на PhD в Америке, то наверное так бы и сидел в Саратове.

Возвращаясь, я учился по специальности “механика”, то есть чего-то про управление понимал. В ИТМО была кафедра по робототехнике, и я решил, что быстренько подучусь там, и через два года переду в США. Помимо ИТМО, я еще поступил в вышку, на ФКН.

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

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

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

Видно меня настолько достал Саратов, что я уже не особо интересовался как я буду жить в Питере. Стипендию платили примерно 1500руб, на общагу уходило половина, еще были накопления в размере 100К, на которые я должен был прожить два года, до поступления на PhD в Америку.

Через какое-то время я понял, что ИТМО на далеко ушло от СГУ в плане преподавателей и обучения.

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

В общем я понял, что далеко я не уеду с таким, поэтому я забил на все пары и начал из дома ботать программирование и английский. Тогда как раз начали появляться первые онлайн курсы MOOC. Как сейчас помню первый мук был Circuits and Electronics на MitX (edx.org/xseries/mitx-c…).

Самый крутой курс был по алгоритмам от Tim Roughgarden (youtu.be/yRM3sc57q0c) на курсере. Манера обьяснять материал и качество английского – фантастика. До сих пор смотрю перед сном.

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

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

Как оказалось позже денег было много, доллар по 30, выбирали между MIT и Stanford. Стэнфорд заломил еще больше денег и в итоге выбрали MIT.

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

Сколтех как оказался и стал реализацией моей мечты. Из-за тесного сотрудничества можно было поучаствовать в конкурсе и поехать в MIT на один семестр. Я брал graduate курсы по network science, статистике и бизнес предметы от Sloan school of management.

Надо сказать, что побывать в MIT мне в итоге получилось два раза, сначала нас всех студентов туда послали, пройти месяц так называемого innovation period. Потом, уже непосредственно на учебу, на семестр. Впечатления от MIT оказались двоякие.

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

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

Перед тем как поехать в MIT, я также поделал рисерч два месяца в Hong Kong University of Science and Technology. Вот Гонконг мне понравился по атмосфере больше, люди намного больше готовы с тобой общаться, ходить в походы и так далее.

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

Как итог к окончанию магистратуры у меня было две полноценные статьи, одна на SIGIR, другая на IEEE DSAA. Когда Дворкович вручал награду за лучший диплом, спросил, что буду делать дальше, я честно ответил, что поеду на PhD в University of Toronto.

Он смутился и перешел к другим более патриотичным студентам 😊 Но в University of Toronto я так и не поехал, а что сделал, расскажу в следующем посте.

Вторник


Заканчивая эту ярмарку самолюбования, расскажу как я поступал на PhD и что в итоге из этого вышло. Пока я учился в маге в Сколтехе, я все время готовился к поступлению на PhD в Америку.

Официальная процедура такая, в декабре во все американские и канадские вузы дедлайн на подачу заявки на следующей год. В заявку входит CV, Cover Letter, TOEFL, GRE и 3 recommendation letters. Еще каждая заявка стоит примерно 100-150 баксов.

Я изначально думал подавать штук в 20 школ, но потом посчитав во сколько мне все это выйдет, решил сократить до минимума. У меня до сих остался гугл док (docs.google.com/document/d/1Ud…), как я ранжировал разные школы. Подавался в итоге в 7 универов, два в Канаде, 5 в США.

Toefl у меня был 112, GRE 75 и 95 квартиль по английскому и математике. Рекомендации мне делал мой научрук P. Karras, Лемпицкий, который вел у меня курсы в сколтехе, и еще один профессор из MIT, у которого я тоже брал курс.

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

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

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

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

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

Но я принял офер, отослал туда оригинал своего диплома, и готовился к переезду. Оставалось последнее купить билеты. Баланса на счету хватало ровно, чтобы купить самый дешевый билет Москва-Торонто, через НЙ.

Уже на этапе ввода своих паспортных данных, было указание, что я должен проверить, что у меня необходимая виза для стыковочных аэропортов, т.е. в НЙ. Оказалось, что в Америке нельзя делать стыковку без визы, а у меня она только закончилась. На следующий билет, через Ирландию…

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

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

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

4 years later я успешно защитил PhD в Сколтехе, перевелся в парижский офис Критео, и продолжаю заниматься графами. И я расскажу про эти вещи поподробнее в следующие дни.

Who publishes the most at #ICML 2020? And what is the breakdown by countries? And how do organizations collaborate with each other? All of this in my new analysis of @icmlconf 2020. medium.com/criteo-labs/ic…
Мое альтер эго сегодня опубликовало блог пост про научные статьи на топовой конфе ICML. Из интересного в России Яндекс опубликовал 6 статей 💪Сколтех - 3, Физтех - 3 и еще есть по мелочи другие вузы. twitter.com/SergeyI4901377…

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

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

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

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

Например, транзисторы и c++ появился в Bell Labs, индустриальной компании, которая впрочем фокусировалась на рисерче и науке. Сейчас, если посмотреть на топовую организацию, которая публикует больше всего работ, это будет гугл. Фейсбук с дипмайндом будут недалеко.

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

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

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

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

Градации в компаниях у Research Scientist практически нет (есть левелы, но по сути все делают одно, пишут статьи). Градация в университете есть и она значима: graduate student, postdoc, professor.

Профессор обычно имеет свою градацию типа assistant professor, associate professor, full professor. Хуже условий для PhD есть только условия для постдока.

Зарплата не сильно отличается от PhD студента, при этом ты уже не студент (и лишаешься всех соответствующих благ) и тебе 30, а твои сверстники уже 6й левел в фейсбуке получают и думают, где дом покупать на юге Франции. И для каждой градации в универе свое отношение к рисерчу.

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

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

Поэтому перейти из одной компании в другую для Research Scientist гораздо сложнее, чем для Software Engineer: компаний, которому нужен твой узкоспециализированный рисерч, не так много.

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

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

Вообще, чтобы стать Research Scientist в гугле надо примерно иметь хирш в районе 10 и в районе 300 цитирований суммарно, мне так рекрутеры говорили. Но можно и найти шорткаты, типа, чтобы тебя кто-то важный порекомендовал.

В дипмайнд такого критерия нет, но там процесс интервью состоит из 2 тестов на статистику+мл+CS + 2 manager interview + 5 onsite interviews. Такое пройти не просто и наверное если у тебя нет хирша 10, то тяжело будет пройти его.

Впрочем, чтобы заниматься рисерчем нынче необязательно быть Research Scientist, есть еще Research Engineer aka ML engineer, Software Engineer, и конечно дата сайентисты, но у них немного другие роли.

О том стоит ли идти на PhD, какие полезные советы, а какие нет, и что делать после, расскажу в следующем посту.

Среда


Сегодня расскажу про PhD. Как оно проходило у меня и нужно ли оно. Часть 1. В разных университетах, а скорее странах, PhD выглядит по-разному. В Франции например PhD делается 3 года всего. При этом очень распространенно, когда PhD работает половину времени в компании.

У нас в критео есть несколько таких студентов, у фейсбука есть, и много где еще. Называется CIFRE. В США и Канаде время PhD может варьироваться от студента к студенту. В среднем то, что я слышал, это 6 лет, но некоторые делают и по 10.

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

Если ты проучился 4 года, а у тебя статей еще нет, то ты получишь свой диплом об окончании аспирантуры, но PhD не получишь. В сколтехе по сравнению с другими вузами в России есть несколько преимуществ.

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

Но есть курсы по твоей специализации, которые ты сам выбираешь. При чем эти курсы не привязаны к твоей конкретной специализации, и например можно взять какой-то курс у биологов или физиков. Посмотреть каталог курсов в Сколтехе можно здесь: skoltech.ru/en/education/c… Главное…

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

…Computer Science. На самой защите присутствуют 5 членов комиссии, три из Сколтеха и два извне России.

Ко мне приезжал Майкл Бронштейн (imperial.ac.uk/people/m.brons…) и Метью Блашко (homes.esat.kuleuven.be/~mblaschk/) Защита открыта для всех желающих и ее записывают, мою можно посмотреть здесь skoltech.ru/en/education/p…

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

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

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

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

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

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

Часть 2. Теперь про мотивацию идти делать PhD. Я думаю, что для большинства студентов основная мотивация, это то, что они не знают куда еще идти после универа.

Они учились хорошо в школе, потом в университете, потом в магистратуре, и почему бы не продолжить это на PhD. Проблема в том, что PhD это не то обучение, что до этого, потому что курсы нужны, но не важны. Важно научиться публиковать статьи, а это какой-то индивидуальный процесс.
notion image

notion image

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

notion image

notion image

Вот презентация, которую делает один профессор в Гонконгском университете для фрешменов github.com/nd7141/present…

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

На текущий ICML есть статьи, которые были написаны в 2017. Я знаю людей, которые 10 лет не могут добиться акцепта статьи.

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

В интернете есть куча советов про PhD. Советую недавний пост от Рудера, который в конце собирает ссылки на другие гайды для PhD. ruder.io/10-tips-for-re…

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

Как мне кажется PhD сейчас нужно только, если ты хочешь быть Research Scientist в компании или стать профессором. В гугл/фб действительно не берут без PhD на RS (но берут на RE).

notion image

Профессором тоже невозможно стать без PhD. Все остальные плюшки PhD (eg. тусовка, хорошие зарплаты, уважение и т.д.) сомнительны и находятся другие, более простые способы их получить.

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

Четверг


I have a feeling that all recent theoretical developments of GNN are so far from being relevant in practice. Take, for example, graph isomorphism problem. 1/n
Захотелось покритиковать, на ночь глядя, наше графовое комюнити. Идея в том, что люди, чтобы опубликоваться делают теорию, которая не имеет никакого отношения к практике. Как результат практические результаты стоят на месте. twitter.com/SergeyI4901377…

Сегодня поговорим про мою науку. Часть 1. Я занимаюсь графами. Графы появились благодаря Эйлеру, когда он изучал кенигсбергские мосты (en.wikipedia.org/wiki/Seven_Bri…). Параллельно Галуа разрабатывал теорию групп. Вообще про Галуа стоит отдельно почитать.

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

Сейчас теория групп фактически единственный инструмент для изучения математики графов. Неформально теория групп занимается классификацией объектов. Например, у тебя есть граф на 10 вершинах, какое вообще количество графов может быть?

Понятно, что 2^M, где M – количество пар вершин, т.е. M = (n 2) = 45. То есть всего 2^45=310^13, много. Но при этом многие графы являются одинаковыми по своей сущности, т.е. изоморфными. Таких графов будет намного меньше, а именно 274668 = 210^5 (oeis.org/A000088).

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

Это очень популярно до сих пор, математики выпускают примерно по 100 работ каждый месяц по теории графов. Дальше, начиная с работ Эрдоса и Рений началась новая ветка изучения графов, а именно network science.

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

Например, в Erdos-Renyi модели, всего два параметра, количество узлов и количество ребер. Дальше задается случайный процесс (поведение, процедура), который генерит тебе граф с таким количество вершин и ребер.

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

 
Вот эта наука активно развивалась с 90х до 2010х, и мне кажется сейчас она уже непопулярна, потому что не особо нужна на практике. И дальше есть третий виток в науке о графах, связанных с МЛ. Я называю его Graph Machine Learning (GML).

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

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

Или нам нужно чат боту выдавать рекомендации на основе сложных фактологических запросов. В общем много уже поставили вопросов, еще больше предложат в ближайшие 10 лет. У меня bias, но я думаю GML займет свое почетное место среди Computer Vision и NLP.

Это уже видно по курсам, которые включают в себя топики GML. Например в текущем курса Лекуна есть отдельная секция про это: atcold.github.io/pytorch-Deep-L…. В общем если вы собираетесь думаете, чем заниматься на PhD, это прямо очень перспективная область с кучей открытых вопросов.

Часть 2. Теперь про меня. Мои научные работы можно посмотреть здесь scholar.google.com/citations?user… В целом мне интересно все про графы, их применения к реальным задачам, теоретические аспекты, комбинаторные задачки, RL на графах и т.д. Начинал я с комбинаторной задачки influence…

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

Дальше я двинул в сторону представления графов, то есть representation learning on graphs aka graph embeddings.

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

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

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

Графов комюнити большое, но обозримое, я бы сказал, что есть 10-20 групп, кто активно работает над графами, и еще многие once in a while. Как мне кажется вкатиться в GNN достаточно просто, особенно если знаешь CNN. Это по сути одна и та же хрень.

Для начала можно почитать обзоры или тезисы. У меня на канале есть и про то (ttttt.me/graphML/58), и про другое (ttttt.me/graphML/147). Ну а если есть желание начать писать статьи в этой области, то дайте мне знать, может быть я смогу помочь.

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

Пятница


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

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

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

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

Про графы знаний сейчас кстати много статей и можете почитать блог посты Михаила Галкина (medium.com/@mgalkin), чтобы разобраться, что уже с ними делают в NLP. Так вот непонятно насколько тут нужны графы вообще. То есть у нас есть два подхода к рекомендациям.

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

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

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

Sarlin et al. "SuperGlue: Learning Feature Matching with Graph Neural Networks" @ CVPR2020 Feature matching should be bipartite. In this work, it's formulated as an optimal transport problem with GraphNN. Current leader of vision.uvic.ca/image-matching… arxiv.org/abs/1911.11763 https://t.co/nNMtrjobEV
Первая это scene graph generation (cs.stanford.edu/~danfei/scene-…) То есть фактически это распознавание образов и их отношения на картинке. Второе это сопоставление одних объектов на разных картинках (twitter.com/DeepLearning3D…).

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

Соц-сеть анализирует тренируется на графе, чтобы выдавать тебе отранжированные рекомендации, с кем тем нужно зафоловиться.

Или говорят в квантовой химии графы очень хорошо заходят, где задача предсказывать число для каждой молекулы, которая соответствует какому-то свойству, которое тяжело получить в лабораторных условиях (arxiv.org/abs/1704.01212).

Excited to present “Learning to Simulate Complex Physics with Graph Networks”. arxiv.org/abs/2002.09405 Our model can generate realistic simulations, and generalizes to much larger systems and longer trajectories than its training. w/ @spectralhippo @RexYing0923 @jure https://t.co/fEimZ0LBOJ
Наконец самое по-моему впечатляющее это предсказание динамики физики реальных обьектов (twitter.com/PeterWBattagli…).

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

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

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

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

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

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

В каком то смысле это более общий трансформер, где линки у нас находятся не между всеми обьектами, а только между релевантными (towardsdatascience.com/transformers-a…). Так что наверное графы скорее нужны, чем нет, и МЛ комюнити все больше и больше про это узнает.

Поэтому статей по графам сейчас на конференциях очень большое, от 5% до 30% на топовых конференциях ( ttttt.me/graphML/55 и ttttt.me/graphML/49). И кажется это будет продолжать только расти, чему нельзя не радоваться.

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

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

...чтобы было интересно пока непонятно. Одно из направлений, которое в последнее время достаточно активно развивается это reinforcement learning для комбинаторной оптимизации. Есть NP сложные задачи, например traveling salesman problem или min vertex cover или какие еще.

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

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

Мы про это написали обзор, можете почитать (arxiv.org/abs/2003.03600). Вторая область, которая меня увлекает это доказательство всяких математических теорем с помощью умного перебора.

Например, есть такая задачка на графах Kelly conjecture (en.wikipedia.org/wiki/Reconstru…): нам дается граф, мы удаляем одну вершину из него, получаем такой урезанный граф.

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

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

В теории графов постоянно случались такие случаи, когда непрофессиональные математики доказывали долгостоящие теоремы. Например два года назад геронтолог сделал прорыв в одной из задач по раскраске графов (quantamagazine.org/decades-old-gr…).

А в 1975 году домохозяйка, мать пятерых детей, Марджори Райс (en.wikipedia.org/wiki/Marjorie_… lenta.ru/articles/2015/…) нашла новые способы замощения плоскости, которые считались невозможными до этого.

На википедии есть прямо целый раздел про любителей математиков (en.wikipedia.org/wiki/List_of_a…), почитайте, если хотите тоже стать великим.

Чтобы посмотреть на открытые, простые проблемы математики можете посмотреть вот этот тред на mathoverflow (mathoverflow.net/questions/3583…) или вот этот список открытых проблем garden.irmacs.sfu.ca/category/graph….

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

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

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

Так например есть Graph Attention Network из-за трансформера, NetGAN из-за гана, optimal transport GNN из-за optimal transport. Это то как работают ученые на западе, где очень большое давление публиковаться быстро и не особо думать насколько это полезно людям.

Хочется вспомнить один момент из фильма Margin Call youtube.com/watch?v=O5EsNV… There are three ways to make a living in this business: be first, be smarter, or cheat. Вот это то как можно сделать научную публикацию. На западе, да и вообще везде, стараются быть первыми.

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

Но потом узнали об этом и отклонили ее. Авторы не стали расстраиваться и переподали ее на ICML. Ее опять приняли и опять узнали и отклонили. В общем ждем, когда ее примут на нипс. Вот эта работа arxiv.org/pdf/2003.03888… Сплагиачена отсюда arxiv.org/pdf/1911.06468….

Напоследок, если вы планируете заниматься наукой по графам, то начните с обзоров по graph neural networks, это сейчас хот тема, хоть и не одна. Вот здесь я привел все ссылки на учебную литературу по GNN (t.me/graphML/58)/.

Во-вторых лучше сразу начинать практиковаться с ГНН, начните c pytorch-geometric (pytorch-geometric.readthedocs.io/en/latest/) или с deep graph library (dgl.ai). Можете пройти курс, например от стенфорда web.stanford.edu/class/cs224w/ или от лекуна (atcold.github.io/pytorch-Deep-L…).

Если говорить по группам, то вот список ребят, кто занимается графами в той или иной степени. Jure Leskovec (Stanford), Le Song (Georgia Tech), Karsten Borgwardt (ETH), Philip S. Yu (UIC), Michael Bronstein (UCL), Christos Faloutsos (CMU), Joan Bruna (NYU), Jian Tang (MILA)...

Tommi Jaakkola (MIT), Stephan Günnemann (TUM). Еще я собрал список разных чуваков из индустрии и университетов, кто занимается graph machine learning (docs.google.com/spreadsheets/d…). Ну и как обычно, если у вас есть вопросы как начать или куда идти, дайте мне знать.

В следующий раз поговорим про работу и индустрию, не обойдется и без зарплат. Ну а завершим неделю обсуждением переезда.

Суббота


Сегодня поговорим про индустрию, про критео, как устроена работа research scientist и какие у кого зарплаты.

Критео появилось в 2008 году, это один из немногих успешных европейских стартапов, вышедший в свое время на IPO, и до сих пор являющийся лидером по так называемому performance marketing.

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

У критео 31 офис по всему миру, я начинал работать в Москве, у них офис на белке, напротив авито. Два года назад переехал в Париж, где у них базируется headquarter и в том числе сидит большая часть R&D.

В R&D сейчас работает больше 500 человек, из которых 90 приходится на Criteo AI Lab (CAIL), в которой я нахожусь. В CAIL есть ML engineers, есть просто SE, а есть research scientist. В целом организация похожа на тот же гугл, дипмайнд или фейсбук.

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

Рекомендательные системы вообще говоря активно развиваются уже лет 20, но при этом прорывов каких-то не было, люди делают collaborative filtering (CF) или какие-то нейронки, и меряют потом precision/recall и аб-тестируют.

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

То есть мне нравится интерстеллар и мне также понравится одиссея 2001, но сегодня вечером я хочу посмотреть джейсона борна. И вот большая часть датасетов (всякие там MovieLens) как раз заточена под CF подход.

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

С логами в академии сложновато, они большие и недоступны, поэтому есть среды типа RecoGym, которые эмулируют поведение пользователей на рекламу. У критео был курс на рексисе в прошлом году про Modern Recommender System, если возьмут в этом году то будет еще одна итерация онлайн.

Слайды можно здесь посмотреть github.com/criteo-researc… Если сравнивать индустрию с академией, то у индустрии есть несколько плюсов. Во-первых, ты работаешь над реальными проектами, которые помогают компании.

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

Индустрия привела меня в чувство и я начал больше понимать и про задачи, и вообще про то как работу работать. На PhD максимум ты будешь набираться опыта от себе подобных.

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

В России из того, что я слышал, зарплаты для рисерч сайентиста будут варьироваться от 100 до 450К в месяц. Больше, только по менеджерской линии. В Франции зарплаты от 60 до 100К в год, это примерно 3.5 до 6К чистыми в месяц.

При этом в Франции налоги учитывают есть ли у тебя семья или нет. Например, у меня для семьи с одним ребенком коэффициент 2.5. В итоге подоходный налог на следующий год у меня 5%, в отличие от русского в 13%.

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

Или, если увольняют, то 6 месяцев выплачивают пособие по безработице в 60% от твоей годовой зарплаты. Однако, если переезжать в Европу с целью денег, то это лучше в Лондон или Цюрих. В Лондоне в дипмайнде/гугле/фб платят в районе 100-150 база + 100-150 акциями.

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

Про реальные цифры, которые я слышал это от 160к до 500к тотал компенсейшн от 3го до 6го левела. Вот здесь достаточно свежая инфа по зарплате и расходам в силиконовой долине habr.com/ru/post/503062/. Но не в деньгах счастье. А в чем поговорим в следующий раз.

Воскресенье


Часть 1. Завершим неделю разговорами про переезд и жизнь в Франции. Я начинал неделю с того, что хотел переехать в США. Позднее оказалось, что в США не так уж замечательно по ряду причин. В Гонконге даже как-то более душевно было, но жить там постоянно мне тоже не хотелось бы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Во-первых часы работы обычно с 9 до 9. В воскресенье и по праздникам все закрыто. Так еще в эти часы работы они не особо любят напрягаться, переносят встречи, треплятся с коллегами, пьют кофе и т.д.

Часть 3. Что мне нравится в Франции. Как ни крути, здесь обьективно лучше качество жизни, чем в России. Безопаснее. Еда намного свежее. Постоянное солнце. Жизнь более спокойная.

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

У нас в городе выпускают газетку, где пишут всех людей, кто родился и умер за последние три месяца. Выглядит она так. Видно, что большинство людей умирает в 85-90 лет. В России мне кажется эта цифра лет на 20 меньше.
notion image

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

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

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

На этот счет почитайте заметку моего бывшего коллеги, который пожил в Амстере, Париже и сейчас в Лондоне. ain.ua/2019/04/11/kai… В конце концов, если хочется хорошего баланса между работой и жизнью Франция это хороший вариант.

Часть 4. Наконец как я сравниваю Париж с другими городами Европы. Мне кажется обьективно большинство русских прогеров переезжает в несколько городов Европы. Это Лондон, Париж, Амстер, Цюрих и Берлин. Можно сказать, что если за деньгами ехать, то лучше переезжать в Лондон и Цюрих.

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

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

И насколько я знаю это не частая история для стран. Например в Голландии надо отказываться от русского паспорта. В Англии по-моему 6 или 7 лет нужно жить и это уже не ЕС. А в Швейцарии очень тяжело получить гражданство.

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

Спасибо всем, кто читал. Я старался быть честным. С вами был Сергей Иванов. Подписывайтесь ко мне на канал ttttt.me/graphML или твитер @SergeyI49013776.

Ссылки