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. .
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):
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.
fonte
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.
fonte