O ile mogę stwierdzić, sieci neuronowe mają stałą liczbę neuronów w warstwie wejściowej.
Jeśli sieci neuronowe są używane w kontekście takim jak NLP, zdania lub bloki tekstu o różnych rozmiarach są podawane do sieci. W jaki sposób różny rozmiar wejściowy jest pogodzony ze stałym rozmiarem wejściowej warstwy sieci? Innymi słowy, w jaki sposób taka sieć jest wystarczająco elastyczna, aby poradzić sobie z danymi wejściowymi, które mogą znajdować się w dowolnym miejscu, od jednego słowa do wielu stron tekstu?
Jeśli moje założenie o stałej liczbie neuronów wejściowych jest błędne, a nowe neurony wejściowe są dodawane / usuwane z sieci w celu dopasowania do wielkości wejściowej, nie widzę, jak można je kiedykolwiek wytrenować.
Podaję przykład NLP, ale wiele problemów ma z natury nieprzewidywalny rozmiar wejściowy. Interesuje mnie ogólne podejście do tego problemu.
W przypadku obrazów jasne jest, że można próbkować w górę / w dół do ustalonego rozmiaru, ale w przypadku tekstu wydaje się to niemożliwe, ponieważ dodawanie / usuwanie tekstu zmienia znaczenie oryginalnego tekstu.
źródło
Odpowiedzi:
Przychodzą mi na myśl trzy możliwości.
Najłatwiejsze jest wypełnianie zerami . Zasadniczo bierzesz dość duży rozmiar wejściowy i dodajesz zera, jeśli konkretny wkład jest zbyt mały. Oczywiście jest to dość ograniczone i na pewno nieprzydatne, jeśli wprowadzasz od kilku słów do pełnych tekstów.
Nawracające NN (RNN) są bardzo naturalnym NN do wyboru, jeśli masz teksty o różnych rozmiarach jako dane wejściowe. Wpisujesz słowa jako wektory (lub osadzenia) słów jeden po drugim, a stan wewnętrzny RNN powinien zakodować znaczenie pełnego ciągu słów. To jeden z wcześniejszych artykułów.
Inną możliwością jest użycie rekurencyjnych NN . Jest to w zasadzie forma wstępnego przetwarzania, w której tekst rekurencyjnie jest redukowany do mniejszej liczby wektorów słów, aż pozostanie tylko jeden - twoje wejście, które ma zakodować cały tekst. Ma to sens z lingwistycznego punktu widzenia, jeśli dane wejściowe składają się ze zdań (które mogą się znacznie różnić pod względem wielkości), ponieważ zdania mają strukturę rekurencyjną. Na przykład wektor słowa „mężczyzna” powinien być podobny do wektora słowa „mężczyzna, który pomylił żonę z kapeluszem”, ponieważ wyrażenia rzeczownikowe działają jak rzeczowniki itp. Często można użyć informacji językowych twoja rekurencja w zdaniu. Jeśli chcesz wyjść poza artykuł z Wikipedii, to prawdopodobnie dobry początek .
źródło
Inni już wspomnieli:
dodam więc inną możliwość: stosowanie zwojów różną liczbę razy w zależności od wielkości wejścia. Oto doskonała książka, która potwierdza to podejście:
Zaczerpnięte ze strony 360. Możesz przeczytać to dalej, aby zobaczyć inne podejścia.
źródło
W NLP masz nieodłączną kolejność wejść, więc RNN są naturalnym wyborem.
Dla wejść o zmiennej wielkości, dla których nie ma szczególnego uporządkowania między wejściami, można zaprojektować sieci, które:
Struktura wygląda następująco:
Podobne sieci wykorzystano do poznania relacji między obiektami ( arxiv: 1702.05068 ).
Prosty przykład tego, jak nauczyć się przykładowej wariancji zestawu wartości o zmiennej wielkości, znajduje się tutaj (zastrzeżenie: jestem autorem powiązanego artykułu).
źródło