Комментарии 11
Поясните, как из токенов получается вектор, который подается на ваш обучаемый классификатор?
"Входной слой — это слой встраивания, он ставит вектор в соответствие каждому индексу. Последовательность индексов заменяется на матрицу. Изначально векторы либо выбираются случайными, либо задаются предварительно обученные, а далее, во время обучения сети могут обучаться вместе со всей сетью при помощи обратного распространения ошибки (backpropagation)."
Что здесь вектор, что здесь индекс?
Самое интересное место, но и самое мутное.
Как я понимаю, мы прогоняем полученные токены через векторизатор, получаем векторы для каждого сгенеренного варианта фразы, потом ранжируем по расстоянию. Не очень понял, как считаем вектор для всего предыдущего диалога - токенизируем и прогоняем весь предыдущий текст диалога?
И еще - ваша модель нужна для выбора вариантов, сгенеренных ruGPT? А просто перплексию фразы на языковой модели вы не сравнивали?
PS как-то очень запутанно написано - если бы тема не была интересна, то прошел бы мимо
"Что здесь вектор, что здесь индекс?"
Тут используются т.н. эмбеддинги (слои встраивания). Вот документация на слой https://keras.io/api/layers/core_layers/embedding . Т.е. как они работают, например у нас есть предложение "Привет, как дела?", на этапе токенизации мы получим что-то вроде [10, 50, 21], потом дополняем нулями, например, максимальная длинна у нас 5, [10, 50, 21, 0, 0]. Далее слой встраивания каждому индексу в соответствие ставит вектор(при обратном проходе вектора тоже учатся), предположим, размерностью 10. И каждое предложение преобразуется в матрицу 5х10. Далее по этой матрице можно проходить одномерными свертками или LSTM сетями и т.п..
"токенизируем и прогоняем весь предыдущий текст диалога?" Да + можно разделить вопросы и ответы дополнительными токенами.
"А просто перплексию фразы на языковой модели вы не сравнивали?" нет, нам же нужно получить согласование тем в вопросе и ответе, чтобы выбрать тот ответ, который меньше всего отходит от темы вопроса.
keras?
А почему не bert?
Прикольная демка)
Это наиболее частый вопрос от юзеров: они разговаривают с ботом не на те темы, на которые он обучен или тестируют не тот сеттинг downstream task - поэтому ответы будут не совсем теми, какие ожидаете.
В данном случае, чтобы получить хороший результат надо:
1. Дать боту больше контекста житейского, разговор должен быть преимущественно на женские темы отношений, психологии, секса.
2. Дать боту вопросы с модальностью не вопросно-ответной системы.
Это вторая ошибка юзеров - то, что бот не является QA системой, то есть не обучался отвечать на знания о мире, фактах и тп. У нас есть QA система, работающая в объясняющем стиле, но это уже тема другого поста. Поэтому и ответ про небо не научный, а скажем так, мнение бота где он живет.
Также у этой демки нет личности, а в коммерческом боте она есть.
Как долго бот способен удерживать канву диалога?
Вообще 3-5 реплик в среднем, это то, что заметно людям. Мы над этой фичей не работали, так что она такая же, как и в других ботах на ruGPT3.
Вопрос звучит коротко, но ответ на него может быть сложный, если его переформулировать так: а есть ли у бота человеческая память?
И вот тут оказывается, что как таковой памяти ассоциативной, памяти фактов, их важности, краткосрочных фактов для данного разговора и долгосрочных - у него нет, просто потому, что это нет архитектурно в трансформерах. И поэтому, если спрашивать бота о фактах, которые он только что сказал, о принадлежности объектов и тп - вряд ли он будет отвечать хорошо.
Такую память нужно делать. как делать - большой разговор, можно делать экстракторы фактов и сохранять их в базу - простой инженерный путь. У нас также есть идея делать память на NTM, но об этом как-нибудь в следующий раз.
https://stanfordnlp.github.io/chirpycardinal/live_demo/
Вот демка бота Chirpy cardinal от Стэнфорда, ответы вроде бы логичные, но лишняя информация, ан мой вопрос не ответил, переводит тему. Она рад слышать, что обеда у меня не было. И это 2е место в конкурсе от Амазон
Улучшаем генеративных чатботов на нейросети ruGPT3: умный ранжировщик ответов