Модель кодера-декодера RNN продолжает переоснащаться - PullRequest
0 голосов
/ 19 мая 2019

Я тренирую модель машинного перевода (с английского на вьетнамский) с RNN, LSTM с 25000 примерами пар (для обучающего набора -> 20000, тестового набора -> 5000) модели, которую я использовал, как показано ниже, но val_acc всегда достигает~ 0,37 и не увеличивается, хотя я использовал некоторые другие модели, и эпоха составляет около 100:

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(Bidirectional(LSTM(n_units, return_sequences=True)))
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(512, activation='relu')))
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(tar_vocab, activation='softmax')))
return model

Я хочу, чтобы модель предотвращала переоснащение, надеюсь, вы, ребята, помогите мне решить проблему

1 Ответ

0 голосов
/ 29 мая 2019

20 тыс. Обучающих примеров - это экстремально малые обучающие данные для нейронного машинного перевода. Если вы хотите обучить что-либо на этих данных, вы должны использовать как можно меньше параметров и сильную регуляризацию (выпадение, L2, что-то вроде SwitchOut ).

Если я правильно понимаю ваш код, вы делаете архитектуру vanilla encoder-decoder Sutkever в al . Хотя это простая модель, она имеет относительно слабые возможности моделирования. Для такого небольшого набора данных модель внимания может быть более подходящей.

...