Autant que je sache, les réseaux de neurones ont un nombre fixe de neurones dans la couche d'entrée.
Si des réseaux de neurones sont utilisés dans un contexte tel que la PNL, des phrases ou des blocs de texte de différentes tailles sont envoyés à un réseau. Comment la taille de l'entrée variable est-elle réconciliée avec la taille fixe de la couche d'entrée du réseau? En d'autres termes, comment un tel réseau est-il suffisamment flexible pour traiter une entrée pouvant aller d'un mot à plusieurs pages de texte?
Si mon hypothèse d'un nombre fixe de neurones d'entrée est fausse et que de nouveaux neurones d'entrée sont ajoutés / retirés du réseau pour correspondre à la taille de l'entrée, je ne vois pas comment ils pourraient être formés.
Je donne l'exemple de la PNL, mais beaucoup de problèmes ont une taille d'entrée intrinsèquement imprévisible. Je suis intéressé par l'approche générale pour faire face à cela.
Pour les images, il est clair que vous pouvez monter / réduire l’échantillon à une taille fixe, mais pour le texte, cela semble être une approche impossible, car l’ajout / la suppression de texte modifie le sens de la saisie d’origine.
la source
Réponses:
Trois possibilités me viennent à l’esprit.
Le plus simple est le zero-padding . En gros, vous prenez une taille d’entrée assez grande et vous n’ajoutez que des zéros si votre entrée concrète est trop petite. Bien sûr, ceci est assez limité et certainement pas utile si votre saisie va de quelques mots à des textes entiers.
Les NN récurrents (RNN) sont des NN très naturels à choisir si vous avez des textes de taille variable en entrée. Vous entrez des mots en tant que vecteurs de mots (ou imbrications) les uns après les autres et l'état interne du RNN est censé coder la signification de la chaîne complète de mots. C'est l'un des précédents articles.
Une autre possibilité consiste à utiliser des NN récursifs . Il s'agit essentiellement d'une forme de prétraitement dans laquelle un texte est récursivement réduit à un nombre réduit de vecteurs de mots jusqu'à ce qu'il ne reste qu'un seul mot - votre entrée, qui est censée coder l'intégralité du texte. Cela a beaucoup de sens d’un point de vue linguistique si votre entrée est composée de phrases (dont la taille peut varier beaucoup), car les phrases sont structurées de manière récursive. Par exemple, le mot vecteur pour "l'homme" devrait être similaire au mot vecteur pour "l'homme qui a confondu sa femme avec un chapeau", car les expressions nominales agissent comme des noms, etc. Vous pouvez souvent utiliser des informations linguistiques pour vous guider. votre récurrence sur la phrase. Si vous voulez aller au-delà de l'article de Wikipedia, c'est probablement un bon début .
la source
D'autres ont déjà mentionné:
Je vais donc ajouter une autre possibilité: utiliser des convolutions différents nombre de fois en fonction de la taille de l'entrée. Voici un excellent livre qui confirme cette approche:
Tiré de la page 360. Vous pouvez le lire davantage pour voir d'autres approches.
la source
En PNL, vous avez un ordre inhérent des entrées, donc les RNN sont un choix naturel.
Pour les entrées de taille variable où il n'y a pas d'ordre particulier parmi les entrées, on peut concevoir des réseaux qui:
La structure se présente comme suit:
Des réseaux similaires ont été utilisés pour apprendre les relations entre les objets ( arxiv: 1702.05068 ).
Un exemple simple sur la façon d'apprendre la variance d'un échantillon d'un ensemble de valeurs de taille variable est donné ici (disclaimer: je suis l'auteur de l'article lié).
la source