Помощник Цукерберга и операционная система «Саманта»: два вида голосовых систем
Я работаю в лаборатории машинного обучения представления данных. Веду два блока предметов в университете: один из них связан с прикладным машинным обучением и искусственным интеллектом. Второй — с поиском и его разновидностями. На пересечении этих предметов и лежит та область, про которую я сегодня буду пытаться говорить.
Есть два способа смотреть на то, что же такое голосовой помощник. Представьте себе, что у вас есть виртуальный дворецкий. К примеру, около пяти лет назад Марк Цукерберг сделал умного ассистента у себя дома, назвал его «Джарвис». Он умел пускать людей в дом, открывать и закрывать двери, шторы, включать свет. Другие примеры таких устройств — «Алекса» и «Алиса», они живут в устройстве и способны улучшить жизнь. Они могут управлять духовкой, стиральной машиной, пылесосом и так далее.
Другой способ смотреть на ассистентов — как на интерфейс. В фильме «Она» была операционная система, которая называлась «Саманта», в русской озвучке у нее был тот же голос, что у «Алисы» от Яндекса. Она выступала как интерфейс к управлению операционной системой, а не была задизайнена как помощник. Такой подход есть у Apple — Siri, Microsoft — Сortana, Google — Google Assistant.
Как они работают?
Все ассистенты построены по очень похожему принципу. Первое, что ему нужно сделать, — услышать голос. Это происходит на устройстве пользователя — мобильном телефоне или умной колонке. Пользователь говорит: «Алиса», «Алекса», «OK Google». После этих волшебных слов устройство готово записывать голос пользователя. Это происходит до какого-то момента — пока клиент не замолчит или устройство не устанет ждать, пока он замолчит. После чего данные отправляются на сервер компании, которая и предоставляет услуги.
Здесь и начинается магия. Первая операция — это преобразование речи в текст. Все говорят по-разному, как преобразовать это в текст? Затем начинается то, ради чего мы и пользуемся голосовыми помощниками — предоставление сервиса. Это любая операция, которая доступна онлайн — покупка билетов, бронирование столика в ресторане. Вопрос только в том, как обеспечить удобный интерфейс для пользователя. Если его нет, устройство превращается в говорилку.
После обращения к сервису пользователю нужно вернуть результаты, для этого надо их правильно упаковать. Скорее всего, это будет текст, выдача со страницы в интернете, песня, данные, которые посчитал калькулятор. Данные обратно переводятся в речь и передаются клиенту.
Преобразование речи в текст
Наше общение происходит через речь, голос — это колебание воздуха вокруг. Эти колебания попадают на барабанную перепонку, она толкает три косточки — стремечко, наковальня и молоточек. Те, в свою очередь, раскачивают орган, который называется улитка. Улитка досталась нам от рыб, она заполнена водой и в ней живут волосковые клетки, они колеблются вместе с водой в улитке. Верхние волосковые клетки усиливают колебания жидкости и передают их в нижнюю часть волосковых клеток, которые и формируют электрический импульс. Этот импульс передается в мозг.
Причем в разных местах улитки волосковые клетки отвечают за разную частоту. В широкой части обрабатываются высокие частоты, в середине будут средние, а ближе к центру — низкие.
Как нам заставить машину воспринимать звук таким же образом — не в виде сырого сигнала, а в виде совокупности частот? Ответ на этот вопрос дал французский математик Жан Батист Фурье, он жил на границе XVIII-XIX веков. Ученый предложил такое математическое преобразование, с помощью которого происходит все то же самое, что в ухе — берется сырой сигнал и раскладывается на частотные составляющие.
Что делать с частотными составляющими? Мы умеем сопоставлять спектральное представление с фонемой, то есть можем преобразовать речь в фонемы. Они более-менее легко алгоритмически преобразуются в буквы. То есть мы можем из фонетического представления получить слово.
Но все это работает неточно. Есть фонемы, которые различаются немного, переходы из одного звука в другой могут звучать по-разному. Они называются сеноны, их около 10 тыс. Но когда их так много, — задача определения слов становится намного сложнее.
Борьба с ошибками
Как исследователи борются с ошибками? Ответ на этот вопрос дал российский математик Андрей Марков, который жил на рубеже XIX-XX веков. Он разработал теорию, описывающую процессы, где одно следует из другого. И благодаря его теории были разработаны скрытые марковские модели. Это один из первых способов исправления ошибок такого рода.
Например, когда человек говорит нечетко, у него акцент или он неправильно произносит слово, — есть математический механизм, который позволяет с высокой точностью восстановить и определить, что имел в виду человек. Ведь люди тоже ошибаются, но понимают друг друга — значит, у нас есть механизм коррекции ошибок в голове.
Но и текстового представления недостаточно — компьютер работает с цифрами. Как их получить? У Ноама Хомского есть гипотеза, что у нас в мозге есть структура, причем доступная на уровне рождения, которая помогает нам быстро осваивать естественные языки. Хомский на протяжении всей жизни строит, уточняет и работает над моделью, которая определяет, какие общие паттерны есть в языке, неважно каком — русском, английском или китайском.
На слайде — грамматика Хомского. Это примерно то же самое, что делают на уроках русского языка, когда разбирают предложение по составу. Там есть существительные, прилагательные, подлежащие, сказуемые, глагольные группы — все это формализовано и можно показать машине. Эта структура легко представима в виде цифр.
Машина может понять, что является субъектом в предложении и какое действие нужно произвести. Например, если клиент говорит: «Алиса, включи какую-нибудь музыку», то «включи» будет действием, «музыка» — объектом, над которым происходит действие. «Алиса» поймет клиента и начнет производить действие.
Но слова сами по себе — это набор букв, как понять их смысл? Есть похожие слова — «играй» и «сыграй», поймет ли устройство, что это одно и то же? Ответ на этот вопрос дал американский лингвист Леонардо Блумфилд. Он в начале ХХ века предложил теорию, где смысл слова определяется контекстом, в котором это слово находится. Посмотрите на слайд и подумайте, какое слово можно подставить вместо трех точек.
Моим ответом был бы слон, но когда я спрашивал студентов, они говорят, что там может быть носорог или даже жираф. Но в целом мы понимаем, что это крупное животное, живущее в Африке и которое бывает злым. Если мы все это совместим, то получим некоторое семантическое описание этого объекта без использования самого слова.
Но если мы будем оцифровывать это, то получатся десятки тысяч цифр. И благодаря американскому математику Джину Голубу удалось придумать, как существенно снизить количество цифр. Вместо того, чтобы использовать цифры, они использовали совокупность цифр, которая называется вектором. И этот вектор можно использовать, чтобы понимать близость или удаленность по смыслу, семантическую связанность. Так можно понять, что «сыграй» — это примерно то же самое, что «играй».
Сейчас есть инструменты, где можно ввести слова, и станет ясно, как они распределяются на карте смыслов. Например, слова «жираф», «слон» и «носорог» — группируются, оказываются рядышком в пространстве смыслов. Эти методы развивались и сейчас выглядят гораздо более продвинуто.
Мы представили слова в виде структуры, предложения в виде структуры, мы представили слова в виде смыслов, все это виде цифр, что дальше?
Сервисы
В каждом сервисе есть сотни тысяч, миллионы, миллиарды объектов. Если мы говорим про поиск в интернете, — это сотни миллиардов страниц, десятки миллиардов изображений. Если музыкальный стриминг, — миллионы песен.
Один из первых подходов к индексации данных — построение двоичных деревьев поиска. То же самое используется в словарях: вы открываете его посередине, и если проскочили нужное слово, — листаете назад, если не добрались, — вперед. Но в 1962 году советские математики Георгий Адельсон-Вельский и Евгений Ландис придумали структуру данных, которая поддерживает себя в состоянии быстрого поиска.
Эта система работает только на линейных данных — числах или словах. А что будет с многомерными данными, если мы хотим поискать что-то на карте или в трехмерном пространстве? Для этого придумали такие структуры, как kd-деревья, они прекрасно справляются с задачами поиска в трехмерном пространстве. Но они перестали работать для современных задач, где текст описывается сотнями чисел.
Но благодаря теоретическим работам конца ХХ века Эрик Бернинсон предложил развитие поисковых деревьев, который называется Анной — с его помощью можно гарантировать хорошее качество поиска на огромных коллекциях. Это работает для всей огромной базы Spotify — прекрасный результат, который получили всего пять лет назад.
Есть и другие подходы: например, социолог Стэнли Милгрэм проводил странные, а иногда бесчеловечные эксперименты. Он породил теорию шести рукопожатий, что все люди на Земле знают друг друга через не более чем шесть рукопожатий. Для этого он попросил людей отправить незнакомому человеку письмо. Они дальше должны были выбрать среди своих знакомых тех, кто мог быть знаком с этим человеком. И оказалось, что им для этого потребовалось шесть писем. Эксперимент критиковали, но повторили в 2000-х годах — и подтвердили результаты.
Это удивительное свойство, которое в математике приобрело название граф «Мир тесен». Российские ученые — группа Юрия Малькова — предложили интересный алгоритм. Они применили его для поиска чего угодно где угодно. Узлами в этом графе теперь являются не люди, а документы.
В этом графе — кратчайшие расстояние между любой парой объектов. Пользователи могут очень быстро находить то, что нам нужно. Эта структура данных сейчас используется во многих компаниях в России и за рубежом — Facebook, Mail.ru, Яндексе. Прекрасная математическая модель, которая изменила не только поисковые и рекомендательные сервисы, но и голосовые помощники.
Читать далее
Посмотрите на первый в мире одноступенчатый орбитальный корабль будущего
Три года ученые считали, что на юге Марса есть вода. Оказалось, это не так
Гиперзвуковой самолет на водороде развивает скорость до 12 Махов. Это почти 15 000 км/ч