Hola a todos.
En este vídeo vamos a ver una serie de conceptos complementarios
en el contexto del aprendizaje automático de modelos mediante regresión logística.
Aunque en realidad algunos de estos conceptos son generales en el campo de el
aprendizaje.
Bien, partimos de un descriptor x que tiene una serie de componentes,
esas componentes en el campo del aprendizaje automático se conocen
como características, en inglés features, y lo que hacemos es
en el espacio del descriptor buscar
fronteras lineales que separan los ejemplos que nos interesan del resto,
por ejemplo ventanas que contienen peatones de ventanas que contienen fondo.
Estas fronteras lineales las hemos expresado mediante esta ecuación,
donde tenemos a la izquierda de la ecuación el producto escalar de un modelo
que hemos de aprender, del descriptor y esto queda igualado a cero.
Bien, en realidad para usar esta notación compacta hemos de añadir
en la primera componente del descriptor un uno.
Lo que nos interesa ver es que en realidad mediante este formalismo también podemos
expresar fronteras no lineales.
Vamos a usar un ejemplo que es este que tenemos aquí.
Vemos también que es en dos dimensiones y ahora lo que queremos es
ajustar como frontera una circunferencia,
Esta circunferencia tiene un centro cx1, cx2 y un radio r.
Por tanto, su ecuación es esta de aquí donde
podemos pasar el radio al cuadrado al otro lado de la ecuación con un signo menos,
esto nos queda igualado a cero.
Por tanto lo que queremos en realidad es que esta ecuación de aquí y esta
sean exactamente iguales y eso lo podemos conseguir con los valores
adecuados del modelo y del descriptor.
Los valores del modelo los tendremos que aprender,
pero el descriptor lo diseñamos nosotros.
Entonces lo que hacemos es que las primeras tres componentes coinciden
exactamente con el modelo lineal, pero añadimos una serie de términos que son
estos que están aquí, que son x1 al cuadrado, x2 al cuadrado,
x1 por x2, que son los que tienen que tener en cuenta el hecho de
que si expandimos estos cuadrados que hay en la ecuación de la circunferencia,
pues estos componentes nos van a aparecer.
Así pues, lo que tenemos que hacer ahora es aprender un modelo que haga,
que al hacer este producto escalar esta ecuación y esta sean iguales.
Y para eso pues necesitaremos una serie de ejemplos que estén bien distribuidos
en nuestro espacio del descriptor y si tenemos suerte,
pues obtendremos un modelo muy bueno.
En realidad el modelo óptimo que buscamos es este de
aquí con estos valores concretos de los componentes.
Que si lo queréis comprobar veréis que haciendo el producto
escalar de este modelo y este descriptor,
esta ecuación y esta son la misma.
Bien, aquí el problema es que si en el espacio lineal digamos teníamos n
componentes, aquí por ejemplo dos,
pues en el espacio de este estilo donde hemos hecho la multiplicación
de todos los componentes por todos los componentes vamos a pasar
a tener n cuadrado menos n partido por dos.
Y por tanto, perdón, n cuadrado n más n partido por dos,
y por tanto para un caso como por ejemplo n igual a 1000,
pues este descriptor nuevo que tendríamos,
el número de componentes que va a pasar a tener es del orden del 500.000.
Porque aquí n al cuadrado sería 1.000.000 más 1.000 que lo podemos obviar,
pues 1.000.000 dividido entre dos, pues es en el orden de 500.000.
Y esto no es muy raro en visión por computador, pensar que las ventanas
basadas en un descriptor LBP uniforme y con bloques,
pues quedan incluso tenían una n de incluso de aproximadamente
6.000, lo cual you veis que esto no es, estos números,
este número de componentes en el vector de características,
en el descriptor no es algo extraño en el campo de visión por computador.
Otro de los conceptos que nos interesa introducir en este vídeo
es el conocido como sobreajuste o en inglés overfitting.
Cuando queremos aprender un modelo a partir de un conjunto de muestras,
sucede que esas muestras tienen ruido o que el conjunto puede ser incompleto.
Además que el propio modelo es una aproximación porque no sabemos realmente
qué forma tiene la frontera que separan los objetos que nos interesan del resto.
Eso hace que aunque se consiga un clasificador sin error en la
clasificación de las muestras de entrenamiento,
no se pueda garantizar la correcta clasificación de muestras nuevas, es decir
no se puede garantizar la capacidad de generalización del clasificador.
Por ejemplo, en este caso de aquí podemos aprender un modelo que nos
generase esta frontera y efectivamente todos los ejemplos,
todas las muestras de entrenamiento están clasificadas correctamente,
pero da la sensación de que este clasificador es excesivamente complejo.
Por ejemplo, podría ser que este ejemplo de aquí,
este de aquí y quizás este de aquí en realidad sean correctos.
Y en realidad da más la sensación de que la frontera que separa los objetos de
interés del resto tiene este aspecto que dibujo aquí.
Este problema es el que se conoce como sobreajuste, es decir nuestra
frontera se ha ajustado excesivamente a los datos que tenemos de entrenamiento.
Y este problema tiende a manifestarse especialmente cuando el número de
parámetros del modelo es muy alto respecto al número de muestras de entrenamiento.
Es decir, si por ejemplo como normalmente decimos que este modelo tiene n más un
componentes y el conjunto de entrenamiento tiene m muestras, pues el sobreajuste se
da especialmente cuando sucede que este número es mucho mayor que este de aquí.
Y claro, este, esta dimensión, la dimensión del modelo está
directamente relacionada con la dimensión del descriptor.
Por eso antes, en la transparencia anterior cuando hablábamos de descriptores
del orden de 500.000 de componentes pues, nos preocupaba un poco en
el sentido de que vamos a tener que tener en cuenta este problema del sobreajuste.
¿Y cómo tenemos en cuenta ese problema?
¿Cómo lo podemos arreglar?
Bueno, no hay una fórmula, no hay una manera mágica de hacerlo digamos,
pero si una serie de recetas.
Por ejemplo, una manera evidentemente es aumentar el número de muestras
de entrenamiento, es decir subir ese número.
Ahora bien,
esto no es siempre posible porque estas muestras como veremos más adelante
muchas veces cuestan dinero de adquirir y otras veces simplemente no es posible.
Por tanto, otra posibilidad es bajar esta dimensionalidad,
que la dimensión del modelo, dicho de otra manera, la dimensión del descriptor,
y esto es lo que se conoce como selección de características que hay varios tipos.
Por ejemplo, una manera de hacerlo que no la vamos a ver en este curso es utilizar
algoritmos que trabajan directamente en el espacio de esas características,
independientemente de qué clasificador vamos a utilizar después
para esas características.
Por ejemplo, el algoritmo conocido como análisis de componentes principales
o en inglés PCA es un tipo de algoritmo que no tiene en cuenta el clasificador
que vendrá después sino que intenta reducir el número de características en sí
mismo buscando las que son de más relevancia según un cierto criterio.
Otros métodos sí que tienen en cuenta el proceso de selección de características
durante el procedimiento que aprende el modelo o el clasificador que buscamos.
Uno de esos ejemplos es el conocido como Adaboost,
que si que lo vamos a ver en este curso.
Otra opción es la selección de modelo,
es decir empezar por ejemplo con modelos simples e ir probando modelos
cada vez más complejos y ver cuál de ellos es el que mejor resultado nos da,
y esto lo podemos hacer mediante la ayuda del procedimiento que se conoce como
cross-validation en inglés o validación cruzada en castellano.
Y finalmente lo que nos interesa en es este vídeo
es el algoritmo de regularización del modelo.
Bien, cuando hablamos de regularizar un modelo, en realidad nos referimos a que
durante el proceso de aprendizaje de ese modelo introducimos un término
en la función de coste para favorecer unos valores respecto a otros del modelo.
Por ejemplo, en el caso de la regresión logística, esta es nuestra nueva función
de coste que consiste en la función que you teníamos más un término que es nuevo.
Y este término básicamente lo que nos interesa es esta parte de aquí donde se
ve que se suma desde y igual a uno hasta n en los componentes al cuadrado del modelo.
Por tanto, como esto se ha de minimizar,
lo que hacemos con la introducción de este término en la función de coste,
es exigir que los componentes del modelo no sean valores grandes.
Y lo que esperamos es que con esa restricción todos los,
todas las componentes de los descriptores, tengan más o menos una relevancia similar.
Bien.
Aquí tenemos otro parámetro, que es esta landa, y lo que hace es establecer el
compromiso entre la función de coste que you teníamos antes, y este nuevo término.
La función de coste que teníamos antes recordemos que básicamente lo que
mide es el error que tenemos, al clasificar las muestras de
entrenamiento con el modelo que estamos considerando en cada momento.
Así pues, esta nueva función la podemos también introducir de forma
sencilla en el algoritmo de descenso del gradiente, que es este que tenemos aquí.
Recordemos que el gradiente de la función de coste se basa en las derivadas
parciales respecto de los componentes del modelo.
Por tanto, lo que, como aquí tenemos una suma, la derivada parcial de
cualquier componente del modelo en realidad es la que you teníamos antes,
más la derivada parcial respecto esta nueva componente de la función de coste.
Por tanto, podemos mirar en qué consiste esa derivada,
respecto a una cierta componente, y vemos que es este valor de aquí.
Donde este dos se va con este dos,
y por tanto nos queda landa, la componente del modelo sub i,
si derivamos respecto a esa componente, dividida por m.
Esta m en realidad la ponemos para que cuando introduzcamos este valor en
el algoritmo de descenso del gradiente podamos sacar este m factor común aquí,
y podamos poner este término aquí dentro, tal como aparece en esta expresión.
Por tanto es muy fácil añadir esta nueva restricción,
digamos, al algoritmo del descenso del gradiente.
Aquí simplemente comentar que fijaros que empezamos en el en la componente uno,
y también aquí queda excluida en el algoritmo del descenso del gradiente
la componente cero, porque en realidad,
recordemos que los modelos tienen este aspecto,
y los descriptores este otro.
Y por tanto la primera componente en
realidad no hace falta regularizarla porque no está
multiplicando a un descriptor real de las ventanas que queremos describir,
sino simplemente está multiplicando al, al número uno para poder utilizar
esta anotación compacta que hemos ido utilizando a lo largo de todas las tramas,
todos los vídeos y todas las transparencias.
En realidad, esto es el conocido como, en inglés,
bias o aquí podemos llamarle desplazamiento, porque por ejemplo,
si estuviéramos en un caso de un descriptor de dos dimensiones y una
recta como frontera, en realidad este número de aquí lo que
establece es en qué punto cortamos los ejes.
Y el resto de valores establecen la pendiente de la recta.
Es decir,
que podríamos tener varias rectas paralelas si solo dependiese de estos
componentes pero porque éste es el que nos acaba fijando cuál de ellas cogemos.
El siguiente concepto que nos interesa introducir en este vídeo es el de
la regresión logística desde el punto de vista de la probabilidad.
Habíamos definido la probabilidad condicional de que una ventana contenga un
objeto que nos interesa,
dado el descriptor de esa ventana y fijado un modelo,
como la función logística del producto escalar del modelo y el descriptor.
La probabilidad condicional de que no lo contenga,
dado el mismo descriptor y modelo, es simplemente la complementaria.
En este contexto de probabilidad podemos utilizar un algoritmo de
tipo máxima verosimilitud, o en inglés maximum likelihood,
para realmente aprender el modelo.
En particular, como las probabilidades son condicionales, hablaremos de máxima
verosimilitud condicional o maximum conditional likelihood en inglés.
Así, el modelo que buscamos es aquél que maximice la verosimilitud de que el
conjunto de muestras que tenemos para entrenar realmente fue generado a partir
de esa probabilidad condicional.
Y eso se reduce a resolver este problema que tenemos aquí,
donde hemos definido la verosimilitud para un cierto modelo como el
producto desde j igual a uno hasta m, de las probabilidades condicionales de
cada una de las muestras individuales que tenemos en el conjunto de entrenamiento.
Y esto lo podemos definir así porque suponiendo que son muestras iid, es decir,
que son independientes e idénticamente distribuidas.
Así, para obtener nuestro modelo,
lo que tenemos que hacer es maximizar esa función de verosimilitud.
Aquí tenemos la función que acabamos de definir de verosimilitud,
como queremos maximizarla, en realidad podemos tomar el logaritmo neperiano de
esa función, porque eso no va a cambiar el modelo que la maximiza.
Si expandimos esta expresión,
veremos que consiste ahora en un sumatorio de los logaritmos
neperianos de las probabilidades condicionales de las muestras.
Si además cogemos esta expresión y le ponemos un signo negativo delante,
la podemos interpretar como una función de coste, y por tanto,
en vez de maximizarla lo que tenemos que hacer es minimizar.
Si además expandimos en el interior de los sumatorios obtendremos esta expresión,
y así vemos que toda esta expresión consiste en realidad en la
función de coste que you habíamos utilizado cuando habíamos definido
la regresión logística excepto por un factor uno partido por n que había aquí.
Y por tanto hemos llegado a la misma conclusión pero desde el punto de vista
del algoritmo de máxima verosimilitud condicional.
En este contexto también podemos considerar la
regularización del modelo durante el proceso de aprendizaje del mismo.
Aquí tenemos la función de verosimilitud que hemos visto anteriormente y
ahora podemos añadir un término, que en este caso, como estamos maximizando la
función de verosimilitud en lugar de sumar está restando.
Este término realmente se parece mucho a lo que you habíamos visto hasta ahora.
Aquí fijémonos que tenemos el módulo al cuadrado del modelo y por tanto eso
consiste en el sumatorio de esos componentes al cuadrado,
que sería igual a cero hasta n, ¿no?
Aunque en realidad podemos empezar en uno para que sea un término como el que hemos
visto anteriormente.
Tampoco tenemos aquí la m,
pero eso es porque como hemos visto en la transparencia anterior,
en la función de coste que finalmente resultará tampoco hay este término.
Pero bueno, estos son detalles y lo que es interesante es ver que si
queremos estimar el modelo desde el punto de vista de un máximo a posteriori,
pues la expresión que hemos de optimizar tiene este aspecto,
donde esta parte de aquí es esta.
Y aquí es interesante analizar este logaritmo neperiano la probabilidad del
modelo.
Resulta que si la probabilidad del modelo es una gaussiana centrada en cero con
varianza proporcional a uno partido por landa,
entonces ese logaritmo neperiano de la probabilidad del modelo es
proporcional a landa multiplicado por el módulo al cuadrado del modelo.
O dicho de otra manera, la versión regularizada que
tenemos aquí es tipo máximo a posteriori.
Finalmente queremos introducir
el concepto de clasificación multiclase, para un número de clases K mayúscula.
Por ejemplo, podemos tener tres clases, como pueden ser persona, moto y ciclista.
En este caso lo que queremos es, dado una ventana de una imagen,
determinar si esa ventana contiene una persona, una moto o un ciclista.
Para ello podemos utilizar el método que se conoce como uno
contra todos o en inglés one versus all.
En este método lo que se propone es que cojamos nuestro algoritmo de aprendizaje
básico, que en este caso es la regresión logística pero podría ser cualquier otro,
y lo utilicemos tantas veces como clases queramos considerar.
Y esto lo hagamos para cada clase por separado.
Es decir, vamos a aprender el modelo que corresponde a cada una
de las clases por separado.
Imaginemos que queremos aprender el modelo que corresponde a la clase persona.
En ese caso tomaríamos como ejemplos positivos las personas y como
ejemplos negativos el resto.
De ahí el nombre de one versus all.
En este caso el resto son las motos y las bicis.
Para la segunda clase haríamos algo análogo, cogeríamos como ejemplos
positivos las motos y como negativos las bicis y las personas en este caso.
Y así sucesivamente.
Por tanto, en cada uno de estos casos aprenderíamos el modelo que
corresponde a la frontera que separa la clase de interés del resto.
Durante la, el proceso de clasificación de ventanas nuevas,
pues nos llegaría una ventana y lo que haríamos es calcular, si este es,
el x es el descriptor de esa ventana pues calcularíamos el valor de la función
logística para la primera clase, el valor de la función logística
para el modelo correspondiente a la segunda clase y así sucesivamente.
Entonces lo que haríamos es examinar estos valores y uno de ellos sería el mayor.
Si la clase para cual, para la cual la función
logística tiene un valor mayor es la clase segunda, por ejemplo,
pues clasificaríamos esta ventana, como, en este ejemplo concreto, moto.
Si la que devolviese un valor mayor fuese la,
el, la función logística correspondiente al primer modelo,
pues clasificaríamos la ventana no como moto, sino como persona.
Y así sucesivamente.
En el caso de la regresión logística tenemos otra posibilidad y es
utilizar lo que se conoce como regresión logística multinómica,
o en inglés multinomial logit.
En este caso, la mayor diferencia con el anterior es que todos
los modelos se aprenden simultáneamente.
Es decir, bajo la misma ejecución de el
concepto de regresión logística y por tanto, en este caso,
sí que tenemos realmente una verdadera probabilidad condicional.
Las fórmulas para hacer eso están aquí,
pero bueno, no vamos a entrar y, en realidad,
basta con decir que se corresponden a la generalización del caso K igual a uno,
que es la función, es la regresión logística que hemos visto hasta ahora.
Si este método es mejor que el anterior o no es difícil de decir en general.
Hay casos documentados en que el one versus all o uno contra
todos funciona mejor que la regresión logística multinómica,
y casos en los que sucede justamente lo contrario.
Seguramente esto quiere decir que depende del problema y de los datos que
tengamos para entrenar pues puede pasar una cosa o la otra.
En resumen los conceptos que hemos visto en este vídeo son las fronteras
no lineales bajo el mismo formalismo en el que hemos trabajado las lineales.
También hemos visto el problema del sobreajuste,
que no es específico de regresión logística,
sino que es algo que sucede en aprendizaje automático en general.
Sin embargo, para el caso de la regresión logística hemos visto un método de
regularización que pretende paliar ese problema de sobreajuste.
Además hemos formulado la regresión logística desde el punto de vista de la
probabilidad vía un máximo,
una máxima verosimilitud o un maximum likelihood en inglés, y también
cuando introducimos la regularización como un máximo a posteriori.
Y finalmente hemos formulado el problema de clasificación multiclase y hemos
visto un método general que es el uno contra todos y un método específico para
la regresión logística que es la regresión logística multinómica.