Je me demandais quelle était la meilleure façon d'initialiser l'état des LSTM. Actuellement, je viens de l'initialiser à tous les zéros. Je ne trouve vraiment rien en ligne sur la façon de l'initialiser. Une chose que je pensais faire était de faire de l'état initial un paramètre entraînable. Aucun conseil?
neural-networks
lstm
chasep255
la source
la source
Réponses:
Normalement, vous devez mettre les états initiaux à zéro, mais le réseau va apprendre à s'adapter à cet état initial.
L' article suivant suggère d'apprendre les états cachés initiaux ou d'utiliser du bruit aléatoire.
Fondamentalement, si vos données comprennent de nombreuses séquences courtes, la formation de l'état initial peut accélérer l'apprentissage.
Alternativement, si vos données incluent un petit nombre de longues séquences, il se peut qu'il n'y ait pas suffisamment de données pour entraîner efficacement l'état initial. Dans ce cas, l'utilisation d'un état initial bruyant peut accélérer l'apprentissage. Une idée qu'ils ne mentionnent pas serait d'apprendre la moyenne et la norme du générateur de bruit.
L'article note que si vous choisissez d'apprendre l'état initial, l'ajout de bruit n'a que peu d'avantages.
la source
Vous pouvez utiliser des paramètres initialisés qui sont appris à l'aide de l'apprentissage par transfert, mais gardez à l'esprit qu'il a également commencé quelque part à partir d'un état initialisé non appris. Fondamentalement, vous devez commencer à partir d'un certain point, généralement un tas de zéros, puis affiner par la formation. Donc, si vous n'utilisez aucun mécanisme d'apprentissage par transfert, vous devez également partir d'un état initial manuel, je suis sûr qu'il pourrait y avoir des ouvrages disponibles pour définir manuellement les états initiaux.
C'est l'explication la plus simple que je pourrais mettre. Merci.
la source