Эта статья представляет собой общий обзор работы Джефф Ву и меня над нашим финальным проектом CS 224N в Стэнфорде. Бумага и плакат доступны для тех, кто хочет глубже погрузиться в технические детали нашей работы.

Фон и набор данных

Русские тролли использовали социальные сети для нацеливания на американских избирателей во время избирательного сезона 2016 года. В частности, одна ферма троллей, Агентство интернет-исследований, маскировалась под консервативных сторонников Трампа, чтобы делиться контентом, призванным разделять американцев, подавлять избирателей и рекламировать Трампа как лучшего кандидата. По данным фирмы по кибербезопасности The New, объем контента, созданного IRA и аналогичными фермами троллей, ошеломляет: 10,4 миллиона твитов, 1100 видео на YouTube, 116 000 сообщений в Instagram и 61 500 уникальных сообщений в Facebook, опубликованных с 2015 по 2017 год. Знания. В связи с приближением очередных президентских выборов проблема правильного выявления российских троллей и удаления их контента стала более актуальной, чем когда-либо.

Когда дело доходит до решения проблемы русских троллей, кажется, что одна социальная сеть не участвует в обсуждении: Reddit.Reddit размещает ряд политических форумов, таких как r / policy и r / The_Donald, которые делают его особенно привлекательным. уязвимы для политического вмешательства, и тем не менее количество помеченных данных о троллях крайне ограничено. Единственным источником является отчет Reddit о прозрачности за апрель 2018 года, который включает 944 аккаунта, связанных с Агентством интернет-исследований. Некоторые из этих учетных записей были многочисленными, с сотнями комментариев и десятками тысяч очков кармы Reddit, показывающими, насколько глубоко укоренились в культуре Reddit эти тролли до того, как были разоблачены Reddit.

Текущее состояние искусства

Брэндон Пунтуро опубликовал в январе отличную статью, в которой исследовал использование традиционных методов машинного обучения в наборе данных отчета о прозрачности, а также ряд комментариев Reddit, полученных с помощью Google BigQuery. Он использовал AUC в качестве показателя производительности, чтобы измерить, насколько точным был его классификатор, со штрафами за ложные срабатывания и отрицательные результаты. Его классификатору удалось достичь показателя AUC 0,74 с использованием классификатора случайного леса, что является впечатляющим достижением. Он рассмотрел метаданные каждого комментария, включая время публикации, опубликованный субреддит и количество голосов, полученных этим комментарием вместе с его телом.

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

Нейронная архитектура

Было показано, что нейронные сети обеспечивают превосходную производительность при решении конкретных языковых задач по сравнению с традиционными методами машинного обучения или статистическими методами. На базовом уровне эти сети функционируют за счет использования скрытых нейронов, связанных весами, которые представляют силу связи между нейронами. Каждый раз, когда нейронный слой обучается на образце комментария, разница между предсказанным и истинным выходом вызывает обновление весов с помощью процесса, известного как обратное распространение. Обратное распространение вместе с нелинейными слоями, такими как ReLU или сигмовидная функция, образуют основу нейронных сетей и предоставляют возможность достичь современной производительности (SOTA) на том же наборе данных Reddit.

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

  1. Слой предобученных встраиваний BERT
  2. Средний нейронный слой
  3. Выпадающий слой
  4. Классификационный слой

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

1. Слой встраивания BERT

Каждый комментарий Reddit из набора данных сначала проходит через слой BERT для создания встраиваемого представления предложения. Вложение слов - это отображение слов или фраз из данного словаря в соответствующий разреженный вектор действительных чисел, представляющее отношение этого слова ко всем другим словам в словаре. В октябре Google выпустил технический документ о представлениях двунаправленного кодировщика для трансформаторов, новом типе встраивания слов, который совместно определяется левым и правым контекстами слова в предложении. Было показано, что при использовании в качестве слоя внедрения в нейронной архитектуре это представление языковой модели обеспечивает высочайшую производительность в наборе данных с ответами на вопросы SQuAD, и оно также начинает применяться к другим задачам НЛП.

Основная причина, по которой BERT особенно интересна для этого набора данных, заключается в том, что мы работаем с таким небольшим набором данных (~ 14000 комментариев троллей и не троллей), и было бы сложно построить языковую модель только на основе этого корпуса. Используя встраивание слов, созданное BERT, мы можем объединить предварительно обученную модель, обученную с немаркированными данными, которые Google получил с последующими нейронными слоями, обученными на наших помеченных данных. Этот процесс известен как трансферное обучение, и было показано, что он обеспечивает производительность SOTA на большом количестве приложений NLP.

Мы сравним улучшения производительности с различными средними нейронными уровнями и BERT с ванильным обучением передачи, что означает отсутствие среднего нейронного слоя.

2. Средний слой

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

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

Сверточные нейронные сети выполняют аналогичную задачу, но делают это, оперируя каждым комментарием и сворачивая их в векторы меньшей размерности, которые собирают информацию о n-граммовых отношениях, хранящихся в каждом комментарии, с помощью фильтров. Эти свертки затем передаются через слой максимального объединения, чтобы уплотнить информацию из свертки, чтобы захватить наиболее важные сигналы из каждой свертки. Обычно известно, что CNN лучше справляются с задачами классификации, чем LSTM, благодаря их способности более эффективно фиксировать краткосрочные и долгосрочные зависимости между словами. Частично это связано с тем, что RNN склонны придавать слишком большое значение последнему состоянию ввода, что не идеально для классификации.

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

3. Слой исключения

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

4. Классификационный слой

Этот последний слой принимает выходные данные слоя отсева и преобразует его в тензор логитов размера batch_size x 2, где каждому комментарию дается ненормализованная вероятность быть классифицированным как тролль (столбец 1) или не-тролль (столбец 2). Чтобы нормализовать эти оценки, мы используем функцию Softmax, чтобы получить вероятности, которые в сумме равны 1. Обратное распространение с использованием кросс-энтропийной потери выполняется с использованием этих логитов, и веса в сети соответственно обновляются.

Полученные результаты

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

Мы выполнили рандомизированный поиск по гиперпараметрам, чтобы оптимизировать количество скрытых единиц в RCNN, длину дополненного / усеченного комментария для каждой выборки и частоту отсева. Мы нашли оптимизированные гиперпараметры, которые позволили нам достичь тестовой AUC 0,846 с RCNN и 0,843 с CNN и размером луча 3.

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

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

Заключение

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

А пока есть множество забавных субреддитов, которые можно просмотреть (на свой страх и риск).