Content Moderation & Fraud Detection - Patterns in Industry
Юджин Янь разбирает паттерны построения систем модерации контента и обнаружения мошенничества на основе индустриальных статей и инженерных блогов Stack Exchange, LinkedIn, Uber, Meta, DoorDash, Airbnb, Cloudflare и Google. Он выделяет пять ключевых приёмов: сбор эталонных данных (ground truth) через human-in-the-loop, аугментацию данных синтетикой и поиском похожих образцов, каскадный паттерн для дробления задачи на части, сочетание обучения с учителем и без учителя, а также объяснимость моделей. Среди конкретных деталей: DoorDash использовал соотношение 100 синтетических меток к 1 реальной, эвристики Cloudflare классифицируют 15–30% трафика с низким уровнем ложноположительных срабатываний, а LinkedIn применяет каскад из трёх моделей (отправитель, сообщение, взаимодействие) для выявления домогательств. Автор аргументирует, почему несколько бинарных классификаторов (MBC) обычно превосходят единый многоклассовый (SMCC), и показывает роль unsupervised-методов вроде isolation forest для редких и состязательных задач. Подчёркивается, что объяснимость критична для Uber, Meta и Airbnb при принятии решений и понимании важности признаков.
Content Moderation & Fraud Detection - Patterns in Industry
Модерация контента и обнаружение мошенничества — паттерны в индустрии
[ teardown machinelearning production ] · чтение на 16 мин
Content moderation is the process of learning and inferring the quality of human-generated content such as product reviews, social media posts, and ads. How do we know which are irrelevant, incorrect, or downright harmful? A related problem is detecting anomalous activity such as fraudulent transactions or malicious traffic.
Модерация контента — это процесс определения и оценки качества контента, созданного людьми: отзывов о товарах, постов в соцсетях, рекламы. Как понять, какой из них нерелевантен, некорректен или попросту вреден? Смежная задача — обнаружение аномальной активности, например мошеннических транзакций или вредоносного трафика.
To learn more about building robust content moderation systems, I dug into industry papers and tech blogs on classification, anomaly detection, and search relevance. Here are five patterns I observed:
Чтобы глубже разобраться в построении устойчивых систем модерации контента, я изучил индустриальные статьи и техноблоги о классификации, обнаружении аномалий и релевантности поиска. Вот пять паттернов, которые я заметил:
Собирайте эталонные данные через human-in-the-loop Аугментируйте данные, чтобы дополнить исходный эталон Каскадный паттерн для дробления задачи на части Сочетайте лучшее из обучения с учителем и без учителя Объяснимость для понимания моделей и их результатов
Collecting ground truth via human-in-the-loop
Сбор эталонных данных через human-in-the-loop
Regardless of whether a heuristic-based, supervised, or unsupervised solution is adopted, we typically start with collecting a set of ground truth. This ground truth can then be used to train supervised ML models as well as evaluate the performance of heuristics and unsupervised models. The ground truth also acts as seed data to bootstrap more labels via active or semi-supervised learning.
Независимо от того, какое решение выбрано — на эвристиках, с учителем или без учителя, — мы обычно начинаем со сбора набора эталонных данных (ground truth). Этот эталон затем можно использовать как для обучения ML-моделей с учителем, так и для оценки качества эвристик и моделей без учителя. Эталон также служит начальными данными для наращивания числа меток через активное или полу-контролируемое обучение.
The most straightforward way to collect ground truth is to ask users. For Stack Exchange to block spam on their sites, a valuable data source is users flagging posts as spam. These flags were then used to identify and act on spammy users by blocking or rate-limiting them. They were also used as training data for machine learning models.
Самый прямой способ собрать эталон — спросить пользователей. Для блокировки спама на сайтах Stack Exchange ценным источником данных стали жалобы пользователей, помечающих посты как спам. Эти отметки затем использовались для выявления спамеров и принятия мер — блокировки или ограничения скорости. Они же служили обучающими данными для моделей машинного обучения.
Another example is LinkedIn’s effort to prevent harassment. Users can report messages as harassment and those messages become ground truth. Sometimes, instead of directly reporting harassment, some users may just block harassers to indirectly make the problem go away—this becomes a source of ground truth too, albeit a fuzzier one.
Ещё один пример — усилия LinkedIn по предотвращению домогательств. Пользователи могут пожаловаться на сообщения как на домогательство, и такие сообщения становятся эталоном. Иногда вместо прямой жалобы пользователь просто блокирует обидчика, косвенно решая проблему, — это тоже источник эталона, хотя и более размытый.
Similarly, as part of Uber’s work to reduce payment fraud, users notify them of fraud when they dispute charges and file a chargeback (to have the charge refunded). After such incidents are investigated and confirmed to be fraud, they become ground truth.
Аналогично, в рамках работы Uber по снижению платёжного мошенничества пользователи сообщают о мошенничестве, оспаривая списания и оформляя возвратный платёж (chargeback, чтобы вернуть деньги). После расследования и подтверждения мошенничества такие инциденты становятся эталоном.
A second, less common approach is to use labels that are naturally generated as part of data pipelines and code. We see this in Meta’s initiative to classify sensitive data, such as addresses and phone numbers, to enforce data retention and access controls. Data lineage was a source of ground truth, where downstream data inherited data classifications from upstream tables. They also traced data as it went through code paths that carry known data types and used that as ground truth.
Второй, менее распространённый подход — использовать метки, которые естественным образом порождаются конвейерами данных и кодом. Мы видим это в инициативе Meta по классификации чувствительных данных, таких как адреса и номера телефонов, для соблюдения политик хранения и контроля доступа. Источником эталона стало происхождение данных (data lineage): нижестоящие данные наследовали классификации от вышестоящих таблиц. Они также отслеживали данные при прохождении через участки кода, работающие с известными типами данных, и использовали это как эталон.
The third, most common approach is to label data via annotation services such as Mechanical Turk or internal teams. When DoorDash tackled the cold-start problem in tagging menu items, they built a labeling queue powered by annotation services. The queue focused on high precision (to ensure annotators don’t incorrectly label samples), high recall (to ensure annotators generated all relevant labels), and representativeness (to ensure labeled samples were representative of the actual data).
Третий, самый распространённый подход — размечать данные через сервисы аннотации, например Mechanical Turk, или силами внутренних команд. Когда DoorDash решал проблему холодного старта в тегировании пунктов меню, они построили очередь разметки на базе сервисов аннотации. Очередь была нацелена на высокую точность (чтобы аннотаторы не помечали образцы неверно), высокую полноту (чтобы они проставляли все релевантные метки) и репрезентативность (чтобы размеченные образцы отражали реальные данные).
To ensure high precision and throughput, they used binary questions to simplify the task for annotators. DoorDash also provided an “Unsure” label so annotators could skip tasks they were not confident in, instead of being forced to choose a response that may not be correct. To ensure high throughput, they varied the amount of consensus needed per tag, only requiring higher consensus for tags with lower inter-annotator agreement.
Для обеспечения высокой точности и пропускной способности они использовали бинарные вопросы, упрощая задачу для аннотаторов. DoorDash также добавил метку «Не уверен», чтобы аннотаторы могли пропускать задачи, в которых не уверены, вместо того чтобы вынужденно выбирать потенциально неверный ответ. Для высокой пропускной способности они варьировали требуемый уровень консенсуса по каждому тегу, требуя более высокого согласия только для тегов с низкой согласованностью между аннотаторами.
To ensure label quality, they mixed in golden data when onboarding new annotators. The intent is to measure baseline precision before proceeding with labeling new samples.
Чтобы обеспечить качество меток, при онбординге новых аннотаторов они подмешивали эталонные («золотые») данные. Цель — измерить базовую точность, прежде чем переходить к разметке новых образцов.
Annotating 'coffee' by first annotating 'drink' followed by 'alcoholic'
Аннотирование «кофе» через сначала разметку «напиток», затем «алкогольный»
Airbnb also relied on human-in-the-loop to categorize listings. Listings were categorized into places of interest (e.g., coastal, national park), activities (e.g., skiing, surfing), home types (e.g., barn, castles), and home amenities (e.g., amazing pools, chef’s kitchen).
Airbnb также полагался на human-in-the-loop для категоризации объявлений. Объявления распределялись по достопримечательностям (например, побережье, национальный парк), занятиям (например, лыжи, сёрфинг), типам жилья (например, амбар, замки) и удобствам (например, потрясающие бассейны, кухня шеф-повара).
To select initial samples for annotation, they built heuristics based on guest reviews, listing data (e.g., description, attributes, images), wishlists, location, etc. After the annotation process, confirmed categories were used to power a new user experience where customers could browse listings by category. The category labels were also used as ground truth for machine learning.
Для выбора первых образцов на разметку они построили эвристики на основе отзывов гостей, данных объявления (например, описание, атрибуты, изображения), списков желаний, местоположения и т. д. После аннотации подтверждённые категории легли в основу нового пользовательского опыта, где гости могли просматривать объявления по категориям. Метки категорий также использовались как эталон для машинного обучения.
Similarly, Uber had internal experts who reviewed fraud trends. These experts were able to analyze and identify new fraud patterns that machine learning models trained on past data would miss. As part of the process, they confirmed if the flagged transactions were indeed fraudulent, and then developed heuristics to programmatically identify fraud transactions.
Аналогично, у Uber были внутренние эксперты, которые анализировали тренды мошенничества. Эти эксперты могли выявлять новые паттерны мошенничества, которые ML-модели, обученные на прошлых данных, упустили бы. В рамках процесса они подтверждали, действительно ли помеченные транзакции были мошенническими, а затем разрабатывали эвристики для программного выявления мошеннических транзакций.
A final approach is to label or select samples for labeling via high-precision heuristics or models. When Cloudflare blocks undesired or malicious bot traffic, they had heuristics that labelled data which was then used to train machine learning models. These heuristics could classify 15 - 30% of traffic with low false positive rates.
Последний подход — размечать или отбирать образцы для разметки с помощью высокоточных эвристик или моделей. Когда Cloudflare блокирует нежелательный или вредоносный бот-трафик, у них были эвристики, размечавшие данные, которые затем использовались для обучения ML-моделей. Эти эвристики могли классифицировать 15–30% трафика с низким уровнем ложноположительных срабатываний.
Similarly, when DoorDash wanted to select more samples for annotation, they relied on a high-precision model trained on the initial ground truth. To improve precision, they identified samples where the model prediction conflicted with the annotation label and selected similar samples. To improve recall, they use model predictions to select samples with high uncertainty (i.e., probability ≈ 0.5).
Аналогично, когда DoorDash хотел отобрать больше образцов для аннотации, они полагались на высокоточную модель, обученную на исходном эталоне. Чтобы повысить точность, они находили образцы, где предсказание модели расходилось с меткой аннотатора, и отбирали похожие образцы. Чтобы повысить полноту, они использовали предсказания модели для отбора образцов с высокой неопределённостью (то есть вероятностью ≈ 0,5).
To sum up, there’s no single way to collect ground truth. A robust program will involve several of the above, starting with asking users or annotators, and then using the seed data to bootstrap more labels via active or semi-supervised learning.
Подытоживая: единого способа собрать эталон нет. Надёжная программа сочетает несколько перечисленных подходов — начинают с опроса пользователей или аннотаторов, а затем используют начальные данные для наращивания меток через активное или полу-контролируемое обучение.
Aside on writing labeling guides: I chatted with ML practitioners who have experience building annotation processes to collect ground truth. Here’s a summary of their advice:
Отступление о написании руководств по разметке: я пообщался с ML-практиками, имеющими опыт построения процессов аннотации для сбора эталона. Вот краткая выжимка их советов:
Ответы на вопросы должны быть бинарными. Вместо шкалы или множественного выбора упростите задачу. Критерии разметки должны быть как можно объективнее. Например, «Это нагота?» объективнее, чем «Это контент для взрослых?». Добавьте метку «Не уверен», чтобы аннотаторы не выбирали вынужденно потенциально неверную метку. Тем не менее это может просто откладывать решение по сложным образцам. Измеряйте согласованность между аннотаторами и калибруйте их между собой — с бинарными метками это проще. Для внутренних аннотаторов рассмотрите метрики вроде WTF@k.
Useful resources on writing labeling guides include DoorDash’s sharing of best practices for building a taxonomy and labeling guidelines. Also, Google’s guidelines on search relevance where they annotate search results for page quality and needs met.
Полезные ресурсы по написанию руководств по разметке включают рассказ DoorDash о лучших практиках построения таксономии и правил разметки. А также руководство Google по релевантности поиска, где они аннотируют результаты поиска по качеству страницы и удовлетворению потребности.
Splitting search relevance labeling into Page Quality and Needs Met
Разделение разметки релевантности поиска на качество страницы (Page Quality) и удовлетворение потребности (Needs Met)
Data augmentation for robustness
Аугментация данных для устойчивости
After we’ve gathered some initial ground truth, we can augment it to generate more, albeit lower quality, ground truth. More data, especially more representative and diverse data, helps machine learning models learn more robustly.
После того как мы собрали некоторый исходный эталон, его можно аугментировать, чтобы получить больше эталонных данных — пусть и более низкого качества. Больше данных, особенно более репрезентативных и разнообразных, помогает ML-моделям обучаться устойчивее.
A typical approach is to generate synthetic data based on existing ground truth. DoorDash did this via random text augmentation where they varied the sentence order in the description and randomly removed information such as menu category. This helped to simulate the variation in menus where merchants don’t have detailed descriptions or menu categories. During model training, they had a ratio of 100 synthetic labels to 1 actual label.
Типичный подход — генерировать синтетические данные на основе имеющегося эталона. DoorDash делал это через случайную аугментацию текста: они меняли порядок предложений в описании и случайным образом удаляли информацию, например категорию меню. Это помогало имитировать разнообразие меню, где у мерчантов нет подробных описаний или категорий. При обучении модели они использовали соотношение 100 синтетических меток к 1 реальной.
Similarly, Cloudflare generated synthetic data to increase the diversity of their training data. This improved ML performance when classifying malicious HTTP requests (aka payloads). The intent was to get the model to focus on the higher-level structural, semantic, and statistical aspects of the payload, instead of the tokens and keywords.
Аналогично, Cloudflare генерировал синтетические данные, чтобы повысить разнообразие обучающей выборки. Это улучшило качество ML при классификации вредоносных HTTP-запросов (то есть полезных нагрузок). Цель была в том, чтобы заставить модель сосредоточиться на более высокоуровневых структурных, семантических и статистических аспектах нагрузки, а не на токенах и ключевых словах.
To create negative samples, they generated pseudo-random strings via a probability distribution over complex tokens. They also increased difficulty by adding elements such as valid URIs, user agents, XML content, and even “dangerous” keywords or n-grams that frequently occur in malicious payloads. The goal was to desensitize the model to the presence of malicious tokens if the payload lacked the proper semantics or structure.
Чтобы создать негативные образцы, они генерировали псевдослучайные строки через распределение вероятностей по сложным токенам. Они также повышали сложность, добавляя такие элементы, как валидные URI, user-agent'ы, XML-контент и даже «опасные» ключевые слова или n-граммы, часто встречающиеся во вредоносных нагрузках. Цель была в том, чтобы десенсибилизировать модель к наличию вредоносных токенов, если у нагрузки нет соответствующей семантики или структуры.
The synthetic data was used to augment the core dataset by first training the model on increasingly difficult synthetic data before fine-tuning on real data. They also appended noise of varying complexity to malicious and benign samples to make their model more robust to padding attacks.
Синтетические данные использовались для аугментации основного набора: сначала модель обучали на всё более сложных синтетических данных, а затем дообучали на реальных. Они также добавляли шум разной сложности к вредоносным и безвредным образцам, чтобы сделать модель устойчивее к атакам с подкладыванием (padding attacks).
Similarly, Meta used synthetic data generators to generate sensitive data such as social security numbers, credit card numbers, addresses, etc. Uber also generated synthetic data to validate their anomaly detection algorithms during automated testing of data pipelines—this data was generated based on their experience and assumptions of fraud attacks.
Аналогично, Meta использовала генераторы синтетических данных для создания чувствительных данных, таких как номера социального страхования, номера кредитных карт, адреса и т. д. Uber также генерировал синтетические данные для проверки своих алгоритмов обнаружения аномалий во время автоматического тестирования конвейеров данных — эти данные создавались на основе их опыта и предположений об атаках мошенников.
Another technique is to look for samples similar to labelled data. This is akin to active learning where we find the “most” interesting samples for human annotation.
Другой приём — искать образцы, похожие на размеченные данные. Это сродни активному обучению, где мы находим «самые» интересные образцы для разметки человеком.
For Airbnb, after a human review confirms that the listing belongs to a particular category, they used pre-trained listing embeddings to find the 10 nearest neighbors (they called it candidate expansion). These 10 listings were then sent for human review to confirm if they belonged to the same category.
В случае Airbnb, после того как проверка человеком подтверждала принадлежность объявления к определённой категории, они использовали предобученные эмбеддинги объявлений, чтобы найти 10 ближайших соседей (они называли это расширением кандидатов). Эти 10 объявлений затем отправлялись на проверку человеку, чтобы подтвердить их принадлежность к той же категории.
DoorDash adopted a similar approach where they quantified similarity via edit distance and embedding cosine similarity. These similar items were directly added to the training data.
DoorDash применял схожий подход, измеряя сходство через расстояние редактирования и косинусную близость эмбеддингов. Эти похожие элементы напрямую добавлялись в обучающую выборку.
In another paper, Meta applied nearest neighbors on positive labels before active learning. They shared that data is often heavily skewed, with only a small fraction (1 in 1,000 or more) being relevant. Thus, using nearest neighbors as a filter reduced the number of samples to consider during active learning. This increased annotation efficiency.
В другой работе Meta применила ближайших соседей к позитивным меткам перед активным обучением. Они отметили, что данные часто сильно перекошены — релевантна лишь малая доля (1 на 1000 и реже). Поэтому использование ближайших соседей как фильтра сокращало число образцов для рассмотрения при активном обучении. Это повышало эффективность аннотации.
Cascade Pattern on smaller problems
Каскадный паттерн на меньших задачах
In most applications, the initial problem can be broken into smaller problems and solved via a cascade pattern. The benefit is that it allows simple, cheap, and low-latency solutions—such as heuristics—to chip away at the problem upstream. Machine learning models can then perform inference on the remaining instances that couldn’t be dealt with confidently.
В большинстве приложений исходную задачу можно разбить на меньшие задачи и решить через каскадный паттерн. Преимущество в том, что это позволяет простым, дешёвым и низколатентным решениям — таким как эвристики — отсекать часть задачи на верхнем уровне. ML-модели затем выполняют инференс на оставшихся примерах, с которыми не удалось разобраться уверенно.
Stack Exchange has several layers of defense against spam. The first line of defense is triggered when a spammer posts too often to be humanly possible. The spammer is hit with an HTTP 429 Error (Too Many Requests) and blocked or rate-limited.
У Stack Exchange несколько уровней защиты от спама. Первая линия обороны срабатывает, когда спамер постит слишком часто, чтобы это было физически по силам человеку. Спамер получает ошибку HTTP 429 (Too Many Requests) и блокируется или ограничивается по скорости.
The second line of defense is based on heuristics. Specifically, they run posts through an “unholy amount of regular expressions” and some rules. If a post is caught, it is sent to users to check and potentially flag it as spam. If six users flag it as spam (six flags lol), the post is marked as spam and the user is blocked, rate-limited, or prevented from posting.
Вторая линия обороны основана на эвристиках. В частности, они прогоняют посты через «нечестивое количество регулярных выражений» и некоторые правила. Если пост попадается, он отправляется пользователям на проверку и возможную пометку как спам. Если шесть пользователей помечают его как спам (six flags, лол), пост помечается как спам, а пользователь блокируется, ограничивается по скорости или лишается возможности постить.
The final line of defense is a (machine learning?) system that identifies posts most likely to be spam. They shadow-tested it and found it to be extremely accurate. It was catching almost all of the blatantly obvious spam. Eventually, this system was armed to cast three automatic flags and it drastically reduced the time to spam post deletion.
Финальная линия обороны — система (на машинном обучении?), которая выявляет посты, наиболее вероятно являющиеся спамом. Они тестировали её в теневом режиме и обнаружили, что она крайне точна. Она ловила почти весь откровенно очевидный спам. В итоге системе разрешили автоматически проставлять три флага, и это резко сократило время до удаления спам-постов.
Time till spam deletion drops from no auto-flag (red) to 1 auto-flag (green) to 3 auto-flags (orange)
Время до удаления спама падает: без авто-флага (красный), с 1 авто-флагом (зелёный), с 3 авто-флагами (оранжевый)
Cloudflare also combines heuristics and machine learning (and other techniques) to identify bot traffic. They shared a comparison: If machine learning inference requires ~50ms, then hundreds of heuristics can be applied at ~20ms.
Cloudflare также сочетает эвристики и машинное обучение (и другие методы) для выявления бот-трафика. Они привели сравнение: если ML-инференс требует ~50 мс, то сотни эвристик можно применить за ~20 мс.
Their heuristics classify 15% of global traffic and 30% of bot management customer traffic. These heuristics also have the lowest false positive rate among detection mechanisms—pretty good for a bunch of if-else statements! Thus, incoming traffic can first be filtered by heuristics to exclude 15 - 30% of traffic before what’s left is sent to machine learning.
Их эвристики классифицируют 15% глобального трафика и 30% трафика клиентов сервиса управления ботами. У этих эвристик также самый низкий уровень ложноположительных срабатываний среди механизмов обнаружения — неплохо для кучки операторов if-else! Таким образом, входящий трафик можно сначала отфильтровать эвристиками, исключив 15–30%, прежде чем остаток отправится в машинное обучение.
Meta started with rule-based heuristics to classify data sensitivity. These heuristics used counts and ratios to score data columns on sensitivity types. However, solely using these heuristics led to sub-par classification accuracy, especially for unstructured data. Thus, they augmented the rules with deep learning models that were able to use additional features such as column names and data lineage. This greatly improved accuracy.
Meta начала с эвристик на основе правил для классификации чувствительности данных. Эти эвристики использовали подсчёты и соотношения, чтобы оценивать столбцы данных по типам чувствительности. Однако одни лишь эвристики давали посредственную точность классификации, особенно для неструктурированных данных. Поэтому они дополнили правила моделями глубокого обучения, способными использовать дополнительные признаки, такие как имена столбцов и происхождение данных. Это сильно повысило точность.
Uber applied the cascade pattern by splitting the problem of payment fraud into two parts: Detecting if there’s an increased trend of fraud and protecting against fraud 24/7.
Uber применил каскадный паттерн, разбив задачу платёжного мошенничества на две части: обнаружение того, есть ли рост тренда мошенничества, и защита от мошенничества в режиме 24/7.
To detect an increased trend of fraud attacks, they trained multiple forecasting models along the dimensions of order time (when the order is fulfilled) and payment settlement maturity time (when the payment is processed). An increase in fraud shows up as a time-series anomaly. When this happens, it suggests that a new pattern of attack has emerged and fraud analysts are alerted to investigate it.
Чтобы обнаружить рост атак мошенников, они обучили несколько прогнозных моделей по измерениям времени заказа (когда заказ выполнен) и времени проведения платежа (когда платёж обработан). Рост мошенничества проявляется как аномалия во временном ряду. Когда это происходит, это сигнализирует о появлении нового паттерна атаки, и аналитики по мошенничеству получают оповещение для расследования.
To protect against fraud, they apply pattern mining to generate high-precision algorithms. Analysts review these algorithms to minimize false positives and unnecessary incidents before the algorithms are put into production. Once in production, these algorithms scan incoming transactions and flag/prevent potentially fraudulent ones.
Для защиты от мошенничества они применяют поиск паттернов (pattern mining) для генерации высокоточных алгоритмов. Аналитики проверяют эти алгоритмы, чтобы минимизировать ложноположительные срабатывания и ненужные инциденты, прежде чем алгоритмы попадут в продакшен. Уже в продакшене эти алгоритмы сканируют входящие транзакции и помечают/блокируют потенциально мошеннические.
Similarly, LinkedIn applies a cascade of three models to identify sexual harassment in direct messages. This allows them to minimize unnecessary account or message analysis, protecting user privacy. Downstream models don’t proceed unless the upstream model flags the interaction as suspicious.
Аналогично, LinkedIn применяет каскад из трёх моделей для выявления сексуальных домогательств в личных сообщениях. Это позволяет минимизировать ненужный анализ аккаунтов или сообщений, защищая приватность пользователей. Нижестоящие модели не запускаются, пока вышестоящая модель не пометит взаимодействие как подозрительное.
First, a sender model scores if the sender is likely to conduct harassment. This is trained on data from members that were confirmed to have conducted harassment. Features include site usage, invite behavior, etc. Next, a message model scores the content on harassment. This is trained on messages that were reported and confirmed as harassment. Finally, an interaction model scores whether the conversation is harassment. This is trained on historical conversations that resulted in harassment. Features include response time, proportion of predicted harassment messages, etc.
Сначала модель отправителя оценивает, вероятно ли, что отправитель совершит домогательство. Она обучена на данных участников, чьё домогательство было подтверждено. Признаки включают активность на сайте, поведение при приглашениях и т. д. Затем модель сообщения оценивает контент на предмет домогательства. Она обучена на сообщениях, на которые пожаловались и подтвердили домогательство. Наконец, модель взаимодействия оценивает, является ли разговор домогательством. Она обучена на исторических разговорах, которые привели к домогательству. Признаки включают время отклика, долю сообщений, предсказанных как домогательство, и т. д.
Cascading models to identify harassment: Behavior, Message, Interaction
Каскад моделей для выявления домогательств: поведение, сообщение, взаимодействие
Supervised and unsupervised learning
Обучение с учителем и без учителя
Supervised classification is typically used to categorize items and predict fraud while unsupervised anomaly detection is used to identify outlier behavior that may be malicious. While the former has higher precision, it doesn’t work well if labels are sparse or low quality. Also, it can’t classify items that haven’t been seen before. This is where unsupervised techniques are complementary.
Классификация с учителем обычно используется для категоризации элементов и предсказания мошенничества, тогда как обнаружение аномалий без учителя — для выявления выбросов в поведении, которые могут быть вредоносными. У первого выше точность, но оно плохо работает, если меток мало или они низкого качества. Кроме того, оно не может классифицировать элементы, которых не видело раньше. Здесь методы без учителя дополняют его.
Most supervised classifiers tend to be binary in output. DoorDash trained a separate binary classifier for each food tag. The model was a single-layer LSTM with fasttext embeddings. While they also tried multi-class models, they did not perform as well because the training data didn’t match the natural distribution of tags. In addition, they had too few labelled samples.
Большинство классификаторов с учителем дают бинарный выход. DoorDash обучал отдельный бинарный классификатор для каждого тега еды. Моделью был однослойный LSTM с эмбеддингами fasttext. Они также пробовали многоклассовые модели, но те работали хуже, потому что обучающие данные не соответствовали естественному распределению тегов. Вдобавок у них было слишком мало размеченных образцов.
Similarly, Airbnb trains a binary classifier for each listing category. Meta also used binary deep learners to predict data classification. Finally, LinkedIn’s model to identify harassment returns a binary output of harassment or not.
Аналогично, Airbnb обучает бинарный классификатор для каждой категории объявлений. Meta тоже использовала бинарные глубокие модели для предсказания классификации данных. Наконец, модель LinkedIn для выявления домогательств выдаёт бинарный результат — домогательство или нет.
IMHO, it’s usually better to use multiple binary classifiers (MBC) instead of a single multi-class classifier (SMCC). Empirically, MBCs tend to outperform SMCCs. From DoorDash’s experience, it was harder to calibrate SMCCs, relative to MBCs, to match the actual data distribution. (My experience has been similar.)
На мой взгляд, обычно лучше использовать несколько бинарных классификаторов (MBC), чем единый многоклассовый (SMCC). Эмпирически MBC обычно превосходят SMCC. По опыту DoorDash, SMCC было сложнее калибровать под реальное распределение данных, чем MBC. (Мой опыт схож.)
Second, MBCs are more modular than SMCCs. If a new class is added, it’s easier to train and deploy a new binary classifier instead of updating the SMCC with a new class and retraining it. This is especially convenient when we’re in the early stages of using machine learning and have just started collecting ground truth. For example, when Airbnb was gathering labels, they only trained new binary classifiers when there was sufficient training data.
Во-вторых, MBC более модульны, чем SMCC. Если добавляется новый класс, проще обучить и развернуть новый бинарный классификатор, чем обновлять SMCC новым классом и переобучать его. Это особенно удобно на ранних стадиях использования машинного обучения, когда мы только начали собирать эталон. Например, когда Airbnb собирал метки, они обучали новые бинарные классификаторы только при наличии достаточного объёма обучающих данных.
Nonetheless, MBCs have downsides too. When classifying an item, we’ll need to perform inference once via each binary classifier. With an SMCC, we just need to perform inference once. Furthermore, as the number of binary classifiers grow, it can be operationally challenging to support and monitor MBCs as opposed to an SMCC.
Тем не менее у MBC есть и недостатки. При классификации элемента нам нужно выполнить инференс по разу через каждый бинарный классификатор. С SMCC достаточно одного инференса. Более того, с ростом числа бинарных классификаторов поддерживать и мониторить MBC может быть операционно сложнее, чем один SMCC.
If enough labels for machine learning, train model; else, find more samples for labeling
Если меток достаточно для машинного обучения — обучаем модель; иначе — находим больше образцов для разметки
Another employed technique is unsupervised anomaly detection. LinkedIn shared the benefits of using unsupervised isolation forests to identify instances of abuse.
Ещё один применяемый приём — обнаружение аномалий без учителя. LinkedIn рассказал о преимуществах использования isolation forest без учителя для выявления случаев злоупотреблений.
First, ground truth for abuse was often low quality and quantity. Labels were fuzzy with low precision and recall was sometimes poor. Second, the problem was adversarial and attackers evolved quickly. However, as long as new abusive behavior is different from normal organic behavior, it can still be detected via unsupervised techniques. Finally, the problem is imbalanced, where abusive traffic accounts for a small fraction of total traffic.
Во-первых, эталон для злоупотреблений часто был низкого качества и в малом объёме. Метки были размытыми, с низкой точностью, а полнота порой была плохой. Во-вторых, задача была состязательной, и атакующие быстро эволюционировали. Однако пока новое вредоносное поведение отличается от нормального органического, его всё равно можно обнаружить методами без учителя. Наконец, задача несбалансирована: вредоносный трафик составляет малую долю от общего.
Cloudflare also shared about using unsupervised learning to identify bad bots. The main benefit was that, because unsupervised methods don’t rely on having known bot labels, they could detect bots that were never seen before. Furthermore, unsupervised techniques are harder to evade because anomalous behavior is often a direct result of the bot’s goal.
Cloudflare также рассказал об использовании обучения без учителя для выявления плохих ботов. Главное преимущество в том, что, поскольку методы без учителя не зависят от наличия известных меток ботов, они могли обнаруживать ботов, которых никогда не видели раньше. Более того, методы без учителя труднее обойти, потому что аномальное поведение часто является прямым следствием цели бота.
Explainability on the model and its output
Объяснимость модели и её результатов
A less-mentioned but nonetheless important component in industry applications is explainability. It helps us understand the model and interpret model predictions.
Менее упоминаемый, но не менее важный компонент в индустриальных приложениях — объяснимость. Она помогает понять модель и интерпретировать её предсказания.
To Uber, explainability was paramount in fraud detection. At their scale, incorrect fraud-related decisions can be disruptive to individuals and entire communities. Thus, they relied on human-readable rules—generated via pattern mining—to identify fraudulent transactions. Because these rules were human-readable, they could be evaluated by analysts before going into production.
Для Uber объяснимость была первостепенной в обнаружении мошенничества. На их масштабе ошибочные решения, связанные с мошенничеством, могут навредить отдельным людям и целым сообществам. Поэтому они полагались на человекочитаемые правила — сгенерированные через поиск паттернов — для выявления мошеннических транзакций. Поскольку эти правила были человекочитаемыми, аналитики могли оценить их перед выводом в продакшен.
Meta also emphasized feature importance. When adding a new feature, they wanted to understand its overall impact on the model. They also wanted to know what the model pays attention to when it predicts a given label. To operationalize this, they developed per-class feature importance for their PyTorch models, where feature importance is measured by the increase in prediction error after randomly permuting the feature.
Meta также делала упор на важность признаков. При добавлении нового признака они хотели понять его общее влияние на модель. Они также хотели знать, на что модель обращает внимание, предсказывая ту или иную метку. Чтобы реализовать это, они разработали важность признаков по классам для своих PyTorch-моделей, где важность признака измеряется ростом ошибки предсказания после случайной перестановки этого признака.
Airbnb also examines the features that contribute most to a category decision via a feature importance graph. From the graph below, it’s clear that having places of interest is very important to model performance. This suggests why Airbnb put extra effort into collecting place of interest data from human reviewers.
Airbnb также исследует признаки, которые сильнее всего влияют на решение о категории, через граф важности признаков. Из графика ниже очевидно, что наличие достопримечательностей очень важно для качества модели. Это объясняет, почему Airbnb приложил дополнительные усилия к сбору данных о достопримечательностях от проверяющих-людей.
Distance to Point of Interest is the most important feature by far and extra effort was made to collect it
Расстояние до достопримечательности — безусловно, самый важный признак, и для его сбора были приложены дополнительные усилия
• • •
• • •
Whew, that was a lot! Thanks for sticking with me through this trek of common patterns in content moderation. To recap:
Уф, это было немало! Спасибо, что прошли со мной этот путь по распространённым паттернам в модерации контента. Коротко напомню:
Собирайте эталон от пользователей, аннотаторов и высокоточных эвристик/моделей. Аугментируйте эталон синтетическими данными или похожими примерами ради устойчивых моделей. Используйте каскадный паттерн, чтобы разбить задачу на части с помощью правил и ML. Сочетайте лучшее из точного обучения с учителем и устойчивого обучения без учителя. Применяйте объяснимость, чтобы понять, как помочь модели и очеловечить вывод.
What other useful patterns are there in this problem space? Please share!
Какие ещё полезные паттерны есть в этой предметной области? Поделитесь!
References
Источники
How does Spam Protection Work on Stack Exchange? The Technology Behind Fighting Harassment on LinkedIn Project RADAR: Intelligent Early Fraud Detection System with Humans in the Loop Scalable Data Classification for Security and Privacy Using HITL to Overcome the Cold Start Problem in Menu Item Tagging Building Airbnb Categories with ML and Human-in-the-Loop Cloudflare Bot Management: Machine Learning and more Improving the Accuracy of our Machine Learning WAF using Data Augmentation Detecting and preventing abuse on LinkedIn using isolation forests Similarity Search for Efficient Active Learning and Search of Rare Concepts WTF! @ k: Measuring Ineffectiveness Search Quality Rater Guidelines: An Overview
If you found this useful, please cite this write-up as:
Если это оказалось полезным, пожалуйста, цитируйте эту заметку так:
Yan, Ziyou. (Feb 2023). Content Moderation & Fraud Detection - Patterns in Industry. eugeneyan.com. https://eugeneyan.com/writing/content-moderation/.
Yan, Ziyou. (Feb 2023). Content Moderation & Fraud Detection - Patterns in Industry. eugeneyan.com. https://eugeneyan.com/writing/content-moderation/.
or
или
@article{yan2023content,
title = {Content Moderation & Fraud Detection - Patterns in Industry},
author = {Yan, Ziyou},
journal = {eugeneyan.com},
year = {2023},
month = {Feb},
url = {https://eugeneyan.com/writing/content-moderation/}
}
@article{yan2023content, title = {Content Moderation & Fraud Detection - Patterns in Industry}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2023}, month = {Feb}, url = {https://eugeneyan.com/writing/content-moderation/} }
Join 11,800+ readers getting updates on machine learning, RecSys, LLMs, and engineering.
Присоединяйтесь к 11 800+ читателям, получающим обновления о машинном обучении, RecSys, LLM и инженерии.