Como lidar com a alteração do comprimento do vetor de entrada com redes neurais

9

Quero treinar uma rede neural com uma sequência de caracteres como um vetor de entrada. Os exemplos de aprendizado têm duração diferente e, por esse motivo, não sei como representá-los.

Digamos que eu tenha dois exemplos de sequências, aqui os nomes:

john doe
maurice delanoe

O primeiro exemplo é de comprimento 8, o segundo é de comprimento 15.

Existe uma maneira de aprender com esses dois exemplos? Significando usar um vetor de entrada de tamanho 8 e 15 no mesmo sistema de aprendizagem.

Obrigado pela ajuda !

mazieres
fonte

Respostas:

4

Existem três estratégias gerais em que posso pensar em NNs com tamanhos variados de entrada:

  1. Pré-processe as entradas para salvar o mesmo tamanho. Por exemplo, as pessoas geralmente redimensionam imagens (ignorando a proporção) para uma resolução quadrada padrão para NNs. No caso do idioma, você pode converter todas as palavras em uma representação simbólica (por exemplo, "john" = 1, "james" = 2, "maurice" = 3, "kelly" = 4, "doe" = 5) se isso fizer sentido na sua aplicação.
  2. Use uma janela deslizante. A rede consegue ver uma parte de tamanho fixo da entrada e, em seguida, você desliza a janela com algum passo fixo e a executa novamente (do zero), repete até chegar ao final e combina todas as saídas de alguma maneira.
  3. O mesmo que o nº 2, mas usando uma rede neural recorrente para que a rede tenha algum estado interno que transite entre cada passada. É assim que as NNs processam o áudio da fala, por exemplo. Obviamente, essa é uma mudança mais dramática na arquitetura do que as outras opções, mas para muitas tarefas de idioma isso pode ser necessário (se você tiver entradas longas e precisar combinar informações através da cadeia de maneira complicada).
Chris
fonte