- Познакомиться на практике с моделями Seq2Seq в архитектуре Encoder-Decoder
- Изучить возможности PyTorch для объединения нескольких рекуррентных нейронных сетей в одну модель
- Решить задачу машинного перевода с использованием модели в архитектуре Encoder-Decoder
- Загрузите набор данных Яндекс Переводчика (наборы предложений на английском и русском языках). Данных много, можете использовать не все. Можете использовать любые другие наборы данных, в том числе те, которые предоставляет PyTorch для NMT (библиотека torchtext).
- Самостоятельно выберите, какой язык будет исходным, а какой — целевым.
- Разделите данные на обучающую и тестирующую выборку любым удобным способом (тестирующая выборка должна быть по объему значительно меньше обучающей).
- Спроектируйте архитектуру кодировщика и декодировщика (рекомендуется использовать рекуррентные блоки GRU).
- Объедините кодировщик и декодировщик в одну Seq2Seq модель.
- Выполните обучение модели (в качестве функции потерь используется категориальная перекрестная энтропия).
- Выполните перевод нескольких предложений из тестирующей выборки (не менее десяти) с исходного языка на целевой.
- не забывайте про специальные токены (Start of sequence) и (End of sequence); если их нет в разметке данных — следует добавить;
- рекомендую в этой ЛР разобраться тем, как выполнять padding последовательностей — сделать так, чтобы все последовательности (входные и выходные) имели одну длину; для этого достаточно найти самую длинную последовательность, получить ее размер и дополнить до этого размера все остальные последовательности специальным токеном ;
- можете подавать на вход кодировщику предварительно обученные векторные представления токенов (полученные, например, с помощью Navec); можете использовать вспомогательный слой Embedding на входе кодировщика (предварительно сформировав вокабуляр и сопоставив каждому токену некоторый числовой индекс).
- Корпус загружен, есть обучающая и тестирующая выборки;
- спроектирована модель в архитектуре Encoder-Decoder;
- обучена модель нейронного машинного перевода;
- выполнен перевод нескольких предложений (не менее десяти) с исходного языка на целевой.
Качество перевода не влияет на оценку лабораторной работы! Мы учимся.