← Вернуться к списку

Почему моя модель языка на основе LSTM предсказывает только слово «the» и как это исправить?

Краткое содержание

Я пытаюсь использовать нейронную сеть Keras LSTM для моделирования языка на уровне символов. В качестве входных данных я предоставляю ему последние 50 символов, и он должен выдать следующий. У него 3 слоя по 400 нейронов каждый. Для обучающих данных я использую «Войну миров» Герберта Уэллса, что составляет 269639 обучающих образцов и 67410 валидационных образцов. После 7 эпох точность на валидационном наборе достигла 35,1%, а потеря на валидационном наборе составила 2,31. Однако, после подачи первой фразы «Войны миров» для запуска он выдает: the the the the the the the the the the the the the the the the... Я не уверен, где я совершаю ошибку; я не хочу, чтобы она переобучалась и выдавала отрывки прямо из обучающих данных, но я также не хочу, чтобы она просто повторяла «the» снова и снова. Я совершенно растерян в том, что мне делать, чтобы улучшить это. Любая помощь была бы очень кстати. Спасибо!

Полный текст

Почему моя модель языка на основе LSTM предсказывает только слово «the», и как это исправить? Задать вопрос

Задано 7 лет назад, исправлено сегодня, просмотрено 1 тыс. раз

2 $\begingroup$ Я пытаюсь использовать нейронную сеть Keras LSTM для моделирования языка на уровне символов. При этом я подаю ей последние 50 символов, и она должна выдать следующий. У неё 3 слоя по 400 нейронов каждый. Для обучающих данных я использую «Войну миров» Герберта Уэллса, что составляет 269639 обучающих образцов и 67410 валидационных образцов. После 7 эпох точность валидации достигла 35,1% и потеря валидации – 2,31. Однако, после того как я подаю ей первую фразу из «Войны миров», чтобы начать, она выдает: the the the the the the the the the the the the the the the the… Я не уверен, где я совершаю ошибку; я не хочу, чтобы она переобучалась и выдавала отрывки прямо из обучающих данных, но я также не хочу, чтобы она просто повторяла «the». Я действительно в полном замешательстве относительно того, что мне делать, чтобы улучшить это. Буду очень благодарен за любую помощь. Спасибо! нейронные сети обработка естественного языка рекуррентные нейронные сети keras долгосротная краткосрочная память поделиться улучшить этот вопрос отслеживать исправлено 42 мин назад Mr. AI Cool 1,197 1 1 серебряная медаль 20 20 бронзовые медали задано 30 декабря 2018 г. в 15:45 user117279 55 3 3 бронзовые медали $\endgroup$ добавить комментарий | 1 ответ 1 отсортировано по: Сбросить до значения по умолчанию Наивысший балл (по умолчанию) Измененная дата (от новых к старым) Созданная дата (от старых к новым) 1 $\begingroup$ Вы можете следовать этим шагам: LSTM медленнее с точки зрения сходимости. Они требуют много времени для обучения и, следовательно, дают лучшие результаты. Попробуйте обучить сеть в течение большего количества эпох, например, 50 или 65. Используйте меньший размер пакета. Попробуйте использовать оптимизатор RMSProp. Он требует длительного периода сходимости, но дает отличные результаты для рекуррентных сетей. Также попробуйте предсказания на уровне слова. Это означает, что вы должны обучить свою LSTM таким образом, чтобы она могла предсказывать слова, а не символы. Используйте слои Dropout между двумя LSTM слоями. Используйте скорость около 0,2 или 0,35. В качестве рабочего примера вы можете обратиться к этому проекту, который генерирует строки стихов с помощью LSTM в tensorflow. поделиться улучшить этот ответ отслеживать исправлено 44 мин назад Mr. AI Cool 1,197 1 1 серебряная медаль 20 20 бронзовые медали отвечено 31 декабря 2018 г. в 3:03 user18985 $\endgroup$ добавить комментарий | Вам необходимо войти, чтобы ответить на этот вопрос. Задать вопрос, чтобы получить ответы найти ответ на свой вопрос, задав его. Задайте вопрос исследовать связанные вопросы нейронные сети обработка естественного языка рекуррентные нейронные сети keras долгосротная краткосрочная память увидеть похожие вопросы с этими тегами.

2 $\begingroup$ Я пытаюсь использовать нейронную сеть Keras LSTM для моделирования языка на уровне символов. As the input, I give it the last 50 characters and it has to output the next one. It has 3 layers of 400 neurons each. For the training data, I am using 'War of The Worlds' by H.G. Wells which adds up to 269639 training samples and 67410 validation samples. After 7 epochs the validation accuracy has reached 35.1% and the validation loss has reached 2.31. However, after being fed the first sentence of war of the worlds to start it outputs: the the the the the the the the the the the the the the the the... I'm not sure where I'm going wrong; I don't want it to overfit and output passages straight from the training data but I also don't want it to just output 'the' repeatedly. I'm really at a loss as to what I should do to improve it. Any help would be greatly appreciated. Thanks! neural-networks natural-language-processing recurrent-neural-networks keras long-short-term-memory Share Improve this question Follow edited 42 mins ago Mr. AI Cool 1,197 1 1 silver badge 20 20 bronze badges asked Dec 30, 2018 at 15:45 user117279 55 3 3 bronze badges $\endgroup$ Add a comment |