RNN vs CNN em alto nível


53

Estive pensando nas Redes Neurais Recorrentes (RNN) e suas variedades e nas Redes Neurais Convolucionais (CNN) e suas variedades.

Seria justo dizer esses dois pontos:

  • Use CNNs para dividir um componente (como uma imagem) em subcomponentes (como um objeto em uma imagem, como o contorno do objeto na imagem etc.)
  • Use RNNs para criar combinações de subcomponentes (legenda de imagem, geração de texto, tradução de idiomas etc.)

Eu apreciaria se alguém quiser apontar quaisquer imprecisões nessas declarações. Meu objetivo aqui é obter uma base mais clara sobre os usos de CNNs e RNNs.

Respostas:


42

Uma CNN aprenderá a reconhecer padrões no espaço. Assim, como você diz, uma CNN aprenderá a reconhecer componentes de uma imagem (por exemplo, linhas, curvas, etc.) e depois aprenderá a combinar esses componentes para reconhecer estruturas maiores (por exemplo, faces, objetos etc.).

Você poderia dizer, de uma maneira muito geral, que uma RNN também aprenderá a reconhecer padrões ao longo do tempo. Portanto, uma RNN treinada para traduzir texto pode aprender que "cachorro" deve ser traduzido de maneira diferente se precedido pela palavra "quente".

O mecanismo pelo qual os dois tipos de NNs representam esses padrões é diferente, no entanto. No caso de uma CNN, você está procurando os mesmos padrões em todos os diferentes subcampos da imagem. No caso de uma RNN, você está (no caso mais simples) alimentando as camadas ocultas da etapa anterior como uma entrada adicional na próxima etapa. Enquanto a RNN acumula memória nesse processo, não está procurando os mesmos padrões em diferentes fatias de tempo da mesma maneira que uma CNN está procurando os mesmos padrões em diferentes regiões do espaço.

Devo também observar que, quando digo aqui "tempo" e "espaço", não deve ser tomado literalmente. Você pode executar um RNN em uma única imagem para legendar imagens, por exemplo, e o significado de "tempo" seria simplesmente a ordem na qual diferentes partes da imagem são processadas. Portanto, os objetos processados ​​inicialmente informarão a legenda dos objetos processados ​​posteriormente.


3
Você pode obter uma boa intuição para as diferenças do modelo RNN em karpathy.github.io/assets/rnn/diags.jpeg - um gráfico muito copiado. As CNNs estão juntas com MLPs e outros modelos não recursivos, implementando apenas o caso do modelo um-para-um.
Neil Slater

@NeilSlater Eu até sei o artigo original desta imagem, mas nunca consegui extrair nada útil dela. Por favor, você poderia elaborar o que aprendeu com a imagem?
Hi-Angel

2
@ Hi-Angel: A imagem visualiza possíveis relacionamentos entre sequências e entidades únicas que podem ser mapeadas por um modelo. Se você já entende bem as permutações, pode não obter nada disso. A razão pela qual a imagem aparece no artigo é que ela demonstra a flexibilidade relativa dos RNNs: Um RNN pode ser aplicado a todos os diferentes tipos de problemas mostrados (por exemplo, pode ser usado em problemas de tradução de idiomas que correspondam ao quarto item), enquanto um rede feed-forward se aplica somente a problemas que correspondem à primeira imagem.
Neil Slater


23

As diferenças entre CNN e RNN são as seguintes:

CNN:

  1. A CNN recebe uma entrada de tamanho fixo e gera saídas de tamanho fixo.

  2. A CNN é um tipo de rede neural artificial feed-forward - são variações de perceptrons multicamadas projetados para usar quantidades mínimas de pré-processamento.

  3. As CNNs usam o padrão de conectividade entre seus neurônios e são inspiradas na organização do córtex visual animal, cujos neurônios individuais são organizados de maneira a responder a regiões sobrepostas do campo visual.

  4. As CNNs são ideais para processamento de imagens e vídeos.

RNN:

  1. O RNN pode lidar com comprimentos arbitrários de entrada / saída.

  2. Ao contrário das redes neurais feedforward, a RNN pode usar sua memória interna para processar seqüências arbitrárias de entradas.

  3. As redes neurais recorrentes usam informações de séries temporais (ou seja, o que eu falei por último afetará o que falarei a seguir).

  4. RNNs são ideais para análise de texto e fala.



CNNs sem camadas densas podem receber entradas de tamanho arbitrário.
Mikael Rousson #

1

Penso que as duas afirmações não estão corretas, pois a CNN não divide o componente em subcomponentes, mas usa pesos compartilhados em todos os subcomponentes sobrepostos (campos recetivos) para encontrar o mesmo padrão. Não é um algoritmo de divisão e conquista.

Em geral, as CNN tendem a extrair características locais e invariantes à posição (independentemente de sua posição), e as RNN tendem a encontrar padrões diferentes ao longo do tempo, mesmo que estejam distantes.

Por exemplo, no caso de aplicar ambos à linguagem natural, as CNN são boas para extrair recursos locais e invariáveis ​​à posição, mas não capturam dependências semânticas de longo alcance. Considera apenas as chaves-chave locais.

Portanto, quando o resultado é determinado pela sentença inteira ou por uma dependência semântica de longo alcance, a CNN não é eficaz, como mostrado neste artigo, onde os autores compararam as duas arquiteturas nas tarefas da PNL.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.