Як вибрати кількість прихованих шарів і кількість комірок пам'яті в LSTM?


28

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

Чи є стаття, де ця проблема досліджується, тобто скільки комірок пам’яті потрібно використовувати? Я припускаю, що це повністю залежить від програми та в якому контексті використовується модель, але що говорить дослідження?

Відповіді:


15

Ваше запитання досить широке, але ось кілька порад:

Для інформаційних мереж див. Це питання :

@ відповідь Дуга спрацювала на мене. Існує ще одне додаткове правило, яке допомагає вирішувати проблеми з навчанням. Верхня межа кількості прихованих нейронів, які не призведуть до надмірного прилягання:

Nh=Ns(α(Ni+No))

Ni = кількість вхідних нейронів. = кількість вихідних нейронів. = кількість зразків у наборі даних про навчання. = довільний коефіцієнт масштабування, як правило, 2-10. Інші рекомендують встановлювати на значення від 5 до 10, але я вважаю, що значення 2 часто працюватиме без надмірного розміщення. Як пояснюється цим відмінним текстом проекту NN , ви хочете обмежити кількість вільних параметрів у вашій моделі (її ступінь або кількість ненульових ваг) лише невеликою часткою ступенів свободи ваших даних. Ступінь свободи у ваших даних - це кількість вибірок * ступенів свободи (розміри) у кожному зразку абоNoNsα
alphaNs(Ni+No) (assuming they're all independent). So α is a way to indicate how general you want your model to be, or how much you want to prevent overfitting.

For an automated procedure you'd start with an alpha of 2 (twice as many degrees of freedom in your training data as your model) and work your way up to 10 if the error for training data is significantly smaller than for the cross-validation data set.

And specifically on LSTM's, you might want to check out this.

But the main point: there is no rule for the amount of hidden nodes you should use, it is something you have to figure out for each case by trial and error.


7

Select the number of hidden layers and number of memory cells in LSTM is always depend on application domain and context where you want to apply this LSTM.

For hidden Layers. The introduction of hidden layer(s) makes it possible for the network to exhibit non-linear behaviour.

The optimal number of hidden units could easily be smaller than the number of inputs, there is no rule like multiply the number of inputs with N... If you have a lot of training examples, you can use multiple hidden units, but sometimes just 2 hidden units works best with little data. Usually people use one hidden layer for simple tasks, but nowadays research in deep neural network architectures show that many hidden layers can be fruitful for difficult object, handwritten character, and face recognition problems.

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


5
Non-linearity is due to the use of non-linear activation functions. The number of layers only increases the expressivity of the NN. You should correct this answer. Combinations of linear functions are still linear functions (so, if you had multiple layers that only performed a linear combination of the inputs, then the combination of these layers would still be linear).
nbro

4

In general, there are no guidelines on how to determine the number of layers or the number of memory cells in a LSTM.

The number of layers and cells required in an LSTM might depend on several aspects of the problem:

  1. The complexity of the dataset. The amount of features, number of data points etc.

  2. The the data generating process. Following example of how data generating process can play significant part.

Ex - Prediction of oil prices compared to the prediction of GDP of a well understood economy. The latter is much easier than the former. Thus, predicting oil prices might as well need more number of the LSTM memory cells to predict with the same accuracy as compared to the GDP.

  1. The accuracy required for the use case.The number of memory cells will heavily depend on this. If the goal is to beat the state-of-the-art -- one needs more LSTM cells in general. Compare that to the goal of coming up with reasonable predictions -- which would need lesser number of LSTM cells.

I follow these steps when modelling using LSTM:

  1. Try a single hidden layer with 2 or 3 memory cells. See how it performs against a benchmark. If it is a time series problem then I generally make a forecast from classical time series techniques as benchmark.

  2. Try and increase the number of memory cells. If the performance is not increasing much then move on to next step.

  3. Start making the network deep i.e. add another layer with a small number of memory cells.

Aside :

There is no limit to the amount of labor that can be devoted to reach that global minima of the loss function and tune the best hyper-parameters. So, having focus on the end goal for modeling should be the strategy rather than trying to increase the accuracy as much as possible.

Most of the problems can be handled using 2-3 layers of the network.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.