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 vienen en grupos
- El gato camina por la barda
- La gato camina por la barda
- El gato camina barda la por
- 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})$$
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 |
?? |
Ir a nuevo código
$ jupiter notebook
Ejecutar "representations/Clasificacion_glove.ipynb"