¿Por qué la PNL consume tanta memoria?

Esto se debe a que hemos estado utilizando el modelado de nivel de palabra en PNL desde hace tiempo. El número de palabras es alto. Además, la forma tradicional de representar palabras (bolsa de palabras como) requiere vectores dispersos de tamaño k (donde k es el tamaño del vocabulario).
Luego hay n-gramos que se utilizan. (hay k ^ n posibles n-gramas si hay k palabras en el idioma).
Sin embargo, si observa una investigación reciente, ha habido intentos de abordar este problema. Podemos usar el aprendizaje de representación o bajar a modelos de nivel de caracteres para modelos más pequeños.

Dos métodos alternativos que vale la pena mencionar son:

1. Incrustaciones de palabras: usar un vector pequeño y denso para representar palabras (y, por lo tanto, ngrams y oraciones) en lugar de los grandes vectores BOW.
Puede ver nuestra implementación de código abierto recientemente de una incrustación de palabras basada en conteo tan ligera para probarla: ParallelDots / WordEmbeddingAutoencoder
Utilizamos redes neuronales recursivas para combinar incrustaciones de palabras en n gramos e incrustaciones de oraciones en ParallelDots. Por lo tanto, cada característica del lenguaje es un vector dimensional bajo (digamos 100-500).

2. Modelado de nivel de caracteres: si bien el número típico de palabras en inglés es de 150k, el número de caracteres es máximo de 256. Los modelos de nivel de caracteres parecen estar haciendo maravillas en los últimos días. Lea esta publicación de Andrej Karpathy si desea obtener más información al respecto. (También contiene enlaces a código si desea probarlo) La efectividad irracional de las redes neuronales recurrentes

Las permutaciones aumentan combinatoriamente con la longitud de la oración en lugar de exponencialmente.

Entonces, los requisitos de memoria y procesamiento explotan con la longitud de la oración.
El analizador de PNL, mientras que sin duda es capaz de fragmentar una oración en fragmentos léxicos más pequeños, muchos fragmentos largos aún representan el enorme desafío de una gran permutaciones.
El idioma inglés simplemente no está bien estructurado, lo que obliga al analizador a mantener una pila de muchos estados posibles durante la evaluación.
Si esto no se hace, el analizador tendría que analizar repetidamente la oración con N estrategias diferentes que explotarían el uso de la CPU y alargarían el tiempo de procesamiento en N.
Basta con mirar el texto descriptivo arriba, es mucho más complejo que “ver spot spot”.

Por lo tanto, minimizar el uso de memoria aumenta el uso de la CPU y alarga el tiempo de procesamiento. El Stanford NLP logra este equilibrio y el tiempo es más valioso que el espacio de memoria.

Al final culpan a los humanos, los diseñadores por el absurdo y complejo lenguaje inglés ambiguo y desestructurado. El hecho de que la estructura de las oraciones a menudo sea válida y también sea ambigua hace que el idioma inglés sea muy complejo. Los lenguajes de programación en comparación están bien definidos y son simples en comparación. A pesar de esto, muchos programadores malos aún logran abusar de la sintaxis creando código ambiguo.

Si había alguna duda, Internet lo ha desterrado. La gente habla. Mucho. Y, como dijo Steve. Es dificil.

Los corpus de texto (corpi?) Generalmente son muy grandes, y la mejor manera de cargarlos y procesarlos es en la memoria.

More Interesting

En el problema del vendedor ambulante, ¿puede el vendedor regresar al nodo inicial?

¿Cuáles son las mejores herramientas de modelado de software?

Computer ScienceOracle me parece interesante y mirar sus recompensas futuras aún más. Pero estoy confundido si ir con la pista de desarrollador o DBA. ¿De qué se trata y qué certificaciones y títulos nos hacen buenos para DBA?

¿Qué equipos indios participarán en las finales mundiales de ACM-ICPC 2016-2017?

Andrew Ng: ¿La ira del aprendizaje automático está causando una fuga de cerebros de otros campos igualmente importantes y atractivos, pero menos glamorosos?

¿Qué es el hack funtenna?

¿Cuáles son algunos algoritmos geniales de computadora?

Si AI reemplaza la necesidad de trabajadores humanos en las empresas, ¿se les proporcionaría a todas las personas un salario digno, ya que los trabajadores de AI no necesitan el dinero?

Si el área de interés principal de uno es la teoría de la información, ¿en qué debería especializarse, a nivel de pregrado?

Quiero que mi robot Atmega funcione en múltiples modos (seguimiento de línea, evitación de obstáculos, guía directa de PC) ¿Cómo puedo cargar y cambiar entre ellos?

Mientras instalaba Mavericks OS X en mi PC con Windows 7 usando una máquina virtual, arrojó un error que decía 'Mac OS X no es compatible con la traducción binaria. Para ejecutar Mac OS X, necesita un host en el que VMware Player sea compatible con Intel VT-x o AMD-V '. ¿Cómo puedo arreglar esto?

¿El gráfico de conocimiento de Google está completamente automatizado? ¿Cómo se rectifican los errores?

¿Se pueden unir la física y la informática a través de la teoría de cuerdas?

¿Qué es el algoritmo del patio de maniobras?

¿Cuáles son los casos documentados conocidos en los que un gato que camina por el teclado causó una interrupción importante en el servicio en línea o en el sistema informático?