Soweit ich das beurteilen kann, haben neuronale Netze eine feste Anzahl von Neuronen in der Eingabeebene.
Wenn neuronale Netzwerke in einem Kontext wie NLP verwendet werden, werden Sätze oder Textblöcke unterschiedlicher Größe in ein Netzwerk eingespeist. Wie wird die variierende Eingabegröße mit der festen Größe der Eingabeebene des Netzwerks in Einklang gebracht ? Mit anderen Worten, wie kann ein solches Netzwerk flexibel genug sein, um mit Eingaben umzugehen, die von einem Wort bis zu mehreren Textseiten reichen können?
Wenn meine Annahme einer festen Anzahl von Eingangsneuronen falsch ist und neue Eingangsneuronen zum Netzwerk hinzugefügt / daraus entfernt werden, um der Eingangsgröße zu entsprechen, sehe ich nicht, wie diese jemals trainiert werden können.
Ich nenne das Beispiel von NLP, aber viele Probleme haben eine von Natur aus unvorhersehbare Eingabegröße. Ich interessiere mich für den allgemeinen Ansatz, damit umzugehen.
Bei Bildern ist es klar, dass Sie eine feste Größe für das Up- / Down-Sampling festlegen können. Bei Text scheint dies jedoch ein unmöglicher Ansatz zu sein, da das Hinzufügen / Entfernen von Text die Bedeutung der ursprünglichen Eingabe ändert.
quelle
Antworten:
Drei Möglichkeiten kommen in den Sinn.
Am einfachsten ist das Auffüllen mit Nullen . Grundsätzlich nehmen Sie eine ziemlich große Eingabegröße und fügen nur Nullen hinzu, wenn Ihre konkrete Eingabe zu klein ist. Dies ist natürlich ziemlich begrenzt und sicherlich nicht sinnvoll, wenn Ihre Eingabe von wenigen Wörtern bis zu Volltexten reicht.
Wiederkehrende NNs ( Recurrent NNs, RNN) sind eine sehr natürliche Wahl, wenn Sie Texte unterschiedlicher Größe als Eingabe haben. Sie geben Wörter als Wortvektoren (oder Einbettungen) nacheinander ein, und der interne Zustand des RNN soll die Bedeutung der gesamten Wortfolge codieren. Dies ist eine der früheren Arbeiten.
Eine andere Möglichkeit ist die Verwendung von rekursiven NNs . Dies ist im Grunde eine Form der Vorverarbeitung, bei der ein Text rekursiv auf eine kleinere Anzahl von Wortvektoren reduziert wird, bis nur noch einer übrig ist - Ihre Eingabe, die den gesamten Text codieren soll. Dies ist aus sprachlicher Sicht sehr sinnvoll, wenn Ihre Eingabe aus Sätzen besteht (die sehr unterschiedlich groß sein können), da die Sätze rekursiv strukturiert sind. Beispielsweise sollte der Wortvektor für "der Mann" dem Wortvektor für "der Mann, der seine Frau mit einem Hut verwechselt hat" ähnlich sein, da Substantivphrasen wie Substantive usw. wirken. Oft können Sie sprachliche Informationen als Leitfaden verwenden Ihre Rekursion auf den Satz. Wenn Sie weit über den Wikipedia-Artikel hinausgehen möchten, ist dies wahrscheinlich ein guter Anfang .
quelle
Andere haben bereits erwähnt:
Deshalb möchte ich eine weitere Möglichkeit hinzufügen: Verwenden von Windungen, die je nach Größe der Eingabe unterschiedlich oft verwendet werden. Hier ist ein ausgezeichnetes Buch, das diesen Ansatz bestätigt:
Entnommen aus Seite 360. Sie können es weiter lesen, um einige andere Ansätze zu sehen.
quelle
In NLP haben Sie eine inhärente Reihenfolge der Eingaben, sodass RNNs eine natürliche Wahl sind.
Für Eingänge mit variabler Größe, bei denen es keine bestimmte Reihenfolge zwischen den Eingängen gibt, kann man Netzwerke entwerfen, die:
Die Struktur sieht wie folgt aus:
Ähnliche Netzwerke wurden verwendet, um die Beziehungen zwischen Objekten zu lernen ( arxiv: 1702.05068 ).
Ein einfaches Beispiel für das Lernen der Stichprobenvarianz eines Wertesatzes mit variabler Größe finden Sie hier (Haftungsausschluss: Ich bin der Autor des verlinkten Artikels).
quelle