Aquí está lo que aprendí recientemente.
Obviamente, cuando hablamos de RNN de generación de texto, estamos hablando de modelos de lenguaje RNN. Al preguntar acerca de los RNN de generación de texto basados en palabras / char , estamos preguntando sobre los modelos de lenguaje RNN basados en palabras / char (LM).
Los LM basados en palabras muestran una mayor precisión y un menor costo computacional que los LM basados en caracteres.
Esta caída del rendimiento es poco probable debido a la dificultad para que el modelo de nivel de caracteres capture memoria a corto plazo más larga, ya que también las redes recurrentes de memoria a corto plazo más larga (LSTM) funcionan mejor con entrada basada en palabras.
Esto se debe a que los LM RNN basados en caracteres requieren una capa oculta mucho más grande para modelar con éxito dependencias a largo plazo, lo que significa mayores costos computacionales.
Por lo tanto, podemos decir que
Una de las diferencias fundamentales entre los modelos de nivel de palabra y nivel de caracteres está en la cantidad de parámetros a los que el RNN tiene acceso durante el entrenamiento y la prueba. Cuanto más pequeña es la capa de entrada y salida de RNN, más grande debe ser la capa oculta totalmente conectada, lo que hace que la capacitación del modelo sea costosa.
Sin embargo, los RNN LM basados en caracteres son mejores modelos de idiomas con una morfología rica como el finés, el turco, el ruso, etc. Usar RNN LM basados en palabras para modelar dichos idiomas es difícil si es posible, y no se recomienda.
El análisis anterior tiene sentido especialmente cuando observa el texto de salida, generado por RNN basados en caracteres :
Los sorprendidos en los inversores no iban a recaudar dinero. No soy la compañía con el tiempo en que todo es interesante rápidamente, no tengo que salir de los mismos programadores.
Si bien Simple Likelihood LM basado en caracteres con una ventana de 13 caracteres ofrece esto:
Y cuando hizo muchos ladrillos sólidos. Los apiló en montones y le pisoteó los pies. El médico lo diagnosticó con un murciélago. La niña y su novio la invitaron a salir.
Por supuesto, elegí el ejemplo (en realidad, la mayoría de los ejemplos de ML LM se veían mejor que cualquier texto generado por RNN que haya leído hasta ahora) y este pequeño ML LM fue entrenado en un corpus más simple, pero se entiende la idea: la probabilidad condicional directa genera mejor textos que RNN mucho más complejo basado en char .
Los RNN LM basados en Char pueden imitar secuencias gramaticalmente correctas para una amplia gama de idiomas, requieren una capa oculta más grande y computacionalmente más costosos, mientras que los RMN LM basados en palabras se entrenan más rápido y generan textos más coherentes y, sin embargo, incluso estos textos generados están lejos de tener sentido real .
Hay un buen artículo sobre el lenguaje que modela mil millones de palabras . A continuación se presentan algunos extractos:
Los modelos a nivel de palabra tienen una ventaja importante sobre los modelos a nivel de personaje.
Tome la siguiente secuencia como ejemplo (una cita de Robert A. Heinlein):
Después de la tokenización, el modelo de nivel de palabra podría ver esta secuencia como que contiene 22 tokens. Por otro lado, el nivel de personaje verá esta secuencia como que contiene 102 tokens. Esta secuencia más larga hace que la tarea del modelo de caracteres sea más difícil que la palabra modelo, ya que debe tener en cuenta las dependencias entre más tokens durante más pasos de tiempo. Otro problema con los modelos de lenguaje de caracteres es que necesitan aprender ortografía además de sintaxis, semántica, etc. En cualquier caso, los modelos de lenguaje de palabras generalmente tendrán un error menor que los modelos de caracteres.
La principal ventaja de los personajes sobre los modelos de lenguaje de palabras es que tienen un vocabulario realmente pequeño. Por ejemplo, el conjunto de datos GBW contendrá aproximadamente 800 caracteres en comparación con 800,000 palabras (después de podar tokens de baja frecuencia). En la práctica, esto significa que los modelos de caracteres requerirán menos memoria y tendrán una inferencia más rápida que sus equivalentes de palabras. Otra ventaja es que no requieren tokenización como paso de preprocesamiento.
fuente
En mi opinión, los RNN basados en caracteres también funcionarán mejor, pero necesitan mucha más información que los modelos basados en palabras y los modelos basados en caracteres necesitan entrenarse durante un período de tiempo mucho más largo. Diría que es más una prueba y error, así como una compensación entre los datos y la potencia de cálculo disponible.
fuente