De repesentaciones clásicas a representaciones avanzadas para NLP




Ivan Meza
Instituto de Investigaciones en Matemáticas Aplicadas y en Sistemas
Universidad Nacional Autónoma de México

Instrucciones código



					$ git clone git@gitlab.com:ivanvladimir/nlp_notebooks.git
					$ cd nlp_notebooks
					$ pipenv install --ignore-pipfile
					




Es parte esencial de nuestra experiencia humana

Sin embargo, el lenguaje tiene propiedades escurridizas

Las palabras son muchas

Las palabras vienen en grupos

Hay "reglas"

  • El gato camina por la barda
  • La gato camina por la barda
  • El gato camina barda la por

Hay estructura

  • El gato camina por la barda
  • Por la barda el gato camina
  • Camina por la barda el gato
  • Camina el gato por la barda
  • Gato camina por el la barda
  • Camina el gato barda por la

Las palabras tienen varios sentidos

La ambigüedad son las cosquillas del cerebro

  • Hola, ¿cómo te llamas?
  • Maria de los Ángeles ¿y tú?
  • Daniel de Nueva York

El significado se compone

  • El gato
  • El gato camina
  • El gato camina por la barda
  • El gato camina por la barda una noche lluviosa que había mucho frío y donde nadie había pensado llevar un paraguas ante las evidentes señas de tormenta que presentaba el cielo cerrado y oscuro
  • El golfo de California está tranquilo.
  • Lourdes no quiere a su tía porque es muy envidiosa.
  • Veo al gato con el telescopio.
  • Propiedad Valoración
    Número de palabras
    Tipos de palabras
    "reglas"
    Estructuras
    Ambiguedad
    Composicionalidad
    Escalar

    Entra a escena

    Machine learning

    Ir a código, ejecutar sólo PRIMERA PARTE


    
    				$ jupiter notebook
    				
    Ejecutar "representations/BoW.ipynb"

    Zipf law

    Pocas palabras que aparecen mucho, muchas palabras que aparecen poco

    Ir a código, ejecutar sólo SEGUNDA PARTE


    
    				$ jupiter notebook
    				
    Ejecutar "representations/BoW.ipynb"

    Ir a código, ejecutar sólo TERECERA PARTE


    
    				$ jupiter notebook
    				
    Ejecutar "representations/BoW.ipynb"
    Propiedad Valoración
    Número de palabras
    Tipos de palabras
    "reglas"
    Estructuras
    Ambiguedad ~
    Composicionalidad
    Escalar

    Ir a nuevo código


    
    				$ jupiter notebook
    				
    Ejecutar "representations/Clasificacion_BoW.ipynb"
    Propiedad Valoración
    Número de palabras
    Tipos de palabras
    "reglas"
    Estructuras
    Ambiguedad
    Composicionalidad
    Escalar

    Ninja de AA = Ninja en álgebra lineal

    En aprendizaje automático es necesario manipular los datos matemáticamente (y pro-gramáticamente), necesitamos de herramientas matemáticas para alcanzar esto.

    Vectores

  • Tuplas de números sacados de espacio de coordenadas real $\mathbb{R^n}$
  • Generalmente usamos minúsculas $x$ y $y$
  • Para referirnos a dimensiones específicas usamos sub-índices ${x_1,x_2,\ldots,x_n}$
  • $x=(x_1,x_2,x_3) \in (\mathbb{R},\mathbb{R},\mathbb{R}) \equiv \mathbb{R^n}^3$

    Matrices

  • Arreglos rectangulares números sacados de espacio de coordenadas real $\mathbb{R}^{n\times m}$
  • Generalmente usamos mayúsculas $X$ y $Y$
  • Matrices (cont.)

    $$ X = \begin{bmatrix} x_{11} & x_{12} & \cdots& x_{1m} \\ x_{21} & x_{22} & \cdots& x_{1m} \\ \vdots & \vdots & \ddots& \vdots \\ x_{n1} & x_{n2} & \cdots& x_{nm} \\ \end{bmatrix} $$

    Vectores (cont.)

    En realidad un vector es un tipo especial de matrix $\mathbb{R}^{n\times 1}$, para un vector columna

    $$ (x_1,x_2, \ldots, x_n) = \begin{pmatrix} x_{1}\\ x_{2}\\ \vdots\\ x_{n}\\ \end{pmatrix} $$

    Vectores (cont.)

    En realidad un vector es un tipo especial de matrix $\mathbb{R}^{1\times m}$, para un vector renglón

    $$ (x_1,x_2, \ldots, x_m) = \begin{pmatrix} x_{1} & x_{2} & \cdots & x_{m}\\ \end{pmatrix} $$

    Transpuesta

    La operación transpuesta nos permite cambiar entre vector columna y vector renglón

    $$ \begin{pmatrix} x_{1} & x_{2} & \cdots & x_{n}\\ \end{pmatrix} = \begin{pmatrix} x_{1}\\ x_{2}\\ \vdots\\ x_{n}\\ \end{pmatrix}^T $$

    Transpuesta (cont.)

    $$ \begin{pmatrix} x_{1}\\ x_{2}\\ \vdots\\ x_{m}\\ \end{pmatrix} = \begin{pmatrix} x_{1} & x_{2} & \cdots & x_{m}\\ \end{pmatrix}^T $$

    Operaciones con vectores

    $$ \begin{matrix} x + y & = (x_1+y_1, x_2+y_2,\ldots,x_n+y_n)\\ x - y & = (x_1-y_1, x_2-y_2,\ldots,x_n-y_n)\\ \alpha x & = (\alpha x_1, \alpha x_2, \ldots,\alpha x_n)\\ \left\lVert x \right\lVert & = \sqrt{(x_1^2, x_2^2, \ldots, x_n^2)}\\ x \cdot y & = x_1 y_1 + x_2 y_2 + \ldots + x_n y_n\\ \end{matrix} $$

    Operaciones con matrices

    $$ \begin{matrix} Z = X + Y & \Longleftrightarrow & z_{ij}=a_{ij}+b_{ij} \\ Z = XY & \Longleftrightarrow & z_{ij}=\sum_{k=1}^n a_{ik} b_{kj} \\ Z = X^T & \Longleftrightarrow & \text{de reglones a columnas}\\ \end{matrix} $$

    Otras: inversa $(XX^1=U)$, Trace $(x_{ii})$

    Ir a nuevo código


    
    				$ jupiter notebook
    				
    Ejecutar "representations/glove.ipynb"
    Propiedad Valoración
    Número de palabras ??
    Tipos de palabras ??
    "reglas" ??
    Estructuras ??
    Ambiguedad ??
    Composicionalidad ??
    Escalar ??

    MF: Sistemas de recomendación



    Recomendar sin preguntar

    • Filtros colaborativos: la conciencia de las masas
    • Descubre la relación entre: objeto-sujeto
    • Usado para casos desconocido
    • Uso de aplicación: Amazon y netflix
    $D_1$ $D_2$ $\ldots$ $D_m$
    $U_1$$5$ NA $\ldots$ $D_m$
    $U_2$$4$ 3 $\cdots$ $5$
    $\vdots$$\vdots$ $\vdots$ $\ddots$ $\vdots$
    $U_n$$NA$ $NA$ $\ldots$ $5$

    Variable latente

    Variable auxiliar que gobierna el comportamiento de otras


    Aumento dimensional

    Concepto básico


    $$ X \approx WH $$

    $$ (n\times m) = (n\times k) ( k \times m) $$

    W


    $$\left[ \begin{array} a w_{11} & w_{12} & \cdots & w_{1k} \\ w_{21} & w_{22} & \cdots & w_{2k} \\ \vdots & \vdots & \ddots & \vdots \\ w_{n1} & w_{n2} & \cdots & w_{nk} \\ \end{array} \right] $$

    Como piensa cada usuario en $k$ valores

    H


    $$\left[ \begin{array} a h_{11} & h_{12} & \cdots & h_{1m} \\ h_{21} & h_{22} & \cdots & h_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ h_{k1} & h_{k2} & \cdots & h_{km} \\ \end{array} \right] $$

    Como piensan de cada documentos en $k$ valores

    Métodos para calcular W y H

    Gradient descent

    Error

    $$\mathop{\textrm{argmin}}_{w_{ik},h_{kj}} \sum_{i=i}^{n}E(WH[u,d],X[u,d])$$


    $$X[u,d]=x_{ud}$$ $$WH[u,d]=\sum_{i=1}^kw_{uk} h_{kd}=\hat{x}_{ud}$$

    Gradiente

    $$\hat{w}_{uk}=w_{uk}-\alpha \frac{dE_{ud}}{d_{uk}} $$
    $$\hat{h}_{kd}=h_{kd}-\alpha \frac{dE_{ud}}{d_{kd}} $$

    Error cuadrático

    $$(x_{ud}-WH[u,d])^2= (x_{ud}-\hat{x}_{ud})^2 = (x_{ud}-\sum_{i=1}^kw_{uk} h_{kj})^2$$

    Su derivada

    $$\frac{dE_{ud}}{dw_{uk}}=-2(x_{ud}-\hat{x}_{ud})h_{uk} $$ $$\frac{dE_{ud}}{dh_{kd}}=-2(x_{ud}-\hat{x}_{ud})w_{kd} $$

    Finalmente

    $$\hat{w}_{uk}=w_{uk}+2\alpha E_{ud} h_{kd}$$ $$\hat{h}_{kd}=h_{kd}+2\alpha E_{ud} w_{uk}$$

    Pero...

    No tenemos todos los datos


    Sólo se calcula para los observables

    Regularización

    Es gradient descent, podemos agregar regularización


    $$\hat{w}_{uk}=w_{uk}+\alpha (2E_{ud} h_{kd}-\beta w_{uk})$$ $$\hat{h}_{kd}=h_{kd}+\alpha (2E_{ud} w_{uk}-\beta h_{kd})$$

    Cambio de perspectiva: 1

    Regresando


    $$ X \approx WH $$

    $X$ usuarios y su relación con los documentos ($n \times m$)

    $W$ como piensan los usuarios ($n \times k$)

    $H$ como pensamos sobre los documentos ($k \times m$)


    Regresando


    $$ X \approx WH $$

    $X$ palabras y su relación con los documentos ($n \times m$)

    $W$ como las palabras se relacionan con los temas ($n \times k$)

    $H$ como los temas se relacionan con los documentos ($k \times m$)


    $H$ es el diccionario (embeddings)

    Propiedad Valoración
    Número de palabras ??
    Tipos de palabras ??
    "reglas" ??
    Estructuras ??
    Ambiguedad ??
    Composicionalidad ??
    Escalar ??

    Word2vec

    Ir a nuevo código


    
    				$ jupiter notebook
    				
    Ejecutar "representations/Clasificacion_glove.ipynb"
    Licencia de Creative Commons
    De repesentaciones clásicas a representaciones avanzadas para NLP by Ivan V. Meza Ruiz is licensed under a Creative Commons Reconocimiento 4.0 Internacional License.
    Creado a partir de la obra en http://turing.iimas.unam.mx/~ivanvladimir/slides/nlp/presenentations_taller_nlp_uam.html.