Как интерпретировать странную кривую обучения для RNN?

#tensorflow

#tensorflow

Вопрос:

Я использую tensorflow для обучения простого двухслойного RNN в моем наборе данных. Кривая обучения показана следующим образом:

Кривая RNN

где, x-axis это шаги (за один шаг batch_size для обновления параметров сети используется несколько выборок), y-axis это точность. Красная, зеленая, синяя линии — это точность в обучающем наборе, наборе проверки и наборе тестов соответственно. Кажется, что кривая обучения не является гладкой и имеет некоторые искаженные изменения. Разумно ли это?

Ответ №1:

Вы пробовали обрезку градиента, оптимизатор Adam и снижение скорости обучения? По моему опыту, обрезка градиента может предотвратить взрывные градиенты, оптимизатор Adam может сходиться быстрее, а снижение скорости обучения может улучшить обобщение.

Вы перетасовали данные обучения?

Кроме того, визуализация распределения весов также помогает отладке модели.

Комментарии:

1. Привет, дорогой Сян, большое вам спасибо за ваши ценные предложения и опыт! В настоящее время я просто использую оптимизатор SGD и настраиваю скорость обучения, остальные параметры установлены по умолчанию и фиксированы. Я изучу производительность, как вы предложили позже. Да, я перетасовал данные обучения после завершения эпохи.

Ответ №2:

Это абсолютно нормально, поскольку вы используете SGD. Общая тенденция заключается в том, что ваша точность увеличивается с увеличением количества используемых мини-наборов, однако некоторые мини-наборы могут значительно «отличаться» от большинства других, поэтому точность для них может быть низкой.

Комментарии:

1. Большое спасибо за ваш ответ! В этих экспериментах я просто установил фиксированный размер пакета, скажем, 30. И я пытаюсь поэкспериментировать с переменной скоростью обучения. Начальные эксперименты показывают, что скорость обучения слишком велика в приведенных выше экспериментах. Я попробую поэкспериментировать с переменной batch_sizes .

Ответ №3:

Тот факт, что точность вашего тестирования и проверки ужасно падает в моменты времени 13 и 21, вызывает подозрение. Например, 13 снижает оценку теста ниже epoch 1.

Это означает, что ваша скорость обучения, вероятно, слишком велика: один мини-пакет не должен вызывать такого изменения веса.

Комментарии:

1. Большое спасибо за ваш ответ! Да, я пробовал переменные скорости обучения, это показывает, что скорость обучения в приведенных выше экспериментах слишком велика. Если скорость обучения установлена на относительно небольшое значение, кривая кажется более гладкой, но с медленной сходимостью. Поэтому требуется больше шагов. Кроме того, шаг в моем эксперименте не означает epoch , как вы сказали. Коэффициент x-axis умножения на приведенном выше рисунке должен быть равен 1000. (извините, что я не указал это в вопросе). У меня есть 1600 обучающие выборки и batch_size= 30, поэтому одна эпоха составляет более 50 шагов.