?

Log in

No account? Create an account

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

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

Небольшое сравнение качества двух сетевых моделей определения синонимичности фраз
kelijah
Модель №1 - нейросетка с triple loss nn_synonymy_tripleloss.py
Модель №2 - нейросетевой бинарный классификатор nn_synonymy.py
Модели обучаются на идентичном датасете, содержащем ~60 тысяч пар синонимичных предложений.
При тестировании каждая модель ранжирует предложения из тестового списка по близости к вводимой строке. Выводится 10 ближайших предложений.

Результаты для модели №1

Read more...Collapse )

Результаты для модели №2
Read more...Collapse )

Сравнение i7-4790K + NVidia GTX 980 vs i7-9700K + NVidia GTX 1080 Ti на нейросетевой задаче
kelijah
В отличие от тестов на userbenchmark.com сравнивнение сделано на реальной практической задаче nn_wordcopy3.py. Предметная область - NLP. Данные для обучения одинаковые.

Программное окружение в обоих случаях практически идентично - Ubuntu, Python 2, текущие версии tensorflow, CUDA 9.0. В обоих случаях видно, что все ядра CPU загружены, хотя и не полностью. Формально оба CPU держат 8 потоков, но у i7-9700 это 8 реальных ядер, а у i7-4790 4 ядра с гипертредингом. Но основная нагрузка лежит на GPU.

Машина №1 i7-4790K, 32 Гб памяти DDR3, NVidia GTX 980, материнская плата MSI H97 GAMING.
Детальная инфа (выдача sudo lshw и nvidia-smi):
Read more...Collapse )

Машина №2 i7-9700K, 64 Гб памяти DDR4, NVidia GTX 1080 Ti, материнская плата MSI Z390 CARBON GAMING
Выдача sudo lshw и nvidia-smi:
Read more...Collapse )



В итоге, на первой машине одна эпоха обучения занимает ~27 секунд. На второй машине ~7 секунд. То есть вторая машина почти в 4 раза быстрее.

Реализация линейной регрессии МНК с autograd - библиотекой для символического дифференцирования
kelijah
Случайно наткнулся недавно на Autograd - питоновскую либу, которая умеет для функции, заданной исходным текстом в коде, получить функцию же частной производной по указанному аргументу. Всякие tensorflow, pytorch и theano это, конечно, тоже делают под капотом. Но autograd делает это с любой питоновской функцией. Магия.
Реализации линейной регрессии...Collapse )

Императивный режим общения с чатботом
kelijah
После некоторых расширений вопросно-ответного движка появилась возможность строить диалоги в таком духе:
Read more...Collapse )

Чатбот в игре: начало диалога с первым персонажем
kelijah
У бота немного не хватает плавности диалога и проактивности. Плюс у меня есть большие претензии к реализации модели релевантности, да и к остальным моделям тоже.

Сеттинг - игрок обнаруживает себя в закрытом помещении в незнакомом месте и начинает выяснять обстановку через диалог с ботом.

Отладочный диалог:
Read more...Collapse )

redmine2code
kelijah
Вот давно есть проектик pix2code - Generating Code from a Graphical User Interface Screenshot.

Но еще очень нужен redmine2code. Чтобы из редмайна (или с другого трекера, не суть) бралась очередная таска, парсилась, и генерился патч к коду, либо прототип нового функционала. Потом компиляция, прогон тестов, комит.

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

Condition random fields + word2vec + wordchar2vec для частеречной разметки без feature engineering'а
kelijah
Ингридиенты:
1) CRFSuite,  реализующий старый и добрый linear chain CRF
2) размеченный корпус для русского языка (например из Universal Dependencies)
3) набор векторов word2vec (я использую, как всегда, gensim, обучаемый на корпусе в ~150 Гб текстов разного характера, вплоть до блогов)
4) обученную модель wordchar2vec

Далее формируем обучающий корпус, используя компоненты векторов w2v и wc2v в качестве весов фич для CRF. Отрицательные и положительные значения компонентов бьем на отдельные фичи.

Обучаем и получаем при валидации точность около 95% на токен для русского языка.
Read more...Collapse )

Leveraging Random Label Memorization for Unsupervised Pre-Training (оверфиттинг как благо)
kelijah
Read more...Collapse )

Динамическое создание атрибутов - штатная фича Питона и малоизвестная фича C#
kelijah
Любой, кто начинает изучать Питон, быстро узнает такую фичу языка, как создание нового атрибута объекта в результате присваивания:
Read more...Collapse )

неудачная попытка использовать либу NNSharp для запуска Keras-модели в C#
kelijah
Репозиторий проекта: https://github.com/adamtiger/NNSharp

Файлы со скриптом тренировки простейшей рекуррентной модели на Keras и использование в C#: https://gist.github.com/Koziev/ce781f1acd9df0bb34a7e5d89411bb1e

Сразу надо сказать, что входящий в NNSharp скрипт KerasModeltoJSON.py может работать только с так называемыми sequential моделями Keras. Более удобные и функционально более гибкие functional модели вызывают ошибку в строке 29, когда делается попытка получить размеры данных на первом слое. У functional моделей может быть несколько входов, поэтому этот подход не работает.

Тем не менее, я сделал простейшую sequential модель, которая вычисляет сумму 10 случайных чисел от 0 до 10.

И в C# мне не удалось получить адекватные результаты. В частности, сумма десяти нулей дает результат, существенно отличающийся от выдачи самой Keras модели после обучения.

Тем не менее не исключаю собственный косяк. И пока остаюсь сторонником прямого подхода - создание микросервисов с flask+keras, чтобы не заниматься в бою отладкой глюков преобразования моделей.
Tags: , ,