Я добавил слой внимания в свою модель машинного перевода.
model.add(AttentionDecoder(tar_timesteps, tar_vocab))
Я применил модель к 144K (135K поезд + 9K тест), португальскому и китайскому корпусу 30 эпох.По сравнению с моделью без внимания, другие условия остаются теми же, данные поезда получили увеличение BLEU-1/2/3/4 на 20% по всем направлениям, но почти не изменили данные испытаний.Я хочу выяснить, есть ли в моей реализации что-то не так.
def define_model(src_vocab, tar_vocab, src_timesteps, tar_timesteps, n_units):
model = Sequential()
model.add(Embedding(src_vocab, n_units, input_length=src_timesteps, mask_zero=True))
model.add(Bidirectional(LSTM(n_units)))
model.add(Dropout(0.2))
model.add(RepeatVector(tar_timesteps))
model.add(AttentionDecoder(tar_timesteps, tar_vocab))
model.add(Bidirectional(LSTM(n_units, return_sequences=True)))
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(tar_vocab, activation='softmax')))
return model