Использование Char-RNN по самым глупым причинам

(ПРЕДУПРЕЖДЕНИЕ: Cards Against Humanity - это игра для взрослых, в которой много грубых выражений. В этом посте не будет отображаться ничего графического, только слова, но на рабочем месте это все равно может вызвать у вас странный вид)

Что такое юмор? Может ли ИИ понять, что делает что-то забавным? Может ли написание сообщения на Medium подтвердить время, которое вы потратили на обучение компьютера, чтобы говорить грязные слова?

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

Позвольте мне начать с того, что я не собираюсь открывать здесь ничего нового. Генерация текста была сделана в течение некоторого времени людьми намного умнее меня. Поэтому я не буду пытаться подробно объяснять используемые здесь методы глубокого обучения. Если вы такой же фанат глубокого обучения, как я, я просто скажу, что структура модели Embedding- ›LSTM-› Dropout- ›Dense (длина списка символов).

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

Проблемы с данными и почему я обманул

Первый шаг к любому проекту глубокого обучения - поиск данных. К счастью, группа сумасшедших уже потратила время на создание электронной таблицы каждой карты CAH, включая пользовательские расширения, созданные третьими сторонами. Это означало, что я мог либо обучить модель только ~ 2k официальными белыми картами, либо дополнительными ~ 19k сторонними белыми картами. Я использую белые карты, потому что есть больше примеров для обучения, но я обещаю дать вам представление о том, как это выглядит, когда модель также пытается создать черные карты.

Проблема со всеми этими красивыми данными в том, что они чрезвычайно разнообразны. По сути, глубокое обучение - это обучение программе распознаванию закономерностей и, в данном случае, их воспроизведению. Легко создать модель, генерирующую сценарии Шекспира, потому что у Шекспира последовательный голос, говорящий об относительно похожем содержании. И хотя у CAH есть отчетливый голос, у него нет согласованного содержания. И отчетливый голос размывается при внесении сторонних карт.

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

Из-за этой проблемы с разнообразными данными мне пришлось немного схитрить. Я не просто беру результат нейронной сети и добавляю его в список сгенерированных карточек. Карточки подвергаются небольшой постобработке и человеческому отбору, чтобы исключить карточки, которые явно не имеют смысла. Я понимаю, что это обман, но просто считаю систему скорее «Генератором идей для карт». Я обязательно покажу вам и необработанный результат.

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

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

ПОКАЖИТЕ КАРТЫ!

Ниже приведен список из 50 выбранных мною белых карт:

  • возбужденный навсегда
  • куча трудолюбивого дерьма в пятнах толстой кишки
  • непреднамеренная наука о чувствах
  • большие ванные комнаты
  • низкие ветви
  • было слишком поздно
  • шерсть пальто
  • белый пудинг
  • тайно щекотали мясо
  • большая толстая мертвая проститутка
  • гей
  • пытаюсь заняться сексом с большим какающим пальцем
  • палочки единорога
  • не недостатки
  • военные решения
  • забывая идеи превосходства.
  • хулиганские бамперы
  • куча неожиданных секс-видео.
  • эта засохшая медицинская смазка
  • пограничная неприлично тусуется.
  • твоя мама влюблена.
  • мужчина в стакане-поильнике
  • хорошая коробка
  • возбужденное белое правосудие.
  • отрыжка балерина
  • изготовление хлеба красных детей.
  • козырные сайты.
  • клоун петух.
  • собираюсь в обезьяний бар
  • не оружие.
  • 6-летняя няня.
  • моя удушающая дыра в подвале
  • ряд изношенных карт
  • грустный пенис.
  • папина забавная сука.
  • мои презервативы после путешествия.
  • страдать в школе
  • держит маму
  • сексуальное влагалище, которое просто хотела пообщаться
  • пара досок с выпивкой мозгов
  • размером с выпуклость.
  • бабушка тренируется.
  • пение «о танненбаанана».
  • 69%
  • просто любовная сумка
  • пальчиковая сука
  • печальные стандарты
  • покупка девственницы на вершине мира
  • что-то жареное
  • извиняюсь.

Карточки, которые имеют смысл, представляют примерно треть результатов, полученных сетью. По общему признанию, некоторые из вышеперечисленных карт не имеют смысла, но некоторые из них были скучными, и отчасти весело создавать какие-то бессмысленные карты.

Вот пример того, как выглядит необработанный (слегка отформатированный, но немодифицированный) вывод моей сети:

penis.
a shit-to-fie
the contraction of a burrito.
the ring my slowl sorr that tells you with the chinese dogs.	public motherwease.		
female social suberious with forgetting to parol into a petrodomined body show.		
an erection that lasts for hours.		
aming down on a game of minivan		
the poor		
a female orgasm		
subway shaving a single panties.		
a keyback horse with a tremendous dingus.		
an 80-year-old girlfriend		
a burger silence		
recaulation	
zego for one		
magic human remains for your secret school.		inappropriate labor.		
having sex with a dead baby fetus.		
(rangta butt pullting people.		
being kernels for domester of the mongrey.	
a flamboyant man that fires a smiling prince.		
a valladian memo baby.		
idiots		
a somen sort of this with the color off the side to.		spending the nuit as every day		
smelling sex lives of sexual charases.		
getting tape on it.		
a doctor with a sopping wet vagina.		
a fairy food.		
making up for your home.		
incurable some sexy tantrum.		
buffalo big destroying pop

Если вы играете в CAH, вы можете узнать некоторые из них. «Пенис», «идиоты» и «бедняки» - все это прямые копии карточек. А «женский оргазм» - это лишь небольшая модификация карты «женский оргазм». Это сеть, которая запоминает некоторые карты и просто выплевывает их обратно. Вот почему я анализирую карты на предмет их сходства с другими картами в базе данных, прежде чем принимать их.

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

Черные карты (приготовьтесь к мусору)

  • каждый успешный мужчина _________.
  • никто не думает, что я сильный желающий с ___.
  • танец шалтая - это ваш шанс быть убитым террористом-беженцем.
  • новым утром было _______ и ______.
  • что делать со звуком ______.
  • просыпаюсь, когда мой муж говорит _______
  • Я знал, что мы будем правы!
  • следующие люди изобрели ______.
  • наше пресловутое лицо моей последней должности было ________.
  • _______ - верный признак моей жизни.

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

Еще раз, вот пример необработанного вывода сети:

nothing is better the good of death?		
check out my new podcast about ______ and ______.		
ted cruz caused a still want of ______.		
the red room for eating ____ for a kirld and gentler ______.		the probilew recommend a trip was completely ruined by ______.		___________. a wedding is a the face.		
on cheeristed ______ for his/her dont combrate your signessant-class impressed the only acceptable to have ____ in public.		
g go goage ______.		
______ is a sure sign of my life.		
snatch and ______.		
what's the biggest source of tenish in the charge of ______.		what do you were a parent when i never have to be a proctive in raid of ______.		
momes, my imanager compaint for ______.		
i wonder if ______ was all over the poil.		
immers is now explore the honors using lose in the country black, ive had a horrible vision, father. i saw mountains crumbling, stars falling from _____.		
there can a parent that did you have a moment to talk to my kids and do with ______.		
i got have ______.

Время заключения

В целом, я бы назвал этот проект несколько интересным / забавным провалом. Белые карточки часто были забавными, но чем-то напомнили мне одну из тех викторин, где вы используете первую букву своей фамилии и имени, чтобы создать свое «имя проститутки» или что-то еще. Он просто складывал слова вместе и надеялся, что это будет смешно. И уж не о черных картах. Ясно, что здесь требовалось больше примеров.

Я предполагаю, что сеть, более близкая к «современной», могла бы работать лучше (не черт возьми), но я не уверен, что это было бы НАСТОЛЬКО лучше. Я думаю, что это дало бы результаты, которые имели бы смысл более последовательно и меньше копировали, но это шутки, вероятно, не было бы лучше. Проблема в том, что для того, чтобы делать хорошие оригинальные карты, вы должны знать культуру и вещи вокруг вас. И такая сеть знает только карты, которые уже созданы.

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

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

Ссылка на колоду (только белые карты)