27 апреля 2020 – 4 мая 2020

@XOR0SHA2wine

26 апреля 2020Понедельник
39 твитов
7:35

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

7:37

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

9:41

Задачи на стыке ИБ&ML можно разделить на инженерные и требующие научного поиска (как и в DS в целом). Сюда я не отношу задачи, вроде имитации опьянения у нейросети, чем занимались мои знакомые безопасники. Хотя иногда это помогает получить полезные идеи / решения для продакшена.

9:46

В некоторых компаниях используют фриковые проекты или игры вроде спортивного хакинга (CTF) для тимбилдинга. В качестве friday project раз в месяц. Про фриковые проекты мы еще поговорим подробнее, но раз уж речь зашла про AI drugs, то вот ссылочка:
github.com/wallarm/neural…

9:52

Эмуляция закупоривания сгустками крови доступа кислорода к нейрону реализована через указание минимально возможного веса нейрона. Воздействие DMA на нейроны представлено произвольным весом на нейрон. На выходе – искаженные картинки, будто глазами Torch/pytorch, который торч.

9:58

Но этот проект оказался полезен для оценки робастности моделей!

9:59

Так, ну а теперь задачи на стыке ML и ИБ. Можете задавать вопросы по конкретным, я расскажу детальнее.

1) Задачи на рисеч (т.е. пока не имеющие SOTA):

1.1. Сбор пользовательских данных (пол, возраст, уровень дохода и пр.) в маркетинговых целях (для Data Management Platform).

10:03

1.2. Антикликфрод (детектирование ботов, которые скликивают рекламу).

1.3. Идентификация взломщика на основе поведенческого анализа.

1.4. Поиск бекдоров, которые оставляют разработчики с незамутненным сознанием (статический анализ кода, совмещенный с динамическим анализом)

10:04

1.5. Анализ репутационных рисков для ФЛ и ЮЛ в больших объемах данных (текст, видео, картинки в новостях и соцсетях)

1.6. Частичная автоматизация OSINT (профилирование людей и групп через анализ социальных графов, поиск аккаунтов в соцсетях с помощью распознавания лиц)

10:06

1.7. Детектор синтезированного голоса и фейковых видео. Есть технологии, вроде lyrebird и face2face, с помощью которых можно подделывать интервью публичных личностей или использовать синтезированный голос руководителя компании для соц инженеринга при комбинированной атаке😈

10:07

1.8. Self-adaptive honeypots, основанные на теории игр, reinforcement learning и психологии киберплохишей. Ханипоты - это имитация реальных сервисов, они намеренно делаются уязвимыми, чтобы собирать данные о векторах атак и предсказывать возможные стратегии злоумышленников.

10:08

1.9. Adversarial Generative Networks -- каким образом злоумышленник может повлиять на результаты работы модели, которая дообучается в риал-тайме. Если на вход модели... будет поступать... Ммм как сексуально это звучит... pic.twitter.com/nMZlDMPdah

10:09

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

10:13

1.10. Мультиклассовая классификация атак в WAF (особенно детектирование 0day уязвимостей и bypass). Раньше для этого использовали regexp, сейчас используют машинное обучение. Лучшие решения у Wallarm. Есть еще у Imperva проприетарное для тестирования самих WAF.

10:13

1.11. Идентификация пользователей по стилистическим и лингвистическим особенностям речи. Метод идентификации авторства на основе анализа текста является частным случаем биометрической идентификации и применяется в DLP.

10:14

При этом остальные задачи, связанные с DLP-системами, уже перешли в стадию зрелых промышленных решений, и дальше там остается только методично копать в глубину, устраняя недостатки существующих методов. Основная борьба чисто за то, как побольше данных с сотрудников собрать. pic.twitter.com/i9I1ZAq5ZC

10:52

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

2.1. Аномалии в сетевом траффике
(Лучший антидидос у Cloudfare сейчас)

2.2. карточный антифрод как детектирование аномалий
(Cybertonica, Group IB)

10:52

2.3. Выход из строя банкоматов / мониторинг состояния критически важной инфраструктуры (Лаборатория Касперского)

2.4. Антифишинг, антиспам методами NLP и fuzzy hashing (Group IB и компании, не связанные напрямую с ИБ - например, почтовые сервисы поисковиков)

10:53

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

10:53

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

10:54

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

10:54

Для экономии места на жестком диске пользователя из базы удаляются старые вирусы (поэтому их модификации могут не детектироваться новой версией антивируса). Сейчас этим направлением очень активно занимается Лаборатория Касперского.

11:27

Сложности задач на стыке ИБ и МЛ:
1) Нужно постоянно дообучать модели, между киберплохишами и вендорами ведется гонка вооружений
2) Про SOTA узнаешь чаще всего в кулуарах. Академические статьи на шаг назад от индустрии в этой области. Доклады устаревают уже за время их подготовки

11:29

3) Не всегда можно использовать нейросетевые подходы. Модели используются как СППР - решения все же принимает человек, который несет ответственность. Есть задачи, где ЛПР хотят интерпретируемости до коэффициента, а не просто вердикта от модели. Например, карточный антифрод.

11:39

  • Почему я бы рекомендовал идти в профессию ML engineer?
  • Допустим мы все заканчиваем школу со уровнем знания по математике из нормального распределения (E, sigma).
  • 11:39

    За универские N курсов по математике мы сокращаем дисперсию на sigma/N и увеличиваем мат ожидание на 1.1 ^ i для i=1..N, и строим функцию условного мат ожидания уровня математики от мечты о будущем P(Maths|Dreams).

    11:40

    После окончания универа с каждым годом уровень математики сокращается с 0.8 ^ year.

    Вопрос: чему будет равно P(Dreams|Maths) через 3 года, если ты упоролся?

    11:45

    Когда-то я думал, что вкладываться в работу лучше, чем вкладываться в какие-либо отношения с людьми. Отдача от работы пропорциональна инвестициям времени в неё с вероятностью 0.5 (взлетит - не взлетит). А люди... Да что эти кожаные мешки знают о вероятности? pic.twitter.com/BvgOkJVrXm

    11:52

    Но потом я осознал, что технологии создают пока что тоже люди (если можно считать говнокодеров людьми). И работать приходится с людьми, выстраивая с ними минимум деловые отношения. И чтобы хотя бы не выгореть от всего этого, надо инвестировать время в гармонию во всем pic.twitter.com/Ymp4x58lzm

    12:41

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

    14:40

    Раз уж зашел разговор белковая нейросеть vs. искусственная, предлагаю обсудить вопрос:

    • Может ли машина кодить?

    В качестве иллюстрации вместо мемов:

    youtu.be/Pelrr__9qx8

    youtu.be/8a-EObAhYrg

    youtube.com/watch?v=2BWFlO…

    14:59

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

    15:01

    Существует гипотеза, согласно которой сходство языков программирования и естественных языков позволяет применять к анализу кода методы Natural Language Processing. Задача построения эмбеддингов кода до сих пор остается открытой, но уже есть рабочий плагин JB Deep Bugs для PyCharm

    15:08

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

    15:14

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

    15:26

    Больше всего исследований на эту тему у Microsoft Research. Возможно, с интересом к генерации кода связана активность Microsoft относительно покупки и дампа гитхаба.

    15:48

    Разбор актуальных статей по теме можно посмотреть здесь:
    m.youtube.com/playlist?list=… pic.twitter.com/u2lPTmsprm

    16:04

    Также я бы рекомендовал в нагрузку к расширению общего кругозора по вопросу посмотреть следующие неплохие расширения / тулзы:

    github.com/marketplace/co…

    github.com/marketplace/co…

    github.com/marketplace/co…

    github.com/marketplace/co…

    github.com/marketplace/de…

    16:10

    Пара вводных ссылок по теме ML&cybersecurity:

    github.com/oreilly-mlsec/…

    media.kaspersky.com/en/enterprise-…

    27 апреля 2020Вторник
    1 твит
    20:29

    @dsunderhood Отдельно на стыке ML и ИБ можно отметить атаки типа - habr.com/ru/post/498114/, фактически обман детекторов и классификаторов на примере топологии ResNet50.

    28 апреля 2020Среда
    11 твитов
    6:11

    @dsunderhood Есть ещё SV2TTS, например - github.com/CorentinJ/Real…. Синтез и клонирование речи real-time. Связка владелец/клон будет детектироваться плохо.

    20:30

    Тест на возраст. Что вы представляете, когда слышите слово "трансформер"? pic.twitter.com/kx5MgvzUBw

    20:31

    Вчера мы должны были обсуждать NLP. Был так занят NLP, что не было времени на соцсети,к сожалению. Поэтому эту интересную область мы обсудим сегодня, вместе с темой по плану "Постановка и оценка задач". Но сначала пару слов про work&balance, с которым у меня проблемы.

    20:32

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

    20:36

    Век карьеры и потребления: больше поглоти, больше заработай, будь лучше других. Почему бы не быть просто счастливым?
    Нравится 10-минутная лекция на эту тему:
    ted.com/talks/nigel_ma…

    20:38

    Цитата оттуда: pic.twitter.com/190OqqZE0E

    22:08

    Natural Language Processing (компьютерная лингвистика) – область на стыке ИИ и лингвистики. pic.twitter.com/dPA2QKyuIA

    22:13

    Бизнес-задачи, где применяется NLP:
    • Антиспам
    • Поисковые системы
    • Чат-боты
    • Вопросно-ответные системы
    • СППР
    • Машинный перевод
    • Автодополнение
    • Голосовое управление
    Всё это разнообразие сводится к математике. Главное правильно понять что является целевой переменной

    22:18

    В терминах ML эти задачи декомпозируются на:

    1) Тривиальные
    • Классификация
    • Кластеризация
    • Оценка семантической близости
    • Предсказание следующего слова
    • Построение языковой модели pic.twitter.com/zcHOgaJoq1

    22:46

    2) Специфические
    Построение устойчивых к шуму векторных представлений слов
    анализ тональности
    Named Entity Recognition
    Извлечение фактов
    Разрешение неоднозначности
    Информационный поиск
    Перевод речи в текст
    Диалоговые системы
    Вопросно-ответные системы
    Машинный перевод
    Суммаризация pic.twitter.com/CfWk0LCnTN

    22:49

    Специфические задачи декомпозируются на тривиальные, чаще всего – на классификацию. Но в последнее время наблюдается тренд решать задачи нейросетями с end-to-end архитектурой pic.twitter.com/tJWVkzljPH

    29 апреля 2020Четверг
    4 твита
    5:38

    Ограничения NLP:
    • Сарказм, ирония
    • Фейковые новости -- нельзя детектировать несоответствие фактам реального мира (эта задача эффективнее всего решается с привязкой модели к сайтам перепроверки фактов людьми) pic.twitter.com/iNGDW8kEuC

    5:41

    • Аналитические выводы без экспертных оценок – модели нужна интерпретация
    • Зависимость от субъективности, заложенной при разметке
    • Зависимость вообще от данных (например, модели машинного перевода, обученные на религиозных текстах, иногда выдают перевод с сакральным оттенком

    22:42

    Кстати, изначально на аватарку было поставлено лицо, сгенерированное нейросетью (взято с thispersondoesnotexist.com
    А имя - какалька Yan Goodfellow pic.twitter.com/OzKVaJzR8V

    22:42

    А, вы заметили? Ну, я иногда пишу на профессиональные темы из-под мужских аккаунтов. Думаю, важнее не аватарка, а интересно людям обсуждать со мной рабочие темы или нет) twitter.com/haskelloween/s…

    30 апреля 2020Пятница
    2 твита
    10:16

    @dsunderhood @XOR0sha2wine Так возможно достичь баланса или это только высокопарные слова? Ведь от чего-то придется отказаться

    Думаю, что можно достичь баланса не каждый день, а в целом за неделю. Это вопрос умения договариваться. Например, у меня на неделе плотная работа, выходные – время для близких и для самой себя. Но в будни я нахожу хотя бы несколько минут для тех, кто мне важен twitter.com/kellyclip_/sta…

    15:25

  • Если все с крыши прыгнут ты тоже прыгнешь?
  • Да
    (с) Машинное обучение
  • 1 мая 2020Суббота
    17 твитов
    7:20

    О постановке и оценке задач в DS.
    • Наиболее эффективно формулировать задачи для дата саентистов в форме "Дано - Найти - Критерий".
    • Лучше, когда это делает сам дата саентист, обсуждая бизнес-задачу с продуктовым менеджером / заказчиком.

    7:27

    1) Дано - у большинства компаний на вопрос о данных ответ: "У нас много данных😎🤟" Приходится уточнять, какие данные есть, каких не хватает. Нужно ли размечать. Какого они качества. Лучше просто пример запросить. Иногда в итоге приходится делать прототип на открытых датасетах.

    7:31

    2) Найти - что должно быть на выходе модели, насколько важна интерпретируемость. По сути это перевод с языка поставки бизнес-задач на язык математики. Определив, какую целевую переменную мы оптимизируем, не обязательно грузить этим менеджера :)

    7:34

    3) Критерий - это про метрики, внешние и внутренние. Внутренними (accuracy, precision, recall, F1) тоже лучше не грузить менеджера, у каждого своя работа. Имеет смысл сводить эти метрики к бинарным (AUC ROC), потому что их легче изобразить на графике, а менеджеры любят графики pic.twitter.com/T8gXTrSLpF

    7:42

    Внешние метрики зависят от доменной области - именно их и озвучивает менеджер. Иногда бывает, что нет бейзлайна - качества текущего решения, которое нужно превысить. Тогда нужно обмазать сервис логами и померить текущую эффективность, чтобы смотреть, улучшит ее или ухудшит ее ML. pic.twitter.com/GZqE7KfRDq

    7:47

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

    7:50

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

    7:59

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

    8:02

    Могут в качестве А/В-теста выпустить в прод модель, где F1 выше 0.5, и смотрят на изменение внешних метрик. Если улучшение качества модели по времени будет затратнее, чем увеличение прибыли от дальнейших улучшений качества модели, ее принимают такой какая она есть

    8:06

    В зависимости от требований к соотношению качества и вычислительных мощностей, выбирают вариант fine-tuning'а языковых моделей (word2vec, fasttext, BERT - имя им легион):

    1) Дообучают всю модель под конкретную задачу

    2) Вывод модели используется как фичи, она сама не изменяется

    8:07

    В первом случае мы получаем:

    • превосходные результаты на больших датасетах
    • Затратно по вычислительным ресурсам: для k задач нужно держать k моделей на сервере

    • Долгое время обучения (например, BERT дообучается месяцы на GPU, дни на TPU)

    8:09

    Во втором случае:

    • Для хороших результатов не нужны огромные датасеты

    • Для решения k задач нужны всего она тяжеловесная модель и k легковесных моделей (например, BERT / fasttext + 2(3)-слойный перцептрон или logreg / XGBoost / KNN / k-means / etc.)

    8:13

    Ссылочки по NLP:
    nlp.rusvectores.org/ru/ - поиск статей

    coursera.org/learn/language… - неплохой курс

    nlpub.ru - инструменты (там не про все конечно, область меняется очень быстро)

    @dlinnlp_discuss , @dlinnlp - тг-каналы

    8:18

    Один из наиболее интересных вопросов для меня в последнее время. Что у вас используется для доставки данных к моделям и их предобработки? Свои инструменты для пайплайна пишите или тащите либку?

    8:23

    Пример своего:
    • Динамическая многопоточная модель
    • Брокер сообщений - RabbitMQ
    • Балансер смотрит на длину очередей, и при необходимости, поднимает новые потоки обработки, разгребающие очередь параллельно. Как только очередь пустеет, потоки убиваются – все, кроме "дежурного"

    8:24

    Один из примеров использования готовых инструментов: для фичей DVC, для метрик ML Flow. Для прода уже можно через Airflow раскатать.

    19:09

  • Некоторые говорят, что прыгнут и ждут реакции окружающих, мы были из тех кто прыгает
    (с) Нейронные сети twitter.com/dsunderhood/st…
  • 2 мая 2020Воскресенье
    2 твита
    22:15

    Поговорим немного про ФП и ML. Есть такая неизбитая исследовательская тема – применение теории категорий для описания архитектуры программ / нейросетей. pic.twitter.com/5h6p8X9jA6

    22:20

    Пример статьи, объясняющей в терминах теорката, как запрогать нейросеть на функциональном языке:
    arxiv.org/pdf/1711.10455…
    Backpropagation рассматривается как метод, зависящий от выбора размера шага и функции ошибки, а сами нейросети как метод определения параметризованных функций.

    3 мая 2020Понедельник
    7 твитов
    7:53

    Как вкатиться в Data Science? У каждого свой путь. Я в свое время читала статьи проф. Константина Воронцова и написала ему с вопросами. Он разрешил мне приходить на его семинары в ШАД. Каждые выходные я моталась из Питера в Москву. Очень нравились атмосфера и контингент семинаров

    8:07

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

    8:12

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

    8:16

    Помимо этого, веду консультации по чатботам и использованию BERT. Если интересно пообщаться на профессиональные темы – стучитесь в твиттере @XOR0sha2wine , в тг @Chameleon256 .
    Кстати, зовут меня Алиса Хорошавина.

    8:30

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

    8:34

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

    8:35

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