Можно ли научить искусственный интеллект шутить? |
|||||||||||||||||||||||||||||||||||||||||||||||||||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-03-19 10:56 искусственный интеллект, алгоритмы машинного обучения, ИИ теория В последнее время машины одержали ряд убедительных побед над людьми: они уже лучше играют в го, шахматы и даже в Dota 2. Алгоритмы сочиняют музыку и пишут стихи. Учёные и предприниматели всего мира дают прогнозы по поводу будущего, в котором искусственный интеллект сильно превзойдёт человека. С большой вероятностью через несколько десятков лет мы будем жить в мире, в котором роботы не только водят автомобили и работают на заводах, но и развлекают нас. Одна из важных составляющих нашей жизни — юмор. Принято считать, что только человек может придумывать шутки. Несмотря на это, многие ученые, инженеры и даже простые обыватели задаются вопросом: можно ли научить компьютер шутить?
Компания Gentleminds, разработчик систем машинного обучения и компьютерного зрения, совместно с FunCorp попробовали создать генератор весёлых подписей к картинкам, используя базу мемов iFunny. Поскольку приложение англоязычное и используется преимущественно в США, подписи будут на английском. Подробности под катом. В отличие от сочинения музыки, в которой есть законы гармонии, природу того, что нас смешит, очень сложно описать. Мы иногда сами с трудом можем объяснить, что же нас рассмешило. Многие исследователи считают, что чувство юмора — один из последних рубежей, который необходимо преодолеть искусственному интеллекту, чтобы максимально приблизиться к человеку. Исследования показывают, что чувство юмора формировалось у людей долгое время под действием полового отбора. Это можно объяснить тем, что между интеллектом и чувством юмора есть положительная корреляция. Даже сейчас в нашем понимании юмор — это хороший маркер интеллекта человека. Умение шутить включает в себя такие сложные элементы, как искусное владение языком и кругозор. Ведь владение языком важно для некоторых видов юмора, (например, британского), которые во многом построены на игре слов. В общем, научить алгоритм шутить — не самая простая задача. Исследователи со всего мира пробовали научить компьютер придумывать шутки. Так, Жанель Шейн (Janelle Shane) создала нейронную сеть, которая пишет шутки в стиле «Тук-тук! Кто там?» (knock-knock jokes). Для обучения этой сети использовался набор данных из 200 knock-knock jokes. С одной стороны, это довольно простая задача для ИИ, так как все шутки в данном наборе имеют одинаковую структуру. С другой — нейронная сеть просто находит ассоциации между словами в небольшом наборе исходных данных и не придаёт этим словам никакого смысла. В результате получаются шутки, заточенные под один и тот же шаблон, которые в большинстве своем трудно назвать смешными. В свою очередь, исследователи из Университета Эдинбурга представили успешный метод обучения компьютера шуткам I like my X like I like my Y, Z. Основной вклад этой работы — создание первой fully unsupervised humor generation system. Полученная модель значительно превосходит базовую и генерирует забавные шутки, которые считаются людьми смешными в 16% случаев. Авторы используют только большое количество неразмеченных данных, а это указывает на то, что генерация шутки не всегда требует глубокого семантического понимания. Учёные из Университета Вашингтона создали систему, которая может придумывать пошлые шутки по шаблону that's what she said — TWSS (дословно: вот что она сказала; на русский можно перевести примерно как «если вы понимаете, о чём я»). «Вот что она сказала» — это хорошо известная группа шуток, ставшая вновь популярной после сериала The Office. Задача TWSS — проблема с двумя отличительными характеристиками: во-первых, использование существительных, которые являются эвфемизмами для откровенно сексуального характера существительных и, во-вторых, двусмысленность. Для решения TWSS использовалась система Double Entendre via Noun Transfer (DEviaNT). В результате в 72% случаев система DEviaNT знала, когда нужно сказать that's what she said — отличное достижение для этого типа программы на естественном языке. Авторы статьи представляют модель генерации шуток на основе нейронных сетей. Модель может генерировать короткую шутку, относящуюся к заранее указанной теме. Используется кодировщик для представления пользовательской информации о теме и декодер RNN для генерации шуток. Модель обучена на коротких шутках Конана О'Брайена (Conan Christopher O'Brien) с помощью POS Tagger. Качество оценивалось пятью англоговорящими людьми. В среднем данная модель превосходит вероятностную, обученную написанию шуток фиксированной структуры (описанный выше подход из Университета Эдинбурга). Исследователи из Microsoft также попытались научить компьютер шутить. Используя конкурс мультфильмов журнала The New Yorker в качестве данных для обучения, они разработали алгоритм выбора из тысяч самых смешных надписей, предоставленных читателями. Как видно из всех приведённых примеров, научить машину шутить — задача не из лёгких. Тем более у неё нет универсальной метрики качества, так как каждый может воспринять одну и ту же шутку по-разному. Да и сама формулировка «придумать смешную шутку» не выглядит конкретной. В нашем эксперименте мы решили немного облегчить задачу и добавить контекст — изображение. Системе требовалась придумать забавную подпись к ней. Но, с другой стороны, задача немного усложнилась, так как добавилось ещё одно пространство и требовалось научить алгоритм сопоставлять текст и картинку. Задачу создания смешной подписи к картинке можно свести к выбору подходящей из существующей базы или генерации новой подписи посредством какого-либо метода. В данном эксперименте мы попробовали оба подхода. Мы полагались на базу, предоставленную iFunny. В ней было 17 000 мемов, которые мы разделили на два компонента: картинку и подпись. Мы использовали только мемы, в которых текст располагался строго над картинкой:
Ниже подходы описаны более подробно. Анализ базы Любое исследование в машинном обучении всегда начинается с анализа данных. Прежде всего хотелось понять, какого рода изображения содержатся в базе. С помощью классификационной сети, обученной на https://github.com/openimages/dataset, для каждого изображения мы получили вектор с рейтингами для каждой категории и сделали кластеризацию на основе этих векторов. Выделили 5 крупных групп:
Результаты кластеризации в дальнейшем использовались при построении базового решения. Для оценки качества экспериментов была вручную собрана тестовая база из 50 изображений, которые покрывали основные категории. Качество оценивалось «экспертным» советом, определяющим, смешно или нет. Поиск по кластерам В основе подхода было определение ближайшего к картинке кластера, в котором подпись выбиралась случайным образом. Дескриптор изображения определялся с помощью категоризационной нейронной сети. Мы использовали 5 кластеров, выделенных ранее, с помощью алгоритма k-means: люди, еда, животные, анимация, автомобили.
Поиск по визуальной похожести Попытка кластеризации натолкнула на мысль, что нужно попробовать сузить пространство для поиска. И если кластеры внутри себя оставались очень разнообразными, то поиск картинки, наиболее похожей на входящую, мог принести результат. В рамках этого эксперимента мы всё так же использовали нейронную сеть, обученную на 7880 категориях. На первом этапе мы пропустили через сеть все изображения и сохранили 5 лучших по рейтингу категорий, а также значения с предпоследнего слоя (он хранит в себе как визуальную информацию, так и информацию о категориях). На этапе поиска подписи для картинки мы получали 5 лучших категорий и по всей базе искали изображения с наиболее похожими категориями. Из них мы брали 10 ближайших, и из этого набора случайно выбирали подпись. Также был проведён эксперимент поиска по значениям из предпоследнего слоя сети. Результаты у обоих методов были похожими. В среднем на 1-2 удачных подписи приходилось 5 неудачных. Это может быть связано с тем, что в подписи для визуально похожих фотографий людей многое играли эмоции человека на фото и сама ситуация. Примеры приведены ниже.
Membedding, или нахождение наиболее подходящей подписи через приведение дескриптора изображения в векторное пространство текстовых дескрипторов Цель построения Membedding — пространство, в котором интересные нам векторы находились бы «близко». Попробуем подход из статьи Word2VisualVec.
Для построения вектора, описывающего изображение, используем предобученную на 6000+ классов нейронную сеть https://github.com/openimages/dataset. В качестве вектора будем брать выход с предпоследнего слоя этой сети размерностью 2048. Для векторизации текста применялись два подхода: Bag Of Words и Word2Vec. Word2Vec обучался на словах из всех подписей к изображениям. Подпись преобразовалась следующим образом: каждое слово текста переводилось в вектор с помощью Word2Vec, и потом находился общий вектор по правилу среднего арифметического — усреднённый вектор. Таким образом, на вход нейронной сети подавалось изображение, а на выходе предсказывался усреднённый вектор. Для «встраивания» векторов текста в векторное пространство дескрипторов изображений использовалась трехслойная полносвязная нейронная сеть.
Для построения вектора методом Bag of Words, описывающего текст, воспользуемся следующим способом: подсчитаем частоту трёхбуквенных сочетаний в подписях, отбросим те, которые встречаются менее трёх раз, и составим словарь из оставшихся сочетаний. Для преобразования текста в вектор посчитаем количество вхождений трёхбуквенных сочетаний из словаря в тексте. Получим вектор размерности 5322. Результат (5 «ближайших» подписей):
Для похожих изображений подписи почти одинаковые:
В итоге соотношение удачных примеров к плохим получилось приблизительно 1 к 10. С большой долей вероятности это можно объяснить малым количеством универсальных подписей, а также наличием в обучающей выборке большого процента мемов, подпись которых имеет смысл, если пользователь обладает неким априорным знанием. Генерация подписей: подход WordRNN Основой этого метода является двухслойная рекуррентная нейронная сеть, каждый слой которой представляет собой LSTM. Основным свойством таких сетей является способность экстраполировать временные ряды, в которых следующее значение зависит от предыдущего. Подпись, в свою очередь, является таким временным рядом. Генерация подписей с помощью марковских цепей Марковские цепи являются популярным подходом для моделирования естественного языка. Для построения марковской цепи корпус текста разбивается на токены, например слова. Группы токенов назначаются состояниями и вычисляются вероятности переходов между ними и следующим словом в корпусе текста. При генерации следующее слово выбирается семплированием из вероятностного распределения, полученного при анализе корпуса. Вместо заключения Научить алгоритм писать шутки — задача невероятно сложная, но очень интересная. Её решение позволит сделать интеллектуальных помощников более «человечными». В качестве примера можно представить себе робота из фильма «Интерстеллар», чей бы уровень юмора регулировался, а шутки были бы непредсказуемыми в отличие от текущих версий помощников.
В общем, на сегодняшний день искусственный интеллект шутки генерировать не умеет (хотя и не все люди с этим справляются), а вот выбирать подходящую вполне может. Будем следить за развитием событий и участвовать в них! Источник: habrahabr.ru Комментарии: |
||||||||||||||||||||||||||||||||||||||||||||||||||