Comment gérer les LSTM avec de nombreuses fonctionnalités en python?


EmJ

J'ai un problème de classification binaire. J'utilise le modèle de keras suivant pour faire ma classification.

input1 = Input(shape=(25,6))
x1 = LSTM(200)(input1)
input2 = Input(shape=(24,6))
x2 = LSTM(200)(input2)
input3 = Input(shape=(21,6))
x3 = LSTM(200)(input3)
input4 = Input(shape=(20,6))
x4 = LSTM(200)(input4)
x = concatenate([x1,x2,x3,x4])
x = Dropout(0.2)(x)
x = Dense(200)(x)
x = Dropout(0.2)(x)
output = Dense(1, activation='sigmoid')(x)

Cependant, les résultats que j'obtiens sont extrêmement mauvais. Je pensais que la raison était que j'avais trop de fonctionnalités, donc les besoins ont plus de couches améliorées après le concatenate.
Je me demandais également s'il serait utile d'utiliser un calque flatten () après le concatenate.
de toute façon, comme je suis nouveau dans le deep learning, je ne sais pas trop comment en faire un meilleur modèle.

Je suis heureux de fournir plus de détails si nécessaire.

Ronakrit W.

Voici ce que je peux suggérer

  1. Supprimez tous les éléments qui empêchent le surajustement, comme le décrochage et le régularisateur. Ce qui peut arriver, c'est que votre modèle ne sera peut-être pas en mesure de capturer la complexité de vos données en utilisant une couche donnée, vous devez donc vous assurer que votre modèle est capable de sur-ajuster avant d'ajouter le régulariseur.

  2. Maintenant, essayez d'augmenter le nombre de couche dense et le nombre de neurones dans chaque couche jusqu'à ce que vous puissiez voir une amélioration. Il est également possible que vos données soient trop bruyantes ou que vous n'ayez que peu de données pour entraîner le modèle, de sorte que vous ne pouvez même pas produire de prédictions utiles.

  3. Maintenant, si vous êtes chanceux et que vous pouvez voir un surajustement, vous pouvez ajouter Dropout et régularisateur.

Étant donné que chaque réseau de neurones est un algorithme de base de gradient, vous pouvez vous retrouver au minimum local. Vous devrez peut-être également exécuter l'algorithme plusieurs fois avec un poids initial différent avant de pouvoir obtenir un bon résultat ou vous pouvez modifier votre fonction de perte afin que vous ayez un problème convexe où le minimum local est le minimum global.

Si vous ne pouvez pas obtenir un meilleur résultat

Vous devrez peut-être essayer une topologie différente car LSTM essaie simplement de modéliser un système qui suppose avoir la propriété Markov. vous pouvez regarder imbriqué-LSTM ou quelque chose comme ça, qui modélise le système de la façon dont le prochain pas de temps ne dépend pas seulement du pas de temps actuel.

Articles connexes