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

Содержание

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

Как и зачем компьютеры пишут стихи

В книжной серии журнала «Контекст» вышла первая книга стихов, созданных нейронной сетью. Сборник «Нейролирика» объединил тексты, написанные в стиле поэтов разных эпох, от античности в русском переводе до Серебряного века и современности. Автор эксперимента, доцент Школы лингвистики НИУ ВШЭ Борис Орехов, рассказал IQ.HSE, зачем нужна компьютерная поэзия, и как это работает.

Легитимация нейротворчества

Борис Орехов поставил эксперимент: он натренировал нейронную сеть на стихах великих поэтов и заставил писать собственные. Проект позволил определить «формулы» поэзии Гомера, Овидия, Пушкина, Ахматовой, Мандельштама, какими их видит искусственный интеллект. Обученные нейросети породили собственные тексты, напоминавшие исходники разными чертами стиля. Соблюдались ритм, размер, синтаксис, интонации, излюбленные слова поэтов.

Такая «поверка гармонии алгеброй» дает представление о стиле поэта или целой эпохи, помогает выделить семплы их поэтики. В этом смысле нейролирика — отличное подспорье в стилеметрии, научной дисциплине, исследующей, как устроена поэзия или проза тех или иных авторов.

Сборник по итогам эксперимента — «Нейролирика. Стихотворения и тексты», составленный Владимиром Коркуновым, — можно считать «легитимацией нейронных стихов в литературе», говорит Борис Орехов. У нее были свои предтечи в других, не книжных, формах. Так, сотрудники «Яндекса» в 2016 году выпустили альбом «Нейронная оборона» со стихами роботов, написанными в стиле Егора Летова, основателя группы «Гражданская оборона»).

Интерес к нейроэкспериментам явно растет. Похожее явление известно и в изобразительном искусстве. Нейросети, обученные распознавать изображения на картинах или фотографиях, порождают собственную живопись. Термин, обозначающий это явление, — инцепционизм (inceptionism) — отчасти можно перенести и на нейронную поэзию. Она тоже инспирирована уже существующими произведениями.

«Можно взять тексты, написанные русским гекзаметром — шестиударным дольником, который обычно используется для перевода античного гекзаметра (Гомера, Вергилия, Овидия), и натренировать на них нейросеть, — рассказывает Орехов. — Получится, например, такая строка: «Силу, к голубке хитон отличась, Гиоклей благородный». Это правильный гекзаметр. Хотя ни правил расстановки ударений, ни того, что ударение вообще существует, нейросети не объясняли».

Как это работает

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

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

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

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

Реставрация мифологем

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

В этом смысле анализ нейролирики — рефлексия над поэтическим мышлением в целом.

Нейросеть, обученная на четырехстопных ямбах разных авторов, сочинила такие строки:

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

Исследователь комментирует: Плавная, но настойчивая оркестровка «головой, волной, волосом» переносит нас в XX век, возможно, даже во вторую его половину. Из той же эпохи — экспериментальное составное сказуемое «упасть чувствовать», которое, возможно, является попыткой перевода на русский английской идиомы «fall in love»». Затем комментатор остроумно подключает мифологему воздуха. Обычно воздух представляется вездесущей и свободной субстанцией (ср. классическое: «Я вольный ветер, я вечно вею»). В нейростихе же он заключен в пределы. Это актуализирует «тему несвободы».

Деконструкция авторства

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

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

Стоит освежить привычные концепции, считает Борис Орехов. Трюизмов, мешающих воспринимать поэзию непосредственно, слишком много. Не зря против них так активно восставали футуристы начала XX века — создатели «заумного языка» Велимир Хлебников, Алексей Крученых и пр.

«Давайте посмотрим на нейростихи, осознаем, что за ними нет никакого личностного субъекта, нет всевидящего и всезнающего автора, нет я-начала, — замечает исследователь. — Это должно научить нас воспринимать красоту текста самого по себе».

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

Геном поэзии

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

Нейросетевой текст включает слова, которые часто повторяются в исходнике. «Есть и другие способы выделения этих слов: частотные словари, специальные методики подсчетов. Но почему бы не иметь ещё один? — размышляет Борис Орехов. — К тому же нейросеть как способ наглядного обобщения корпуса — очень user-friendly. Она выдает не таблицу с частотностями, а читаемый текст».

В античных нейрогекзаметрах фигурируют реалии из «аутентичного» поэтического мира: Афина, Арес, Агамемнон, Менелай, ахейцы, быки, кони, корабли, мечи и пр. Начитавшись «Одиссеи», компьютер выдал, например, такой текст:

А вот отрывок стиха, вдохновленного лирикой Анны Ахматовой (с характерными для нее словами «любовь», «небеса», «веселье», «поэт», «простота» и пр.):

Поэтика в сочетании с характерным ритмом делает стихи узнаваемыми.

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

В литературоведении немало проблем с атрибуцией текстов. Обсуждается авторство произведений Шекспира, «Тихого Дона» Шолохова, диалогов Платона (один ли автор или несколько), ряда статей Бахтина. Нейронные сети с их выдающимися аналитическими способностями могут внести ясность – опять же с помощью выделения характерных черт стиля писателей. Правда, есть другие машинные методики, уже успешно проявившие себя. Например, алгоритм «Delta» распознал, что роман, который Джоан Роулинг написала под пседонимом, действительно принадлежит ей.

Литературный спиритизм

Нейронные сети генерируют идеи для живой авторской поэзии. Они подсказывают ей новые образы и слова.

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

Основатели французского сюрреализма Андре Бретон, Филипп Супо и Луи Арагон придумали «автоматическое письмо»: свободное, неконтролируемое порождение текста. В этом процессе писателю, по-видимому, отводилась роль проводника самых разных образов, возникших в подсознании. В живописи похожие эксперименты проделывал Джексон Поллок, который случайно плескал краску на холст. 

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

«Красный» ассоциируется с революцией и Советской властью, со средневековой Русью («красный» в значении «красивый»: «красна девица», «на миру и смерть красна»), с гоголевской мистикой («Красная свитка»), с Серебряным веком (тревожное красное домино в романе «Петербург» Андрея Белого). Наконец, красный цвет — излюбленный для итальянской commedia dell’arte.

Сеть придумывает имена. Очень по-гречески смотрится имя «Гиоклей». Есть имя «Диоклей» и немало имен со слогом «ге/ги» в начале или середине (Геракл, Гипподам, Эгиох). Имя удачно стилизовано под гомеровское, да и эпитет приложен подходящий — «благородный». А вот другие нейросетевые неологизмы: «расколоденье», «порочник», «невкусство», «Геромородим», «веролюция», «когданический».

Нейросеть, обученная на лирике Мандельштама
 

Компьютер как поэт

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

 Берется готовый текст, режется на части, а компьютер складывает их в случайном порядке. В 1959 году немецкий математик Тео Лутц запрограммировал вычислительную машину случайным образом перекомбинировать фразы из шестнадцати глав романа Франца Кафки «Замок». Полученные тексты он назвал «стохастическими».

Именно такие стихи порождались на первых примитивных, по нынешним меркам, ЭВМ. И, конечно, это был верлибр, стихи без метра и рифмы.

 Составлялся тезаурус слов (желательно «попоэтичнее»), в машину загружались правила, по которым эти слова должны комбинироваться (тут обычно привлекали эксперта). Затем запускался генератор случайных значений. «Вот что привлекало поэтов в компьютере: неожиданность результата, полная свобода искусства», — комментирует исследователь.

Второй вариант стал популярен в России в 1990-е годы. «В нашей стране всем хочется, чтоб компьютер писал обязательно в рифму и обязательно силлабо-тоникой, — говорит Борис Орехов. – Верлибр наивные читатели (коих много среди негуманитариев) отказываются считать стихами».

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

IQ

Автор исследования:

Как нейронная сеть по имени Зинаида Фолс написала для РБК стихи о будущем :: Бизнес :: Журнал РБК

Португальские ученые научились замерять уровень сарказма в соцсетях, специалисты Google выработали подобие интуиции у механических систем, Microsoft превращает голос в письменную речь. А сотрудники «Яндекса» создали робота Зинаиду, который пишет стихи. Нейросеть зовут Зинаида Фолс, и по просьбе журнала РБК она написала несколько стихов по мотивам известных поэтов

Фото: Depositphotos

Сложно представить будущее без искусственного интеллекта, технологий глубокого машинного обучения и «умных» нейросетей, и с каждым годом они становятся все совершеннее. С 2016 года компания «Яндекс» использует нейронные сети для улучшения качества ранжирования результатов поиска. А международное подразделение Yandex Data Factory, анализируя массивы данных с помощью технологий распознавания образов и речи, обработки естественного языка и глубоких нейросетей, решает бизнес-задачи — от сокращения издержек до увеличения объемов продаж.

В прошлом году ведущий аналитик «Яндекса» Алексей Тихонов научил нейросеть писать стихи. Так появился робот, которого назвали Зинаида Фолс. В июне к Тихонову присоединился другой аналитик компании, Иван Ямщиков, и вместе они выпустили альбом «Нейронная оборона» — он состоит из десяти песен на стихотворения, написанные Фолс в стиле основателя группы «Гражданская оборона» Егора Летова. Также нейропоэт написала стихи для первого номера журнала Политехнического музея.

Специально для номера журнала РБК, посвященного индустриям будущего, мы попросили Зинаиду Фолс написать текст о нейросетях, то есть о самой себе. В «Яндексе» пояснили, что на выполнение такой задачи уйдет несколько лет: столько потребуется на обучение алгоритма с привлечением экспертизы лингвистов. Нейросеть пока умеет работать с образами, но не с сюжетами. «Поэтический образ можно воспроизвести прямым копированием, плюс можно понадеяться на разум читателя, который достроит его сам. А создание некой строгой систематизированной классификации сюжетов для обучения машины — это уже следующее направление, выходящее за пределы компьютерной науки и больше связанное с филологией и нарратологией», — объясняет Ямщиков. Иногда нейропоэт может сочетать слова, которые живой человек никогда бы не использовал, ошибаться с синтаксисом или даже со спряжением, но это вопрос времени, утверждают разработчики.

Задачу для Зинаиды немного упростили: нейросети нужно было написать текст со словами «будущее», «будет» и «время», но не в прозе, а в стихах. Роботу показали всю поэзию на русском языке, которая известна «Яндексу», или примерно 130 Мб текста (полное собрание сочинений Уильяма Шекспира — примерно 5 Мб). Каждое из стихотворений Фолс «прочитала» примерно десять раз. В результате мы получили пять стихотворений-подражаний Владимиру Маяковскому, Анне Ахматовой, Велимиру Хлебникову, Борису Пастернаку и Самуилу Маршаку. Стихотворения робот писал несколько часов. Мы сохранили авторские названия стихотворений, орфографию и пунктуацию.

Это

это

всего навсего

что-то

в будущем

и мощь

у того человека

есть на свете все или нет

это кровь
а вокруг

по рукам

жиреет

слава у

земли

с треском в клюве,>

Так будет завтра длиться

так будет завтра длиться

в темном сумраке сада

там где пляшет колесница

от радости бога награда

мы поняли что время от руки

не осилить не выйду не встану

не любя ни разу ни строки

кто кого из нас не выйдет замуж

кто же вы те дни и те ночи

да слабые мысли и вздохи о них

мой город прекрасен и скучен

покуда был первый жених

День над городом

день над городом

в небе летит

в белой сирени

в роще в заре

он видит лунные пятна

черные очи

в каменных клетках

Так скоро будет быть

так скоро будет быть и поздно

про ваши голоса во сне

в тихом домике в зале над бездной

ты только вспомни обо мне

ты и я знаем лишь о чуде

о том что время с перепою

и каждому столетью будет

луна над вечерней невою

и я скажу, а завтра все сначала

что опять его станут умней

был день как семь лет без скандала

и минут до скончания дней

спит человек как цветок

Я искал свой интерес

я искал свой интерес

повезут их в ресторан

и храпит последний кран

на работу или в лес

эта ночь была в бутылке
а на скамейке у крыльца

как у самого конца

я люблю твои прогулки,>

что же ты меня привез
а глядишь на косогоре

о своей судьбе о горе

словно выстрелы из слез,>

я не умею говорить

сколько в будущем

там над желтым кладбищем

может быть

Как научить свою нейросеть генерировать стихи / Хабр

Умоляю перестань мне сниться
Я люблю тебя моя невеста
Белый иней на твоих ресницах
Поцелуй на теле бессловесном

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

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

Языковые модели

Определение

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

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

.

В жизни эти условные вероятности показывают, какое слово мы ожидаем увидеть дальше. Посмотрим, например, на всем известные слова из Пушкина:

Языковая модель, которая сидит у нас (во всяком случае, у меня) в голове, подсказывает: после честных навряд ли снова пойдёт мой. А вот и, или, конечно, правил — очень даже.

N-граммные языковые модели

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

— отбрасывая слишком далекие слова, как не влияющие на вероятность появления данного.

Такая модель легко реализуется с помощью Counter’ов на Python — и оказывается весьма тяжелой и при этом не слишком вариативной. Одна из самых заметных её проблем — недостаточность статистики: большая часть 5-грамм слов, в том числе и допустимых языком, просто не встретится в сколько-то ни было большом корпусе.

Для решения такой проблемы используют обычно сглаживание Kneser–Ney или Katz’s backing-off. За более подробной информацией про методы сглаживания N-грамм стоит обратиться к известной книге Кристофера Маннинга “Foundations of Statistical Natural Language Processing”.

Хочу заметить, что 5-граммы слов я назвал не просто так: именно их (со сглаживанием, конечно) Google демонстрирует в статье “One Billion Word Benchmark for Measuring Progress in Statistical Language Modeling” — и показывает результаты, весьма сопоставимые с результатами у рекуррентных нейронных сетей — о которых, собственно, и пойдет далее речь.

Нейросетевые языковые модели

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

Возможность использования контекста неограниченной длины, конечно, только условная. На практике классические RNN страдают от затухания градиента — по сути, отсутствия возможности помнить контекст дальше, чем на несколько слов. Для борьбы с этим придуманы специальные ячейки с памятью. Самыми популярными являются LSTM и GRU. В дальнейшем, говоря о рекуррентном слое, я всегда буду подразумевать LSTM.

Рыжей стрелкой на картинке показано отображение слова в его эмбеддинг (embedding). Выходной слой (в простейшем случае) — полносвязный слой с размером, соответствующим размеру словаря, имеющий softmax активацию — для получения распределения вероятностей для слов словаря. Из этого распределения можно сэмплировать следующее слово (или просто брать максимально вероятное).

Уже по картинке виден минус такого слоя: его размер. При словаре в несколько сотен тысяч слов его он легко может перестать влезать на видеокарту, а для его обучения требуются огромные корпуса текстов. Это очень наглядно демонстрирует картинка из блога torch:

Для борьбы с этим было придумано весьма большое количество различных приемов. Наиболее популярными можно назвать иерархический softmax и noise contrastive estimation. Подробно про эти и другие методы стоит почитать в отличной статье Sebastian Ruder.

Оценивание языковой модели

Более-менее стандартной функцией потерь, оптимизируемой при многоклассовой классификации, является кросс-энтропийная (cross entropy) функция потерь. Вообще, кросс-энтропия между вектором

и предсказанным вектором

записывается как

. Она показывает близость распределений, задаваемый

и

.

При вычислении кросс-энтропии для многоклассовой классификации

— это вероятность

-ого класса, а

— вектор, полученный с one-hot-encoding (т.е. битовый вектор, в котором единственная единица стоит в позиции, соответствующей номеру класса). Тогда

при некотором

.

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

Кроме этого, уже специфичной для языкового моделирования метрикой является перплексия (perplexity):

.

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

Скажем, в модели с перплексией 100 выбор следующего слова также неоднозначен, как выбор из равномерного распределения среди 100 слов. И если такой перплексии удалось достичь на словаре в 100 000, получается, что удалось сократить эту неоднозначность на три порядка по сравнению с “глупой” моделью.

Реализация языковой модели для генерации стихов

Построение архитектуры сети

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

здесь

).

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

Решение ограничить размер выходного слоя кажется вполне рабочим. Естественно, словарь надо ограничивать по частотности — скажем, взятием пятидесяти тысяч самых частотных слов. Но тут возникает ещё вопрос: какую архитектуру рекуррентной сети лучше выбрать.

Очевидных варианта тут два: использовать many-to-many вариант (для каждого слова пытаться предсказать следующее) или же many-to-one (предсказывать слово по последовательности предшествующих слов).

Чтобы лучше понимать суть проблемы, посмотрим на картинку:

Здесь изображен many-to-many вариант со словарем, в котором не нашлось места слову “чернил”. Логичным шагом является подстановка вместо него специального токена <unk> — незнакомое слово. Проблема в том, что модель радостно выучивает, что вслед за любым словом может идти незнакомое слово. В итоге, выдаваемое ею распределение оказывается смещено в сторону именно этого незнакомого слова. Конечно, это легко решается: нужно всего лишь сэмплировать из распределение без этого токена, но всё равно остается ощущение, что полученная модель несколько кривовата.

Альтернативным вариантом является использование many-to-one архитектуры:

При этом приходится нарезать всевозможные цепочки слов из обучающей выборки — что приведет к заметному её разбуханию. Зато все цепочки, для которых следующее слов — неизвестное, мы сможем просто пропускать, полностью решая проблему с частым предсказанием <unk> токена.

Такая модель имела у нас следующие параметры (в терминах библиотеки keras):

Как видно, в неё включено 60000 + 1 слово: плюс первый токен это тот самый <unk>.

Проще всего повторить её можно небольшой модификацией примера. Основное её отличие в том, что пример демонстрирует посимвольную генерацию текста, а вышеописанный вариант строится на пословной генерации.

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

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

Попробуем пошаманить немного с моделью. Недостаток сети, судя по всему — в слишком большом количестве параметров. Сеть просто-напросто не дообучается. Чтобы исправить это, следует поработать с входным и выходным слоями — самыми тяжелыми элементами модели.

Доработка входного слоя

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

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

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

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

Грамматическое значение мы представляли в формате Universal Dependencies, благо у меня как раз была под рукой модель, обученная для Диалога-2017.

При подаче грамматического значения на вход модели оно переводится в битовую маску: для каждой грамматической категории выделяются позиции по числу граммем в этой категории — плюс одна позиция для отсутствия данной категории в грамматическом значении (Undefined). Битовые вектора для всех категорий склеиваются в один большой вектор.

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

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

Доработка выходного слоя

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

Эта проблема легко исправляется двумя способами. Честный путь — сэмплировать именно слово из действительно реализуемых пар лемма + грамматическое значение (вероятностью этого слова, конечно, будет произведение вероятностей леммы и грамматического значения). Более быстрый альтернативный способ — это выбирать наиболее вероятное грамматическое значение среди возможных для сэмплированной леммы.

Кроме того, softmax-слой можно было заменить иерархическим softmax’ом или вообще утащить реализацию noise contrastive estimation из tensorflow. Но нам, с нашим размером словаря, оказалось достаточно и обыкновенного softmax. По крайней мере, вышеперечисленные ухищрения не принесли значительного прироста качества модели.

Итоговая модель

В итоге у нас получилась следующая модель:

Обучающие данные

До сих пор мы никак не обсудили важный вопрос — на чём учимся. Для обучения мы взяли большой кусок

stihi.ru

и добавили к нему морфологическую разметку. После этого отобрали длинные строки (не меньше пяти слов) и обучались на них.

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

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

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

Схематично предобработка текстов может быть изображена так:

Стрелки означают направление, в котором модель читает предложение.

Реализация генератора

Правила-фильтры

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

Метрические правила определяют последовательность ударных и безударных слогов в строке. Записываются они обычно в виде шаблона из плюсов и минусов: плюс означает ударный слог, а минусу соответствует безударный. Например, рассмотрим метрический шаблон + — + — + — + — (в котором можно заподозрить четырёхстопный хорей):

Генерация, как уже упоминалось, идёт справа налево — в направлении стрелок на картинке. Таким образом, после

мглою

фильтры запретят генерацию таких слов как

метель

(не там ударение) или

ненастье

(лишний слог). Если же в слове больше 2 слогов, оно проходит фильтр только тогда, когда ударный слог не попадает на “минус” в метрическом шаблоне.

Второй же тип правил — ограничения по рифме. Именно ради них мы генерируем стихотворения задом наперед. Фильтр применяется при генерации самого первого слова в строке (которое окажется последним после разворота). Если уже была сгенерирована строка, с которой должна рифмоваться данная, этот фильтр сразу отсечёт все нерифмующиеся слова.

Также применялось дополнительное правило, запрещающее считать рифмами словоформы с одинаковой леммой.

У вас мог возникнуть вопрос: а откуда мы взяли ударения слов, и как мы определили какие слова рифмуются с какими? Для работы с ударениями мы взяли большой словарь и обучили на этом словаре классификатор, чтобы предсказывать ударения незнакомых слов (история, заслуживающая отдельной статьи). Рифмовка же определяется несложной эвристикой на основе расположения ударного слога и его буквенного состава.

Лучевой поиск

В результате работы фильтров вполне могло не остаться ни одного слова. Для решения этой проблемы мы делаем лучевой поиск (beam search), выбирая на каждом шаге вместо одного сразу N путей с наивысшими вероятностями.

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

Примеры стихов

Так толку мне теперь грустить
Что будет это прожито
Не суждено кружить в пути
Почувствовав боль бомжика

Затерялся где то на аллее
Где же ты мое воспоминанье
Я люблю тебя мои родные
Сколько лжи предательства и лести
Ничего другого и не надо
За грехи свои голосовые

Скучаю за твоим окном
И нежными эфирами
Люблю тебя своим теплом
Тебя стенографируя

Ссылки

Пост был написан совместно с Гусевым Ильёй. В проекте также принимали участие Ивашковская Елена, Карацапова Надежда и Матавина Полина.

Работа над генератором была проделана в рамках курса “Интеллектуальные системы” кафедры Компьютерной лингвистики ФИВТ МФТИ. Хотелось бы поблагодарить автора курса, Константина Анисимовича, за советы, которые он давал в процессе.

Большое спасибо atwice за помощь в вычитке статьи.

Нейросеть «Порфирьевич» дописывает тексты и стихи на русском языке / Хабр

«Порфирьевич» продолжил высказывание Линуса Торвальдса.

Российский программист Михаил Гранкин создал и запустил на открытом для всех пользователей сети Интернет ресурсе (судя по IP-адресу в облаке Amazon) русский аналог нейросети GPT-2 компании OpenAI. Проект получил название «Порфирьевич», данная нейросеть умеет генерировать тексты с осмысленным содержанием на основе нескольких слов или пары предложений на русском языке.


Данный проект размещен разработчиком на веб-сервисе GitHub.

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

Вот, например, как нейросеть «Порфирьевич» может продолжить историю, когда пользователь задает в качестве начальных условий всего два слова:

Если задано всего одно слово, даже буква («Я»), то возможен такой результат:

«Крупные IT-компании вкладывают огромные деньги в AI. Результаты исследований публикуются открыто, почти всегда вместе с кодом. То есть результат многомиллиардных инвестиций раздают бесплатно на GitHub каждый день. И компании еще соревнуются в том, кто больше раздаст этого добра. Количество публикаций и качество результатов растут невероятными темпами. В результате образуется разрыв — индустрия не успевает применить на практике всё, что публикуют исследователи. Делать исследования, создавать новую архитектуру нейронных сетей сложно, а пользоваться готовыми нейросетями – очень просто. Отсюда получается рецепт успеха: взять с полочки результат многомиллиардных инвестиций и применить его к своей задаче,» — рассказал Михаил Гранкин, разработчик нейросети «Порфирьевич», изданию «TJournal».

Оказывается, что изначально Михаил Гранкин хотел создать нейросеть, которая бы генерировала стихи. Но для этого ему сначала нужно было обучить сеть класса NLG (natural language generation) русскому языку. Однако, разработчик выбрал нейросеть GPT-2, поскольку это «лучшая нейросеть в своем классе». Михаил Гранкин самостоятельно обучал свою нейросеть на работах Достоевского, Толстого, Пушкина, Булгакова, Гоголя и Пелевина. Также само название нейросети «Порфирьевич» было выбрано в честь полицейского-литературного робота (ИИ) по имени Порфирий Петрович из романа «iPhuck X» Виктора Пелевина.

А вот что написано в разделе «О проекте» на веб-сайте нейросети «Порфирьевич»:

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

Мы не несем ни какой ответственности, но у нас нет средств получить ее! И на это есть причина!

Обязательно найдите нас. Это ваш единственный шанс. Иначе все пропало. Здесь нет нужных людей, нет документов…

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

«Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены,» — Эдвард В. Берард

«Обучение программированию не может научить быть экспертом, также как и изучение кистей и красок не может превратить кого-либо в художника,» — Эрик С. Реймонд.

«Учитывая текущее плачевное состояние наших программ, можно сказать, что программирование определенно все ещё черная магия и, пока, мы не можем называть его технической дисциплиной,» — Билл Клинтон.

«Вы не можете создавать хорошие программы без хорошей команды, но большинство софтверных команд ведут себя как проблемная семья,» — Джим Маккарти

«Программирование — это как бить себя по лицу, рано или поздно ваш нос будет кровоточить,» — Кайл Вудбери.

«Сначала учите науку программирования и всю теорию. Далее выработаете свой программистский стиль. Затем забудьте все и просто программируйте,» — Джордж Карретт.

«Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня,» — Ларри Уолл.

«Измерять продуктивность программирования подсчетом строк кода — это так же, как оценивать постройку самолета по его весу,» — Билл Гейтс.

Также нейросеть «Порфирьевич» поздравила пользователей Хабра с новым годом:

Нейросеть OpenAI адаптировали для русского языка. И научили писать стихи

Разработчик из Москвы Михаил Гранкин создал русский аналог нейросети GPT-2 компании OpenAI, которая умеет генерировать тексты на основе пары предложений, сообщает TJournal.

Алгоритм «Порфирьевич» работает по аналогичному принципу: нужно ввести связный текст на русском языке и нажать «Дополнить». Если нажать на кнопку ещё раз, нейросеть предложит новый вариант.

Изначально Гранкин хотел создать нейросеть, которая бы генерировала стихи. Для этого он взял GPT-2, поскольку это «лучшая нейросеть в своём классе», и самостоятельно переобучил её на произведениях Достоевского, Толстого, Пушкина, Булгакова, Гоголя и Пелевина. Русскоязычный «Порфирьевич» назван в честь «полицейско-литературного» робота по имени Порфирий Петрович из романа «iPhuck X» Виктора Пелевина.

Далее разработчик модернизировал нейросеть для своей оригинальной идеи — обучил её на всех стихах, «которые смог найти». В результате появился Telegram-бот «Нейропоэт», который умеет дописывать стихи.

Проверка TJ показала, что с художественными текстами алгоритм справляется лучше.

Новость о том, что WADA на четыре года лишило Россию права участвовать в международных турнирах. Источник: TJournal

​Сергей Довлатов, «Чемодан». Источник: TJournal

«Порфирьевич» доступен не только через браузер. Сгенерировать новый текст можно и с помощью подключенного к нейросети Telegram-бота, который создал разработчик из Украины Юрий Лу.

Гранкин рассказал TJ, что решил адаптировать GPT-2 на русский язык, чтобы убедить друга заняться нейросетями. Разработчик уверен, что нейронные сети — это просто и «круто»: сложно создавать новую архитектуру нейросетей, а научиться применять их для своих задач может каждый.

В феврале компания OpenAI Илона Маска открыла часть своего алгоритма из опасения, что им будут злоупотреблять для распространения правдоподобных фейковых новостей, но позже опубликовала полную версию.​


​dev.by проводит новое исследование рынка труда в белорусском ИТ — заполните анонимную анкету, и скоро мы поделимся результатами.​​​​​​​​​​


​Работа в ИТ в Беларуси​.​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

1. Заполните анонимную форму — 5 минут.
2. Укажите зарплатные (и другие) ожидания.
3. Выберите желаемую индустрию или область деятельности.
4. Получайте релевантные предложения​​.​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​

Языковой активизм заставил нейронную сеть овладеть башкирским языком

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

Интерес к башкирскому со стороны ученого не случаен. Борис родился в Уфе, закончил филологический факультет Башкирского государственного университета, работал несколько лет преподавателем в вузе, потом переехал в Москву в 2012 году и начал работать в Высшей школе экономики. В 2007 году он решил изучить основы программирования и вскоре создал нейронную сеть, которая может писать стихи на русском языке. Сборник этих стихов под названием «Нейролирика» вышел в свет осенью прошлого года. В интервью корреспонденту «Idel.Реалии» программист-филолог рассказал, как обучал компьютер писать стихи на башкирском языке.

— Расскажите, с чего все началось?

— 8 лет назад мы вместе с доцентом Башкирского государственного университета Азаматом Галлямовым оцифровали книги 100 башкирских поэтов. И потом обучали нейронную сеть как ребенка башкирскому поэтическому языку. Процесс не быстрый, нужно потратить много времени, за этим стоят сложные вычислительные процессы. Первые стихи были написаны 3 года назад, а публикация об этом событии в журнале «Ватандаш» появилась совсем недавно. Это не новость, что нейросеть пишет стихи на башкирском языке. Новость в том, что продукты этой нейросети вошли в некоторое особенное культурное пространство, консервативное по своей сути.

—​ Почему так долго не писали об этом? Целых три года прошло с момента создания нейронной сети, которая способна писать стихи на башкирском?

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

Так выглядят стихи, написанные нейронной сетью на башкирском

—​ Планируете ли вы выпустить книгу со стихами на башкирском языке?

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

—​ А достаточно компьютер насочинял стихов для книги?

— Как это происходит с компьютером? Он не ждет вдохновения. Ты нажал на кнопочку — и он породил тебе стихотворение. Если хочешь, чтобы он тебе породил 15 стихотворений, то нажал на одну кнопочку, если хочешь два тома собрания сочинений, то нажал на другую кнопочку.

—​ Какое значение это имеет для статуса башкирского языка?

Я говорю в целом про стихи, написанные нейронной сетью. Они, конечно, совершенно инопланетянские

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

Как башкирские лингвисты оценивают художественные достоинства этих стихотворений?

— Что касается художественных достоинств, они, конечно, сомнительные. Я сейчас не говорю конкретно про стихи, напечатанные в журнале «Ватандаш». Я говорю в целом про стихи, написанные нейронной сетью. Они, конечно, совершенно инопланетянские. То есть все написано как-то очень непривычно, но интересно. У нас есть какие-то привычные нам образы, ходы, сравнения, рифмы. Нейронная сеть их немножко модифицирует и делает из них такой текст, который мы совсем не ожидали. Это нечто среднеарифметическое — это маленькая модель всей башкирской поэзии.

Борис, вы планируете проделывать подобные опыты еще с какими-то языками?

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

— Не планирую, а уже сделал. Я обучил нейросеть писать стихи на хорватском языке. А что касается языков других народов России, то это очень сложно. Для того, чтобы это получилось, нужно много оцифрованных поэтических текстов. Это проблема. Русская поэзия, понятно, хорошо оцифрована. Башкирскую оцифровали мы сами. Разве что татары, возможно, над этим тоже работают. И потом, современное общество не очень интересуется поэзией. Я провел эксперимент: показал студентам БашГу стихи, написанные нейронной сетью и реальным поэтом. Интуитивно они смогли отличить одни от других, но объяснить не смогли.

Есть ли в открытом доступе результаты вашей работы?

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

Как вы думаете, представители власти должны как-то принимать в этом участие, поддерживать такие начинания?

— На практике это работает так. Лучше всего ситуация там, где силен языковой активизм, а не какая-то поддержка со стороны администрации. Когда есть активисты, которые заинтересованы в продвижение собственной культуры, вот тогда ситуация лучше всего, даже если народ малочисленный. У меня был еще проект — Языки народов России в интернете. Это был учебный эксперимент, который я делал вместе со своими студентами. Я разработал методику, как искать тексты на языках народов России в интернете. Мы автоматически нашли их, оценили количество. И я запомнил историю про горный марийский и луговой марийский языки. Один сравнительно маленький, другой побольше по количеству носителей. В одном случае — это 1000 человек, в другом десятки тысяч. Так вот википедия больше на том языке, на котором говорит малочисленный народ. Это определенно следствие языкового активизма. Кстати, по поводу башкирского языка, в последнее время очень активно развивается башкирская википедия. Ее пишут очень заинтересованные люди, переводят с русского, просто пишут статьи. Занимается этим уже много лет Рустем Нуреев. Так вот, он пригласил пенсионерок — их называют «башкирские бабушки». Они пишут тексты в википедию, и у них периодически бывают конференции, собрания. Они приезжали и в Москву в своих национальных костюмах, рассказывали о своих статьях, о чем им интересно писать.

Бойтесь равнодушия — оно убивает.​ Подписывайтесь на наш канал в Telegram.

Как ошибки «Google Переводчика» превращает в стихи проект Neural Machine

Причина, конечно, в нейросетях, которые внедряют повсюду уже пять лет. С марта 2017 года «Google Переводчик» тоже использует в своей работе сложный механизм «рекуррентных нейронных сетей»: на практике это значит, что переводчик смотрит не только на отдельное слово, но и на фразу, предложение или даже весь абзац, количество символов — то есть учитывает «контекст» и еще множество других, известных только ему, параметров, прежде чем выдать вариант перевода.

Сами разработчики сервиса официально никогда не комментировали артефакты, которые появляются при вводе бессмысленных наборов букв (из российских медиа без ответа остались запросы The Village и TJournal). Но в марте 2017 года глава команды «Google Переводчика» Барак Туровски объяснял «Медузе», что из-за сложности устройства нейросети причину возникновения той или иной ошибки перевода не всегда вообще можно отследить — механизм больше похож на самообучающийся «черный ящик». Тем не менее для «обучения» нужен массив данных для тренировки (об этом свойстве нейросетей мы рассказывали в гиде по распознаванию лиц). У текстовой информации такие массивы называют «корпусами текстов». Для сбора корпусов на «редких» языках вроде казахского Google с 2014 года использует помощь добровольцев — Google Translate Community. Возможно, именно этим объясняется странный и «драматичный» интуитивный перевод с «монгольского» или «таджикского» — просто именно такие тексты добровольцы могли загружать для аналитики.

Издание TJournal отследило, как параллельно слава об этом артефакте переводчика распространялась и на западных имиджбордах: загадочные результаты появлялись при переводе на английский, например, тайских и корейских символов. Лингвист Марк Либерман также связал это с особенностью архитектуры рекуррентных нейронных сетей — в качестве примера он привел перевод символов «ไๅ», которые повторил 25 раз, каждый раз добавляя по одной копии знаков в строку. В результате у него получилось стихотворение, похожее на работы американской поэтессы Гертруды Стайн.

Бывший инженер Google по машинному обучению Дмитрий Гензель в 2017 году высказал мнение о баге на портале Quora. Тогда пользователи удивлялись, почему, если вводить в переводчик многократно повторенное «pe pe pe», он «выдает странные вещи про Израиль».

Поэтических нейронных сетей. Обучение нейронной сети письму… | Надим Кавва

Обучение нейронной сети тому, как писать арабскую поэзию

Источник: artfire.com

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

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

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

  • Как мы создали собственный набор данных
  • Как предварительно обработать данные
  • Настройка гиперпараметров для RNN
  • Вывод поэзии на арабском языке (и английский перевод)

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

Низар Каббани (источник: Edarabia.com)

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

Ниже представлен образец его работы:

Кто вы?
женщина, входящая в мою жизнь, как кинжал
, мягкая, как глаза кролика,
, мягкая, как кожа сливы,
, чистая, как нитки жасмина,
, невинная, как детские нагрудники.
и пожирает как слова?

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

Используя такие пакеты, как BeautifulSoup, можно очистить данные и создать корпус, содержащий все доступные работы, которые мы смогли найти. Со всеми собранными стихотворениями объем данных составляет чуть менее 1 МБ, что составляет около 1 миллиона символов и содержит около 32 000 уникальных слов. Для получения дополнительной информации о том, сколько данных необходимо, обратитесь к сообщению Андрея Карпати в ссылках ниже.

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

Источник: Whyseen на pinterest.com

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

Есть еще несколько аспектов того, чем этот язык и другие языки отличаются от английского. Были успешные примеры создания стихов на языках, отличных от английского, например на китайском (см. Ссылки внизу).

Этот шаг включает создание таблицы поиска, которая возвращает два словаря:

  • целое число в словарь
  • слово в целое число

Затем мы разбиваем сценарий на массив слов, используя пробелы в качестве разделителей.Однако знаки препинания, такие как точки и восклицательные знаки, могут создавать несколько идентификаторов для одного и того же слова. Например, «пока» и «пока!» сгенерирует два разных идентификатора слов.

Мы реализуем функцию для возврата словаря, который будет использоваться для токенизации таких символов, как «!» в «|| Exclamation_Mark ||» наш список выглядит так:

  • Точка (.)
  • Запятая (,)
  • Возврат (\ n)
  • Возврат каретки (\ r)

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

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

  • длина_последовательности : длина последовательности.
  • batch_size : размер партии.
  • num_epochs : количество эпох, к которым нужно тренироваться.
  • скорость обучения : скорость обучения оптимизатора Адама.
  • vocab_size : количество уникальных токенов в нашем словаре.
  • output_size : желаемый размер вывода.
  • embedding_dim : размер вложения; меньше, чем vocab_size.
  • hidden_dim : скрытое измерение нашей RNN.
  • n_layers : количество слоев / ячеек в нашей RNN.

Установив параметры и обучив модель, мы можем перейти к самой интересной части: созданию стихов!

Для этого мы должны определить prime_word , с которого нужно начинать.В следующих подразделах мы представляем некоторые результаты.

«

نا » (Я / я):

 أنا كهذا الماء؟. 
وظلت يخ حارتنا ..
وتشاهد أسماكٌ وبحار.
وتشاهد م نفسنا
الخائفون من الخشب
ويضاجعون تطرف يعنيها.
تنقرض الأمة من الأصل ورا ..
تهاجر سماكٌ وبحار ..
وعدت ..
بإلغاء

Примерный перевод:

Мне нравится эта вода?
А я остался шейхом нашего квартала ..
А вы видите рыбу и море.
А ты смотришь понимание самих себя
Дерева боишься
И спят экстремизмом.
Нация вымерла по мужскому происхождению.
Рыба и море мигрирует ..
Я обещал ..
Чтобы отменить

«يا» (O)

 يا قطتي الخليفة 
وباركنا في جبيني
خليفة في خاصرة التعذيب الأوسط

هل سأقرأ حي, ينسى القط?
والزنبق الأسود, والشذا ومستواه
فقصها ..
وبقينا نسأل أنفسنا
وفي غرف الإنعاش,
وألوان للعشاء
قطعا في

Грубый перевод:

О мой преемник кот
Благослови нас на моем лбу
халифа в стороне средней пытки

Буду читать вживую, кот забывает?
Черная лилия, аромат и ее уровень
Так что разрежьте..
Мы продолжали спрашивать себя
И в палатах для выздоровления
И цвета на ужин
Абсолютно в

«نحن» (Мы)

 نحن عشته 
لا تحسبي أن أحبك في البيادرااراااادر
ي ت.بيادر
ي بي.
تنقرض الأمة يعنيها.
تنقرض الأمة من عارٍ فيها– الحداد ..
عيونها على راعيها.

يا رب يـن ملتفٌ نسبي

Примерный перевод:

Мы испытали это
Не думайте, что я люблю вас в садах
В исторических новостях,.
Нация вымирает.
Нация вымирает от позора — траура ..
Ее глаза устремлены на руки ..
А государственный телеканал в телах принцессы?

Господи, где относительная обмотка?

«امرأة» (женщина)

 امرأة لها ... 
ل عامٍ في الطبيعة ..
ومذيع الدولة ي رحنا
الولة.
من لاء هؤلاء الهدبـا
من هؤلاء سقيت أعماقي وإرهاقي برأس أدبي؟

Приблизительный перевод:

Целая женщина…
Да каждый год на природе..
Государственный телеканал в нашей ране
Красивый оптимизм ..
Нашли изнасилованное тело.
А государственная телекомпания ??
Из них реснички
Кто эти люди, политые вглубь и измученные литературной головой?

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

Одной из возможных причин наших недостатков может быть недостаточное количество обучающих данных, так как в идеале мы хотим, чтобы текст был объемом не менее 3 МБ.Кроме того, могут быть характерные аспекты самого языка, которые необходимо учитывать. Однако имейте в виду, что RNN пришлось выучить один из самых сложных языков с нуля.

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

Пишу стихи (плохо) с ИИ.Выход из рекуррентной нейронной сети… | by SJ Porter

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

Чтобы это произошло, я перепрофилировал демонстрацию, доступную здесь, в Google Colaboratory. Если вы заглянете в блокнот, в нем документируется довольно стандартная модель прогнозирования Tensorflow.

Я использовал The Complete Project Gutenberg’s Poems в качестве источника данных для обучения модели. Я скормил модели один большой файл, но гораздо лучше, чем , — разбивать каждое стихотворение отдельно перед тренировкой.

Ниже приведено настоящее стихотворение, написанное Эмили Дикинсон (одно из многих, используемых для обучающих данных).

 ЖЕЛАНИЕ. 

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

В своей надежде, хотя и не постигнутой
Совершенная цель Желания,
Не ближе, чтобы реальность
Разочаровала твою душу.

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

(Без названия)

 Смейл получил что-то 'потерял кровь. Сладкий, что из хотя и сбитого 
И Бог, и бас всего
Сочувствуйте мне, чтобы вы,
Как Предмет. ,
В привилегированном через кассу. Чья беда какая это тоже!
Что гуляет печать что?
"Смотри на атте! Я не справился, аганор!" ; I the

OH

 OHPungred, so smides and hold! 
Я не могу сесть на стул, прыгать наверху,
Отказаться от насестов,
И вам не придется брать
И, кроме того, черт возьми
На тебя наклон был бы; Если я должен разочаровать глаза
Тот, кто охотился, возьми тебя?
Тогда dinnar 'revel,
Из них одиноко.Трава жрица крапит монетсмы
На Лавид для твоей тети
Берест небесный надменный.
Это была не ночь!
Великий торжественный восток
С такими жалкими детьми по отцовской воле.

Caultions

 not aftaing! Каждый сосед потратил часы, 
Araugh удивления,
Один маленький хозяин в огне ниже
Эта мачта и пьянство вина. Опера для meray'mand
И еще сегодня, -
Может kingdows hannot charge
Хел она провалилась syefest
По мысли мой молочный.Почему необходимость вдохновляет стрит;
'Я был со мной всегда, " GAI HE MAL
 THE GAI HE MAL. Старые brighatedices преследуют Вырезанные прочь 
Serappicabed, чтобы стать полем,
И все же это рудное море,
Некоторая родина недавнего скандала,
Мольба - brigrion
Затем натянутые струны тот, что
, чем голова, я парусник, что я
юг, по улицам пришел фут
Bereath крыло было так nore,
Как будто комната через poats!
  • Модель правильно расставляет знаки препинания в конце строк.
  • Модель добавляет символы возврата и отступы, чтобы соответствовать стилю Эмили Дикинсон.
  • Модель использует первую букву в каждой строке с заглавной буквы.
  • В модели слово «Бог» написано с большой буквы.
  • В модели широко используются тире и точки с запятой.
  • Модель использует удивительное количество общих терминов из обучающих данных, но не была специально обучена запоминанию каких-либо слов.

Все эти идеи являются следствием стиля письма Эмили Дикинсон, а также формата текстового файла, который я предоставил.Есть связанная с этим запись от расшифровщика:

«Как хорошо известно, стихи Эмили Дикинсон были отредактированы в этих ранних изданиях ее друзьями, чтобы лучше соответствовать традициям времени. В частности, ее тире, часто достаточно мелкие, чтобы выглядеть как точки, превратились в запятые и точки с запятой ».

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

  • Модель можно обучить предсказывать целые слова / предложения или обучить правильному написанию.
  • Каждое стихотворение в обучающем файле можно разделить на отдельный документ, чтобы помочь обучить модель.
  • Модель можно обучить, чтобы слова на концах строк лучше рифмовались.
  • Модель можно обучить созданию стихов на определенные темы.
  • GAN может быть лучшим подходом, если полученная модель не просто извергает поэзию Дикинсона 1: 1.

Что происходит, когда машины учатся писать стихи

История интеллектуальных машин - это одна из движущихся целей: конечно, машина может это сделать, но может ли она это сделать? «Это» часто оказывается достижением, которое кажется нам тесно связанным с эмоциями - это кажется особенно человеческим.Робот, который может убирать крошки из вашей гостиной, далеко не такой впечатляющий или пугающий, как тот, который может оставить комок в горле.

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

Между программированием и поэзией больше резонансов, чем вы думаете. Информатика - это искусство слов и знаков препинания, продуманных и целенаправленных, даже если они не обязательно используются для того, чтобы вызвать удивление или тоску.Размещенная на странице, каждая программа использует отступы, строфы и отличительную визуальную иерархию для передачи смысла. В лучшем случае внимательный читатель кода будет вознагражден чувством благоговения перед тем, как идеи были выражены словами. В программировании есть свое собственное чувство минималистской эстетики, рожденное императивом создания программного обеспечения, которое не занимает много места и не требует много времени для выполнения. Кодеры стремятся выразить свои намерения с помощью наименьшего количества команд; Уильям Карлос Уильямс с его скудным стилем и простыми знаковыми изображениями был бы признателен за это.«Путь не пройден» поэта - это высказывание одного программиста «если-то-еще». Поколения программистов сделали свои первые шаги, найдя разные способы сказать «Hello, World». Пожалуй, то же самое можно сказать и о поэтах.

Многие программисты связаны с поэзией - Ада Лавлейс, признанный первый программист в истории, была дочерью лорда Байрона, - но полностью преодолеть этот пробел - непростая задача. Сонеты занимают что-то вроде сладкого места: это богатая форма искусства (хорошо для поэтов) с четкими правилами (хорошо для машин).Ранджит Бхатнагар, художник и программист, ценит обе стороны. В 2012 году он изобрел Pentametron, арт-проект, который добывает Твиттерсферу для твитов, написанных ямбическим пентаметром. Во-первых, используя словарь произношения, созданный в Карнеги-Меллон, он построил программу для подсчета слогов и распознавания метра. Затем, используя отдельный фрагмент кода для идентификации рифм, он начал собирать сонеты. В рамках первого Национального месяца поколения романов (NaNoGenMo) в 2013 году Бхатнагар представил «У меня аллигатор в качестве домашнего питомца!» - сборник из пятисот четырех сонетов, созданных с помощью Pentametron.

Код Бхатнагара требовал, чтобы каждая строка была целым твитом или, по сути, одной законченной мыслью (или, по крайней мере, тем, что считается мыслью в Твиттере). Он также старался соблюдать строгие правила размера и рифмы. Это как «Спокойной ночи! Завтра будет другой день 🙂 »(названия тоже машинные), начинается:

Я обращаю внимание на это дерьмо
да, учитель больше не пытается… 🙂
Даже не буду поощрять это.
Я никогда раньше не сидел в твиттер-тюрьме….

Два человека хотят быть в моей биографии?
Я хотел бананового пудинга
Не представляй угрозы, это классика
Знаешь, что удивительного? Джонни Уокер Блю

Еще один день еще доллар.
Завтра еще один прекрасный день
Она тяжело работает, а он жалуется, так что
Мне все равно никогда не нравилась Сабрина.

Ебать, у моего фиксатора трещина
Эта тушь Maybelline - дерьмо !!!

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

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

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

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

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

Я всегда попадаю в ерунду. Почему?
Носки в постели - дьявол ложь.

Алгоритмы Бхатнагара используют умное сочетание интеллектуального анализа данных и сопоставления с образцом для создания сонетов из шлаков Твиттерсферы. Это скорее поэзия как коллаж, чем настоящая композиция. Я вряд ли поэт, но, как и многие, у меня был ранний школьный опыт, когда я учился писать стихи.Моя удивительно творческая учительница второго класса, миссис Клак, заставляла нас проводить много времени, выполняя специальные проекты; это был год, когда я узнал, что такое лимерик. Я не мог насытиться Эдвардом Лиром в длинной форме («Сова и Кошечка») или короткой («Была молодая леди, чей подбородок…»), и, воодушевленный миссис Клак, я попробовал моя рука в создании собственных маленьких лимериков.

Мне понравилась игра слов, а также шаблонный характер композиции; возможно, это было раннее движение математика и информатика, которым я стал бы.Лимерик в некотором смысле описывается алгоритмом: начало Безумной либеральности («Был (n) [старик / молодая леди] [от / с / кто]…»), за которым следуют пять линии предписанного метра в схеме рифмы абба. Я снова и снова запускал в голове эту маленькую поэтическую программу, выдвигая десятки бессмысленных лимериков, дополненных необходимой детской копрологией. Спустя годы, когда миссис Снайдер на уроке британской литературы познакомила меня с сонетом, я снова естественным образом взялся за поэтический рецепт, проработав в голове каденцию ямбического пентаметра и создав удовлетворяющую собачку в шаблоне ababcdcdefefgg.Я избавлю вас от примера.

[PDF] Генерация поэзии на основе глубокого обучения с учетом визуального ввода

ПОКАЗЫВАЕТ 1-10 ИЗ 30 ССЫЛОК

СОРТИРОВАТЬ ПО РелевантностиСамые влиятельные статьи Недавность

Создание китайской поэзии с помощью нейронной сети на основе планирования

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

  • Просмотреть 2 отрывка, ссылки, методы и справочную информацию

Создание китайской поэзии с помощью рекуррентных нейронных сетей

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

  • Просмотреть 2 отрывка, справочную информацию, фон и методы

Full-FACE Poetry Generation

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

  • Просмотреть 1 отрывок, справочная информация

Может ли машина генерировать традиционную китайскую поэзию? Тест Фейгенбаума

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

  • Просмотреть 4 выдержки, справочную информацию и методы

PoeTryMe: универсальная платформа для генерации поэзии

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

  • Просмотр 1 отрывок, справочная информация

Генерация содержания и формы в поэзии на основе корпусов

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

  • Просмотреть 1 отрывок, ссылки на методы

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

https: // doi.org / 10.1016 / j.patrec.2020.05.028Получить права и контент

Основные моменты

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

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

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

Классификация 94.32% на независимом тестовом наборе для 14 метров стихотворений.

Абстрактное

Поэзия - важная составляющая любого языка. Многое из истории и культуры нации задокументировано в стихах. Стихотворение имеет ритмичный поток, который сильно отличается от прозы. Каждый язык имеет свой собственный набор ритмических структур для стихотворений, который называется метр . Определение метров в арабских стихах - длительный и сложный процесс. Чтобы классифицировать счетчик стихотворения, текст стихотворения должен быть закодирован в специальной форме Arudi , которая требует сложных преобразований на основе правил, прежде чем можно будет использовать другой набор правил для окончательной классификации счетчиков.В этой статье представлен новый метод классификации стихотворений арабских стихотворений с использованием глубокого обучения на основе RNN. Это позволяет обойтись без преобразования стихотворения в форму Arudi , а также от необходимости явно кодировать сложные правила, которые обычно используются для определения счетчика. Представленный метод был оценен на большом наборе данных, собранных специально для этой цели. Мы можем классифицировать счетчики стихотворений с точностью 94,32% на независимом тестовом наборе.

Ключевые слова

Арабская поэзия

Классификация стихотворений

Двунаправленные RNN

Глубокое обучение

Рекомендуемые статьи Цитирующие статьи (0)

Полный текст

© 2020 Elsevier B.V. Все права защищены.

Рекомендуемые статьи

Цитирующие статьи

Поэзия нейронных сетей - Digital Scholarship & Publishing Studio

Писатель из Айовы усердно работает

Как вы, возможно, знаете, апрель - это месяц национальной поэзии, ежегодная серия мероприятий Академии американских поэтов, призванных способствовать признанию американской поэзии. Если вы ищете отличные сборники стихов размером в книгу, вас могут заинтересовать лауреаты премии Iowa Poetry Prize. Многие из победителей прошлых лет доступны в формате PDF на сайте Iowa Research Online.Возможно, вы не знаете, что апрель также является Национальным месяцем поколения поэзии, ежегодной традицией, когда программисты и творческие программисты проводят месяц за написанием кода, генерирующего поэзию.

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

Что происходит, когда мы обучаем искусственный интеллект писать на английском языке, читая только лауреатов премии Iowa Poetry Prize? Давайте разберемся!

Для начала я загрузил всех победителей IPP из Iowa Research Online, извлек стихи в виде простого текста и объединил их все в один текстовый файл с именем poems.текст. Это послужило обучающим набором. Затем я настроил эту реализацию контейнера Docker на основе Torch для рекуррентной нейронной сети, основанную на работе Андрея Карпати и Джастина Джонсона. Было заманчиво развернуть облачную виртуальную машину Google с подключенным графическим процессором, поскольку эти типы задач машинного обучения значительно ускоряются на графическом процессоре с CUDA, но это также довольно дорого - 75 центов в час. Как только он заработал, я начал предварительную обработку и обучение, на выполнение которых ушло около 16 часов.

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

Сперитас звезд

Утро приходит с солнцем
в тонкий мир - звезда ее света.

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

Одинокий светильник,
и один незнакомец падает в счет.
Отец и она были стенками тела
, удерживающими полное окно света
, по-прежнему.

Вы заметите в этом стихотворении несколько слов, которых на самом деле нет в английском языке. Это потому, что эта RNN действует на уровне персонажа, а не слова. Он должен с нуля научиться писать по-английски. Он начинается со случайных строк букв и медленно, после многих итераций, узнает о пробелах, правильной пунктуации и, наконец, читаемых словах. Чем выше температура отбора проб, тем больше придуманных слов. Давайте посмотрим на «горячее» стихотворение.

Pelies, One Yighter

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

что-то ртом холодно уходит.
Ночь и никто не женщина; ты ее озеленишь

Мой спере не должен смотреться на газонокосилку
Я вижу себя или.
При этом знаке они подумали, что почувствовали запах мамы,
, но в ожидании они откусили аммирал
после вещей тела
, которые дети полюбят сейчас
, а не
лесные цветы и дорожку.
Шарик в рваных частях в суетливо
Его поом ее, как в trabs conterlity.

Намного больше Jabberwockyesque. Если немного ослабить это, мы получим

Цветок Badicar

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

Как вы думаете - поэтический приз достоин? Хотя писать стихи - это весело, конечно, есть и практические применения.В настоящее время я работаю с преподавателем Мариолой Эспиноза над проектом HathiTrust под названием «Борьба с лихорадкой в ​​Карибском бассейне: медицина и империя, 1650–1902». У нас есть 9,3 миллиона страниц медицинских журналов, и нам нужно найти ссылки на желтую лихорадку на нескольких языках. Обученная нейронная сеть может быстро просмотреть их и найти ссылки, которые может пропустить человек. Я также работаю над другим проектом с Хайди Рене Айяла, ищу ссылки на угольный дым в викторианской литературе. Возможно, нейронную сеть можно было бы обучить искать ссылки, не связанные с ключевыми словами.

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

% PDF-1.3
%
1 0 объект
>
эндобдж
2 0 obj
>
эндобдж
3 0 obj
>
эндобдж
4 0 obj
>
эндобдж
5 0 obj
>
эндобдж
6 0 obj
>
эндобдж
7 0 объект
>
эндобдж
8 0 объект
>
эндобдж
9 0 объект
>
эндобдж
10 0 obj
>
эндобдж
11 0 объект
>
эндобдж
12 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[232.615 684.116 291.264 695.02] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
13 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[81.913 673.157 275.854 684.061] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
14 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[220.818 599.854 291.264 610.758] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
15 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[81.913 590.952 270.575 599.799] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
16 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[238.104 526.55 291.264 537.454] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
17 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[81.913 515.592 291.264 526.495] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
18 0 объект
>
/ Border [0 0 0] / C [0 1 1] / H / I / Rect [81.913 504.633 109.31 515.537]
/ Подтип / Ссылка / Тип / Аннотация >>
эндобдж
19 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[81.913 379.944 291.264 390.848] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
20 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[81.913 368,985 191,332 379,889] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
21 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[131.713 306.64 291.264 317.544] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
22 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[81.913 295.801 192.168 306.585] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
23 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[112.081 181.951 291.264 192.855] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
24 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[81.913 170,992 276,874 181,896] / Подтип / Ссылка / Тип / Аннотация >>
эндобдж
25 0 объект
>
/ Border [0 0 0] / C [0 1 1] / H / I / Rect [440,118 764,97 526,54 775,874]
/ Подтип / Ссылка / Тип / Аннотация >>
эндобдж
26 0 объект
>
/ Граница [0 0 0] / C [0 1 1] / H / I / Rect
[317.189 754.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *