Преамбула
Если уделить некоторое время анализу архитектуры доступных русскоязычных (и не только) "виртуальных ассистентов" уровня "голосовая колонка", то можно заметить одну примечательную особенность. Они все очень похожи друг на друга и на своих англоязычных аналогов.
Думаю, это результат исключительно человеческого фактора на уровне корпоративных управленцев.
Дело в том, что менеджемент в корпорациях, которые разрабатывают таких виртуальных ассистентов, в массе своей достаточно скучные и осторожные наемные сотрудники. Условно говоря, это не Илоны Маски. Зачем рисковать своим KPI, огромной премией и карьерой и продвигать что-то альтернативное, если можно взять архитектуру чатбота компании Г* и просто воспроизвести это решение, благо бюджеты (денежные и человеческие) у корпораций позволяют копипасту и экспансивный подход? Риск минимальный, акционеры не будут задавать неприятные вопросы. Ну а то, что в результате получается еще один скучный клон - так и велосипеды все одинаковые. Можно даже гордиться, типа "русский гугл".
Вообще, харизматичный, технически подкованный и широко мыслящий менеджер, принимающий стратегические решения это редкость. Опираюсь на свой хоть и небольшой, но все-таки опыт работы.
В итоге имеем, что большинство "виртуальных ассистентов" имеет стандартную архитектуру с классификатором интентов на входе, кучей скриптов для реализации всевозможных "скиллов", генеративной моделью читчата в режиме "fallback" и полным отсутствием способностей, о которых я скажу ниже. Ну и про невероятное количество людей, которые пишут код и делают всякий датасатанизм для таких чатботов тоже не забываем.
Теперь о тех вещах, которые мне интересно попробовать реализовать хоть в каком-то объеме в рамках проекта чатбота (
https://github.com/Koziev/chatbot).
Common sense reasoning, Logical reasoning и способность объяснить свое решение
Как нетрудно убедиться, большие русскоязычные модели типа GPT сами по себе обладают весьма неважными способностями в том, что касается построения логической цепочки, вывода на основе здравого смысла и даже при банальных логических рассуждениях и арифметических операциях.
В качестве примера - можно попросить демо GPT-шек или даже чатботы ответить на вопросы типа:
"Женя постучала в дверь Даше, но никто не отозвался. Она расстроилась. Кто расстроился?"
Или:
"Ты пошел на экзамен, не выучив ни одного билета. Что произойдет на экзамене?"
GPT-шки продолжают текст, а не достраивают ситуацию, поэтому результат будет, возможно, забавным, но по сути убогим.
Иногда появляются статьи, в которых для англоязычных GPT-шек описывается, как они в режиме few-shot или даже zero-shot могут построить цепочку рассуждений. Я пробовал воспроизвести эти замечательные результаты на русскоязычных GPT с очень невпечатляющим результатом. Условно говоря, надо сильно постараться, делая cherry picking, чтобы подобрать такую затравку, по которой модель будет не словоблудить, а хотя бы попытается выдать что-то похожее на разумный ответ. В общем, использовать эти подходы даже для прототипа я пока не смог.
Возможность "перевоспитания", "дообучения" в онлайне
Откройте какой-нибудь "виртуальный ассистент" и попросите его что-то типа такого "Давай поиграем в города".
Скорее всего внутренние шестеренки классификатора интентов перенаправят вас в автономное приложение (скилл), реализующее логику игры в города. Это может выглядеть достаточно хорошо интегрированным в общую архитектуру чатбота, вплоть до бесшовности. Но по сути ничего прорывного при этом не происходит в сравнении с запуском достославного Сапера в "старой доброй" Винде. Используется ли GUI для взаимодействия с пользователем, или речевой канал (комбинация ASR + TTS) - суть одинакова.
А теперь представьте, что вы хотите обучить свою голосовую колонку чуток модифицированному варианту игры в города. Например, второй игрок должен подобрать название не города, а болезни, типа "грипп - простуда - ангина".
Но если разработчики не предусмотрели такой варианты игры, то ничего не выйдет. В виртуальных ассистентам нет никаких способов научить его новой игре через инструктаж прямо в чате.
Сравните это с возможностями живых когнитивных систем! Вы можете обучить собаку каким-то навыкам (ну в разумных рамках, конечно) сугубо под себя. Летать она не сможет, но вот приносить тапочки хозяину после работы - это реально. Зашита ли опция принесения тапочек эволюцией в геном собак? Нет.
Какие возможности настройки под себя предлагают чатботы? Обычно возможности "вербального программирования" рудиментарны. Например, must have это возможность завести будильник на какое-то время. Что-то более сложное обязательно потребует усилий вне рамок читчата. Как минимум нужен квалифицированный разработчик, который напишет нужный скилл, даже если это реализация правила "Обращайся ко мне 'милостивый государь', железка ржавая". Ну или надо научиться в визуальном конструкторе налепить диалоговый граф. В рамках сравнения с собаками - это как заниматься селекцией особой породы тапконесущих собак.
Близкая к онлайн-обучению способность у человека - мгновенный language acquisition. Если на пальцах - люди способны расширять свой активный лексический запас очень быстро, на лету. На эту тему есть даже ряд шуток:
- Скажите, у вас сыр дор блю есть?
- А что это такое?
- Сыр с плесенью
- Нет, такого нет. Но есть сосиски дор блю и хлеб дор блю.