Qual é a diferença entre RNNs de geração de texto com base em palavras e em caracteres?


15

Ao ler sobre a geração de texto com redes neurais recorrentes, notei que alguns exemplos foram implementados para gerar texto palavra por palavra e outros, caractere por caractere, sem especificar o porquê.

Então, qual é a diferença entre os modelos RNN que predizem texto por palavra e os que predizem texto por caractere ? O RNN baseado em palavras exige um tamanho de corpus maior? A RNN baseada em char generaliza melhor? Talvez a única diferença seja a representação de entrada (codificação one-hot, incorporação de palavras)? Quais escolher para geração de texto?

Respostas:


15

Aqui está o que eu aprendi recentemente.

Obviamente, ao falar sobre RNNs de geração de texto, estamos falando sobre modelos de linguagem RNN. Ao perguntar sobre RNNs de geração de texto com base em palavras / caracteres , estamos perguntando sobre modelos de linguagem RNN (LM) baseados em palavras / caracteres .

Os LMs baseados em palavras exibem maior precisão e menor custo computacional que os LMs baseados em caracteres.

Essa queda no desempenho é improvável devido à dificuldade do modelo de nível de caractere capturar mais memória de curto prazo, pois também as redes recorrentes de Longer Short Term Memory (LSTM) funcionam melhor com entrada baseada em palavras.

Isso ocorre porque os LNs RNN baseados em char exigem uma camada oculta muito maior para modelar com sucesso dependências de longo prazo, o que significa custos computacionais mais altos.

Portanto, podemos dizer que

Uma das diferenças fundamentais entre os modelos de nível de palavra e nível de caractere está no número de parâmetros que a RNN deve acessar durante o treinamento e o teste. Quanto menor for a camada de entrada e saída da RNN, maior será a camada oculta totalmente conectada, o que torna o treinamento do modelo caro.

No entanto, os RNM LMs baseados em chars melhoram os idiomas de modelo com uma morfologia rica, como acabamento, turco, russo etc. O uso de LNs RNN baseados em palavras para modelar esses idiomas é difícil, se possível, e não é recomendado.

A análise acima faz sentido, especialmente quando você olha para o texto de saída, gerado por RNNs baseados em caracteres:

Os surpresos dos investidores não estavam arrecadando dinheiro. Eu não sou a empresa com o tempo em que tudo é interessante rapidamente, não preciso sair dos mesmos programadores.

Embora o simples LM de máxima verossimilhança com base em caracteres e uma janela de 13 caracteres forneça o seguinte:

E quando ela fez muitos tijolos sólidos. Ele as empilhou em pilhas e bateu os pés dela. O médico o diagnosticou com um morcego. A garota e o namorado a convidaram para sair.

É claro que escolhi o exemplo (na verdade, a maioria dos exemplos de ML LM parecia melhor do que qualquer texto gerado pela RNN que eu li até agora) e esse minúsculo ML LM foi treinado em um corpus mais simples, mas você entendeu: a probabilidade condicional direta gera melhor textos do que RNN baseado em char muito mais complexo .

Os LMs RNN baseados em char podem imitar seqüências gramaticalmente corretas para uma ampla variedade de idiomas, exigem uma camada oculta maior e computacionalmente mais cara, enquanto os LMs RNN baseados em palavras treinam mais rápido e geram textos mais coerentes, e mesmo esses textos gerados estão longe de fazer sentido. .


11
Excelente comentário. Deve-se acrescentar que, para alguns problemas, um ou outro pode fazer mais sentido, independentemente de preocupações computacionais. Por exemplo, se seu objetivo é estudar vetores de palavras para encontrar relações entre palavras ou se você deseja gerar um texto com base em um tópico de palavras, é necessário usar a RNN baseada em palavras. E, inversamente, provavelmente existem problemas nos quais a RNN baseada em char é o caminho a percorrer. Também depende do que o usuário está tentando fazer.
Ricardo Cruz

Não entendi o seu último comentário: "O RNN LM baseado em char (...) fica aquém quando se trata de fazer sentido". Também não vi um RNN baseado em palavra fazendo sentido. Por que você isolou os modelos baseados em char aqui?
Ricardo Cruz

Eu atualizei o final ambíguo.
minerals

Ótima resposta! De fato, alguém poderia facilmente acrescentar que depende muito da tarefa envolvida, do tamanho do seu conjunto de dados, dos idiomas e do nível de pré-processamento que você deseja executar. Por exemplo, para processar linguagens de morfologia mais ricas e gerenciar palavras fora do vocabulário (OOV), você também pode usar o modelo de palavras com lematização, marcação pos e adicionar prefixos, sufixos, etc.
Claude COULOMBE

5

Há uma boa descrição sobre modelagem de linguagem de um bilhão de palavras . Abaixo estão alguns trechos:

Modelos no nível da palavra têm uma vantagem importante sobre os modelos no nível do caractere.
Tome a seguinte sequência como exemplo (uma citação de Robert A. Heinlein):

O progresso não é feito pelos madrugadores. É feito por homens preguiçosos tentando encontrar maneiras mais fáceis de fazer alguma coisa.

Após a tokenização, o modelo no nível da palavra pode visualizar esta sequência como contendo 22 tokens. Por outro lado, o nível do personagem verá essa sequência como contendo 102 fichas. Essa sequência mais longa torna mais difícil a tarefa do modelo de caracteres do que o modelo de palavras, pois deve levar em conta as dependências entre mais tokens ao longo de mais etapas de tempo. Outro problema com os modelos de linguagem de caracteres é que eles precisam aprender a ortografia, além de sintaxe, semântica, etc.

A principal vantagem dos caracteres sobre os modelos de linguagem de palavras é que eles têm um vocabulário muito pequeno. Por exemplo, o conjunto de dados GBW conterá aproximadamente 800 caracteres em comparação com 800.000 palavras (após a remoção de tokens de baixa frequência). Na prática, isso significa que os modelos de caracteres precisarão de menos memória e terão inferência mais rápida do que seus equivalentes de palavras. Outra vantagem é que eles não requerem tokenização como uma etapa de pré-processamento.


1

Na minha opinião, as RNNs baseadas em caracteres também terão um desempenho melhor, mas precisam de muito mais dados do que os modelos baseados em palavras e os modelos baseados em caracteres precisam treinar por um período de tempo muito maior. Eu diria que é mais uma tentativa e erro, bem como uma troca entre dados e poder computacional disponível.

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.