Как выбрать количество скрытых слоев и количество ячеек памяти в LSTM?

28

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

Есть ли статья, в которой исследуется эта проблема, т. Е. Сколько ячеек памяти следует использовать? Я предполагаю, что это полностью зависит от приложения и в каком контексте используется модель, но что говорят исследования?

Стивен Джонсон
источник

Ответы:

15

Ваш вопрос довольно широкий, но вот несколько советов:

Для сетей с прямой связью смотрите этот вопрос :

Ответ @ Дуга сработал для меня. Есть еще одно практическое правило, которое помогает при контролируемых проблемах в обучении. Верхняя граница количества скрытых нейронов, которые не приведут к переоснащению:

Nчасзнак равноNs(α*(Nя+Nо))

NяNоNsα
aLпчасaNs*(Nя+Nо)α

Для автоматизированной процедуры вы должны начать с альфа-2 (вдвое больше степеней свободы в ваших данных обучения, чем в вашей модели) и работать до 10, если ошибка для данных обучения значительно меньше, чем для перекрестной проверки набор данных.

И особенно на LSTM, вы можете проверить это .

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

Томас В.
источник
7

Выбор количества скрытых слоев и количества ячеек памяти в LSTM всегда зависит от области приложения и контекста, в котором вы хотите применить этот LSTM.

Для скрытых слоев. Введение скрытого (ых) слоя (ов) позволяет сети демонстрировать нелинейное поведение.

Оптимальное количество скрытых единиц может легко быть меньше, чем количество входов, нет такого правила, как умножение количества входов на N ... Если у вас много обучающих примеров, вы можете использовать несколько скрытых единиц, но иногда просто 2 скрытых устройства работают лучше всего с небольшим количеством данных. Обычно люди используют один скрытый слой для простых задач, но в настоящее время исследования в области архитектуры глубоких нейронных сетей показывают, что многие скрытые слои могут быть полезны для сложных объектов, рукописных символов и проблем распознавания лиц.

I assume it totally depends on the application and in which context the model is being used.

Maheshwar Ligade
источник
5
Нелинейность обусловлена ​​использованием нелинейных функций активации. Количество слоев только увеличивает выразительность NN. Вы должны исправить этот ответ. Комбинации линейных функций все еще являются линейными функциями (поэтому, если бы у вас было несколько слоев, которые выполняли только линейную комбинацию входных данных, тогда комбинация этих слоев все равно была бы линейной).
nbro
4

В целом, нет никаких рекомендаций относительно того, как определить количество слоев или количество ячеек памяти в LSTM.

Количество слоев и ячеек, требуемых в LSTM, может зависеть от нескольких аспектов проблемы:

  1. Сложность набора данных. Количество функций, количество точек данных и т. Д.

  2. Процесс генерации данных. Следующий пример того, как процесс генерации данных может сыграть значительную роль.

Ex - Прогноз цен на нефть по сравнению с прогнозом ВВП хорошо понимаемой экономики. Последнее намного проще, чем первое. Таким образом, для прогнозирования цен на нефть также может потребоваться большее количество ячеек памяти LSTM для прогнозирования с той же точностью, что и для ВВП.

  1. Точность, необходимая для варианта использования. Количество ячеек памяти будет сильно зависеть от этого. Если цель состоит в том, чтобы побить современное состояние - нужно больше ячеек LSTM в целом. Сравните это с целью придумать разумные прогнозы, для которых потребуется меньшее количество ячеек LSTM.

Я выполняю следующие шаги при моделировании с использованием LSTM:

  1. Попробуйте один скрытый слой с 2 ​​или 3 ячейками памяти. Посмотрите, как это работает по сравнению с эталоном. Если это проблема временного ряда, то я обычно делаю прогноз на основе классических методов временного ряда в качестве эталона.

  2. Попробуйте увеличить количество ячеек памяти. Если производительность не сильно увеличивается, переходите к следующему шагу.

  3. Начните углублять сеть, т.е. добавьте еще один слой с небольшим количеством ячеек памяти.

В сторону :

Нет предела количеству труда, которое может быть потрачено на достижение глобальных минимумов функции потерь и настройку лучших гиперпараметров. Таким образом, сосредоточение внимания на конечной цели моделирования должно быть стратегией, а не пытаться максимально повысить точность.

Большинство проблем можно решить, используя 2-3 уровня сети.

наивный
источник