Category: технологии

Читая логи чатбота

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

Ну понятно, что чатбот несовершенен, иногда тупит и отвечает вариантами "я есть Грут". Но это временные, устранимые недостатки. Лет через пять, по мере улучшения чатботов и параллельного сокращения затрат на живые колл-центры, неизбежно появится и платная услуга "Поговорить с живым оператором".

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

Гугл: квантовое преимущество, искусственный интеллект, первые признаки сингулярности в google pay

Кто там мемично шутил про "бигдата, аджайл, где карту получали, в то отделение и ступайте"? Ввожу обязательные параметры в Google Pay, подключаю виртуальную визу. На форме ввода нужно ввести почтовый индекс. Ввожу - "неправильно заполнено поле индекса". Переввожу, пробую другие соседние индексы, пробую сменить город и индекс на Вологду - толку 0. Гуглю проблему (тонкий британский юмор ситуации). Оказывается, этому багу в гугл пэе много лет, но чинить его не торопятся. Да, нейросети, квантовое преимущество, искуственный интеллект - все в комплекте.
Collapse )

Нейросетевое решение AGRR-2019

Код с пояснениями для чисто нейросетевого решения задачи https://github.com/dialogue-evaluation/AGRR-2019 выложен в репозитории https://github.com/Koziev/AGRR-2019

Решение с BERT не взлетело, причем судя по всему из-за нехватки вычресурсов, так как после нескольких суток тренировки BERT'а модель почти достигла бейзлайна на рекуррентной сетке. 2 или 4 1080 Ti явно помогли бы :)

дилемма с BERT в AGRR-2019

По результатам тестов классификатора предложений для https://github.com/dialogue-evaluation/AGRR-2019, возникла дилемма.

С одной стороны, базовая нейросетевая модель выбивает на этой задаче более 90% точности при кросс-валидации.

С другой стороны, крайне урезанная BERT (обучена на 100,000 парах предложений, урезана до 2 heads и другие усечения) плюс fine tuning дала почти 85%.

По ощущениям, повысив сложность BERT хотя бы до 4 или 6 heads, можно поднять и точность последующей классификации. Но усеченная BERT обучалась на GTX 1080 Ti более суток. То есть любые улучшения потребуют несколько суток прогона. С другой стороны, эту обученную русскую BERT можно будет использовать и в других конкурсах. А до дедлайнов по AGRR осталось совсем немного.

Вот и вопрос - стоит ли оно того, при наличных вычислительных ресурсах.

PS (15-02-2019): Увеличил сложность BERT до 4х heads, переобучил на тех же 100,000 парах предложений. Точность классификации предложений для задачи AGRR на кроссвалидации выросла до ~91%.

Дислексия в чатботе с Трансформером

Небольшой забавный момент с результатами работы модели Трансформера в чатботе (предыдущий пост о модели).
Фрагмент листинга с целевыми (true) и сгенерированными (model) ответами на вопросы:
Collapse )

Вот эти "заикания", бесконечные повторения, иногда с вариациями как-то характерны именно для модели Транформера, в RNN такого я не встречал.

Transformer и 30 тысяч сэмплов контекст-вопрос-ответ для русскоязычного чатбота

Пытаюсь оценить перспективность использования keras-варианта Трансформера для задачи генерации реплики русскоязычного чатбота на основе контекста и вопроса.
Проверил разные варианты представления текста, в том числе отдельные слова и рекомендуемый авторами SentencePiece.
Параметры Трансформера варьировал в поисках оптимума, учитывая небольшой объем датасета - примерно 30 тысяч сэмплов.
Результат пока - негативный, качество генерации ответов сильно ниже самых плохих seq2seq моделей.

Слишком хороший f1 и roc-auc score в моделях релевантности/синонимичности с triple loss

1. Что выдает модель сама по себе

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

(anchor) кошка ловит мышку
(positive) на мышку охотится кошка
(negative) дети играют в кошки-мышки
Collapse )

Неудачные эксперименты с triple и contrastive loss архитектурами для определения перефразировок

1. Постановка задачи

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

Collapse )

Волшебство seq2seq нейросетки в чатботе - вот кто так еще умеет?

Тренер модели и тестирующая часть доступны в файле nn_chargenerator.py.
Готовая модель натренирована на моем датасете вопросов и ответов, она выложена тут (файлы nn_chargenerator.*). Ее назначение - генерация ответа чатбота при наличии нескольких предпосылок (от 0 до 3) и вопроса. В рассматриваемом случае предпосылок нет, текст вопроса содержит в себе все необходимое.

Запускать в консоли надо так: python nn_chargenerator.py --run_mode query

Ответы модели на вопросы "Сколько букв в слове ...?":
Collapse )

Чатбот в первом классе: склонность понемногу ошибаться как отличительная черта

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