Jak sieci neuronowe mogą sobie radzić z różnymi wielkościami wejściowymi?

42

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.

Asciiom
źródło
czy możesz wyjaśnić, co masz na myśli, próbkując w dół do ustalonego rozmiaru? Jak odbywa się próbkowanie w dół?
Charlie Parker,

Odpowiedzi:

36

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 .

BlindKungFuMaster
źródło
1
Jaka jest różnica między tym, co nazywacie „rekurencyjnymi NN”, a RNN? R jest rekurencyjny ... Przydałoby się też kilka cytatów i wskazówek.
Eric Platon
3
R jest cykliczny. Recurrent oznacza dodawanie danych liniowych do tego samego NN raz za razem. Rekurencyjne oznacza wprowadzanie danych wzdłuż struktury drzewa.
BlindKungFuMaster
@BlindKungFuMaster 0 wyściółka z maską dla MLP jest dobra i nie wpływa negatywnie na dokładność?
DINA TAKLIT
12

Inni już wspomnieli:

  • zero wypełnienia
  • RNN
  • rekurencyjny NN

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:

Rozważ kolekcję obrazów, w której każdy obraz ma inną szerokość i wysokość. Nie jest jasne, jak modelować takie dane wejściowe za pomocą macierzy masy o ustalonym rozmiarze. Konwolucja jest łatwa do zastosowania; jądro jest po prostu nakładane różną liczbę razy w zależności od wielkości danych wejściowych, a dane wyjściowe operacji splotu są odpowiednio skalowane.

Zaczerpnięte ze strony 360. Możesz przeczytać to dalej, aby zobaczyć inne podejścia.

Salvador Dali
źródło
1
Przyszło mi do głowy, że to podejście zadziała tylko wtedy, gdy 1) proporcje (AR) wszystkich obrazów wejściowych są takie same, 2) przeskalujesz wszystkie obrazy do danego AR, lub 3) wyzerujesz obrazy, aby wymusić dany AR.
Matt Wenham
@Salvador Dali czy wypełnienie „0” maską może być dobrym rozwiązaniem dla MLP?
DINA TAKLIT
Nie mogę znaleźć cytowanego tekstu w odpowiedzi w książce. Może był pierwotnie obecny i został później usunięty? Strona 354 ma obecnie akapit, który zaczyna się podobnie, ale nigdy nie używa zmiennej liczby warstw (ale zamiast tego zmiennej wielkości wyjściowej).
jochen
7

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:

  1. użyj powtórzenia tej samej podsieci dla każdej grupy danych wejściowych (tj. dla wspólnych wag). Ta powtarzająca się podsieć uczy się reprezentacji (grup) danych wejściowych.
  2. użyj operacji na reprezentacji wejść, która ma taką samą symetrię jak wejścia. W przypadku niezmiennych danych zamówienia możliwe jest uśrednienie reprezentacji z sieci wejściowych.
  3. użyj sieci wyjściowej, aby zminimalizować funkcję strat na wyjściu w oparciu o kombinację reprezentacji danych wejściowych.

Struktura wygląda następująco:

struktura sieci

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).

Andre Holzner
źródło