REPRESENTACIÓN DE PALABRAS COMO VECTORES (word vector ...
Transcript of 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
¿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…
¿CÓMO LO HACEMOS?
Entrada (texto)
Algoritmo de aprendizaje
Salida
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
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
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
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
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”.
EJEMPLO
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.
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).
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
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.
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
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
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)
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” ]
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
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”
WORD2VEC – ESTRUCTURA GENERAL
https://iksinc.wordpress.com/tag/continuous-bag-of-words-cbow/
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 =
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
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
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.
SKIP-GRAM AND CBOW MODELS
Efficient Estimation of Word Representations in Vector Space by Tomas Mikolov, et al.
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,
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
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.
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
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.
ALGUNAS PROPIEDADES INTERESANTES
https://www.tensorflow.org/versions/r0.7/tutorials/word2vec/index.html
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”)
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)
WORD2VEC RESULTADOS
Relationship pairs in a word embedding. From Mikolov et al. (2013b).
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.
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/
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.
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.
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
ALGUNAS APLICACIONES – SHOW AND TELL
OTRAS APLICACIONES
• Dependency parsing
• Named entity recognition
• Document classification
• Sentiment Analysis
• Paraphrase Detection
• Word Clustering
• Machine Translation
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
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
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.
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.
RESULTADOS
• frog
• frogs
• toad
• litoria
• leptodactylidae
• rana
• lizard
• eleutherodactylus
Vecinos cercanos a “frog”
http://nlp.stanford.edu/projects/glove/
GLOVE – RESULTADOS - NÚMEROS
GloVe: Global Vectors for Word Representation Pennington et. Al.
PREGUNTAS
• Comentarios ?
• Ideas locas ?