Недавно увлекся темой эмбеддингов, и решил подробно изучить методы обучения эмбеддингов слов и текстов с их модификациями. Каждая модель написана собственно-ручно для лучшего понимания, что у них под капотом. Также будет описание за что и как отвечает каждый слой модели и особенности модели.
- Word2Vec
- Skip-Gram
- CBOW
- FastText
- GloVe
- ELMO
- Tranformers
- BERT (Encoder)
- GPT (Decoder)
- T5 (Encoder + Decoder)
У первой тройки реализовал такие методы, как:
- Negative Sampling
- Hierarhical Softmax: реализовано на сбалансированном бинарном дереве
Реализация:
Тест и описание работы моей реализации:
- Тест и описание обычного токенизатора
- Тест и описание токенизатора, разбивающего на n-gramm-ы (FastText)
Реализация: Общая реализация модели
Тест и описание работы моей реализации: Тест и описание работы Word2Vec
Реализация составления датасета для CBOW
Реализация составления датасета для Skip-Gram
Реализация: Реализации Encoder, Decoder и их составляющих
Реализация: Реализация модели
Реализация: Реализация модели
Тест и описание работы моей реализации (обычный токенизатор): Тест и описание работы GPT
Тест и описание работы моей реализации (fasttext токенизатор): Тест и описание работы N_Gram GPT
Реализация: Реализация модели
- Реализация всех методов в одном проекте для полного покружения в мир эмбеддингов
- Тест и изучение каждого из методов с программной, математической, философской точки зрения
- Использование torch, а значит и cuda ядер
- Более читаемый код с точки зрения ООП
- Больше методов для работы с моделями и их изучения
- Описание каждой модели и их особенностей
- Описание на русском языке (возможно, потом добавлю также и на английском)
- Написал свой токенизатор со всеми нужными методами