Компьютерная лингвистика

Новостная лента www.solarix.ru

Тетрадка Colaboratory с экспериментами для вариационными и обычными автоэнкодерами для предложений
kelijah
Рабочая тетрадка, которую я сейчас использую в 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

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

Большие братья смотрят за тобой! Но некоторые косят. (оффтопик)
kelijah
На фоне "Strava’s data lets anyone see the names (and heart rates) of people exercising on military bases" конечно мелочь, но:
Сделал заказ на Яндекс.Такси из дома с планшета - мое местоположение автоматически определилось с точностью до дома, жаль подъезд не подцепился в заказ.
Вхожу в личный кабинет Ростелекома для оплаты инета - стабильно определяет, что я в Вологде, то есть ошибка в 100 км. Хотя кому как не им знать рутинг до квартиры.

Colaboratory - бесплатно, медленно, сгодится для экспериментов с подбором гиперпараметров ML моделей
kelijah
За три дня экпериментов с Colaboratory лично убедился что:

1) Заливка датасетов туда и обратно немного напрягает. 400-метровый CSV с датасетом скачивается внутрь контейнера из google drive минут 5. Воспользовался рецептом, описанным в официальном howto здесь, то есть залил файлик в свой GD, определил его file ID через расшаривание по ссылке, скачал через googleapiclient и так далее. Потом перекачал скачанные байты во временный файл внутри контейнера. В общем, минут на 15-20, если делать все второй раз после превращения контейнера в тыкву по истечении 12 часов.

2) Для модели, размечающей данные с помощью рекуррентной сеточки с использованием keras_contrib.layers.CRF, обучение на Tesla K80 в Colaboratory идет медленнее примерно в 2 раза в сравнении с железным 4-ядерным i7-4790 4 ГГц. Сравнил по времени, затраченному на одну эпоху обучения модели. Спасибо tensorflow, модель на CPU съедает все четыре ядра почти на 100%.

3) Определенное удобство - возможность оставить модель на ночь обучаться, например для подбора гиперпараметров или архитектуры. Тут бесплатному GPU в зубы не смотрим, берем что есть.

Запустил обучение модели wordchar2vector на Tesla K80 в гугловском Colaboratory
kelijah
Описание халявы тут https://habrahabr.ru/post/348058/
Запустил там обучение своей модельки wordchar2vector из репозитория https://github.com/Koziev/chatbot:
Так вот ты какая, Tesla K80...Collapse )
Судя по бенчмарку ETA работает это чудо примерно в 4-5 раз медленнее, чем моя железная GTX 980. Вообще ощущение, что физически эта штука там неслабо так делится между халявщиками уважаемыми пользователями сервиса.

Генерация ответов да/нет в чатботе - опять градиентный бустинг лучше, чем нейросетка
kelijah
Описание задачи и решения для выбора ответов "да" и "нет" для заданных предпосылки и вопроса выложено тут.

Тренер модели на движке xgboost - в файле https://github.com/Koziev/chatbot/blob/master/PyModels/xgb_yes_no.py. Точность примерно 99.8%

Тренер для нейросетевого классификатора (Keras) - в файле https://github.com/Koziev/chatbot/blob/master/PyModels/nn_yes_no.py. Точность примерно 98.2%

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

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

Старина DLL hell вернулся
kelijah
Он вернулся и поселился в экосистеме питона, где под него даже запилили костыледержалку virtualenv.
Особенно часто я встречаю его при работе с tensorflow и вообще ML. Вот давеча прочесывал SO "Why my tensorflow-gpu runs only on cpu?".

Непонятная эффективность XGBoost модели для вычисления релевантности текста и вопроса
kelijah
(продолжение темы про модели для чат-бота, предыдущий текст тут)

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

nn_relevancy.py - нейросетка;
xgb_relevancy.py - решение на базе XGBoost.

Загадочной особенностью данной задачи является необъяснимая эффективность XGBoost, или неэффективность нейросетевого решения. На одном и том же датасете нейросетка дает на валидации стабильно точность в районе 0.96...0.97, а градиентный бустинг выбивает стабильно больше 0.99 при кратно меньших затратах времени.

Read more...Collapse )

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

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

Тренировка и использование модели посимвольного встраивания слов для чатбота
kelijah
(Начало тут https://kelijah.livejournal.com/231141.html)

Часть моделей чат-бота при работе используют разные способы векторизации слов. Один из использованных алгоритмов векторизации заключается в упаковке посимвольного представления слова с помощью сжимающего рекуррентного автоэнкодера:
Подробности реализации и скриншоты...Collapse )

?

Log in

No account? Create an account