Подпишись на наш telegram-канал и получай свежие кейсы и информацию первым!
Видео выступления: facebook.com/atscaleevents/videos/776557326089454.
Приветствую всех. Меня зовут Сара Кодир, я инженер-программист в Facebook. Я работаю над моделью глубокой классификации сущностей (DEC), которая является одной из наших основных моделей для выявления вредоносных аккаунтов. К сожалению, существуют люди, которые получают выгоду как экономическую, так и личную, занимаясь вредоносной деятельностью. Например, они будут распространять спам, обманывать людей, распространять вредоносные программы, и даже хуже - эксплуатировать детей и распространять терроризм. Но для того, чтобы сделать это, нужен фейковый аккаунт.
Чтобы понять масштаб проблемы, давайте посмотрим на наш отчет за первый квартал 2019 года. За первые три месяца 2019 года мы удалили 2,2 миллиарда фейковых аккаунтов. И несмотря на то, что это огромное число, мы все еще оцениваем, что около 5% наших ежемесячных активных пользователей являются фейковыми. Это борьба, которую мы ведем уже много лет. Мы удаляем их, а они возвращаются с еще большим объемом, и мы снова их удаляем. Это бесконечная игра в кошки-мышки.
Так какие есть подходы для решения этой проблемы? Мы можем попросить людей просматривать аккаунты. Но в Facebook мы имеем сложную систему для обеспечения качества разметки. Но на такой огромной платформе, где регистрируются десятки миллионов пользователей ежедневно, и существует миллиарды существующих аккаунтов, невозможно быстро просмотреть все эти аккаунты вручную. Другой подход - написать ручные правила для обнаружения атак. Но в этом случае нам придется написать тысячи правил, и злоумышленники могут быстро на них отреагировать, может быть, даже быстрее, чем мы сможем написать их.
Учитывая характер проблемы, очевидным решением является использование машинного обучения. Давайте посмотрим, как мы бы традиционно подошли к этому с точки зрения машинного обучения. Сначала мы бы составили набор признаков, например, возраст аккаунта, количество его друзей или местоположение. Затем мы соединим эти признаки с меткой - является ли этот аккаунт вредоносным или нет. Затем мы возьмем эти данные обучения и подадим их на вход модели, например, градиентному бустингу деревьев решений или нейронной сети. Выход этой модели - является ли этот аккаунт вредоносным или нет?
Хотя машинное обучение является отличным решением, у нас все еще есть некоторые проблемы. Допустим, мы проводим исследование и понимаем, что чем моложе аккаунт, тем больше вероятность того, что он злонамеренный. Мы создаем новый признак - возраст аккаунта - и подаем его в наш классификатор. Затем мы внедряем классификатор. Злоумышленники начинают понимать, что их аккаунты блокируются. И они просто стареют свои аккаунты, прежде чем начинать злоупотреблять. И таким образом они могут обойти наши системы. Однако Deck может справиться с этим. Мы не только извлекаем прямые признаки аккаунта, но также извлекаем и агрегируем признаки для других аккаунтов, с которыми он взаимодействует. Это позволяет нам не только моделировать сам аккаунт, но и его поведение во всей социальной сети.
Еще одна проблема с традиционным машинным обучением - количество признаков, которые люди могут написать, обычно ограничено. Когда у нас ограниченное количество признаков, злоумышленникам гораздо легче понять, какие именно это признаки. Однако Deck рекурсивный по своей природе, и мы получаем десятки тысяч признаков для каждого отдельного аккаунта. Это намного труднее понять для злоумышленников.
Еще одна проблема - получение большого количества меток от людей. Как мы видели в докладе Даниэль, получение меток настоящей правды очень трудно, но еще труднее получить их в больших количествах. Чтобы решить эту проблему, Dec использует технику многозадачного обучения с многократными этапами с использованием больших объемов низкоточных автоматизированных меток и небольших объемов высокоточных меток от людей.
Теперь давайте более подробно рассмотрим извлечение признаков. Для извлечения признаков для одного аккаунта мы начинаем с извлечения некоторых заданных прямых признаков, например, возраста аккаунта, его местоположения и некоторых друзей. Затем мы рассматриваем сущности, с которыми этот аккаунт взаимодействует, например, группы, в которых он состоит, или устройства, через которые он зарегистрировался. Для этих сущностей мы также извлекаем прямые признаки. Затем мы агрегируем все эти признаки, чтобы найти интересные шаблоны и выявить сети фейковых аккаунтов.
Чтобы проиллюстрировать это на примерах, давайте рассмотрим каждый тип сущности. У нас есть заранее определенный набор прямых признаков для каждого типа сущности. Например, для пользователя мы будем иметь его возраст или пол, для устройства - операционную систему, а для группы - количество участников или возраст. Затем мы рассматриваем другие сущности, с которыми целевой аккаунт взаимодействует. Например, для пользователя мы можем посмотреть на страницы, которые он администрирует, или на его посты. А для IP-адреса мы можем посмотреть на аккаунты, зарегистрированные через этот адрес. Затем мы применяем агрегации к этим признакам, чтобы найти интересные шаблоны. У нас есть несколько разных типов агрегаций.
Первый тип агрегации - числовой. Мы смотрим на минимум, максимум, количество и средние значения. Например, в приведенном выше примере мы видим, что у пользователя есть три друга. У одного друга семь групп, у другого нет ни одной, а у третьего две. Один из примеров агрегируемых признаков, которые мы можем получить здесь, - это среднее количество групп на друга, которое в данном случае будет равно трем.
Другой пример агрегируемого признака - это категориальный признак. Мы получаем такие вещи, как процент самой распространенной категории или количество различных категорий. В приведенном выше примере мы видим, что двое друзей пользователя из США, а один из Франции. В этом примере самая распространенная страна будет США. Затем мы идем еще на один уровень и применяем агрегации ко вторичным сущностям, с которыми взаимодействует аккаунт. Например, для каждого друга пользователя мы начнем с рассмотрения его постов и найдем пост с наибольшим количеством лайков. Для первого друга это будет 43 лайка, для второго - 11, а для третьего - 34. Затем мы снова применяем агрегацию, чтобы найти минимальное количество лайков у постов самого "неудачного" друга. В этом примере это будет 11.
После всех этих агрегаций мы получаем более 20 000 признаков для каждого аккаунта. Это огромное количество признаков и то, что мы можем захватить весь социальный граф аккаунта, делает эту модель гораздо более устойчивой к адаптации злоумышленников.
Итак, теперь, когда мы имеем признаки для обучения, мы начинаем думать о структуре модели. Основной проблемой здесь является создание архитектуры, которая может использовать этот огромный объем признаков без требования огромного количества меток от людей и без переобучения. Для этого у нас есть два набора меток. Первый набор - это набор автоматических машинных меток, которые показывают разные типы злоупотреблений. Например, мы можем иметь спам, мошенничество, рыболовство и фейки. Эти метки поступают в огромных объемах, но с низкой точностью. Второй набор - это набор меток от людей, которые имеют более высокую точность, но менее объемный. Этот набор представляет собой ответ на вопрос: является ли аккаунт злоумышленным или нет?
Итак, теперь перейдем к интересной части - обучению модели. Мы используем технику, называемую многозадачным обучением на нескольких этапах, которая является техникой передачи знаний и улучшает обобщение модели путем обучения нескольких связанных задач параллельно с использованием нейронной сети. Мы разбиваем обучение на два этапа.
Первый этап - это многозадачная нейронная сеть. Входными данными для этой нейронной сети являются 20 000 признаков, которые мы извлекли, объединенные с большими объемами меток низкой точности. Для каждого пользователя или каждого примера обучения мы соединяем его с несколькими метками. Мошенничает ли этот пользователь? Он спамит? Это фейк? Или это фишинг? Затем мы обучаем эту модель и извлекаем последний скрытый слой, который является 32-мерной вложенностью, представляющей вредоносные признаки аккаунта.
Второй этап - это еще одна модель, но более традиционная, например, градиентный бустинг деревьев решений или нейронная сеть. В качестве входных данных для этой модели мы берем 32-мерную вложенность из предыдущей модели, объединенную с высококачественными метками от людей о том, является ли аккаунт вредоносным или нет. Затем мы обучаем эту модель, и выходом здесь является прогноз, является ли аккаунт вредоносным или нет.
Чтобы оценить производительность модели, мы рассмотрели несколько различных методов оценки, используя выборочные данные производства, а также небольшой объем меток от людей. Мы использовали три модели для проверки нашего подхода.
Первая была поведенческой моделью, такой как градиентный бустинг деревьев решений. Эта модель использовала прямые признаки.
Далее, для извлечения признаков для каждого аккаунта используется метод обратного распространения ошибки в нейронных сетях. Признаки включают возраст аккаунта, местоположение, список друзей, группы, которые он посещал, и устройства, через которые он регистрировался. Затем, осуществляется агрегация признаков для нахождения интересных паттернов и выявления сетей фейковых аккаунтов.
Кроме того, авторы применяют мультизадачное обучение с несколькими этапами, используя большие объемы автоматизированных меток с низкой точностью и небольшие объемы высококачественных меток, чтобы улучшить обобщающую способность модели. Они разбивают обучение на два этапа: первый этап - мультитасковая нейронная сеть, второй - более традиционная модель, такая как градиентный бустинг или нейронная сеть.
Используя описанные методы, авторы отмечают значительное улучшение точности и полноты при обнаружении фейковых аккаунтов. Модель справляется с большим объемом данных и остается устойчивой к адаптации со стороны злоумышленников.
*Компания Meta и входящие в нее соцсети Facebook и Instagram признаны экстремистскими и запрещены на территории РФ.