Como as redes neurais podem lidar com diferentes tamanhos de entrada?


42

Até onde eu sei, as redes neurais têm um número fixo de neurônios na camada de entrada.

Se redes neurais são usadas em um contexto como PNL, frases ou blocos de texto de tamanhos variados são alimentados para uma rede. Como o tamanho da entrada variável é reconciliado com o tamanho fixo da camada de entrada da rede? Em outras palavras, como essa rede é flexível o suficiente para lidar com uma entrada que pode estar em qualquer lugar de uma palavra a várias páginas de texto?

Se minha suposição de um número fixo de neurônios de entrada estiver errada e novos neurônios de entrada forem adicionados / removidos da rede para corresponder ao tamanho da entrada, não vejo como eles podem ser treinados.

Dou o exemplo da PNL, mas muitos problemas têm um tamanho de entrada inerentemente imprevisível. Estou interessado na abordagem geral para lidar com isso.

Para imagens, é claro que você pode aumentar / diminuir a amostra para um tamanho fixo, mas, para o texto, isso parece ser uma abordagem impossível, pois adicionar / remover texto altera o significado da entrada original.


você pode esclarecer o que você quer dizer com redução de tamanho para um tamanho fixo? Como é feita a redução da amostragem?
Charlie Parker

Respostas:


36

Três possibilidades vêm à mente.

O mais fácil é o preenchimento zero . Basicamente, você pega um tamanho de entrada bastante grande e apenas adiciona zeros se sua entrada de concreto for muito pequena. Obviamente, isso é bastante limitado e certamente não será útil se sua entrada variar de algumas palavras a textos completos.

NNs recorrentes (RNN) são um NN muito natural para escolher se você tem textos de tamanho variável como entrada. Você insere palavras como vetores de palavras (ou incorporação) apenas uma após a outra e o estado interno da RNN deve codificar o significado de toda a cadeia de palavras. Este é um dos artigos anteriores.

Outra possibilidade é usar NNs recursivos . Essa é basicamente uma forma de pré-processamento na qual um texto é recursivamente reduzido a um número menor de vetores de palavras até que apenas um seja deixado - sua entrada, que deve codificar todo o texto. Isso faz muito sentido, do ponto de vista linguístico, se a sua entrada consistir em frases (que podem variar muito em tamanho), porque as frases são estruturadas recursivamente. Por exemplo, o vetor de palavras para "o homem" deve ser semelhante ao vetor de palavras para "o homem que confundiu sua esposa com um chapéu", porque as frases substantivas agem como substantivos etc. Muitas vezes, você pode usar informações linguísticas para orientar sua recursão na sentença. Se você quiser ir muito além do artigo da Wikipedia, provavelmente este é um bom começo .


1
Qual é a diferença entre o que você chamou de "NNs recursivos" e os RNNs? R é recursivo ... Além disso, algumas citações e indicadores seriam úteis.
Eric Platon

3
R é recorrente. Recorrente significa adicionar entrada linearmente ao mesmo NN repetidamente. Recursivo significa inserir os dados ao longo de uma estrutura em árvore.
BlindKungFuMaster 25/09/16

@BlindKungFuMaster 0 preenchimento com máscara para MLPs é bom e não afeta mal a precisão?
DINA TAKLIT

12

Outros já mencionados:

  • preenchimento zero
  • RNN
  • NN recursivo

então adicionarei outra possibilidade: usando convoluções diferentes vezes, dependendo do tamanho da entrada. Aqui está um excelente livro que apóia essa abordagem:

Considere uma coleção de imagens, onde cada imagem tem uma largura e altura diferentes. Não está claro como modelar essas entradas com uma matriz de peso de tamanho fixo. Convolução é simples de aplicar; o kernel é simplesmente aplicado um número diferente de vezes, dependendo do tamanho da entrada, e a saída da operação de convolução aumenta de acordo.

Extraído da página 360. Você pode ler mais para ver outras abordagens.


1
Ocorre-me que essa abordagem funcionará apenas se 1) a taxa de proporção (AR) de todas as imagens de entrada for a mesma, 2) você redimensionar todas as imagens para um determinado AR ou 3) você zerar as imagens para forçar um dado AR.
Matt Wenham

@Salvador Dali o preenchimento "0" com máscara pode ser uma boa solução para MLPs?
DINA TAKLIT

Não consigo encontrar o texto que você cita na sua resposta no livro. Talvez estivesse presente originalmente e tenha sido removido mais tarde? Atualmente, há um parágrafo que inicia de maneira semelhante, mas nunca usa número variável de camadas (mas tamanho de saída variável).
jochen 21/04

7

Na PNL, você tem uma ordem inerente das entradas, portanto as RNNs são uma escolha natural.

Para entradas de tamanho variável em que não há pedido específico entre as entradas, pode-se projetar redes que:

  1. use uma repetição da mesma sub-rede para cada um dos grupos de entradas (ou seja, com pesos compartilhados). Essa sub-rede repetida aprende uma representação das (grupos de) entradas.
  2. use uma operação na representação das entradas que tenha a mesma simetria que as entradas. Para dados invariáveis ​​de pedidos, a média das representações das redes de entrada é uma opção possível.
  3. use uma rede de saída para minimizar a função de perda na saída com base na combinação das representações da entrada.

A estrutura tem a seguinte aparência:

estrutura de rede

Redes semelhantes foram usadas para aprender as relações entre objetos ( arxiv: 1702.05068 ).

Um exemplo simples de como aprender a variação da amostra de um conjunto de valores de tamanho variável é apresentado aqui (aviso: sou o autor do artigo vinculado).

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.