Пушкин – это нейросеть? Учимся распознавать сгенерированный текст

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

Суть подхода

Суть подхода заключается в том, чтобы 

  • выявить признаки, характеризующие сгенерированный текст,  

  • собрать обучающую выборку,  

  • с помощью одного из алгоритмов машинного обучения сделать предсказание.

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

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

Данные для обучения

Для обучения использовалось тексты из соревнования на Kaggle, сгенерированные нейронными сетями.

А теперь рассмотрим механизм подробнее. ОСТОРОЖНО, МНОГО МАТЕМАТИКИ!)

Все равно хочу увидеть

Признаки

Признаки — ключ к решению данной задачи.

На первом шаге строятся матрицы внимания с помощью предобученного BERT. 

d70a407f1eca515792aa45c81eefca36.pngИзображения взяты из статьи https://habr.com/ru/post/486358/Изображения взяты из статьи https://habr.com/ru/post/486358/

Затем на основе матриц внимания строятся фильтрованные графы.

Матрица вниманияМатрица внимания

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

Визуализация получаемых графовВизуализация получаемых графов

— При подсчёте гомологий считаем, что ребро есть, если оно есть хотя бы в одну сторону.

5c524caeb0d7e59801137deb1251623e.png

Топологические признаки 

Для каждого графа внимания с порогом n:

Метрические признаки 

b34e9b6208802ba2b11903a37d44d32a.pnge46e0629125965e7afbb5f2d86d6b1a6.png
  • Расстояние между графами — расстояние между их матрицами смежности.

  • Считаем расстояние от каждого фильтрованного графа до следующих графов

Штрихкодовые признаки

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

Для каждого графа внимания с порогом n:

  • Суммарное время жизни всех элементов штрихкода.

  • Среднее время жизни всех элементов штрихкода.

  • Дисперсия времени жизни.

  • Количество линий жизни, существовавших дольше заданного порогового значения.

  • Время рождения и смерти элемента с линией жизни наибольшей конечной длины.

  • Суммарное количество элементов с ненулевым временем жизни.

  • Энтропия штрихкода.

Визуализация штрихкодовых признаковВизуализация штрихкодовых признаков

Результаты классификации по метрике accuracy

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

Accuracy

  • Топологические признаки: 0.6291

  • Штрихкодовые признаки: 0.6227

  • Метрические признаки: 0.6276

  • Все признаки: 0.6429

Проверяем великих писателей на сгенерированность текста 

А.С. Пушкин

Проверено текстов 5.

Классифицировано как сгенерированные тексты — 3.

Пример матрицы внимания.

Пример для строк «Мой дядя самых честных правил …»Пример для строк «Мой дядя самых честных правил …»

Классифицированы как сгенерированные нейронной сетью:

1.     Буря мглою небо кроет, 
 вихри снежные крутя…

2.     Мой дядя самых честных правил …

3.     Последняя туча рассеянной бури! 
 Одна ты несешься по ясной лазури … 

Возьмем что-то более сложное и неочевидное

В.В. Маяковский

Проверено текстов 5.

Классифицировано как сгенерированные тексты — 2.

Пример матрицы внимания.

Пример для строк «Я волком выгрыз бы бюрократизм…»Пример для строк «Я волком выгрыз бы бюрократизм…»

Классифицированы как сгенерированные нейронной сетью:

1. Били копыта, 
 пели будто:  — Гриб. 
Грабь.
 Гроб.
 Груб …

2. В шатрах, истертых ликов цвель …

А.А. Блок

Проверено текстов 5.

Классифицировано как сгенерированные тексты — 0.

Пример матрицы внимания.

Пример для строк Пример для строк «ночь, улица, фонарь, аптека …»

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

Группа Мельница

Проверено текстов 5.

Классифицировано как сгенерированные тексты — 0.

Пример матрицы внимания.

Пример для строк «Есть такие дороги – назад не ведут...»Пример для строк «Есть такие дороги — назад не ведут…»

Тут видно, что слова прилив и морская связаны.

И напоследок немного русского рока. 

Машина времени

Проверено текстов 5.

Классифицировано как сгенерированные тексты — 0.

Пример матрицы внимания.

Пример для строк «Крысы придумали мир для крыс…»Пример для строк «Крысы придумали мир для крыс…»

В этом примере видно, как «внимание» сосредотачивается на повторяющихся словах. 

Анализруем стихи сгенерированные нейронной сетью

Таким образом стихи, проанализированные алгоритмом, были верно классифицированы, за исключением 3 из 5 стихов Пушкина и 2 из 5 стихов Маяковского. Но кто знает — может это и не ошибка;)

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

Мы проанализировали 9 текстов, созданных нейронной сетью, и получили 8 верных предсказаний. Результаты можно найти под спойлером в таблице предсказаний.

Итоговая таблица предсказаний. H — человек, М — машина.

Id

Text

Class

Predicted

1

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

H

M

2

О чем шумите вы, народные витии? 
Зачем анафемой грозите вы России? 
Что возмутило вас? волнения Литвы? 
Оставьте: это спор славян между собою, 
Домашний, старый спор, уж взвешенный судьбою, 
Вопрос, которого не разрешите вы.

H

H

3

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

H

M

4

Мой дядя самых честных правил, 
Когда не в шутку занемог, 
Он уважать себя заставил
И лучше выдумать не мог.
Его пример другим наука; 
Но, боже мой, какая скука
С больным сидеть и день и ночь, 
Я помню чудное мгновенье: 
Передо мной явилась ты, 
Как мимолетное виденье, 
Как гений чистой красоты.
В томленьях грусти безнадежной, 
В тревогах шумной суеты, 
Звучал мне долго голос нежный
И снились милые черты.

H

M

6

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

H

H

7

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

H

H

8

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

H

M

9

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

H

H

10

Били копыта, 
Пели будто:  — Гриб.
Грабь.
Гроб.
Груб.-
Ветром опита, 
льдом обута
улица скользила.
Лошадь на круп
грохнулась, 
и сразу
за зевакой зевака, 
штаны пришедшие Кузнецким клёшить, 
сгрудились, 
смех зазвенел и зазвякал:  — Лошадь упала!  — Упала лошадь! —
Смеялся Кузнецкий.
Лишь один я голос свой не вмешивал в вой ему.

H

M

11

Ночь, улица, фонарь, аптека, 
Бессмысленный и тусклый свет.
Живи еще хоть четверть века —
Все будет так. Исхода нет.
Умрешь — начнешь опять сначала
И повторится все, как встарь: 
Ночь, ледяная рябь канала, 
Аптека, улица, фонарь.

H

H

12

Река раскинулась. Течет, грустит лениво
И моет берега.
Над скудной глиной желтого обрыва
В степи грустят стога.
О, Русь моя! Жена моя! До боли
Нам ясен долгий путь! 
Наш путь — стрелой татарской древней воли
Пронзил нам грудь.
Наш путь — степной, наш путь — в тоске безбрежной —
В твоей тоске, о, Русь! 
И даже мглы — ночной и зарубежной —
Я не боюсь.

H

H

13

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

H

H

14

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

H

H

15

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

H

H

16

Налей еще вина, мой венценосный брат,  
Смотри — восходит полная луна;  
В бокале плещет влага хмельного серебра,  
Один глоток — и нам пора

H

H

17

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

H

H

18

Позабытые стынут колодцы,  
Выцвел вереск на мили окрест,  
И смотрю я, как катится солнце 
По холодному склону небес

H

H

19

Все отболит, и мудрый говорит:  
Каждый костер когда-то догорит. 
Ветер золу развеет без следа. 
Но до тех пор, пока огонь горит

H

H

20

Ты помнишь, как все начиналось. 
Все было впервые и вновь. 
Как строили лодки, и лодки звались 
Вера, Надежда, Любовь.

H

H

21

Вагонные споры — последнее дело,  
И каши из них не сварить. 
Но поезд идет, в окошке стемнело,  
И тянет поговорить.

H

H

22

Крысы придумали мир для крыс 
И для них он совсем неплох 
Живи себе по крысиным законам 
И будешь жить как бог

H

H

23

Меняется все 
в наш век перемен 
Меняется звук 
меняется слог

H

H

24

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

M

M

25

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

M

H

26

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

M

M

27

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

M

M

28

Душа его полна сожалений: Что-то с Ольгой стало? — В ней сердце долго ли страдало и как будто бы похорошело. Но вот уж луна обходит кругом небесный свод… И всё ей кажется темным да мрачным!… Она глядит не на дорогу –видит лишь верхушки лип… Да полно! Всякое может быть! Тут он вспомнил про Ленского своего соседа по имени Владимир Петушков. Тот недавно овдовел совсем (жена умерла вскоре после родов), а детей нет у него вовсе.

M

M

29

Но если бы даже очень захотел…, —сказал е я отец. Не может быть! -воскликнул Евгений.- Я это видал. И вот проказник вырос гордый и надменный: он уверен уж порядком отомстить обидчику*. Но выслушав печальный рассказ отца о том самом случае (Как узнал потом наш герой-сыщик) сжалился родитель молодой и пожалел его:- Мой бедный мальчик!-промолвил наконец Пророк слезным голосом амнистии невинной полный освободить тебя обещал. Ах как боялся я утраты за друга жизни драгоценной!…Вдруг мысль яснеет мне моя: еслиб только мог оказать услугу я этому простому человеку! Тут мой Онегин вспомнил про обещание своё Остаться наедине со мной Дабы рассеять горе напрасное опять задумчивой души его младое воображенье Раскаялось.

M

M

30

Я три раза был ранен, но не дрогнул. Я тридцать лет холостой: ни женушки ласки нетолерантной, ни подруг нежных зимних вечеров. Пора мне сделаться умней и тверже -жениться пора! Но полно.- Мне скоро сорок девять годков.—сказал как-то Евгений. И добавил с какой то непонятной улыбкой (Что за ерунда?) И точно также замолчав запрягнул свою лошадку…Опять задумался он над своей судьбой.Нучто ж? Судьбу мою поправлю непременно!-решил наконец Владимир Ленской****** Но где же взять денег? —снова обратился к нему поэт со слезным вопросом. Найдешь, —отвечал ему приятельски осклабя взор. Слушай! –воскликнул  Онегин протягивая руку юноше Даты садись поскорей да разгружайся, –торопил его сосед по саням Как здоровье твое?, −спросил

M

M

31

Я свободен словно ветер, Я могу ль тебя любить? Мой милый! что ты подумал? … Ты спросил меня однажды: Кого? Я сказал ему. Он отвечал мне также.*****Кто же он?, –снова раздался немой вопрос.-Никто;, но кто ж его мать?. И вот я здесь сам не знаю…-начал было Онегин рассуждать вслух своим замечательным слогом о разных материях и наконец кончил:- Мой бедный Ленский!… ужели для того лишь создал бог наш райские кущи, чтобы над ними властвовать нам?- Нет (совесть в том порукой), однако мысль благая у него иногда шевелится).– Ну так сделай одолженье твое,-обратился Евгений к другу с нежданной просьбой своей души. И друг тотчас согласился…

M

M

32

А у меня во дворе ходит девочка с каретом, Ей тринадцать лет; она грустна и молчалива. Когда ж настанет время ей стать девицей? Когда падучая звезда упадет к ней в окно,-ей будет грустно! Но не беда: вскоре отрада придет другая:-улыбнись ты сам себе!-и тоска по деве молодой пройдет. Тогда запиши ее при луне под березой… И скоро твой печальный глас раздается опять -звучно так же ясно как день!… Но эта песня любви тебе чуждою кажется.-Какая глупая песенка! подумал Евгений*.

M

M

Выводы

Мы рассмотрели алгоритм определения сгенерированных текстов, которые на «человеческий взгляд» выглядят весьма натурально. На данный момент подход дает прогноз с accuracy 0,64, что выше случайного предсказания. При этом алгоритм принял за сгенерированные нейронной сетью, большинство из стихов Пушкина и почти половину стихов Маяковского. Как говорится — совпадение,  не думаю … 

Статья написана на основе работ 1,  2,  3 Александры Штаревой и Екатерины Артемовой.

Если вы хотите ознакомиться с кодом проекта, то это можно сделать по ссылке.

А если хотите этот проект (или любой другой ваш проект) развернуть, захостить и протестировать, то можно воспользоваться нашим контейнерным Heroku-подобным облаком Amvera,  с возможностью доставки обновлений через push, в GIT. Для этого нужно зарегистрироваться, после чего начистится 1 т.р. и ввести до 5 декабря 2022 г. промокод HabrNNText, который зачислит еще 300 руб. на счет. 

© Habrahabr.ru