representaciÓn de palabras como vectores (word vector

50
REPRESENTACIÓN DE PALABRAS COMO VECTORES (WORD VECTOR REPRESENTATIONS) SEMINARIO DE APRENDIZAJE PROFUNDO APLICADO AL PROCESAMIENTO DE LENGUAJE NATURAL 2016

Upload: others

Post on 22-Jul-2022

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

REPRESENTACIÓN DE PALABRAS COMO VECTORES(WORD VECTOR REPRESENTATIONS)

SEMINARIO DE APRENDIZAJE PROFUNDO APLICADO AL PROCESAMIENTO DE LENGUAJE NATURAL

2016

Page 2: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

¿QUÉ TAREAS QUEREMOS HACER?

• Clasificación

• Recuperación de información (information retriveal)

• Traducción

• Reconocimiento de voz (speech recognition)

• Análisis de sentimiento (Sentiment analisys)

• Otros NER, SRL, POS, etc…

Page 3: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

¿CÓMO LO HACEMOS?

Entrada (texto)

Algoritmo de aprendizaje

Salida

Page 4: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

EL PROBLEMA….

• La computadora no entiende

palabras.

• Podemos enumerar todas las

palabras del vocabulario V con el

que trabajamos y mapear estas

palabras con números del 1 al |V|.

Palabra Id (w)

Soleado 1

Es 2

Día 3

Un 4

Hoy 5

Vocabulario

Hoy es un día soleado

5 2 4 3 1

Page 5: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

PERO….

• Si usamos este enfoque le estamos brindando información que seguramente es

falsa al algoritmo de aprendizaje por lo que puede llegar a resultados

erróneos.

• PRINCIPALES PROBLEMAS

• Distancia entre palabras

• Relación de orden entre palabras

Page 6: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

ONE-HOT ENCODING

• Utilizamos vectores de tamaño |V|

• Utilizamos la representación que mapea una palabra a un número

• El vector (one-hot vector) que la palabra con un determinado id, es un vector lleno

de ceros salvo en la posición id donde contiene un 1.

• De esta forma tenemos vectores ortogonales que mantienen la distancia y no tienen

un orden implícito.

• Siguiendo el ejemplo anterior:

Día (id=3)

Soleado (id=1)

0 0 1 0 0

1 0 0 0 0

Page 7: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

PROBLEMAS CON ONE-HOT ENCODING

• Dimensión muy alta (high-dimensional)

• La dimensión de los vectores es igual al tamaño del vocabulario

• Seguramente decenas o cientos de miles

• Los problemas

• Posibilidad de sobreajuste (Overfitting).

• Millones de entradas pueden significar millones de parámetros a ajustar

• Computacionalmente costoso

• No todas las operaciones se pueden realizar con matrices dipersas (ej reconstrucción en autoencoders)

• No agrega información

• Evita asunciones falsas por parte del algoritmo de aprendizaje, pero no aporta información verdadera acerca

de relaciones entre las palabras

Page 8: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD EMBEDDING

• Cada palabra se representa con un vector

• Vectores “densos”

• Usualmente de dimensión entre 50 y 1000

• Auto-aprendidos

• Palabras semánticamente similares tienen representaciones similares o

“cercanas”.

Page 9: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

EJEMPLO

Page 10: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector
Page 11: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

UN POCO DE HISTORIA…

• El término “word embedding”, nace en 2003 en un trabajo de Bengio et al.

• Los primero en demostrar la utilidad de “word embeddings” pre-entrenados

fueron Collobert y Weston en 2008

• En 2014 Mikolov et al. liberaron word2vec, lo que tuvo un gran impacto y

popularizó este método

• Decenas de trabajos se han realizado basados en word2vec, muchos de ellos

alcanzando el estado del arte para el área que trataban.

Page 12: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD EMBEDDINGS - PRINCIPALES MÉTODOS

• Latent Semantic Indexing (Deerwester et al., ’88).

• Neural Net Language Models (NN-LMs) (Bengio et al., ’06)

• Convolutional Nets for tagging (SENNA) (Collobert & Weston, ’08).

• Supervised Semantic Indexing (Bai et al, ’09).

• Wsabie (Weston et al., ’10).

• Recurrent NN-LMs (Mikolov et al., ’10).

• Recursive NNs (Socher et al., ’11).

• Word2Vec (Mikolov et al., ’13).

• Paragraph Vector (Le & Mikolov, ’14).

Page 13: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

MODELADO DEL LENGUAJE

• Un modelo de lenguaje es un modelo probabilístico que asigna

probabilidades a cualquier secuencia de palabras p(w1, ... ,wT).

• Modelado de lenguaje es la tarea de aprender un modelo de lenguaje que asigna altas

probabilidades a oraciones bien formadas.

• Desempeña un papel crucial en los sistemas de traducción de reconocimiento de voz y de

la máquina

A smart person

Una persona inteligente

A person smart

Page 14: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

MODELO DE N-GRAMA

• Un n-grama es una secuencia de n palabras

• Unigramas (n=1): “es”, “una”, “secuencia”, etc.

• Bigramas (n=2): [“es”, “una”], [“una”, “secuencia”], etc.

• Trigramas (n=4): [“es”, “una”, “secuencia”], [ “una”, “secuencia”, “de”], etc.

• Permiten hacer una predicción estadística del próximo elemento de cierta

secuencia de elementos sucedida hasta el momento.

• Los recuentos de n-gramas son obtenidos de un corpus de entrenamiento.

Page 15: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

PROBLEMAS CON EL MODELO DE N-GRAMA

• Problema: Data sparsity

• Queremos un “n” grande para que el modelo sea realista

• Pero… para valores grandes de “n”, es probable que un n-grana no haya sido

observado en el corpus de entrenamiento.

• Podemos intentar “suavizar” los recuentos

• Combinar count(w1 , w2 , w3 , w4), count(w2 , w3 , w4), count(w3 , w4), and count(w4) para

estimar p(w4 |w1, w2, w3)

• Esto resuelve el problema tan solo en parte

Page 16: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

HIPÓTESIS DISTRIBUCIONAL

• La hipótesis distribucional (Distributional Hypothesis), en lingüística se deriva

de la teoría semántica de uso del lenguaje, es decir

• Las palabras que son utilizadas y aparecen en contextos iguales tienden a tener

significados similares.

“words that are used and occur in the same contexts tend to purport similar meanings.”

Harris, Z. (1954). Distributional structure

• Conocerás una palabra por la compañía que mantiene.

‘You shall know a word by the company it keeps’. Firth, J.R. (1957). A synopsis of linguistic

theory 1930-1955

Page 17: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

MODELO DE LENGUAJE DE REDES NEURONALES

• Modelar la probabilidad

p(wt | wt−(n−1) , ... ,wt−1)

Mediante una red neuronal

• Podremos aprender representaciones de

palabras que permitan un mapeo para n-

gramas que no han sido observados.

• Para generar una probabilidad se utiliza

una capa softmax

Classic neural language model (Bengio et al., 2003)

Page 18: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

MODELO DEL LENGEUAJE DE REDES NEURONALES

• Potencialmente puede generalizar a contextos que no han sido observados en

el conjunto de entrenamiento.

• Ejemplo: P(“comiendo” | “el”, ”gato”, ”está”)

Imaginemos que el 4-grama [“el”, “gato”, “está”, ”comiendo” ] no está en el corpus de

entrenamiento, pero [“el”, “perro”, “está”, ”comiendo” ] sí lo está.

Si las representaciones de “gato” y “perro” son similares, entonces la red neuronal

puede ser capaz de generalizar al caso del “gato”

Las redes neuronales pueden aprender representaciones de palabras similares para

estas palabras basado en otro 4-gramas como:

[“el”, “gato”, “está”, ” durmiendo” ]

[“el”, “perro”, “está”, ”durmiendo” ]

Page 19: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD2VEC

• Herramienta para el cálculo de las representaciones de palabras distribuidas y

continuas.

• Presentado en “Efficient Estimation of Word Representations in Vector Space.”

Mikolov et al. (2013) - Google

• ¿Deep learning?

• Sin capas ocultas…

• 2 algoritmos

• Modelo CBOW (continuous bag of words)

• Red neuronal de una capa

• Modelo Skip-gram

Page 20: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD2VEC

• Diferencias con enfoques anteriores (como NNLM)

• Elimina la capa oculta no lienal

• Utiliza una ventana (toma como contexto el pasado y el futuro)

• La capa de proyección se comparte para todas las entradas

• Utiliza métodos de optimización como “negative sampling”

Page 21: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD2VEC – ESTRUCTURA GENERAL

https://iksinc.wordpress.com/tag/continuous-bag-of-words-cbow/

Page 22: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD2VEC – ESTRUCTURA GENERAL (EJEMPLO)

• Supongamos que tenemos el corpus:

• “the dog saw a cat”, “the dog chased the cat”, “the cat climbed a tree”

• Usamos vectores de dimensión tres (3 neuronas en la capa oculta)

• Por lo tantos las matrices WI and WO serán de 8×3 y 3×8 respectivamente

• Inicializamos los valores para las matrices de forma aleatoria

WI =

WO =

Page 23: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD2VEC – ESTRUCTURA GENERAL (EJEMPLO 2)

• Nos interesa aprender la relación entre las palabras “cat” y “climbed”

• O sea queremos que la red neuronal muestre con alta probabilidad “climbed” cuando la

palabra “cat” es la entrada de la red.

• Utilizamos one-hot encoding para representar las palabras.

• El vector de entrada correspondiente a la palabra “cat” es [0 1 0 0 0 0 0 0]t

• El vector objetivo correspondiente a la palabra “climbed” es [0 0 0 1 0 0 0 0 ]t

• Ht = XtWI = [-0.490796 -0.229903 0.065460]

• Ht coincide con la 3er fila de la matriz WI

Page 24: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD2VEC – ESTRUCTURA GENERAL (EJEMPLO 3)

• La salida de la red (del tamaño del vocabulario) es

• HtWO = [0.100934 -0.309331 -0.122361 -0.151399 0.143463 -0.051262 -

0.079686 0.112928]

• Siendo que lo que queremos calcular es la probabilidad Pr(wordk|wordcontext) para

k=1,..,|V|

• Para esto word2vec utiliza softmax que se puede calcular de la siguiente forma:

• activation(n) representa la salida de la n-esima neurona de la capa de salida

Page 25: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD2VEC – ESTRUCTURA GENERAL (EJEMPLO 4)

• Por lo tanto las probabilidades para las neuronas de la capa de salida:

[ 0.143073, 0.094925, 0.114441, 0.111166, 0.149289, 0.122874, 0.119431, 0.144800 ]

• Dado el vector objetivo [0 0 0 1 0 0 0 0 ]t, el vector de error se puede calcular

fácilmente restando el vector de probabilidades al vector objetivo.

• Luego simplemente mediante backpropagation se propaga el error hacia atrás y

se ajustan los valores.

• Al final la matriz WI contiene los vectores que representan las palabras.

Page 26: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

SKIP-GRAM AND CBOW MODELS

Efficient Estimation of Word Representations in Vector Space by Tomas Mikolov, et al.

Page 27: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

MODELO CBOW

• Dado un contexto (una ventana de palabras), busca predecir una palabra

objetivo (o palabra actual).

• Ej. Dados wi-2, wi-1, wi+1, wi+2 wi

• Tres capas

• Capa de entrada

• Capa de proyección

• Capa de salida

• Se llama “Continuous bag-of-words” ya que no tiene en cuenta el orden de

las palabras,

Page 28: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

MODELO CBOW

• En este caso tenemos C palabras en el contexto que

se corresponden con C entradas.

ℎ =1

𝐶𝑊 𝑥1 + 𝑥2 +⋯+ 𝑥𝐶 =

1

𝐶(𝑣𝑤1 + 𝑣𝑤2 +⋯+ 𝑣𝑤𝑐)

• Donde C es el número de entradas, x1,…,xC son las

entradas, y vw1,…,vwC son los vectores de w que

corresponden a cada palabra

• Al ajustar los pesos en el backpropagation debemos

recordar que hicimos esta modificaciónword2vec Parameter Learning Explained - Xin Rong

Page 29: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

MODELO SKIP-GRAM

• Dada una palabra intenta predecir el contexto en el que aparecerá.

• Ej. Dado wi wi-2, wi-1, wi+1, wi+2

• Tres capas

• Capa de entrada

• Capa de proyección

• Capa de salida

• Mikolov recomienda su uso junto a Negative Sampling ya que da mejores

resultados que CBOW en tareas similares.

Page 30: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

MODELO SKIPGRAM

• En este caso tenemos C palabras en el contexto

que se corresponden con C salidas.

• Se calcula una salida para cada palabra de

contexto. Se utiliza el mismo W’ (WO), pero se

calcula el softmax para cada palabra.

• Se utiliza:

• Luego se calcula el vector de error para cada

palabra, y se suman los errores.word2vec Parameter Learning Explained - Xin Rong

Page 31: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

OPTIMIZANDO WORD2VEC

• Hierarchical softmax – Huffman Tree

• Evita el cálculo de la probabilidad para todas las palabras del lenguaje.

• Sub-sampling de palabras frecuentes

• Algunas palabras como (“un”, “el”, en”, “y”,…) aparen mucho (incluso cientos de milllones

de veces) pero no aportan mucha información.

• Negative Sampling

• Para la fórmula p(c | w) = v_c * v_w/sum(v_c1 * v_w). Evita el cálculo de todos los

posibles conextos en denominador (sum) eligiendo unos pocos de forma aleatoria.

Page 32: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

ALGUNAS PROPIEDADES INTERESANTES

https://www.tensorflow.org/versions/r0.7/tutorials/word2vec/index.html

Page 33: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

ALGUNAS PROPIEDADES INTERESANTES

• Captura relaciones sintácticas y

semánticas de una forma sencilla

• vector(”King”) - vector(”Man”) +

vector(”Woman”)

Da como resultado un vector muy

cercano a vector(“Queen”)

Page 34: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD2VEC RESULTADOS

• Simplifica la arquitectura con respecto a otros modelos que se venían

utilizando hasta el momento

• Agrega optimizaciones como “Negative Sampling” que hacen los algorimos

más eficientes

• Gracias a estas optimizaciones permite entrenar el modelo con una gran

cantidad de datos en menor tiempo.

• En los papers se llega a entrenar el algoritmo para 1600 millones de

palabras (1.6 billon)

Page 35: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD2VEC RESULTADOS

Relationship pairs in a word embedding. From Mikolov et al. (2013b).

Page 36: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WORD2VEC RESULTADOS

Nótese que la dimensión para NNLM es 100 ya que el

entrenamiento para la dimensión 1000 tardaría mucho

tiempo.

Efficient Estimation of Word Representations in

Vector Space - Mikolov et al.

Page 37: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

WEVI - DEMO

• Herramienta para visualizar el

mecanismo básico de trabajo de

word2vec

• Aprende vectores de palabras

utilizando word2vec (el mecanismo

más básico) en un pequeño

vocabulario.

• Puede ayudar a entender el modelo

• https://ronxin.github.io/wevi/

Page 38: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

ALGUNAS APLICACIONES - TRADUCCIONES

• Representaciones de números

y animales en vectores de

palabras. A la izquierda en

inglés, a la derecha español.

• Los vectores fueron

proyectados a 2 dimensiones.

Se puede ver que en ambos

casos hay una estructura

similar, lo que indica que es

podría ser posible aprender

un mapeo lineal de un

espacio a otro.

Exploiting Similarities among Languages for Machine Translation – Mikolov et al.

Page 39: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

ALGUNAS APLICACIONES - IMÁGENES

• Reconocer imágenes nunca vistas

• (generalizar desde objetos conocidos)

• En este caso se entrenó la red con imágenes

conocidas como auto, caballo, perro.

• Se le mostró a la red la imagen de un gato y

la red la convirtió en un vector cercano a

gato (y a perro)

• Se le mostró la imagen de un camión y la

convirtió en un vector cercano a camión

Zero-Shot Learning Through Cross-Modal Transfer – Socher et al.

Page 40: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

ALGUNAS APLICACIONES – DESCRIBIR IMÁGENES

• Show and tell. Intenta describir

automáticamente el contenido de

una imagen.

Show and Tell: A Neural Image Caption Generator – Vinyals et al

Page 41: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

ALGUNAS APLICACIONES – SHOW AND TELL

Page 42: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

OTRAS APLICACIONES

• Dependency parsing

• Named entity recognition

• Document classification

• Sentiment Analysis

• Paraphrase Detection

• Word Clustering

• Machine Translation

Page 43: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

GLOVE (GLOBAL VECTORS)

• Metodos basados en conteo

• Entrenamiento más rápido

• Uso eficiente de estadísticas

• Principalmente utilizado para capturar

similitud de palabras

• Da importancia desproporcionada a

conteos grandes

• Métodos de predicción directa

• Escala con el tamaño del corpus

• Uso ineficiente de estadísticas

• Mejora la performance en situaciones

no vistas

• Puede capturar patrones complejos

más allá de la similitud de palabras

Page 44: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

GLOVE

• Metodo basado en conteo

• Reune las ventajas de ambos mundos

• Entrenamiento rápido

• Escala a grandes corpus

• Buen desempeño incluso para corpus pequeños y para vectores pequeños

• Toma como base que la estadística de la ocurrencia de palabras es la

principal fuente de información disponible para aprender representaciones

de palabras mediante métodos de aprendizaje no supervisado

Page 45: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

GLOVE – IDEA BASE

• Utiliza una matriz de coocurrencias.

• Cuenta palabras en el contexto de

una palabra objetivo.

• Calcula la relación entre

probabilidades de una palabra

dadas otras dos que se quieren

relacionar.

GloVe: Global Vectors for Word Representation

Pennington et. Al.

Page 46: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

GLOVE – IDEA BASE (EJEMPLO)

• Si la palabra k está relacionada a “ice” pero no a “steam”, en el ejemplo

k = “solid”, la relación p(solid|ice)/p(solid|steam) será grande (mucho

mayor que 1).

• Si la palabra k está relacionada a “steam” pero no a “ice”, en el ejemplo

k = “gas”, la relación p(gas|ice)/p(gas|steam) será pequeña (mucho

menor que 1).

• En cambio si la palabra k no está relacionada con ninguna o si está

relacionada con ambas de forma similar, la relación debería ser cercana

a 1.

Page 47: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

RESULTADOS

• frog

• frogs

• toad

• litoria

• leptodactylidae

• rana

• lizard

• eleutherodactylus

Vecinos cercanos a “frog”

http://nlp.stanford.edu/projects/glove/

Page 48: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

GLOVE – RESULTADOS - NÚMEROS

GloVe: Global Vectors for Word Representation Pennington et. Al.

Page 49: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector
Page 50: REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector

PREGUNTAS

• Comentarios ?

• Ideas locas ?