La regresión lineal es una forma de aprendizaje supervisado donde, a partir de un vector $x^T = (x_1, x_2, \ldots, x_n)$ con $n$ atributos (o variables) se busca construir una función (hipótesis) $h_{\theta}(x): \mathbb{R}^{n} \to \mathbb{R}$ que prediga la salida $y \in \mathbb{R}$ (llamada variable o atributo de salida), continua, a través del siguiente modelo:
$$h_{\theta}(x) = \theta_0+\sum_{j=1}^n x_j\theta_j$$El problema de aprendizaje para la regresión lineal multivariada consiste en aprender los parámetros $\theta$ a partir de un conjunto de entrenamiento $\{(x^{(i)},y^{(i)})\}$ que tiene $m$ elementos y donde cada $(x^{(i)},y^{(i)})$ es una instancia de entrenamiento. Para esto, deberemos definir una función de costo que nos diga qué tan parecido es el valor predicho por $h_{\theta}(x^{(i)})$ al verdadero valor de $y^{(i)}$ en el conjunto de entrenamiento.
Una método para estimar $\theta$ es buscar aquellos valores que hagan que $h_\theta(x)$ sea tan cercano a $y$ como sea posible, para las instancias de entrenamiento que contamos. Para esto, definiremos una función de costo, que mide esta diferencia, y que será la que intentemos minimizar.
$$ J(\theta) = \frac{1}{2m} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})^2$$$f:\mathbb{R}\to \mathbb{R}$ | $f:\mathbb{R^2}\to \mathbb{R}$ |
---|---|
La regresión logística es un método de clasificación (igual que, por ejemplo, los árboles de decisión o los clasificadores bayesianos). La especificación es similar al caso de la regresión lineal, pero en este caso $y$, en lugar de tomar valores continuos, toma valores discretos.
La regresión logística no solamente intenta predecir la clase $y$, sino que lo hace intentando estimar la probabilidad de que valga 1 (y, al mismo tiempo, la de que valga 0). La regresión logística es un clasificador probabilístico.
Para intentar calcular la probabilidad $P(y=1 | x;\theta)$ de que la clase sea 1, dada la instancia y con nuestros parámetros, empezaremos por calcular la combinación lineal de los parámetros
$$z= \theta_0 + x^T\theta$$Como $z$ no toma valores entre 0 y 1, lo pasaremos por una función sigmoide:
$$\sigma(z) = \frac{1}{1+e^{-z}}$$Y, con ello, obtendremos las probabilidades que buscamos:
$$ P(y=1) = \sigma(\theta_0 + x^T\theta) $$$$ P(y=0) = 1 - P(y=1) $$Para clasificar una instancia, simplemente agregamos una frontera de decisión:
\begin{equation} \hat{y}= \begin{cases} 1 & \text{if } P(y=1|x) > 0.5\\ 0 & \text{en otro caso} \end{cases} \end{equation}
$g(z)$ es conocida como la función logística o sigmoide, y luce así:
Comentarios:
puede verse como una función de probabilidad continua, ya que tiende a $0$ cuando $z$ tiende a $-\infty$, y tiende a $1$ cuando $z$ tiende a $+\infty$.
es diferenciable, con una derivada muy simpática: $\sigma'(x)=\sigma(x)(1-\sigma(x))$
tiene un punto de inflexión en 0.5
como tiene esas "mesetas" cuando se acerca a 0 o 1, tiende a llevar a los outliers a esos extremos
Podemos identificar cuatro componentes principales de un clasificador que utilice aprendizaje automático:
Supongamos que tenemos una tarea de aprendizaje supervisada donde, a partir de un vector $x^T = (x_1, x_2, \ldots, x_n)$ con $n$ atributos se busca construir una función (hipótesis) $h_{\theta}(x): \mathbb{R}^{n} \to \mathbb{R}$ que prediga la salida $y \in \mathbb{R}$, a partir de un conjunto de entrenamiento. El problema de aprendizaje para las redes neuronales consiste en aprender los parámetros $\theta$ a partir de un conjunto de entrenamiento $\{(x^{(i)},y^{(i)})\}$ que tiene $m$ elementos y donde cada $(x^{(i)},y^{(i)})$ es una instancia de entrenamiento.
Dado un vector de entrada $x^T = (x_1, x_2, \ldots, x_n)$, la red neuronal más simple que puede construirse está compuesta por una primera capa de neuronas con los atributos de entrada (a lo que llamaremos capa de entrada, y denotaremos también como $a^{(1)})$, y una segunda capa compuesta por una sola neurona (o unidad sigmoide), que calcula la combinación lineal de las entradas y le aplica la función sigmoide (llamada función de activación), para obtener una salida real. A partir de esta salida, podremos tomar una decisión (por ejemplo, para clasificar).
Una función de costo para redes neuronales que podemos utilizar es una generalización de la función de mínimos cuadrados, que utilizamos para la regresión lineal, pero sumando en todas las unidades de la capa de salida:
$$J(W,b) = - \frac{1}{2m} \sum_{i=1}^m \sum_{k=1}^{k=K} (y^{(i)} - a^{(L)}_k)^2 $$Estas función no es la única posible. De hecho, basta con suponer que la función de costo puede escribirse como un promedio de los costos de los ejemplos de entrenamiento, y que puede ser escrita como función de las salidas de la red.
Para aprender los pesos de las redes neuronales, aplicaremos exactamente el mismo procedimiento que utilizamos para la regresión: intentaremos minimizar la función de costo, utilizando descenso por gradiente. Para ello, necesitaremos calcular las derivadas parciales de $J$ respecto a cada uno de los pesos de la red. Esto es sencillo en el caso de las neuronas de salida, pero un poco más complejo en el caso de las unidades ocultas (porque no podemos calcular directamente el error cometido por la neurona). El algoritmo de backpropagation, precisamente, permite calcular de forma eficiente estas derivadas.
“Deep learning allows computational models that are composed of multiple processing layers to learn representations of data with multiple levels of abstraction.”
ML tradicional: clasificadores lineales sobre atributos hechos "a mano".
Problema más difíciles: reconocimiento de imágenes, sonido
Solución: stack de capas, varias de las cuales computan mapeos no lineales entre entradas y salidas
Una red neuronal feedforward con una única capa oculta y un número finito de neuronas puede aproximar cualquier función continua en un espacio compacto de $\mathbb{R}^n$
(Cybenko, 1989; Hornik 1991)
Difíciles de entrenar: inicialización, costo computacional
Solución: forzar invarianzas en la arquitectura, reduciendo el número de parámetros
¿Qué es una convolución?
Operación lineal entre una imagen y un filtro, que devuelve una nueva imagen
(Imagen tomada de Jurafsky & Martin)
Una RNN básica tiene
En cada paso, se ajusta el estado utilizando la matriz de pesos y la entrada
Algunos problems:
Algunas formas de evitarlos:
(Imagen tomada de Jurafsky & Martin)
(Imagen tomada de Jurafsky & Martin)
Gran parte del éxito de las aplicación de redes neuronales se debe a que todas las bibliotecas son de código abierto
Principales características: