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

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

Генерация деепричастных форм из инфинитивов - SQL словарь + Python + xgboost
kelijah
Read more...Collapse )

Большой рефактиринг C++ исходников грамматического движка
kelijah
Закончил первый из двух запланированных больших рефакторингов для проекта https://github.com/Koziev/GrammarEngine: теперь строковые классы FString и UFString являются прямыми наследниками std::string и std::wstring соответственно.

Цель рефактиринга - заменить в коде все древние велосипеды на стандартные вещи, присутствующие либо в стандартной библиотеке, либо в Boost'е (например, всевозможные алгоритмы для работы со строками). Кроме чисто эстетических последствий это должно упростить любую интеграцию C++ кода движка - меньше преобразований для строковых типов, проще развивать код.

На данный момент все части проекта успешно собираются под Windows с помощью VisualStudio 2015, словарная база нормально компилируется, парсер работает. Под Linux собирать еще не пробовал, могут быть compile-time и runtime ошибки.

Сравнение оптимизаторов nadam и rmsprop с помощью F-теста
kelijah
Еще одна серия экспериментов с моделью для векторизации символьного представления слов.
Сравним две штатных реализации оптимизаторов в Keras - rmsprop и nadam. Фиксируем batch_size значением 250, делаем несколько запусков обучения модели для каждого варианта оптимизатора (см. строку 356 в файле wordchar2vector_trainer.py).
ANOVA для сравнения алгоритмов оптимизации...Collapse )

Коэффициент Пирсона для корреляции между batch_size и достигаемой точностью нейросетевой модели
kelijah
Коэффициент Пирсона получается около -0.5, то есть о линейной корреляции между размером батча и максимальной достигаемой точностью нейросетки говорить очень трудно.

Расчет добавлен в тетрадку, в самом конце.

Визуально зависимость тоже почти не видна, есть только некий тренд на понижение, о чем говорит и знак коэффициента:
Read more...Collapse )
Предыдущее сообщение по теме - тут
PS: добавлена визуализация регрессии полиномом второй степени

Визуализация влияния 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:

?

Log in

No account? Create an account