Данный репозиторий является кратким, структурированным конспектом изучаемого материала в процессе обучения в Deep Learning School
- Организационная информация
- Введение в NLP и классификация текста
- Embeddings
- Рекуррентные нейронные сети
- Language modelling
- Neural Machine Translation
- Transformers
- ELMO, GPT, BERT
Ставится задача поиска похожих по смыслу вопросов(вопросы StackOverflow), а именно задача ранжирования вопросов.
1. Используются предобученные эмбеддинги слов
- from gensim.models.keyedvectors import KeyedVectors
- KeyedVectors.load_word2vec_format("SO_vectors_200.bin?download=1", binary=True)
2. Представление эмбеддинга предожения через эмбеддинги слов
3. Метрики ранжирования
- Hits@K
- DCG@K
4. Ранжирование по косинусной похожести
5. Обучение Word2Vec на корпусе похожих вопросов
- from gensim.models import Word2Vec
6. Применение различный токенизаторов, стеммингов, лемматизаторов, стоп-слов и т.д.
Ставится задача семантической классификации твитов с помощью эмбеддингов(предобученных или обученных нами)
1. Использование word2veс(предобученного) для получения эмбеддингов
- word2vec = api.load("word2vec-google-news-300")
2. Препроцессинг данных + различные способы получения эмбеддингов предложения по эмбеддингам слов
- import gensim
- import gensim.donloader as api
- import nltk
3. Нормализация эмбеддингов перед подачей их в нейронную сеть.
4. Создание кастомного Datset для обучения модели
5. Визуализация векторов предложений с помощью PCA
6. Embedding for unknown words
- Представление эмбеддинга незнакомого слова через его "ближний" контекст
- Представление эмбеддинга незнакомого слова чреез обученный tfidf
- from sklearn.feature_extraction.text import TfidfVectorizer
- !pip install sparsesvd
- from sparsesvd import sparsesvd
- Библиотека для SVD разложения sparse matrix
Ставится задача бинарной классификации текстов на "neg"(негативные) и "pos"(позитивные),
а такде предлагается понять, насколько хорошо модель "понимает" смысл слов и какие слова
влиют на результат ответа модели.
1. Использование torchtext:
- datasets
- Field, LabelField, BucketIterator
- Vectors, GloVe
2. Использование LSTM для задачи классификации
3. Использование CNN для задачи классификации
4. Библиотека для интерпретации того, насколько модель хорошо понимает смысл слов
- !pip install -q captum
- LayerIntegratedGradients, TokenReferenceBase, visualization
5. Использование предобученных эмбеддингов для инициализации словаря модели
- _[homework]classification.ipynb
- Вспомогательные источники:
- Understanding BucketIterator, Field, LabelField, Glove
- Understanding Glove, Vectors and why do i need it
- Understanding Bidirectional
- CNN for text classifications
Ставится задача машинного перевола, для чего необходимо
реализовать архитектуру Seq2Seq с механизмом Attention для декодера.
1. Использование torchtext для препроцессинга данных.
- Field(tokenizer= ...,
init_token="<sos>",
eos_token="<eos>",
lower=True
)
- TabularDataset
- BucketIterator
2. Encoder
- LSTM
- n_layers = 1
- bidirectional = True
- Преобразование hidden, cell на выходе из encoder, т.к.
вследствие bidirectional размерность увеличивается
3. Temperature Softmax
- Температурный Softmax, благодаря которому можно с помощью
температуры сильнее выделять вероятность классов или
наоборот делать распределение равномерным
4. Attention(concat attention)
5. Decoder with attention
- GRU
- n_layers = 1
- bidirectional = False
6. Seq2Seq
7. Init params to Encoder, Decoder, Attention, Seq2Seq
8. Other
- Train loop
- Val loop
- Plot
- translation
- Metric: BLEU
- [homework]NeuralMachineTranslation.ipynb
- Вспомогательные источники:
-
Лекция. Трансформеры. Positional Encoding, Decoder side, Training
-
Вспомогательные исчточники: