Impedindo o super ajuste do LSTM em um pequeno conjunto de dados

13

Estou modelando 15000 tweets para previsão de sentimentos usando uma única camada LSTM com 128 unidades ocultas usando uma representação do tipo word2vec com 80 dimensões. Recebo uma precisão de descida (38% com aleatório = 20%) após 1 época. Mais treinamento faz com que a precisão da validação comece a diminuir à medida que a precisão do treinamento começa a subir - um sinal claro de super ajuste.

Estou, portanto, pensando em maneiras de regularizar. Prefiro não reduzir o número de unidades ocultas (128 já parece um pouco baixo). Atualmente, uso o abandono escolar com uma probabilidade de 50%, mas talvez isso possa ser aumentado. O otimizador é Adam com os parâmetros padrão para Keras ( http://keras.io/optimizers/#adam ).

Quais são algumas maneiras eficazes de reduzir o sobreajuste para este modelo no meu conjunto de dados?

pir
fonte
Estou tendo exatamente o mesmo problema. Como você finalmente conseguiu regularizar seu LSTM? A precisão de validação do meu LSTM é de 41%. Meu formato de entrada é (200) e eu tenho uma camada LSTM com 64 unidades, seguida por duas camadas densas com abandono de 0,4.
Nirvan Anjirbag

Respostas:

7

Você poderia tentar:

  • Reduza o número de unidades ocultas, eu sei que você disse que ela já parece baixa, mas, como a camada de entrada possui apenas 80 recursos, na verdade pode ser que 128 seja demais. Uma regra prática é manter o número de unidades ocultas entre o número de unidades de entrada (80) e as classes de saída (5);
  • Como alternativa, você pode aumentar a dimensão do espaço de representação de entrada para mais de 80 (no entanto, isso também pode se ajustar demais se a representação já for muito estreita para qualquer palavra).

Uma boa maneira de ajustar uma rede também é começar com uma rede de ajuste excessivo e reduzir a capacidade (unidades ocultas e espaço de incorporação) até que não seja mais ajustado.

Miguel
fonte
1
Você tentou a regularização l1 e l2? Isso realmente funciona? Esta resposta sugere que você não deve fazer isso em geral
Jakub Bartczuk
Eu não estava ciente desta propriedade de RNNs, vou apagar esse ponto da resposta
Miguel
Olá, eu queria saber como você conseguiu a regra geral que afirma "ter o número de unidades ocultas entre o número de unidades de entrada e as classes de saída". Existe um artigo ao qual eu possa me referir?
777 Kong
Essa é a coisa sobre regras de ouro, eu não sei onde eu tenho que partir ...
Miguel