Category: архитектура

Category was added automatically. Read all entries about "архитектура".

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

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

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

Collapse )

Тетрадка Colaboratory с экспериментами для вариационными и обычными автоэнкодерами для предложений

Рабочая тетрадка, которую я сейчас использую в Colaboratory для проверки различных архитектурных параметров двух генеративных текстовых моделей для чатбота:

1) простой сжимающий автоэнкодер на базе sequence2sequence архитектуры
2) вариационный автоэнкодер (немного переработан код отсюда https://github.com/twairball/keras_lstm_vae/blob/master/lstm_vae/vae.py)

Тетрадь доступна по ссылке: https://drive.google.com/file/d/1aWwJeve9yuH9RrrfO0gq5dpuPKxDw0cC/view?usp=sharing

В тетрадке для удобства работы сделана загрузка готовых датасетов из моего гуглодиска внутрь докер-контейнера. Эти два файла (vtexts.npz и word2vec.pkl) были подготовлены скриптом https://github.com/Koziev/pushkin/blob/master/prepare_vae_dataset.py, так что при необходимости можно взять другие  векторы слов вместо word2vec или тренироваться на другом наборе предложений.

Код для автоэнкодеров в нормальном виде лежит тут: https://github.com/Koziev/pushkin/blob/master/lstm_ae.py

Обучение выглядит примерно так (осторожно, большой скрин):
Collapse )

Кривые обучения для модели wordchar2vector

Модель для чатбота была описана в этом посте. С того времени в код были добавлены новые архитектуры нейросети, доработан механизм задания параметров при запуске из командной строки и расширена документация - теперь все детально расписано тут https://github.com/Koziev/chatbot/blob/master/PyModels/trainers/README.wordchar2vector.md.

Далее - сравнение разных архитектур нейросети в ходе обучения.
Collapse )

Три варианта рекуррентно-сверточных сетей в задаче определения длины ответа

(предыдущий пост с описанием моделей чат-бота тут: https://kelijah.livejournal.com/232313.html)

Код для тренировки вспомогательной модели, которая определяет число слов ответа для заданной предпосылки и вопроса выложен тут https://github.com/Koziev/chatbot/blob/master/PyModels/nn_answer_length.py.
Collapse )

Autoencoders for word representations и ахитектура для встраивания доп. информации

Для эксперимента WordRepresentations делаю последний вариант получения векторного представления слов с помощью автоэнкодеров.

Collapse )

Skip-gram и открой окно пошире...

Продолжая http://kelijah.livejournal.com/167972.html.
В word2vector модели при генерации поставил cbow=0 и слелал размер окна 10.
Плюс изменил порядок сравнения близости контекстов.
Итог - неточность снятия омонимии и определения нужного смысла для многозначных слов упала в 3 раза, до ~8%:
Collapse )

Черновое сравнение tf-idf и word2vector как основы для word-sense disambiguation

Сравниваем два алгоритма для word-sense disambiguation (продолжение http://kelijah.livejournal.com/167784.html) Оба сводятся к вычислению cosine similarity, хотя строят векторы документов и предложений по-разному.
Расчет tf-tdf делался с лемматизацией. Стратегическая задумка - сделать еще и глубокую нормализацию, с приведением к "лучшему общему синониму", к нормальной форме для уменьшительно-ласкательных и к глагольному прототипу для словообразовательных гнезд.

Итоги:

tf-idf: Error count=16 (26,2295081967213%)
word2vector: Error count=13 (21,3114754098361%)

Подробный листинг с тестовыми примерами:
Collapse )