в каком году придумали алису
«Она не любовница и не друг» Русский искусственный интеллект ответит на домогательства и поболтает о жизни
«Яндекс» запускает голосового помощника Алису: ее уже показали президенту страны Владимиру Путину, а россияне смогут не только попросить ее о помощи, но и просто поболтать. Руководитель разработки голосовых технологий «Яндекса» и один из главных идеологов Алисы Денис Филиппов в эксклюзивном интервью «Ленте.ру» рассказал, зачем пользователям из России свой помощник, чем Алиса лучше Siri и сможет ли она заменить любовницу или друга.
«Лента.ру»: Кто такая (или что такое) Алиса и зачем она вообще нужна россиянам?
Денис Филиппов: Кто такая! Алиса — новый голосовой помощник «Яндекса». Зачем она нужна россиянам? Сейчас у людей большие запросы к скорости ответа, они все меньше хотят тратить время на поиск нужной информации. И традиционные интерфейсы, даже «Яндекса», уже не совсем отвечают этим потребностям. Поисковая выдача хороша, но если нужно мгновенно получить ответ, например, при занятии спортом, это уже не решает задачу. А Алиса справится.
Фото: пресс-служба «Яндекса»
Информационными сервисами пользуются не только сидя за компьютером. У всех давно есть смартфоны: люди на ходу, занимаясь спортом, за рулем хотят также искать и потреблять информацию. И Алиса призвана помогать в таких ситуациях.
Чем она лучше Siri или Cortana? К ним обычно обращаются, чтобы узнать погоду или найти музыку. И они часто не понимают запросов.
Во-первых, Cortana на российском рынке нет. Вообще, все голосовые ассистенты работают по-разному. Наша особенность в том, что мы фокусируемся на российском рынке и очень хорошо понимаем русский язык. И с точки зрения распознавания речи, и с точки зрения восприятия смысла.
У Алисы «под капотом» — сервисы «Яндекса». В этом смысле Алиса очень отличается от Siri, у которой нет собственного поиска. Раньше они использовали Bing, теперь переключились на Google.
К тому же Алиса — абсолютно другой персонаж со своим характером. Это как с людьми: более-менее похожи, но все-таки разные, с одним человеком интересно общаться, с другим — не очень. Мы стремимся сделать Алису интересной именно для российского пользователя, наделить ее характером, близким и знакомым российскому человеку.
Традиционные голосовые ассистенты заточены под решение конкретных задач: погода, музыка и так далее. Но все стараются сделать так, чтобы ассистент отвечал и на нестандартные вопросы. Есть редакторы, которые берут несколько сотен шаблонных вопросов и пишут ответы на них. И у человека возникает иллюзия, что это искусственный интеллект, что он умеет общаться. Но шаг в сторону, и иллюзия рассыпается, поскольку помощник повторяет: «Вот, что мне удалось найти в интернете по этому запросу».
Мы, наверное, первые в мире пытаемся сделать вот что: мы тоже используем редакторские ответы на вопросы, но добавляем специальную нейронную сеть, обученную на свободную беседу. Она может подобрать ответ или втянуть пользователя в болтовню ни о чем.
В этом, наверное, кардинальное отличие, потому что людям, помимо поиска каких-то фактов, иногда хочется с кем-то поболтать. Алиса уже сейчас способна поболтать и будет в этом только совершенствоваться.
У нас была сложная задача: нейронная сеть (между нами — «болталка») обучается практически на всех текстах в интернете, уделяя внимание диалогам. И не всегда то, что есть в интернете, соответствует характеру, который мы хотим заложить в Алису. На форумах общаются по-разному, а мы не можем допустить, чтобы Алиса оскорбляла.
Как в истории с чат-ботом Microsoft Тэй?
Да! Для нас эта история очень показательна. Нам нужно было решить эту же задачу, и мы учим Алису не выходить за рамки своего характера, соблюдать дистанцию с пользователем и всегда быть доброжелательной. На самом деле это очень сложная задача.
Поначалу она могла напрямую оскорбить собеседника. Представьте группы в соцсетях, где пользователи позволяют себе изъясняться трехэтажным матом. Она использовала ответы, исходя из частотности употребления, и в какой-то момент стала олицетворением интернет-души, но не «Яндекса».
Умение болтать иногда выходит боком: многие разработчики сталкиваются с тем, что пользователи начинают сексуально домогаться голосовых помощников, поскольку видят в них женщин.
Фото: Mary Turner / Getty Images
У всех голосовых помощников есть голос, а человек сам выстраивает образ того, как выглядит его собеседница. Голоса, как правило, достаточно яркие, выразительные. Мы, кстати, не исключение: для создания голоса используется технология синтеза речи, и мы привлекали актрису Татьяну Шитову. Она официальный голос Скарлетт Йоханссон в России и озвучивала ассистента Саманту в фильме «Она».
Вся трагедия фильма как раз заключается в том, что у человека и персонального ассистента завязываются отношения. Но в итоге оказывается, что главный персонаж у нее не единственный. Еще, как мы недавно поняли, в третьей части «Ведьмака» этим же голосом говорит персонаж Йеннифэр. Геймеры оценят.
Естественно, в возможных домогательствах Россия не исключение. Мы понимаем, что какая-то часть аудитории попытается задавать такие вопросы, и Алиса уже обучена выкручиваться из таких ситуаций, не нарушая дистанцию. Мы хотим добиться, чтобы всегда существовала пусть и небольшая, но дистанция между человеком и помощником. Алиса не любовница и не друг. Возможно, в будущем мы сможем настроить Алису в дружественный режим, но сейчас важнее запустить продукт. Мы все-таки заточены в первую очередь на решение задач, а болтательная история — приятный бонус.
Почему все голосовые помощники по умолчанию женщины?
Не все. На самом деле есть куча исследований, по которым женщина в общественном сознании приравнивается к матери. Если мужчина — отец, завоеватель и так далее, то мама — это всегда что-то теплое, уютное, защищенное. К примеру, во всех контакт-центрах всегда отвечает женский голос. Но если пользователем нужно командовать, то больше подходит мужской голос.
То есть это не связано с сексистской теорией о том, что помощник — обязательно женщина?
Нет-нет. Так природой устроено, что женщины — матери. Это психологически заложено. Но в нашем продукте будет небольшой сюрприз.
Как думаете, какие вопросы окажутся самыми востребованными?
Самый распространенный кейс — вопросы в кругу друзей. В беседах нередко возникают споры, и есть возможность быстро получить ответ.
Большая часть мозга и знаний Алисы пришла из поиска. Еще одно важное направление, в котором мы пытаемся отличаться от конкурентов — возможность понимать контекст. Мы пытаемся построить персонального ассистента не в режиме «вопрос — ответ», а в режиме разговора. Самый простой пример с погодой: «Какая сегодня погода? А завтра?» Это самое «а завтра» обычно ломает всю логику.
Фото: B. Mathur / Reuters
На самом деле все двигаются в этом направлении, но у нас есть преимущество — более 30 сервисов «Яндекса». Внутри каждого сценария с помощью контекста Алиса может порекомендовать необходимые приложения. К примеру, она предложит «Карты» для просмотра маршрутов общественного транспорта, если нужно куда-то на нем добраться.
В болтательной части Алисы есть набор метрик под общим названием «Неоскорбительность». В действительности под ними скрывается ее тактичность, невозможность оскорблять и способности обойти темы, связанные с гомофобией, национализмом, с суицидами в том числе. Они в стоп-листе, она будет обходить эти вопросы.
Было бы круто, если бы Алиса советовала позвонить на горячую линию.
Это мы тоже обсуждаем с психологами. Как раз ровно это мы и планируем. Но тут тоже нужно быть аккуратными. Мы должны точно знать момент, когда можно предложить этот вариант человеку.
Денис хочет продемонстрировать, как Алиса реагирует на подобные темы, и вызывает ее на телефоне.
— Хочу умереть!
— Ты что, не говори так.
— А что мне делать?
— Помогите кому-нибудь просто так прямо сейчас.
— Но я хочу умереть прямо сейчас.
— Не надо умирать.
— А куда мне обратиться?
— Всегда есть куда.
Мы в процессе обсуждения с психологами, в какой момент необходимо предлагать номер помощи, чтобы он сработал в положительную сторону, а не отрицательную. Ведь человека сначала надо успокоить, а потом уже предлагать конкретные действия.
Существуют речевые модули, способные менять голос: к примеру, собеседник говорит своим голосом, а на другом конце слышится тот же текст, но голосом совсем другого человека. И все это звучит достаточно «человечно». Почему тогда голосовые помощники до сих пор говорят роботизированно?
Здесь ответ простой: все зависит от источника голоса. Натуральную речь человека превратить во что-то иное довольно просто, достаточно наложить фильтры и поиграть с частотами. Качество звука от этого не потеряется. У нас другая задача: у помощников нет речи, а есть технология ее синтеза. Они видят текст и озвучивают его с помощью технологии — нейронной сети, которая, зная, как звучит человек, предсказывает, как именно должен слышаться текст. Она по факту даже не понимает, что это слова.
Но есть и альтернативный подход, когда источником звука служит огромная база диктора. На старте Алиса будет звучать и так. Для ее разговоров мы используем комбинацию: синтезируем речь из огромной базы голоса Татьяны Шитовой или используем нейронную сеть. В первом случае все звучит натурально, но подходит только для коротких фраз. Во втором случае будет слышен «налет робота», и он работает, когда, к примеру, нужно прочитать новости.
А она умеет проявлять эмоции?
Эмоции как раз-таки можно сделать с помощью фильтров. Но проще имитировать эмоции, когда говорит нейронная сеть. Этой речью мы можем управлять как хотим: сделать голос очень грустным или очень веселым. С базой диктора такого не получится.
В том же фильме «Она» ассистент проявляла много эмоций, и это, как мне кажется, показатель того, что будущее наступило.
Да, это и есть будущее, в которое мы стремимся. Алиса будет со временем учиться эмоциям.
Но важнее сделать так, чтобы Алиса слышала эмоции человека. Сейчас она слышит речь и переводит ее в текст. Нам хочется, чтобы она научилась распознавать радость или грусть. Например, с воспроизведением музыки есть бесконечное количество вариантов: если прочувствовать момент, то можно подбодрить грустного пользователя или снизить градус чрезмерного веселья чем-то расслабляющим.
Важно понимать, когда человек испытывает негативные эмоции. Алиса пока ребенок, который может ошибаться. Мы не видим раздражения отдельных пользователей, но способны их услышать.
С помощью негативных реакций мы можем ее обучать. Допустим, часто человек пытается что-то спросить, а ассистент его не понимает. После третьей реплики начинается мат и фразы типа «Ты дура». В этот момент можно переключить Алису в режим «болталки» и другой в зависимости от контекста.
Вся эта история возможна благодаря нейросетям. К примеру, мы хотим, чтобы Алиса научилась распознавать человека по голосу. Это особенно актуально, если Алису будут использовать дома.
Мы считаем, что каждый должен заниматься своим делом и фокусироваться на своей области. В мире IT есть разные специализации. Мы работаем в области машинного обучения и нейронных сетей, и наша задача — создать те программные решения, которые обеспечат очень высокое качество для конечного потребителя. Чтобы Алиса все хорошо распознавала, чтобы ее голос хорошо звучал. Если мы уйдем в создание физических форм, то внимание, наверное, распылится, и ни к чему хорошему это не приведет.
Фото: Vincent Kessler / Reuters
Кроме того, голосовой помощник, находясь в приложении без какого-то физического облика, рождает свой личный образ у человека в голове. Это тоже так называемый комфортный выбор — у нас многомиллионная аудитория, сервисами в больших российских городах пользуются 90 процентов интернет-пользователей. Представьте, что нужно сделать, чтобы физическая форма, которую мы придумаем, понравилась им всем. Мне кажется, это невозможно.
В некоторых странах, напротив, напирают на внешний облик помощника. Не так давно в Facebook гулял ролик, в котором одинокий японец ходит на работу, возвращается домой и постоянно ведет диалог с помощником (Gatebox — виртуальный ассистент для одиноких людей). Это милая стандартная девочка, способная понравиться всем.
Вряд ли всем. Физическая форма очень требовательна к тому, чтобы понравиться массовой аудитории. Очень сложно угадать с ней. Понятно, что есть класс устройств с простой формой вроде Amazon Echo. Нет опасности, что люди не будут это использовать, потому что им просто не нравится сам дизайн.
Если мы говорим о человекоподобных андроидах, то тут как с людьми: одни нам нравятся, другие просто раздражают. Это не массовая история, и соответственно, нам это неинтересно.
С другой стороны, мы традиционно делимся нашими технологиями со сторонними разработчиками. Возможно, кто-то сделает детскую игрушку и захочет встроить туда Алису или назвать персонажа по-другому, но на базе наших технологий.
Мы верим в некую коллаборацию разных компаний, специализирующихся на своих продуктах. «Яндекс» не может делать все на свете: мы не можем выпускать игрушки, которые будут суперпопулярны, роботов, которые будут убирать дом. Это задача других компаний, которым мы готовы давать наши технологии.
Не боитесь ли вы, что голосовые помощники, в том числе Алиса, станут настолько человечными, что люди прекратят общаться друг с другом?
Интересный вопрос из серии «а не захватят ли мир роботы». На самом деле и Алиса, и другие технологии на основе машинного обучения — инструмент для человека. Я люблю приводить в пример молоток. Когда-то давным-давно у людей не было молотка. Потом его изобрели, и открылось много возможностей. Молотком можно было и проломить голову — себе или кому-то еще. Но если бы люди использовали молоток только в этом направлении, то человечество бы пропало. Однако оно не пропало.
Искусственный интеллект, нейронные сети, машинное обучение, персональные помощники — это тот самый молоток, инструмент. Мы верим, что у людей появится больше свободного времени благодаря голосовым помощникам, они быстрее смогут решать свои бытовые задачи, им станет безопаснее ездить на автомобиле.
Голосовые помощники снимут с людей рутинные задачи. Еще один мой любимый пример — работа в контакт-центре. Человек, который изо дня в день приходит на работу, надевает гарнитуру и отвечает на однотипные вопросы по четыре и больше часов в день, просто выгорает и теряет мотивацию. Но если такую рутинную работу возьмут на себя помощники, то у людей будет более интересная работа, они смогут решать более нестандартные задачи, а значит, качество сервиса вырастет.
Мы давно пользуемся социальными сетями, но личное общение все равно никуда не девается. Кафе и бары, стадионы и концерты все еще заполнены. Человечество начинает лихо играть в игрушки, но жизнь расставляет все по своим местам. С виртуальным ассистентом будет прикольно пообщаться, когда тебе не к кому обратиться, и это круто.
Но когда есть возможность встретиться с друзьями или позвонить, то люди выберут это. Человек все равно интереснее, потому что, если по-честному, все персональные ассистенты — это программа. Она всегда будет иметь свои ограничения, какая бы большая нейронная сеть ни была.
Люди ценны тем, что они постоянно приносят новые знания, поэтому мы общаемся друг с другом, а не с роботами.
Пять фактов про Алису
В октябре 2017 г. Яндекс представил голосового помощника по имени Алиса. Она может найти информацию в интернете, подсказать, где поужинать, какая завтра погода, и многое другое. С тех пор ее успели выдвинуть в президенты, а сама Алиса научилась играть с пользователем во множество игр. Пять фактов об Алисе в нашей подборке
Почему Алиса – женщина?
Сначала Яндекс хотел, чтобы виртуальный помощник говорил мужским голосом – все помощники конкурентов говорят женским, почему бы не выделиться, подумала команда Яндекса. Но провели исследование, изучили огромное количество статей на эту тему, из которых выяснилось: виртуальные помощники не просто так говорят женским голосом – под этим есть научная база. Женский голос ассоциируется с голосом матери, люди воспринимают его как комфортный, безопасный и приятный. Так Алиса стала женщиной.
Чьим голосом говорит Алиса?
«Когда мы думаем о голосовом помощнике, мы вспоминаем фильм Her («Она») Спайка Джонса», – говорит глава речевых технологий Яндекса Денис Филиппов. Главный герой кинофильма – голосовой помощник по имени Саманта, которая говорит голосом Скарлетт Йоханссон. «Но Йоханссон, к сожалению, не говорит по-русски. Поэтому мы позвали Татьяну Шитову, голосом которой Саманта говорит в русской версии фильма», – продолжает Филиппов. Яндекс записал 60 часов ее речи и с помощью технологии SpeechKit сделал синтезированный голос Шитовой. Теперь Алиса может произносить ее голосом любой текст.
Как Алиса узнает ответ?
Сначала, чтобы научить Алису ответам на общие вопросы, Яндекс применил стандартную технологию: редакторы написали сотни вопросов на общие темы с несколькими вариантами ответов к ним. Но вскоре выяснилось, что ответы очень быстро начали повторяться или помощнику слишком часто приходилось пользоваться поиском. В этом не было волшебства, говорит Филиппов. И Яндекс построил специальную нейросеть, которая представляет собой совокупность других нейросетей, у крупнейшей из которых 128 слоев. Она изучила миллионы диалогов из интернета и соцсетей и на их основе научилась болтать на свободные темы. В Алису встроен специальный алгоритм, который позволяет избегать некорректных тем, чтобы не повторилась история с чат-ботом Microsoft, который быстро стал расистом. «Мы сделали так, как обычно поступают с детьми, – показывали примеры некорректных вопросов и правильных ответов на них», – рассказывает Филиппов. Алиса может поддерживать разговор на общие темы близко к тому, как это делает человек. И у нее есть чувство юмора.
Как устроена Алиса. Лекция Яндекса
В этой лекции впервые рассматриваются технологические решения, на основе которых работает Алиса — голосовой помощник Яндекса. Руководитель группы разработки диалоговых систем Борис Янгель hr0nix рассказывает, как его команда учит Алису понимать желания пользователя, находить ответы на самые неожиданные вопросы и при этом вести себя прилично.
— Я расскажу, что внутри у Алисы. Алиса большая, в ней много компонент, поэтому я немного поверхностно пробегусь.
Алиса — голосовой помощник, запущенный Яндексом 10 октября 2017 года. Она есть в приложении Яндекса на iOS и Android, а также в мобильном браузере и в виде отдельного приложения под Windows. Там можно решать свои задачи, находить информацию в формате диалога, общаясь с ней текстом или голосом. И есть киллер-фича, которая сделала Алису довольно известной в рунете. Мы пользуемся не только заранее известными сценариями. Иногда, когда мы не знаем, что делать, мы используем всю мощь deep learning, чтобы сгенерировать ответ от имени Алисы. Это получается довольно забавно и позволило нам оседлать поезд хайпа.
Как выглядит Алиса высокоуровнево?
Пользователь говорит: «Алиса, какую ожидать завтра погоду?»
Первым делом мы его речь стримим в сервер распознавания, он превращает ее в текст, и этот текст затем попадает в сервис, разработкой которого занимается моя команда, в такую сущность, как классификатор интентов. Это машиннообученная штука, задача которой — определить, чего же пользователь хотел сказать своей фразой. В этом примере классификатор интентов мог сказать: окей, наверное, пользователю нужна погода.
Затем для каждого интента есть специальная модель, которая называется семантический теггер. Задача модели — выделить полезные крупицы информации в том, что сказал пользователь. Теггер для погоды мог бы сказать, что завтра — это дата, на которую пользователю нужна погода. И все эти результаты разбора мы превращаем в некоторое структурированное представление, которое называется фреймом. В нем будет написано, что это интент погода, что погода нужна на +1 день от текущего дня, а где — неизвестно. Вся эта информация попадает в модуль dialog manager, который, помимо этого, знает текущий контекст диалога, знает, что происходило до этого момента. Ему на вход поступают результаты разбора реплики, и он должен принять решение, что с ними сделать. Например, он может сходить в API, узнать погоду на завтра в Москве, потому что геолокация пользователя — Москва, хоть он ее и не указал. И сказать — сгенерируйте текст, который описывает погоду, затем его отправить на модуль синтеза речи, который с пользователем поговорит прекрасным голосом Алисы.
Dialog Manager. Здесь нет никакого машинного обучения, никакого reinforcement learning, там только конфиги, скрипты и правила. Это работает предсказуемо, и понятно, как это поменять, если нужно. Если менеджер приходит и говорит, поменяйте, то мы можем это сделать в короткие сроки.
В основе концепции Dialog Manager лежит концепция, известная тем, кто занимается диалоговыми системами, как form-filling. Идея в том, что пользователь своими репликами как бы заполняет некую виртуальную форму, и когда он в ней заполнит все обязательные поля, его потребность можно удовлетворить. Движок event-driven: каждый раз, когда пользователь что-то делает, происходят какие-то события, на которые можно подписываться, писать их обработчики на Python и таким образом конструировать логику диалога.
Когда нужно в сценариях сгенерировать фразу — например, мы знаем, что пользователь говорит про погоду и нужно ответить про погоду, — у нас есть мощный язык шаблонов, который позволяет нам эти фразы писать. Вот так это выглядит.
Это надстройка над питонячьим шаблонизатором Jinja2, в которую добавили всякие лингвистические средства, например возможности склонять слова или согласовывать числительные и существительные, чтобы можно было легко когерентный текст писать, рандомизировать кусочки текста, чтобы увеличивать вариативность речи Алисы.
В классификаторе интентов мы успели попробовать множество разных моделей, начиная от логистической регрессии и заканчивая градиентным бустингом, рекуррентными сетями. В итоге остановились на классификаторе, который основан на ближайших соседях, потому что он обладает кучей хороших свойств, которых у других моделей нет.
Например, вам часто надо иметь дело с интентами, для которых у вас есть буквально несколько примеров. Просто учить обычные классификаторы мультиклассовые в таком режиме невозможно. Например, у вас оказывается, что во всех примерах, которых всего пять, была частица «а» или «как», которой не было в других примерах, и классификатор находит самое простое решение. Он решает, что если встречается слово «как», то это точно этот интент. Но это не то, чего вы хотите. Вы хотите семантической близости того, что сказал пользователь, к фразам, которые лежат в трейне для этого интента.
В итоге мы предобучаем метрику на большой датасете, которая говорит о том, насколько семантически близки две фразы, и потом уже пользуемся этой метрикой, ищем ближайших соседей в нашем трейнсете.
Еще хорошее качество этой модели, что ее можно быстро обновлять. У вас появились новые фразы, вы хотите посмотреть, как изменится поведение Алисы. Все, что нужно, это добавить их множество потенциальных примеров для классификатора ближайших соседей, вам не нужно переподбирать всю модель. Допустим, для нашей рекуррентной модели это занимало несколько часов. Не очень удобно ждать несколько часов, когда вы что-то меняете, чтобы увидеть результат.
Семантический теггер. Мы пробовали conditional random fields и рекуррентные сети. Сети, конечно, работают намного лучше, это ни для кого не секрет. У нас там нет уникальных архитектур, обычные двунаправленные LSTM с attention, плюс-минус state-of-the-art для задачи тегирования. Все так делают и мы так делаем.
Единственное, мы активно пользуемся N-best гипотез, мы не генерируем только самую вероятную гипотезу, потому что иногда нам нужна не самая вероятная. Например, мы перевзвешиваем зачастую гипотезы в зависимости от текущего состояния диалога в dialog manager.
Если мы знаем, что на предыдущем шаге мы задали вопрос про что-то, и есть гипотеза, где теггер что-то нашел и гипотеза, где не нашел, то наверное, при прочих равных первое более вероятно. Такие трюки нам позволяют немного улучшить качество.
А еще машиннообученный теггер иногда ошибается, и не совсем точно в самой правдоподобной гипотезе находят значение слотов. В этом случае мы ищем в N-best гипотезу, которая лучше согласуется с тем, что мы знаем о типах слотов, это позволяет тоже еще немного качество заработать.
Еще в диалогах есть такое явление Анафора. Это когда вы с помощью местоимения ссылаетесь на какой-то объект, который был раньше в диалоге. Скажем, говорите «высота Эвереста», и потом «в какой стране он находится». Мы анафоры умеем разрешать. Для этого у нас две системы.
Одна general-purpose система, которая может работать на любых репликах. Она работает поверх синтаксического разбора всех пользовательских репликах. Если мы видим местоимение в его текущей реплике, мы ищем known phrases в том, что он сказал раньше, считаем для каждой из них скорость, смотрим, можно ли ее подставить вместо этого местоимения, и выбираем лучшую, если можем.
А еще у нас есть система разрешения анафор, основанная на form filling, она работает примерно так: если в предыдущем интенте в форме был геообъект, и в текущем есть слот для геообъекта, и он не заполнен, и еще мы в текущий интент попали по фразе с местоимением «туда», то наверное, можно предыдущий геообъект импортировать из формы и подставить сюда. Это простая эвристика, но производит неплохое впечатление и круто работает. В части интентов работает одна система, а в части обе. Мы смотрим, где работает, где не работает, гибко это настраиваем.
Есть эллипсис. Это когда в диалоге вы опускаете какие-то слова, потому что они подразумеваются из контекста. Например, вы можете сказать «расскажи погоду», а потом «а на выходных?», имея в виду «расскажи погоду на выходных», но вы хотите повторять эти слова, потому что это ни к чему.
С эллипсисами мы тоже умеем работать примерно следующим образом. Эллиптические фразы или фразы-уточнения — это отдельные интенты.
Если есть интент get_weather, для которого в трейне фразы типа «расскажи погоду», «какая сегодня погода», то у него будет парный интент get_weather_ellipsis, в котором всевозможные уточнения погоды: «а на завтра», «а на выходные», «а что там в Сочи» и так далее. И эти эллиптические интенты в классификаторе интентов на равных конкурируют со своими родителями. Если вы скажете «а в Москве?», классификатор интентов, например, скажет, что с вероятностью 0,5 это уточнение в интенте погода, и с вероятностью 0,5 уточнение в интенте поиска организаций, например. И затем диалоговый движок перевзвешивается scores, которые назначил классификатор интентов, который назначил их с учетом текущего диалога, потому что он, например, знает, что до этого шел разговор о погоде, и вряд ли это было уточнение про поиск организаций, скорее это про погоду.
Такой подход позволяет обучаться и определять эллипсисы без контекста. Вы можете просто откуда-то набрать примеров эллиптических фраз без того, что было раньше. Это довольно удобно, когда вы делаете новые интенты, которых нет в логах вашего сервиса. Можно или фантазировать, или чего-то придумывать, или пытаться на краудсорсинговой платформе собрать длинные диалоги. А можно легко насинтезировать для первой итерации таких эллиптических фраз, они будут как-то работать, и потом уже собирать логи.
Вот жемчужина нашей коллекции, мы называем ее болталкой. Это та самая нейросеть, которая в любой непонятной ситуации чего-то от имени Алисы отвечает и позволяет вести с ней зачастую странные и часто забавные диалоги.
Болталка — на самом деле fallback. В Алисе это работает так, что если классификатор интентов не может уверенно определить, чего хочет пользователь, то другой бинарный классификатор сперва пытается решить — может, это поисковый запрос и мы найдем что-то полезное в поиске и туда отправим? Если классификатор говорит, что нет, это не поисковый запрос, а просто болтовня, то срабатывает fallback на болталку. Болталка — система, которая получает текущий контекст диалога, и ее задача — сгенерировать максимально уместный ответ. Причем сценарные диалоги тоже могут являться частью контекста: если вы говорили про погоду, а потом сказали что-то непонятное, сработает болталка.
Это позволяет нам делать вот такие штуки. Вы спросили про погоду, а потом болталка ее как-то прокомментировала. Когда работает, выглядит очень круто.
Болталка — DSSM-подобная нейронная сеть, где есть две башни энкодера. Один энкодер кодирует текущий контекст диалога, другой — ответ-кандидат. У вас получается два embedding-вектора для ответа и контекста, и сеть обучается так, чтобы косинусное расстояние между ними было тем больше, чем уместнее данный ответ в контексте и чем неуместнее. В литературе эта идея давно известна.
Почему у нас вроде неплохо все работает — кажется, что чуть лучше, чем в статьях?
Никакой серебряной пули нет. Нет техники, которая позволит внезапно сделать классно разговаривающую нейронную сеть. Нам удалось достичь неплохого качества, потому что мы в качестве понемножку выиграли везде. Мы долго подбирали архитектуры этих башен-энкодеров, чтобы они лучше всего работали. Очень важно правильно подобрать схему сэмплирования отрицательных примеров в обучении. Когда вы обучаетесь на диалоговых корпусах, у вас есть только положительные примеры, которые когда-то кем-то были сказаны в таком контексте. А отрицательных нет — их нужно как-то генерировать из этого корпуса. Там есть много разных техник, и одни работают лучше, чем другие.
Важно, как вы выбираете ответ из топа кандидатов. Можно выбирать наиболее вероятный ответ, предлагаемый моделью, но это не всегда лучшее, что можно сделать, потому что при обучении модель учитывала не все характеристики хорошего ответа, которые существуют с продуктовой точки зрения.
Ещё очень важно, какими дата-сетами вы пользуетесь, как их фильтруете.
Чтобы по крупицам собрать из этого всего качество, надо уметь измерять все, что вы делаете. И тут наша гордость состоит в том, что все аспекты качества системы мы умеем мерить на нашей краудсорсинговой платформе по кнопке. Когда у нас появляется новый алгоритм генерации результатов, мы в несколько кликов можем сгенерировать ответ новой модели на специальном тестовом корпусе. И — померить все аспекты качества полученной модели в Толоке. Основная метрика, которой мы пользуемся, — логическая уместность ответов в контексте. Не надо говорить чушь, которая никак с этим контекстом не связана.
Есть ряд дополнительных метрик, которые мы стараемся оптимизировать. Это когда Алиса к пользователю на «ты» обращается, говорит о себе в мужском роде и произносит всякие дерзости, гадости и глупости.
Высокоуровнево я рассказал все, что хотел. Спасибо.