Git Product home page Git Product logo

nlp's Introduction

NLP

Ремарка: т.к. все вычисления производились на мало-настроенной для разработки Windows, обобщение выглядит в виде вынесенных блоков в папке src. Все же запуски производились в ноутбуках - в данном случае было в разы удобнее.

Первоначально хотелось проверить, что задача вообще решается (до этого подобное не решал). Поэтому взял классическую модель Helsinki-NLP/opus-mt-en-ru, сделал процесс обучения в привычном lightning и получил 30 BLEU. Своего рода бейзлайн.

BERT2BERT

После получения адекватной метрики решил начать с берта. Также перешёл с лайтнинга на чистый transformers, т.к. ранее им не пользовался. Довольно классическим решением оказался bert2bert. Однако проблема была в том, что 2 года назад библиотека transformers была изменена без обратной совместимости. Из-за чего, если воспроизводить по старым мануалам (а bert2bert уже больше 2ух лет), то ничего не работает... Поэтому я изучал код библиотеки, нашел PR, который порушил совместимость и минимально восстановил прежнюю версию. Получился 33 BLEU, что являлось самым большим результатом. Что довольно странно, т.к. далее были пременены улучшения.

Затем последовало долгое изучение кода с целью понять, почему же в новой версии не работает. Оказалось всё как всегда (нет) довольно просто - нужно было убрать decoder_input_ids из датасета, т.к. поле теперь вычисляется в модели само. Чтобы это понять было написано много кода, который, в итоге не стал как-то сохранять, т.к. на конечный результат не влияет. начал формировать папку src для унификации. BLEU 27.

Разбирался с тем, как преобразовать датасет так, чтобы использовать коллатор (чтобы делать padding не max_length как раньше, а обрезать по батчу). Далее код в ноутбуках унифицировался стал почти одинаковым. BLEU 29.

BERT2GPT

До предыдущего шага (до коллатора) запускал bert2gpt, но результаты были очень плохими - BLEU 21.

После добавления коллатора и детального анализа GPT было определено, что важно очень правильно настроить конфиг. Вероятно так и не настроил правильно, но BLEU 24. Судя по примером ответов (который в конце каждого из ноутбуков), GPT "несёт" - какие-то проблемы с EOS токеном или что-то в этом роде.

mT5

Изначально взял t5, т.к. она обучена на down-stream задачах в отличие от mT5, но после обучения вдруг обнаружил, что не все русские буквы присутствуют в токенах. При этом из-за того что в compute_metric ф-ии BLEU считалось в сравнении с декодированной label (получалось что-то типа "Как еа?"), то и BLEU на валидации был высокий - 33. Но, как только шло сравнение с реальной строкой в compute_metric_test, всё шло не по плану. BLEU 6 - оставил для истории.

Здесь сказать особо нечего: просто mT5 single-task. BLEU 28.

В конце решил попробовать улучшить качество mT5 с помощью первода в обе стороны. Пришлось немного поменять стандартный ноутбук. Обучалось в 2 раза долше, т.к. датасет стал в 2 раза болше (каждый пример встречается как перевод в одну сторону, так и в другую). Проверку на тесте оставил как и в предыдущих ноутбуках. BLEU 30.

Резюме

bert2bert себя показало как самой стабильной моделью. bert2gpt - несло (возможно так и не смог правильно настроить), но была самой быстрой. mT5 - хорошая многофункциональная модель.

Несколько красивых графиков без подписей image image

nlp's People

Contributors

tupiznak avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.