RNN vs CNN na wysokim poziomie


53

Myślałem o Rekurencyjnych Sieciach Neuronowych (RNN) i ich odmianach oraz Konwolucyjnych Sieciach Neuronowych (CNN) i ich odmianach.

Czy te dwa punkty są sprawiedliwe:

  • Użyj CNN, aby rozbić komponent (taki jak obraz) na podskładniki (takie jak obiekt w obrazie, taki jak kontur obiektu w obrazie itp.)
  • Użyj RNN do tworzenia kombinacji podskładników (podpisywanie obrazów, generowanie tekstu, tłumaczenie językowe itp.)

Byłbym wdzięczny, gdyby ktokolwiek chciał wskazać jakiekolwiek nieścisłości w tych oświadczeniach. Moim celem jest uzyskanie jaśniejszej podstawy dla zastosowań CNN i RNN.

Odpowiedzi:


42

CNN nauczy się rozpoznawać wzorce w przestrzeni. Tak więc, jak mówisz, CNN nauczy się rozpoznawać komponenty obrazu (np. Linie, krzywe itp.), A następnie nauczy się łączyć te komponenty, aby rozpoznawać większe struktury (np. Twarze, obiekty itp.).

Można powiedzieć w bardzo ogólny sposób, że RNN podobnie nauczy się rozpoznawać wzorce w czasie. Tak więc RNN, który jest przeszkolony do tłumaczenia tekstu, może nauczyć się, że „pies” powinien być tłumaczony inaczej, jeśli poprzedzony jest słowem „gorący”.

Jednak mechanizm, za pomocą którego dwa rodzaje NN reprezentują te wzorce, jest inny. W przypadku CNN szukasz tych samych wzorców na wszystkich różnych polach obrazu. W przypadku RNN (w najprostszym przypadku) karmisz ukryte warstwy z poprzedniego kroku jako dodatkowe wejście do następnego kroku. Podczas gdy RNN gromadzi pamięć w tym procesie, nie szuka tych samych wzorców w różnych przedziałach czasu w taki sam sposób, jak CNN szuka tych samych wzorców w różnych regionach przestrzeni.

Powinienem też zauważyć, że kiedy mówię tutaj „czas” i „przestrzeń”, nie należy tego rozumieć zbyt dosłownie. Możesz na przykład uruchomić RNN na pojedynczym obrazie w celu podpisania obrazu, a znaczenie „czas” byłoby po prostu kolejnością, w jakiej przetwarzane są różne części obrazu. Więc obiekty wstępnie przetworzone będą informować o napisach później przetworzonych obiektów.


3
Dobrą intuicję dla różnic w modelu RNN można uzyskać od karpathy.github.io/assets/rnn/diags.jpeg - dużo skopiowanej grafiki. CNN są wraz z MLP i innymi nierekurencyjnymi modelami jako implementujące tylko przypadek modelu jeden do jednego.
Neil Slater,

@NeilSlater Znam nawet oryginalny artykuł z tego obrazu, ale nigdy nie mogłem z niego wyciągnąć nic przydatnego. Czy mógłbyś rozwinąć to, czego nauczyłeś się z obrazu?
Cześć Anioł

2
@ Hi-Angel: Obraz wizualizuje możliwe relacje między sekwencjami a pojedynczymi bytami, które mogą być odwzorowane przez model. Jeśli już dobrze rozumiesz permutacje, możesz nic z tego nie uzyskać. Powodem, dla którego obraz pojawia się w tym artykule jest to, że pokazuje on względną elastyczność RNN: RNN można zastosować do wszystkich różnych rodzajów wyświetlanych problemów (np. Można go użyć w problemach z tłumaczeniem języka, które pasują do 4. pozycji), podczas gdy Sieć przesyłania dalej dotyczy tylko problemów z dopasowaniem pierwszego obrazu.
Neil Slater,


23

Różnice między CNN i RNN są następujące:

CNN:

  1. CNN przyjmuje dane wejściowe o stałym rozmiarze i generuje dane wyjściowe o stałym rozmiarze.

  2. CNN jest rodzajem sztucznej sieci neuronowej ze sprzężeniem zwrotnym - są odmianami wielowarstwowych perceptronów, które zostały zaprojektowane tak, aby wykorzystywać minimalne ilości przetwarzania wstępnego.

  3. CNN wykorzystują wzór łączności między neuronami zainspirowany organizacją kory wzrokowej zwierząt, której poszczególne neurony są ułożone w taki sposób, że reagują na zachodzące na siebie regiony sąsiadujące z polem widzenia.

  4. Sieci CNN są idealne do przetwarzania zdjęć i filmów.

RNN:

  1. RNN może obsługiwać dowolne długości wejścia / wyjścia.

  2. RNN, w przeciwieństwie do sprzężonych sieci neuronowych, może wykorzystywać swoją pamięć wewnętrzną do przetwarzania dowolnych sekwencji danych wejściowych.

  3. Nawracające sieci neuronowe wykorzystują informacje szeregów czasowych (tj. To, co mówiłem ostatnio, wpłynie na to, co powiem dalej).

  4. RNN są idealne do analizy tekstu i mowy.



Sieci CNN bez gęstych warstw mogą przyjmować dane wejściowe o dowolnej wielkości.
Mikael Rousson,

1

Myślę, że te dwie instrukcje są niepoprawne, ponieważ CNN nie rozbija komponentu na podskładniki, ale raczej używa wspólnych wag dla wszystkich nakładających się podskładników (pola powtarzalne), aby znaleźć ten sam wzorzec. To nie jest algorytm dziel i zwyciężaj.

W ogólnym przypadku CNN mają tendencję do wydobywania cech lokalnych i niezmiennych pozycji (niezależnie od ich pozycji), a RNN mają tendencję do znajdowania różnych wzorców w czasie, nawet jeśli są daleko.

Na przykład w przypadku zastosowania zarówno do języka naturalnego, CNN są dobre w wydobywaniu cech lokalnych i niezmiennych pozycji, ale nie wychwytuje zależności semantycznych dalekiego zasięgu. Rozważa tylko lokalne frazy kluczowe.

Więc kiedy wynik jest określony przez całe zdanie lub zależność semantyczną dalekiego zasięgu, CNN nie jest skuteczny, jak pokazano w tym artykule, w którym autorzy porównali obie architektury na NLP taks.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.