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

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

Визуализация влияния batch_size на качество модели wordchar2vector - ч.3
kelijah
Продолжение поста https://kelijah.livejournal.com/237155.html.

То, что казалось достаточно очевидным и логичным, стало интересным при увеличении количества исходных данных. Я погонял обучение модели на новых batch_size и даже по 2 раза для некоторых batch_size, и получается вот такое облако для максимальной достигаемой точности при разных batch_size:
Read more...Collapse )
Спад для batch_size>=1000 достаточно четкий, но вот все что слева уже не такое простое. Можно видеть даже, как batch_size=180 и 500 дают очень близкие результаты, это больше похоже на плато или макушку параболы.

Theano 1.0.1 с cuda 9.0 поломан?
kelijah
Что-то с новым релизом Theano 1.0.1 нечисто. По крайней мере при работе с Cuda 9.0 под убунтой и вторым питоном.

Уже на второй модели вижу, что сетка отказывается обучаться - тупо loss на валидации стоит на одном значении с точностью до 4го знака несколько эпох подряд и баста, привет early stopping.

Версии:
Read more...Collapse )

При этом на этой же машине последний Tensorflow дает замечательные результаты для той же самой модели при запуске с KERAS_BACKEND=tensorflow. Хотя битва с tf у меня была длительная из-за того, что Cuda 9.1 не поддерживается, так что пришлось выбирать между компиляцией TF из исходников и даунгрейдом до cuda 9.0, я выбрал cuda 9.0 и не ошибся. А теперь точит червь сомнения насчет Theano.

Визуализация влияния batch_size на качество модели wordchar2vector - ч.2
kelijah
В комментарии к предыдущему посту коллега p2004r подсказал замечательную мысль по поводу того, что надо бы смотреть не на количество эпох, а на количество градиентов, которые увидела сетка при обучении. И получается вот такая замечательная картина.

1) Смотрим по-старому, динамика обучения в зависимости от числа эпох:
Read more...Collapse )2) Теперь то же самое, но в зависимости от количества батчей (масштаб по OX сделан криво, поэтому цена деления такая странная - надо домножать на число сэмплов в обучающем датасете):
Read more...Collapse )
То есть начиная с какого-то размера батча (>100 в данном случае) сетка обучается примерно с одинаковым темпом для разных batch_size. Разница только в том, что для каких-то значений обучение обрывается раньше, и максимальная точность не достигается.

Новая тетрадка выложена в репозиторий.

PS: сделан расчет еще для нескольких batch_size и получился вот такой график максимально достижимой точности:
Read more...Collapse )

Визуализация влияния batch_size на качество модели wordchar2vector
kelijah
Сама модель описана тут, это просто seq2seq автоэнкодер для цепочек символов. Реализующий ее на Python+Keras код лежит тут.
Тетрадка для визуализации доступна по этой ссылке.
В ходе обучения в файле сохраняем instance accuracy - долю слов, которые точно восстановлены декодером. Эта метрика показана на графиках.
На графиках видно, что есть некий оптимум в размере батча, и вообще batch_size для данной модели влияет очень сильно:Read more...Collapse )

Сравнение NVidia GTX 980 и GTX 1080 на задаче обучения нейросетки: 40% прироста производительности
kelijah
Описание задачи: https://github.com/Koziev/chatbot/blob/master/PyModels/trainers/README.wordchar2vector.md
На питоне тренировка модели описана этим кодом: https://github.com/Koziev/chatbot/blob/master/PyModels/trainers/wordchar2vector_trainer.py

Итак, код идентичен, датасеты тоже. Немного отличаются версии Theano, CUDA и CudNN, возможно какие-то оптимизации дают дополнительное преимущество GTX 1080. Кроме того, хост с GTX 1080 имеет на борту i7-6700 @ 3.4 GHz, а GTX 980 работает с i7-4790K CPU @ 4.00GHz.

Одна эпоха обучения нейросетки длится на GTX 980 примерно 127 секунд, на GTX 1080 примерно 78 секунд. При этом из-за небольшого размера батча загрузка GPU по памяти далека от того, чтобы как-то сказалось преимущество 8 Гб на борту GTX 1080 в сравнении с 4 Гб у GTX 980, nvidia-smi показывает 315 Mib GPU Memory Usage.

Установка Theano v.1.0 и ошибка "pygpu was configured but could not be imported"
kelijah
По горячим следам сегодняшней борьбы с установкой Theano v.1.0 на новом рабочем сервере с Ubuntu 16.04 и GTX 1080.

Что делать с Collapse )
Tags:

Датасеты по сочетаемости слов в группах из 2, 3 и 4 слов (mutual information)
kelijah
В репозитории https://github.com/Koziev/NLP_Datasets/tree/master/MutualInfo выложены датасеты со статистикой по устойчивым сочетаниям слов. Датасеты получены с помощью C# кода, выложенного тут (см. описание) и урезаны до 100,000 первых записей, так как выложить полные файлы размером более 2 Гб на гитхаб невозможно.

Внутри файлов можно увидеть такие данные:
Read more...Collapse )

PyParser - обертка синтаксического парсера для Питона (пре-альфа)
kelijah
Пока собрано и проверено только для Python 2.7 Windows 64 (Anaconda).

Исходники парсера, сильно отрефакторенные, с новой иерархией для введения абстрагирования от способа вывода результатов парсинга, лежат в репозитории. Сборка выполнена с помощью VisualStudio 2015, соответствующее решение Parser.sln лежит в этой папке. Обертка для вызова C++ кода из питоновского сделана с помощью boost::python.

В проекте пока нет установки пакета, поэтому проверить и  использовать можно только руками. В папке лежат готовые бинарники pyparser.pyd и libdesr.dll. Разумеется, также нужны файлы словарной базы (можно взять из дистрибутива парсера, выложенного тут).

Пример выполнения частеречной разметки на Питоне:
Read more...Collapse )

PS: добавлен скрипт setup.py для установки собранного модуля pyparser штатным механизмом питона. Для этого надо перейти внутрь каталога src копии репозитория (там лежит setup.py и прочие запчасти) и выполнить:

pip install .

Будет установлен пакет Solarix, в котором есть модуль pyparser.
Разумеется, делать это можно как глобально, так и для virtualenv-окружения.

Недобрые предчувствия по поводу package hell в питоне
kelijah
Преамбула такая. Я делаю сервис, который занимается извлечением ключевых атрибутов из слабоструктурированных текстов. Предметная
область - нормативно-справочная информация, машиностроение.

Read more...Collapse )

Дистрибутив синтаксического парсера под win64
kelijah
Архив (94 Мб) для MS Windows 64 со всеми актуальными моделями и русской словарной базой доступен по ссылке на странице тут.

Кроме того, выложен исходный код нового тренера модели частеречной разметки, в которой добавлена поддержка conllu-корпусов из http://universaldependencies.org/.

?

Log in

No account? Create an account