Efficient Estimation of Word Representations in Vector Space/paper/es

    From Marovi AI
    This page is a translated version of the page Efficient Estimation of Word Representations in Vector Space/paper and the translation is 100% complete.
    Other languages:
    SummarySource
    Research Paper
    Authors Tomas Mikolov; Kai Chen; Greg Corrado; Jeffrey Dean
    Year 2013
    Topic area NLP
    Difficulty Research
    arXiv 1301.3781
    PDF Download PDF

    Estimación Eficiente de Representaciones de Palabras en el Espacio Vectorial

    Tomas Mikolov
    Google Inc., Mountain View, CA
    tmikolov@google.com
    \AndKai Chen
    Google Inc., Mountain View, CA
    kaichen@google.com
    \ANDGreg Corrado
    Google Inc., Mountain View, CA
    gcorrado@google.com
    \AndJeffrey Dean
    Google Inc., Mountain View, CA
    jeff@google.com

    Resumen

    Proponemos dos arquitecturas de modelo novedosas para calcular representaciones vectoriales continuas de palabras a partir de conjuntos de datos muy grandes. La calidad de estas representaciones se mide en una tarea de similitud entre palabras, y los resultados se comparan con las técnicas de mejor desempeño previamente publicadas, basadas en distintos tipos de redes neuronales. Observamos grandes mejoras en exactitud con un costo computacional mucho menor; es decir, se requieren menos de un día para aprender vectores de palabras de alta calidad a partir de un conjunto de datos de 1.6 mil millones de palabras. Además, mostramos que estos vectores ofrecen un desempeño de vanguardia en nuestro conjunto de prueba para medir similitudes sintácticas y semánticas entre palabras.

    1 Introducción

    Muchos sistemas y técnicas actuales de NLP tratan las palabras como unidades atómicas: no existe una noción de similitud entre palabras, ya que estas se representan como índices en un vocabulario. Esta elección tiene varias buenas razones: simplicidad, robustez y la observación de que modelos simples entrenados con grandes cantidades de datos superan a sistemas complejos entrenados con menos datos. Un ejemplo es el popular modelo de N-gramas usado para modelado de lenguaje estadístico: hoy en día es posible entrenar N-gramas con prácticamente todos los datos disponibles (billones de palabras [3]).

    Sin embargo, las técnicas simples están en su límite en muchas tareas. Por ejemplo, la cantidad de datos relevantes en dominio para el reconocimiento automático del habla es limitada: el desempeño suele estar dominado por el tamaño de los datos de habla transcritos de alta calidad (a menudo apenas millones de palabras). En traducción automática, los corpus existentes para muchos idiomas contienen solo unos pocos miles de millones de palabras o menos. Así, hay situaciones en las que el simple escalamiento de las técnicas básicas no producirá un avance significativo, y debemos centrarnos en técnicas más avanzadas.

    Con el avance de las técnicas de aprendizaje automático en los últimos años, ha sido posible entrenar modelos más complejos sobre conjuntos de datos mucho más grandes, y estos suelen superar a los modelos simples. Probablemente el concepto más exitoso es usar representaciones distribuidas de palabras [10]. Por ejemplo, los modelos de lenguaje basados en redes neuronales superan significativamente a los modelos de N-gramas [1, 27, 17].

    1.1 Objetivos del Artículo

    El principal objetivo de este artículo es introducir técnicas que puedan usarse para aprender vectores de palabras de alta calidad a partir de enormes conjuntos de datos con miles de millones de palabras y con millones de palabras en el vocabulario. Hasta donde sabemos, ninguna de las arquitecturas propuestas previamente había sido entrenada con éxito sobre más de unos pocos cientos de millones de palabras, con una dimensionalidad modesta de los vectores de palabra entre 50 y 100.

    Empleamos técnicas propuestas recientemente para medir la calidad de las representaciones vectoriales resultantes, con la expectativa de que no solo las palabras similares tiendan a estar cerca entre sí, sino que las palabras puedan tener múltiples grados de similitud [20]. Esto se ha observado antes en el contexto de las lenguas flexivas: por ejemplo, los sustantivos pueden tener múltiples terminaciones, y si buscamos palabras similares en un subespacio del espacio vectorial original, es posible encontrar palabras que tengan terminaciones similares [13, 14].

    De manera algo sorprendente, se descubrió que la similitud entre representaciones de palabras va más allá de simples regularidades sintácticas. Usando una técnica de desplazamiento de palabras donde se realizan operaciones algebraicas simples sobre los vectores, se demostró por ejemplo que vector(”King”) - vector(”Man”) + vector(”Woman”) da como resultado un vector que es el más cercano a la representación vectorial de la palabra Queen [20].

    En este artículo intentamos maximizar la exactitud de estas operaciones vectoriales desarrollando nuevas arquitecturas de modelo que preservan las regularidades lineales entre palabras. Diseñamos un nuevo conjunto de prueba integral para medir tanto regularidades sintácticas como semánticas111El conjunto de prueba está disponible en www.fit.vutbr.cz/~imikolov/rnnlm/word-test.v1.txt, y mostramos que muchas de estas regularidades pueden aprenderse con alta exactitud. Además, discutimos cómo el tiempo de entrenamiento y la exactitud dependen de la dimensionalidad de los vectores de palabra y de la cantidad de datos de entrenamiento.

    1.2 Trabajo Previo

    La representación de palabras como vectores continuos tiene una larga historia [10, 26, 8]. Una arquitectura de modelo muy popular para estimar modelos de lenguaje basados en redes neuronales (NNLM) fue propuesta en [1], donde se utilizó una red neuronal feedforward con una capa de proyección lineal y una capa oculta no lineal para aprender conjuntamente la representación vectorial de palabras y un modelo de lenguaje estadístico. Este trabajo ha sido seguido por muchos otros.

    Otra arquitectura interesante de NNLM se presentó en [13, 14], donde los vectores de palabras se aprenden primero usando una red neuronal con una sola capa oculta. Los vectores de palabras se utilizan luego para entrenar el NNLM. Así, los vectores de palabras se aprenden incluso sin construir el NNLM completo. En este trabajo extendemos directamente esta arquitectura y nos centramos solo en el primer paso, donde los vectores de palabras se aprenden usando un modelo simple.

    Más tarde se mostró que los vectores de palabras pueden usarse para mejorar y simplificar significativamente muchas aplicaciones de NLP [4, 5, 29]. La estimación de los propios vectores de palabras se realizó usando diferentes arquitecturas de modelo y entrenándolos sobre diversos corpus [4, 29, 23, 19, 9], y algunos de los vectores resultantes se hicieron disponibles para investigación y comparación futuras222http://ronan.collobert.com/senna/
    http://metaoptimize.com/projects/wordreprs/
    http://www.fit.vutbr.cz/~imikolov/rnnlm/
    http://ai.stanford.edu/~ehhuang/ . Sin embargo, hasta donde sabemos, estas arquitecturas eran significativamente más costosas computacionalmente para entrenar que la propuesta en [13], con la excepción de cierta versión del modelo log-bilineal donde se usan matrices de pesos diagonales [23].

    2 Arquitecturas de Modelo

    Se han propuesto muchos tipos diferentes de modelos para estimar representaciones continuas de palabras, incluyendo el conocido Análisis Semántico Latente (LSA) y la Asignación Latente de Dirichlet (LDA). En este artículo nos centramos en las representaciones distribuidas de palabras aprendidas mediante redes neuronales, ya que se ha demostrado previamente que su desempeño es significativamente mejor que el de LSA para preservar regularidades lineales entre palabras [20, 31]; además, LDA se vuelve computacionalmente muy costoso en grandes conjuntos de datos.

    De manera similar a [18], para comparar diferentes arquitecturas de modelo definimos primero la complejidad computacional de un modelo como el número de parámetros que deben accederse para entrenarlo completamente. A continuación intentaremos maximizar la exactitud minimizando la complejidad computacional.

    Para todos los modelos siguientes, la complejidad de entrenamiento es proporcional a

    $ {\displaystyle {O = {E \times T \times Q}},} $ (1)

    donde $ {\textstyle E} $ es el número de épocas de entrenamiento, $ {\textstyle T} $ es el número de palabras en el conjunto de entrenamiento y $ {\textstyle Q} $ se define más adelante para cada arquitectura de modelo. Una elección común es $ {\textstyle E = {3 - 50}} $ y $ {\textstyle T} $ hasta mil millones. Todos los modelos se entrenan usando descenso de gradiente estocástico y retropropagación [26].

    2.1 Modelo de Lenguaje de Red Neuronal Feedforward (NNLM)

    El modelo de lenguaje probabilístico con red neuronal feedforward fue propuesto en [1]. Consiste en capas de entrada, proyección, oculta y salida. En la capa de entrada, se codifican $ {\textstyle N} $ palabras previas usando codificación 1-de-$ {\textstyle V} $, donde $ {\textstyle V} $ es el tamaño del vocabulario. La capa de entrada se proyecta luego a una capa de proyección $ {\textstyle P} $ que tiene dimensionalidad $ {\textstyle N \times D} $, usando una matriz de proyección compartida. Como solo $ {\textstyle N} $ entradas están activas en cualquier momento dado, la composición de la capa de proyección es una operación relativamente barata.

    La arquitectura NNLM se vuelve compleja en el cómputo entre las capas de proyección y oculta, pues los valores en la capa de proyección son densos. Para una elección común de $ {\textstyle N = 10} $, el tamaño de la capa de proyección ($ {\textstyle P} $) puede ser de 500 a 2000, mientras que el tamaño de la capa oculta $ {\textstyle H} $ es típicamente de 500 a 1000 unidades. Además, la capa oculta se utiliza para calcular la distribución de probabilidad sobre todas las palabras del vocabulario, lo que da una capa de salida con dimensionalidad $ {\textstyle V} $. Así, la complejidad computacional por cada ejemplo de entrenamiento es

    $ {\displaystyle {Q = {{N \times D} + {N \times D \times H} + {H \times V}}},} $ (2)

    donde el término dominante es $ {\textstyle H \times V} $. No obstante, se han propuesto varias soluciones prácticas para evitarlo, ya sea usando versiones jerárquicas del softmax [25, 23, 18], o evitando por completo los modelos normalizados al usar modelos que no se normalizan durante el entrenamiento [4, 9]. Con representaciones de árbol binario del vocabulario, el número de unidades de salida que necesitan evaluarse puede reducirse a alrededor de $ {\textstyle l\hspace{0pt}o\hspace{0pt}g_{2}\hspace{0pt}{(V)}} $. Por lo tanto, la mayor parte de la complejidad la causa el término $ {\textstyle N \times D \times H} $.

    En nuestros modelos usamos softmax jerárquico donde el vocabulario se representa como un árbol binario de Huffman. Esto sigue observaciones previas de que la frecuencia de las palabras funciona bien para obtener clases en modelos de lenguaje basados en redes neuronales [16]. Los árboles de Huffman asignan códigos binarios cortos a las palabras frecuentes, lo cual reduce aún más el número de unidades de salida que deben evaluarse: mientras que un árbol binario equilibrado requeriría evaluar $ {\textstyle l\hspace{0pt}o\hspace{0pt}g_{2}\hspace{0pt}{(V)}} $ salidas, el softmax jerárquico basado en árbol de Huffman solo requiere alrededor de $ {\textstyle l\hspace{0pt}o\hspace{0pt}g_{2}\hspace{0pt}{({U\hspace{0pt}n\hspace{0pt}i\hspace{0pt}g\hspace{0pt}r\hspace{0pt}a\hspace{0pt}m\hspace{0pt}\_\hspace{0pt}p\hspace{0pt}e\hspace{0pt}r\hspace{0pt}p\hspace{0pt}l\hspace{0pt}e\hspace{0pt}x\hspace{0pt}i\hspace{0pt}t\hspace{0pt}y\hspace{0pt}{(V)}})}} $. Por ejemplo, cuando el tamaño del vocabulario es de un millón de palabras, esto da una aceleración de aproximadamente dos veces en la evaluación. Si bien esta no es una aceleración crucial para los LM de redes neuronales, ya que el cuello de botella computacional está en el término $ {\textstyle N \times D \times H} $, más adelante propondremos arquitecturas que no tienen capas ocultas y, por tanto, dependen en gran medida de la eficiencia de la normalización del softmax.

    2.2 Modelo de Lenguaje de Red Neuronal Recurrente (RNNLM)

    Se ha propuesto un modelo de lenguaje basado en redes neuronales recurrentes para superar ciertas limitaciones del NNLM feedforward, como la necesidad de especificar la longitud del contexto (el orden del modelo $ {\textstyle N} $), y porque teóricamente las RNN pueden representar de forma eficiente patrones más complejos que las redes neuronales superficiales [15, 2]. El modelo RNN no tiene capa de proyección; solo capas de entrada, oculta y salida. Lo especial de este tipo de modelo es la matriz recurrente que conecta la capa oculta consigo misma, usando conexiones con retardo temporal. Esto permite al modelo recurrente formar una especie de memoria a corto plazo, ya que la información del pasado puede representarse mediante el estado de la capa oculta, que se actualiza a partir de la entrada actual y del estado de la capa oculta en el paso temporal anterior.

    La complejidad por ejemplo de entrenamiento del modelo RNN es

    $ {\displaystyle {Q = {{H \times H} + {H \times V}}},} $ (3)

    donde las representaciones de palabra $ {\textstyle D} $ tienen la misma dimensionalidad que la capa oculta $ {\textstyle H} $. De nuevo, el término $ {\textstyle H \times V} $ puede reducirse eficientemente a $ {\textstyle {H \times l}\hspace{0pt}o\hspace{0pt}g_{2}\hspace{0pt}{(V)}} $ usando softmax jerárquico. La mayor parte de la complejidad proviene entonces de $ {\textstyle H \times H} $.

    2.3 Entrenamiento Paralelo de Redes Neuronales

    Para entrenar modelos sobre conjuntos de datos enormes, hemos implementado varios modelos sobre un marco distribuido a gran escala llamado DistBelief [6], incluyendo el NNLM feedforward y los nuevos modelos propuestos en este artículo. El marco nos permite ejecutar varias réplicas del mismo modelo en paralelo, y cada réplica sincroniza sus actualizaciones de gradiente a través de un servidor centralizado que mantiene todos los parámetros. Para este entrenamiento paralelo usamos descenso de gradiente asíncrono por mini-batch con un procedimiento adaptativo de tasa de aprendizaje llamado adagrad [7]. Bajo este marco es común usar cien o más réplicas del modelo, cada una utilizando muchos núcleos de CPU en distintas máquinas de un centro de datos.

    3 Nuevos Modelos Log-lineales

    En esta sección proponemos dos nuevas arquitecturas de modelo para aprender representaciones distribuidas de palabras que intentan minimizar la complejidad computacional. La principal observación de la sección anterior fue que la mayor parte de la complejidad la causa la capa oculta no lineal del modelo. Si bien eso es lo que hace tan atractivas a las redes neuronales, decidimos explorar modelos más simples que quizá no representen los datos con la misma precisión que las redes neuronales, pero que puedan entrenarse de forma eficiente sobre muchos más datos.

    Las nuevas arquitecturas siguen directamente las propuestas en nuestro trabajo anterior [13, 14], donde se descubrió que un modelo de lenguaje con red neuronal puede entrenarse con éxito en dos pasos: primero, los vectores continuos de palabras se aprenden con un modelo simple, y luego el NNLM de N-gramas se entrena sobre estas representaciones distribuidas. Aunque desde entonces ha habido un cuerpo sustancial de trabajo enfocado en aprender vectores de palabras, consideramos que el enfoque propuesto en [13] es el más simple. Cabe señalar que también se propusieron modelos relacionados mucho antes [26, 8].

    3.1 Modelo de Bolsa de Palabras Continua

    La primera arquitectura propuesta es similar al NNLM feedforward, donde se elimina la capa oculta no lineal y la capa de proyección se comparte para todas las palabras (no solo la matriz de proyección); por lo tanto, todas las palabras se proyectan a la misma posición (sus vectores se promedian). Llamamos a esta arquitectura un modelo de bolsa de palabras, ya que el orden de las palabras en el historial no influye en la proyección. Además, también usamos palabras del futuro; obtuvimos el mejor desempeño en la tarea presentada en la siguiente sección al construir un clasificador log-lineal con cuatro palabras del futuro y cuatro del historial en la entrada, donde el criterio de entrenamiento es clasificar correctamente la palabra actual (del medio). La complejidad de entrenamiento es entonces

    $ {\displaystyle {Q = {{N \times D} + {{D \times l}\hspace{0pt}o\hspace{0pt}g_{2}\hspace{0pt}{(V)}}}}.} $ (4)

    Denotamos este modelo en adelante como CBOW, ya que a diferencia del modelo estándar de bolsa de palabras, utiliza una representación distribuida continua del contexto. La arquitectura del modelo se muestra en la Figura 1. Nótese que la matriz de pesos entre la capa de entrada y la de proyección se comparte para todas las posiciones de palabra del mismo modo que en el NNLM.

    Refer to caption

    3.2 Modelo Skip-gram Continuo

    La segunda arquitectura es similar a CBOW, pero en lugar de predecir la palabra actual a partir del contexto, intenta maximizar la clasificación de una palabra a partir de otra palabra de la misma oración. Más precisamente, usamos cada palabra actual como entrada de un clasificador log-lineal con capa de proyección continua, y predecimos las palabras dentro de un cierto rango antes y después de la palabra actual. Encontramos que aumentar el rango mejora la calidad de los vectores de palabra resultantes, pero también incrementa la complejidad computacional. Como las palabras más distantes suelen estar menos relacionadas con la palabra actual que las cercanas, damos menos peso a las palabras distantes muestreando menos de ellas en nuestros ejemplos de entrenamiento.

    La complejidad de entrenamiento de esta arquitectura es proporcional a

    $ {\displaystyle {Q = {C \times {({D + {{D \times l}\hspace{0pt}o\hspace{0pt}g_{2}\hspace{0pt}{(V)}}})}}},} $ (5)

    donde $ {\textstyle C} $ es la distancia máxima de las palabras. Así, si elegimos $ {\textstyle C = 5} $, para cada palabra de entrenamiento seleccionaremos aleatoriamente un número $ {\textstyle R} $ en el rango $ {\textstyle < 1;C >} $, y luego usaremos $ {\textstyle R} $ palabras del historial y $ {\textstyle R} $ palabras del futuro de la palabra actual como etiquetas correctas. Esto nos exigirá realizar $ {\textstyle R \times 2} $ clasificaciones de palabras, con la palabra actual como entrada y cada una de las $ {\textstyle R + R} $ palabras como salida. En los siguientes experimentos usamos $ {\textstyle C = 10} $.

    4 Resultados

    Para comparar la calidad de diferentes versiones de vectores de palabras, los artículos previos suelen usar una tabla que muestra palabras de ejemplo y sus palabras más similares, y entenderlas intuitivamente. Aunque es fácil mostrar que la palabra Francia es similar a Italia y quizá a otros países, es mucho más desafiante someter esos vectores a una tarea de similitud más compleja, como sigue. Seguimos la observación previa de que puede haber muchos tipos diferentes de similitudes entre palabras; por ejemplo, la palabra big es similar a bigger en el mismo sentido en que small es similar a smaller. Otro tipo de relación puede ser el par de palabras big - biggest y small - smallest [20]. Denotamos además dos pares de palabras con la misma relación como una pregunta, ya que podemos preguntar: ”¿Cuál es la palabra que es similar a small en el mismo sentido en que biggest es similar a big?”

    De manera algo sorprendente, estas preguntas pueden responderse realizando operaciones algebraicas simples con la representación vectorial de palabras. Para encontrar una palabra similar a small en el mismo sentido en que biggest es similar a big, simplemente podemos calcular el vector $ {\textstyle X = {{{v\hspace{0pt}e\hspace{0pt}c\hspace{0pt}t\hspace{0pt}o\hspace{0pt}r\hspace{0pt}{({"\hspace{0pt}b\hspace{0pt}i\hspace{0pt}g\hspace{0pt}g\hspace{0pt}e\hspace{0pt}s\hspace{0pt}t\hspace{0pt}"})}} - {v\hspace{0pt}e\hspace{0pt}c\hspace{0pt}t\hspace{0pt}o\hspace{0pt}r\hspace{0pt}{({"\hspace{0pt}b\hspace{0pt}i\hspace{0pt}g\hspace{0pt}"})}}} + {v\hspace{0pt}e\hspace{0pt}c\hspace{0pt}t\hspace{0pt}o\hspace{0pt}r\hspace{0pt}{({"\hspace{0pt}s\hspace{0pt}m\hspace{0pt}a\hspace{0pt}l\hspace{0pt}l\hspace{0pt}"})}}}} $. Luego buscamos en el espacio vectorial la palabra más cercana a $ {\textstyle X} $ medida por distancia coseno y la utilizamos como respuesta a la pregunta (descartamos las palabras de la pregunta de entrada durante esta búsqueda). Cuando los vectores de palabras están bien entrenados, es posible encontrar la respuesta correcta (la palabra $ {\textstyle s\hspace{0pt}m\hspace{0pt}a\hspace{0pt}l\hspace{0pt}l\hspace{0pt}e\hspace{0pt}s\hspace{0pt}t} $) usando este método.

    Por último, encontramos que cuando entrenamos vectores de palabras de alta dimensión sobre una gran cantidad de datos, los vectores resultantes pueden usarse para responder relaciones semánticas muy sutiles entre palabras, como una ciudad y el país al que pertenece, p. ej., Francia es a París como Alemania es a Berlín. Vectores de palabras con tales relaciones semánticas podrían usarse para mejorar muchas aplicaciones de NLP existentes, como traducción automática, recuperación de información y sistemas de pregunta-respuesta, y podrían habilitar otras aplicaciones futuras aún por inventarse.

    4.1 Descripción de la Tarea

    Para medir la calidad de los vectores de palabras, definimos un conjunto de prueba integral que contiene cinco tipos de preguntas semánticas y nueve tipos de preguntas sintácticas. En la Tabla 1 se muestran dos ejemplos de cada categoría. En total hay 8869 preguntas semánticas y 10675 sintácticas. Las preguntas de cada categoría se crearon en dos pasos: primero, se creó manualmente una lista de pares de palabras similares. Luego, se forma una gran lista de preguntas conectando dos pares. Por ejemplo, hicimos una lista de 68 grandes ciudades estadounidenses y los estados a los que pertenecen, y formamos unas 2.5K preguntas eligiendo dos pares al azar. Hemos incluido en nuestro conjunto de prueba solo palabras de un único token, por lo que no aparecen entidades multipalabra (como New York).

    Evaluamos la exactitud global para todos los tipos de preguntas y para cada tipo por separado (semántico, sintáctico). Una pregunta se considera correctamente respondida solo si la palabra más cercana al vector calculado con el método anterior es exactamente la misma que la palabra correcta de la pregunta; los sinónimos cuentan, por tanto, como errores. Esto también significa que alcanzar el 100% de exactitud probablemente sea imposible, ya que los modelos actuales no incorporan información sobre la morfología de las palabras. Sin embargo, creemos que la utilidad de los vectores de palabras para ciertas aplicaciones debería estar correlacionada positivamente con esta métrica de exactitud. Pueden lograrse mayores avances incorporando información sobre la estructura de las palabras, especialmente para las preguntas sintácticas.

    Tipo de relación Par de palabras 1 Par de palabras 2 Capital común Athens Greece Oslo Norway Todas las capitales Astana Kazakhstan Harare Zimbabwe Moneda Angola kwanza Iran rial Ciudad-en-estado Chicago Illinois Stockton California Hombre-Mujer brother sister grandson granddaughter Adjetivo a adverbio apparent apparently rapid rapidly Opuesto possibly impossibly ethical unethical Comparativo great greater tough tougher Superlativo easy easiest lucky luckiest Participio presente think thinking read reading Adjetivo gentilicio Switzerland Swiss Cambodia Cambodian Tiempo pasado walking walked swimming swam Sustantivos en plural mouse mice dollar dollars Verbos en plural work works speak speaks

    4.2 Maximización de la Exactitud

    Hemos usado un corpus de Google News para entrenar los vectores de palabras. Este corpus contiene unos 6B tokens. Hemos restringido el tamaño del vocabulario a 1 millón de palabras más frecuentes. Claramente nos enfrentamos a un problema de optimización con restricción de tiempo, pues cabe esperar que tanto usar más datos como usar vectores de palabras de mayor dimensionalidad mejoren la exactitud. Para estimar la mejor elección de arquitectura del modelo de cara a obtener los mejores resultados posibles rápidamente, primero evaluamos modelos entrenados sobre subconjuntos de los datos de entrenamiento, con vocabulario restringido a las 30k palabras más frecuentes. Los resultados con la arquitectura CBOW para distintas dimensionalidades de vector y cantidades crecientes de datos de entrenamiento se muestran en la Tabla 2.

    Puede verse que, a partir de cierto punto, agregar más dimensiones o más datos de entrenamiento produce mejoras decrecientes. Por lo tanto, debemos aumentar conjuntamente la dimensionalidad del vector y la cantidad de datos. Aunque esta observación pueda parecer trivial, debe notarse que actualmente es popular entrenar vectores de palabras sobre cantidades relativamente grandes de datos pero con tamaño insuficiente (como 50 - 100). Dada la Ecuación 4, aumentar la cantidad de datos de entrenamiento al doble produce aproximadamente el mismo aumento en la complejidad computacional que duplicar el tamaño del vector.

    Dimensionalidad / Palabras de entrenamiento 24M 49M 98M 196M 391M 783M 50 13.4 15.7 18.6 19.1 22.5 23.2 100 19.4 23.1 27.8 28.7 33.4 32.2 300 23.2 29.2 35.3 38.6 43.7 45.9 600 24.0 30.1 36.5 40.8 46.6 50.4

    Para los experimentos reportados en las Tablas 2 y 4 usamos tres épocas de entrenamiento con descenso de gradiente estocástico y retropropagación. Elegimos una tasa de aprendizaje inicial de 0.025 y la disminuimos linealmente, de modo que se aproxime a cero al final de la última época de entrenamiento.

    4.3 Comparación de Arquitecturas de Modelo

    Primero comparamos diferentes arquitecturas de modelo para derivar los vectores de palabras usando los mismos datos de entrenamiento y la misma dimensionalidad de 640 para los vectores. En los experimentos posteriores, usamos el conjunto completo de preguntas del nuevo conjunto de prueba Semantic-Syntactic Word Relationship, es decir, sin restricción al vocabulario de 30k. También incluimos resultados sobre un conjunto de prueba presentado en [20] que se centra en la similitud sintáctica entre palabras333Agradecemos a Geoff Zweig por proporcionarnos el conjunto de prueba..

    Los datos de entrenamiento consisten en varios corpus LDC y se describen en detalle en [18] (320M palabras, vocabulario de 82K). Usamos estos datos para proporcionar una comparación con un modelo de lenguaje con red neuronal recurrente entrenado anteriormente, que tardó unas 8 semanas en entrenarse en una sola CPU. Entrenamos un NNLM feedforward con el mismo número de 640 unidades ocultas usando el entrenamiento paralelo de DistBelief [6], usando un historial de 8 palabras previas (por lo que el NNLM tiene más parámetros que el RNNLM, ya que la capa de proyección tiene tamaño $ {\textstyle 640 \times 8} $).

    En la Tabla 3 puede verse que los vectores de palabras del RNN (como se usan en [20]) funcionan bien sobre todo en las preguntas sintácticas. Los vectores del NNLM se desempeñan significativamente mejor que los del RNN; esto no sorprende, pues los vectores de palabras en el RNNLM están directamente conectados a una capa oculta no lineal. La arquitectura CBOW funciona mejor que el NNLM en las tareas sintácticas y aproximadamente igual en la semántica. Finalmente, la arquitectura Skip-gram funciona ligeramente peor que CBOW en la tarea sintáctica (pero aún mejor que el NNLM) y mucho mejor que todos los demás modelos en la parte semántica del test.

    Modelo Conjunto de prueba Semantic-Syntactic Word Relationship MSR Word Relatedness Arquitectura Exactitud Semántica [%] Exactitud Sintáctica [%] Test Set [20] RNNLM 9 36 35 NNLM 23 53 47 CBOW 24 64 61 Skip-gram 55 59 56

    A continuación evaluamos nuestros modelos entrenados con una sola CPU y comparamos los resultados frente a vectores de palabras disponibles públicamente. La comparación se da en la Tabla 4. El modelo CBOW se entrenó sobre un subconjunto de los datos de Google News en aproximadamente un día, mientras que el tiempo de entrenamiento del modelo Skip-gram fue de unos tres días.

    Modelo Vector Entrenamiento Exactitud [%] Dimensionalidad palabras Semántica Sintáctica Total Collobert-Weston NNLM 50 660M 9.3 12.3 11.0 Turian NNLM 50 37M 1.4 2.6 2.1 Turian NNLM 200 37M 1.4 2.2 1.8 Mnih NNLM 50 37M 1.8 9.1 5.8 Mnih NNLM 100 37M 3.3 13.2 8.8 Mikolov RNNLM 80 320M 4.9 18.4 12.7 Mikolov RNNLM 640 320M 8.6 36.5 24.6 Huang NNLM 50 990M 13.3 11.6 12.3 Our NNLM 20 6B 12.9 26.4 20.3 Our NNLM 50 6B 27.9 55.8 43.2 Our NNLM 100 6B 34.2 64.5 50.8 CBOW 300 783M 15.5 53.1 36.1 Skip-gram 300 783M 50.0 55.9 53.3

    Para los experimentos reportados a continuación, usamos solo una época de entrenamiento (de nuevo, disminuimos linealmente la tasa de aprendizaje para que se aproxime a cero al final del entrenamiento). Entrenar un modelo con el doble de datos durante una época produce resultados comparables o mejores que iterar sobre los mismos datos durante tres épocas, como se muestra en la Tabla 5, y proporciona una pequeña aceleración adicional.

    Modelo Vector Entrenamiento Exactitud [%] Tiempo de entrenamiento Dimensionalidad palabras [días] Semántica Sintáctica Total 3 épocas CBOW 300 783M 15.5 53.1 36.1 1 3 épocas Skip-gram 300 783M 50.0 55.9 53.3 3 1 época CBOW 300 783M 13.8 49.9 33.6 0.3 1 época CBOW 300 1.6B 16.1 52.6 36.1 0.6 1 época CBOW 600 783M 15.4 53.3 36.2 0.7 1 época Skip-gram 300 783M 45.6 52.2 49.2 1 1 época Skip-gram 300 1.6B 52.2 55.1 53.8 2 1 época Skip-gram 600 783M 56.7 54.5 55.5 2.5

    4.4 Entrenamiento Paralelo a Gran Escala de los Modelos

    Como se mencionó antes, hemos implementado varios modelos en un marco distribuido llamado DistBelief. A continuación reportamos los resultados de varios modelos entrenados sobre el conjunto de datos Google News 6B, con descenso de gradiente asíncrono por mini-batch y el procedimiento adaptativo de tasa de aprendizaje llamado adagrad [7]. Usamos de 50 a 100 réplicas del modelo durante el entrenamiento. El número de núcleos de CPU es una estimación, ya que las máquinas del centro de datos se comparten con otras tareas de producción y el uso puede fluctuar bastante. Nótese que, debido a la sobrecarga del marco distribuido, el uso de CPU del modelo CBOW y del Skip-gram son mucho más cercanos entre sí que en sus implementaciones de una sola máquina. Los resultados se reportan en la Tabla 6.

    Modelo Vector Entrenamiento Exactitud [%] Tiempo de entrenamiento Dimensionalidad palabras [días x núcleos CPU] Semántica Sintáctica Total NNLM 100 6B 34.2 64.5 50.8 14 x 180 CBOW 1000 6B 57.3 68.9 63.7 2 x 140 Skip-gram 1000 6B 66.1 65.1 65.6 2.5 x 125

    4.5 Microsoft Research Sentence Completion Challenge

    El Microsoft Sentence Completion Challenge se introdujo recientemente como tarea para impulsar el modelado del lenguaje y otras técnicas de NLP [32]. Esta tarea consta de 1040 oraciones en las que falta una palabra en cada una y el objetivo es seleccionar la palabra más coherente con el resto de la oración, dada una lista de cinco opciones razonables. Ya se ha reportado el desempeño de varias técnicas en este conjunto, incluyendo modelos de N-gramas, un modelo basado en LSA [32], un modelo log-bilineal [24] y una combinación de redes neuronales recurrentes que actualmente ostenta el desempeño de vanguardia con 55.4% de exactitud en este benchmark [19].

    Hemos explorado el desempeño de la arquitectura Skip-gram en esta tarea. Primero, entrenamos el modelo de 640 dimensiones sobre las 50M palabras proporcionadas en [32]. Luego, calculamos la puntuación de cada oración del conjunto de prueba usando la palabra desconocida como entrada y prediciendo todas las palabras circundantes en la oración. La puntuación final de la oración es la suma de estas predicciones individuales. Usando las puntuaciones de las oraciones, elegimos la oración más probable.

    En la Tabla 7 se presenta un breve resumen de algunos resultados previos junto con los nuevos resultados. Si bien el modelo Skip-gram por sí solo no supera a la similitud LSA en esta tarea, las puntuaciones de este modelo son complementarias a las obtenidas con RNNLMs, y una combinación ponderada conduce a un nuevo resultado de vanguardia con 58.9% de exactitud (59.2% en la parte de desarrollo del conjunto y 58.7% en la parte de prueba).

    Arquitectura Exactitud [%] 4-grama [32] 39 Average LSA similarity [32] 49 Log-bilinear model [24] 54.8 RNNLMs [19] 55.4 Skip-gram 48.0 Skip-gram + RNNLMs 58.9

    5 Ejemplos de las Relaciones Aprendidas

    La Tabla 8 muestra palabras que siguen diversas relaciones. Seguimos el enfoque descrito antes: la relación se define restando dos vectores de palabras y el resultado se suma a otra palabra. Así, por ejemplo, Paris - France + Italy = Rome. Como puede verse, la exactitud es bastante buena, aunque claramente queda mucho margen para mejoras (nótese que con nuestra métrica de exactitud, que asume coincidencia exacta, los resultados de la Tabla 8 alcanzarían solo alrededor del 60%). Creemos que los vectores de palabras entrenados sobre conjuntos de datos aún más grandes y con mayor dimensionalidad funcionarán mucho mejor y permitirán el desarrollo de nuevas aplicaciones innovadoras. Otra forma de mejorar la exactitud es proporcionar más de un ejemplo de la relación. Al usar diez ejemplos en lugar de uno para formar el vector de relación (promediamos los vectores individuales), hemos observado una mejora de exactitud de aproximadamente 10% absoluto en nuestros mejores modelos sobre el test semántico-sintáctico.

    También es posible aplicar las operaciones vectoriales para resolver tareas distintas. Por ejemplo, hemos observado buena exactitud al seleccionar la palabra que no pertenece a una lista, calculando el vector promedio de una lista de palabras y encontrando el vector de palabra más distante. Este es un tipo popular de problemas en ciertos tests de inteligencia humana. Claramente, todavía hay muchos descubrimientos por hacer usando estas técnicas.

    Relación Ejemplo 1 Ejemplo 2 Ejemplo 3 France - Paris Italy: Rome Japan: Tokyo Florida: Tallahassee big - bigger small: larger cold: colder quick: quicker Miami - Florida Baltimore: Maryland Dallas: Texas Kona: Hawaii Einstein - scientist Messi: midfielder Mozart: violinist Picasso: painter Sarkozy - France Berlusconi: Italy Merkel: Germany Koizumi: Japan copper - Cu zinc: Zn gold: Au uranium: plutonium Berlusconi - Silvio Sarkozy: Nicolas Putin: Medvedev Obama: Barack Microsoft - Windows Google: Android IBM: Linux Apple: iPhone Microsoft - Ballmer Google: Yahoo IBM: McNealy Apple: Jobs Japan - sushi Germany: bratwurst France: tapas USA: pizza

    6 Conclusión

    En este artículo estudiamos la calidad de las representaciones vectoriales de palabras derivadas por varios modelos sobre una colección de tareas lingüísticas sintácticas y semánticas. Observamos que es posible entrenar vectores de palabras de alta calidad usando arquitecturas de modelo muy simples, en comparación con los populares modelos de redes neuronales (tanto feedforward como recurrentes). Debido a su complejidad computacional mucho menor, es posible calcular vectores de palabras de alta dimensión muy precisos sobre un conjunto de datos mucho más grande. Usando el marco distribuido DistBelief debería ser posible entrenar los modelos CBOW y Skip-gram incluso sobre corpus con un billón de palabras, para un tamaño de vocabulario básicamente ilimitado. Eso es varios órdenes de magnitud mayor que los mejores resultados publicados previamente para modelos similares.

    Una tarea interesante en la que se ha demostrado recientemente que los vectores de palabras superan significativamente al estado del arte previo es SemEval-2012 Task 2 [11]. Los vectores RNN disponibles públicamente se usaron junto con otras técnicas para obtener un aumento de más del 50% en la correlación de rangos de Spearman sobre el mejor resultado anterior [31]. Los vectores de palabras basados en redes neuronales se han aplicado previamente a muchas otras tareas de NLP, como análisis de sentimientos [12] y detección de paráfrasis [28]. Cabe esperar que estas aplicaciones puedan beneficiarse de las arquitecturas de modelo descritas en este artículo.

    Nuestro trabajo en curso muestra que los vectores de palabras pueden aplicarse con éxito a la extensión automática de hechos en bases de conocimiento, y también para verificar la corrección de hechos existentes. Los resultados de los experimentos de traducción automática también lucen muy prometedores. En el futuro, también sería interesante comparar nuestras técnicas con el Latent Relational Analysis [30] y otras. Creemos que nuestro conjunto de prueba integral ayudará a la comunidad de investigación a mejorar las técnicas existentes para estimar vectores de palabras. También esperamos que los vectores de palabras de alta calidad se conviertan en un componente importante para futuras aplicaciones de NLP.

    7 Trabajo de Seguimiento

    Después de la versión inicial de este artículo, publicamos código C++ multihilo para una sola máquina que calcula los vectores de palabras, usando tanto las arquitecturas continuous bag-of-words como skip-gram444El código está disponible en https://code.google.com/p/word2vec/. La velocidad de entrenamiento es significativamente mayor que la reportada antes en este artículo, es decir, del orden de miles de millones de palabras por hora para elecciones típicas de hiperparámetros. También publicamos más de 1.4 millones de vectores que representan entidades nombradas, entrenadas sobre más de 100 mil millones de palabras. Parte de nuestro trabajo de seguimiento se publicará en un próximo artículo de NIPS 2013 [21].

    Referencias

    • [1] Y. Bengio, R. Ducharme, P. Vincent. A neural probabilistic language model. Journal of Machine Learning Research, 3:1137-1155, 2003.
    • [2] Y. Bengio, Y. LeCun. Scaling learning algorithms towards AI. En: Large-Scale Kernel Machines, MIT Press, 2007.
    • [3] T. Brants, A. C. Popat, P. Xu, F. J. Och, and J. Dean. Large language models in machine translation. En Proceedings of the Joint Conference on Empirical Methods in Natural Language Processing and Computational Language Learning, 2007.
    • [4] R. Collobert and J. Weston. A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Learning. En International Conference on Machine Learning, ICML, 2008.
    • [5] R. Collobert, J. Weston, L. Bottou, M. Karlen, K. Kavukcuoglu and P. Kuksa. Natural Language Processing (Almost) from Scratch. Journal of Machine Learning Research, 12:2493-2537, 2011.
    • [6] J. Dean, G.S. Corrado, R. Monga, K. Chen, M. Devin, Q.V. Le, M.Z. Mao, M.A. Ranzato, A. Senior, P. Tucker, K. Yang, A. Y. Ng., Large Scale Distributed Deep Networks, NIPS, 2012.
    • [7] J.C. Duchi, E. Hazan, and Y. Singer. Adaptive subgradient methods for online learning and stochastic optimization. Journal of Machine Learning Research, 2011.
    • [8] J. Elman. Finding Structure in Time. Cognitive Science, 14, 179-211, 1990.
    • [9] Eric H. Huang, R. Socher, C. D. Manning and Andrew Y. Ng. Improving Word Representations via Global Context and Multiple Word Prototypes. En: Proc. Association for Computational Linguistics, 2012.
    • [10] G.E. Hinton, J.L. McClelland, D.E. Rumelhart. Distributed representations. En: Parallel distributed processing: Explorations in the microstructure of cognition. Volume 1: Foundations, MIT Press, 1986.
    • [11] D.A. Jurgens, S.M. Mohammad, P.D. Turney, K.J. Holyoak. Semeval-2012 task 2: Measuring degrees of relational similarity. En: Proceedings of the 6th International Workshop on Semantic Evaluation (SemEval 2012), 2012.
    • [12] A.L. Maas, R.E. Daly, P.T. Pham, D. Huang, A.Y. Ng, and C. Potts. Learning word vectors for sentiment analysis. En Proceedings of ACL, 2011.
    • [13] T. Mikolov. Language Modeling for Speech Recognition in Czech, Tesis de máster, Brno University of Technology, 2007.
    • [14] T. Mikolov, J. Kopecký, L. Burget, O. Glembek and J. Černocký. Neural network based language models for higly inflective languages, En: Proc. ICASSP 2009.
    • [15] T. Mikolov, M. Karafiát, L. Burget, J. Černocký, S. Khudanpur. Recurrent neural network based language model, En: Proceedings of Interspeech, 2010.
    • [16] T. Mikolov, S. Kombrink, L. Burget, J. Černocký, S. Khudanpur. Extensions of recurrent neural network language model, En: Proceedings of ICASSP 2011.
    • [17] T. Mikolov, A. Deoras, S. Kombrink, L. Burget, J. Černocký. Empirical Evaluation and Combination of Advanced Language Modeling Techniques, En: Proceedings of Interspeech, 2011.
    • [18] T. Mikolov, A. Deoras, D. Povey, L. Burget, J. Černocký. Strategies for Training Large Scale Neural Network Language Models, En: Proc. Automatic Speech Recognition and Understanding, 2011.
    • [19] T. Mikolov. Statistical Language Models based on Neural Networks. Tesis doctoral, Brno University of Technology, 2012.
    • [20] T. Mikolov, W.T. Yih, G. Zweig. Linguistic Regularities in Continuous Space Word Representations. NAACL HLT 2013.
    • [21] T. Mikolov, I. Sutskever, K. Chen, G. Corrado, and J. Dean. Distributed Representations of Words and Phrases and their Compositionality. Aceptado en NIPS 2013.
    • [22] A. Mnih, G. Hinton. Three new graphical models for statistical language modelling. ICML, 2007.
    • [23] A. Mnih, G. Hinton. A Scalable Hierarchical Distributed Language Model. Advances in Neural Information Processing Systems 21, MIT Press, 2009.
    • [24] A. Mnih, Y.W. Teh. A fast and simple algorithm for training neural probabilistic language models. ICML, 2012.
    • [25] F. Morin, Y. Bengio. Hierarchical Probabilistic Neural Network Language Model. AISTATS, 2005.
    • [26] D. E. Rumelhart, G. E. Hinton, R. J. Williams. Learning internal representations by back-propagating errors. Nature, 323:533.536, 1986.
    • [27] H. Schwenk. Continuous space language models. Computer Speech and Language, vol. 21, 2007.
    • [28] R. Socher, E.H. Huang, J. Pennington, A.Y. Ng, and C.D. Manning. Dynamic pooling and Unfolding Recursive Autoencoders for Paraphrase Detection. En NIPS, 2011.
    • [29] J. Turian, L. Ratinov, Y. Bengio. Word Representations: A Simple and General Method for Semi-Supervised Learning. En: Proc. Association for Computational Linguistics, 2010.
    • [30] P. D. Turney. Measuring Semantic Similarity by Latent Relational Analysis. En: Proc. International Joint Conference on Artificial Intelligence, 2005.
    • [31] A. Zhila, W.T. Yih, C. Meek, G. Zweig, T. Mikolov. Combining Heterogeneous Models for Measuring Relational Similarity. NAACL HLT 2013.
    • [32] G. Zweig, C.J.C. Burges. The Microsoft Research Sentence Completion Challenge, Microsoft Research Technical Report MSR-TR-2011-129, 2011.