Вопрос или проблема
Я должен начать с того, что я здесь 100% новичок.
Я обучал модель RNN на наборе данных из 30 классов с более чем 90000 образцов, и она достигла менее 2% точности. Обучив ту же модель на небольшом подмножестве тех же данных (только с 3 классами), точность возросла до 97%. Я не уверен, почему она показывает такое плохое качество на большом наборе данных.
Я подозреваю, что модель может быть слишком маленькой, чтобы найти достаточно обобщаемых признаков, но результаты заставляют меня отказаться от вложения ресурсов в обучение большей модели. В настоящее время у меня есть два слоя с 256 скрытыми единицами.
Вот статья, в которой подробно описана архитектура модели: http://manikvarma.org/pubs/kusupati18.pdf
Пожалуйста, дайте мне любые советы, которые могут помочь мне с этим. Меня в основном озадачивает, как она продолжает показывать результаты хуже случайных.
Ответ или решение
Обучение рекуррентной нейронной сети (RNN) на большом наборе данных и получение точности менее 2% действительно вызывает удивление и вопросы. Рассмотрим ряд факторов, которые могут стать причиной такой низкой производительности вашей модели, что в свою очередь позволит вам лучше понять проблему и сделать необходимые корректировки.
### 1. Архитектура модели
Ваша модель состоит из двух слоёв с 256 скрытыми единицами. Хотя это может показаться достаточным для выполнении задач с меньшим количеством классов, для 30-классовой задачи может потребоваться более сложная архитектура. Возможно, модель не способна выделять достаточно разнообразные и обобщённые признаки из данных. Рассмотрите возможность увеличения числа слоёв или скрытых узлов, что может помочь улучшить способность модели к обучению.
### 2. Проблема с дисбалансом классов
Если в вашем наборе данных преобладают некоторые классы, это может привести к тому, что сеть будет обучаться склоняться к более представленным классам, игнорируя менее распространённые. Проверьте распределение классов в вашем наборе данных. Если оно неравномерно, рассмотрите методы, такие как увеличение данных (data augmentation) для меньшинств или использование взвешенных потерь (weighted loss) в процессе обучения.
### 3. Переобучение
На маленьком наборе данных ваша модель достигает 97% точности, но такая высокая точность может указывать на переобучение. В этом случае RNN запоминает данные вместо того, чтобы обобщать их. С увеличением объема данных модель может столкнуться с трудностями при обобщении и начать показывать худшие результаты. Попробуйте использовать регуляризацию, такие как dropout или L2-регуляризацию, чтобы уменьшить вероятность переобучения.
### 4. Предобработка данных
Качество входных данных критически важно для работы нейронных сетей. Убедитесь, что ваши данные надлежащим образом нормализованы и очищены. Проверьте, нет ли в данных выбросов или значительных шумов. Попробуйте различные методы предобработки, такие как нормализация значений, устранение пропусков или применение методов извлечения признаков.
### 5. Гиперпараметры
Настройка гиперпараметров может оказать большое влияние на результаты обучения. Попробуйте варьировать такие параметры, как скорость обучения, число итераций, размер батча и использование различных функций активации. Используйте кросс-валидацию для повышения надежности своей модели и оценки её производительности на отложенном наборе данных.
### 6. Проблемы с обучением
Убедитесь, что вы используете подходящий метод оптимизации. Адаптивные методы, такие как Adam, могут помочь в более эффективном обучении по сравнению с традиционными методами, такими как SGD. Также важно контролировать уменьшение скорости обучения, если вы используете подход к обучению с фиксированной скоростью.
### Заключение
Ситуация, когда RNN показывает низкую точность на большом наборе данных, может быть результатом нескольких факторов, включая архитектурные, данные и гиперпараметры. Рассмотрите возможность тщательной настройки архитектуры модели, обработки данных, настройки гиперпараметров и анализа распределения классов. Запуск нескольких экспериментов и итеративная настройка помогут вам достигнуть лучших результатов в обучении RNN.
Продолжайте исследовать и учиться, и удачи в ваших дальнейших проектах!