Mostrando entradas con la etiqueta digital. Mostrar todas las entradas
Mostrando entradas con la etiqueta digital. Mostrar todas las entradas

miércoles, 15 de octubre de 2014

ML VIII: Modelos Ocultos de Markov.

Modelos Ocultos de Markov

Un proceso global puede representarse usando redes bayesianas como:
Incorporando los supuestos de Markov:
También podemos describir el proceso general mediante una cadena de Markov de variables latentes:
 Incorpora los supuestos de Markov:
Se aprecia que usando las cadenas de Markov tan solo tenemos las variables x, que son los estados ocultos, y las variables z, que son observables. (Saber más...)
Para comprender el por qué son útiles los Modelos Oculto de Markov o HMM (siglas en inglés, que en español queda MOM y tomando el significado en inglés de esta palabra no queda ninguna duda de su utilidad :-D) veamos el siguiente gráfico.  
Imaginad que cada cuadrado de color es una caja con caramelos de distintos sabores, en el tiempo n-2 podemos sacar un caramelo de cualquiera de las cajas. Claro, cada caja tiene cierta probabilidad de que obtengamos un sabor específico. Solo sabremos el sabor una vez que el caramelo sale de la caja.
Luego en el tiempo n-1 nos movemos a obtener el caramelo de otra caja o incluso de la misma caja. El movernos hacia determinada caja o quedarnos con la misma caja también tiene una probabilidad asociada, y al final no se conoce de que caja se saco el caramelo sino solo el sabor del caramelo.

Surgen entonces varias alternativas de incógnitas, mas los problemas básicos que se tratan de resolver son:
1. Calcular eficientemente la probabilidad P(Z/L) de la secuencia de observación Z (Ejemplo de Z: coco, piña, fresa) dado el modelo L y la secuencia de observación Z requerida. Donde el modelo L contiene tanto la matriz A de probabilidades de transición de una caja a otra, la probabilidades de obtener un sabor en cada caja y las probabilidades de estado inicial p  (Pues si nos comemos los caramelos y no los devolvemos a la cajas las probabilidades B cambiaran pero basándose en estas de estado inicial).
2. Encontrar la trayectoria mas probable X (las cajas de cada momento) dado L y la secuencia Z.
3. Ajustar los párametros A,B,p apara máximizar P(Z/L).

Además, con el propósito de resolver estos problemas existen asi mismo 3 operaciones a realizar en los HMM.
1. Calcular P(Z/L) dado un L conocido. Mediante el algoritmo de Forward-Backward
2. Calcular la secuencia óptima de estados X, con un L conocido. Se usa el algoritmo de Viterbi.
3. Aprender o encontrar el modelo L para un Z dado. Se emplea expectación-maximización o Baum-Welch.

Como se puede presumir todos los algoritmos mencionados anteriormente son ampliamente usados en inteligencia artificial. Pues son estos tres problemas básico y sus soluciones lo que nos permite predecir los estados para cualquier proceso de datos secuenciales.
Si cuantizamos (cuantificamos) el tiempo y los datos logramos dicha secuencialidad, y resulta que todo lo digital tiene justamente el tiempo y los datos ya cuantizados o cuantificados. En otras palabras si algo se puede digitalizar, es posible también usar inteligencia artificial, basada en todo lo que hemos visto hasta ahora, en ese algo específico.

Por último solo recordaremos que audio, video y texto han sido digitalizados desde antes que nacieras (si tienes menos de 20 años, claro). El tacto, ambiente (clima) y la orientación se han demorado un poco más pero ya poseen su formato digital también. El olfato y gusto tienen investigaciones en curso y tan solo faltaría lo emocional (que en buena parte esta en el texto y vídeo) para poder aplicar inteligencia artificial en casi todo ámbito humano.

sábado, 13 de septiembre de 2014

ML VI: Procesamiento de Imágenes I

Imagen Digital.
Una imagen representada digitalmente es una matriz de tres dimensiones: ancho, alto y color. Si el color es solo uno, como en una imagen en escala de grises, es una matriz de solo dos dimensiones.
Como las imágenes solos se ven en las dos dimensiones, son estas las que más importan y a cada pedacito se le llama píxel, el cual nos da la información de cuanto color hay en ese espacio.

Filtro de Imágenes.
Una de las herramientas usadas para procesar las imágenes es reemplazar en cada píxel una contribución ponderada de si mismo y de sus vecinos, los coeficientes de esta ponderación se representan en una matriz por lo general de 3 por 3 elementos, el central es el pixel al que se le rremplazara su valor, esto se hace recorriendo la imagen y realizando dicho proceso en cada píxel.
Matriz de Ponderación
Así por ejemplo a partir de esta imagen:

Aplicando el filtro de la imagen anterior se tiene:
Lo cual resalta las texturas de la imagen.
Así mismo aplicando el filtro con distintos coeficientes se tiene:

Aclarecer:


 Detección de bordes horizontal:

Detección de bordes vertical:


Fitro de media o promedio:


 Oscurecer:

 Por último el programa de Scilab con el cual se obtuvieron las imágenes de este post.

//variables iniiciales
dirimagen="";

//Crear ventana
ventana = createWindow();
//evitar warnings, si no se ejecuta correctamente comentar esta linea
funcprot(0);
//setlookandfeel("it.unitn.ing.swing.plaf.macos.MacOSLookAndFeel");

//funcion del boton "Abrir"
function SeleccionarImagen (botonSeleccionar,txtDirectorio)
    dirimagen=uigetfile(["*.png*";"*.jpg";"*.bmp"]);
    imagen=imread(dirimagen);
    txtDirectorio.String=dirimagen;
    imshow(imagen)
endfunction

//funcion del boton "Filtrar"
function Filtrar (botonFiltrar)
    h1=eval(txt1.String)
    h2=eval(txt2.String)
    h3=eval(txt3.String)
    h4=eval(txt4.String)
    h5=eval(txt5.String)
    h6=eval(txt6.String)
    h7=eval(txt7.String)
    h8=eval(txt8.String)
    h9=eval(txt9.String)
    //vuelve a cargar el archivo para quitar cambios
    dirimagen=txtDirectorio.String;
    imagen=imread(dirimagen);
    //Crear el filtro de 3x3
    filtro=[h1 h2 h3; h4 h5 h6; h7 h8 h9]
    //aplicar el filtro a la imagen
    imf = imfilter(imagen, filtro);
    imshow(imf);
endfunction

//Tamaño de la ventana
ventana.axes_size = [600 300];

//Otras propiedades//////////////////
//ventana.dockable="on";
//ventana.menubar_visible = "on"
//ventana.default_axes = "off"
//ventana.infobar_visible = "off"
ventana.toolbar_visible = "on";
ventana.figure_name="Filtros Imagenes"

//Caja de texto para la direccion(path) de la imagen
txtDirectorio=uicontrol(ventana, "style", "edit", "units", "normalized", "position", [0.0 0.9 0.7 0.1], "string", "lena512.bmp", "horizontalalignment", "center");

//Cajas de texto para los coeficientes del filtro
txt1=uicontrol(ventana, "style", "edit", "units", "normalized", "position", [0.2 0.6 0.1 0.1], "string", "1", "horizontalalignment", "center");
txt2=uicontrol(ventana, "style", "edit", "units", "normalized", "position", [0.3 0.6 0.1 0.1], "string", "2", "horizontalalignment", "center");
txt3=uicontrol(ventana, "style", "edit", "units", "normalized", "position", [0.4 0.6 0.1 0.1], "string", "1", "horizontalalignment", "center");
txt4=uicontrol(ventana, "style", "edit", "units", "normalized", "position", [0.2 0.5 0.1 0.1], "string", "0", "horizontalalignment", "center");
txt5=uicontrol(ventana, "style", "edit", "units", "normalized", "position", [0.3 0.5 0.1 0.1], "string", "0", "horizontalalignment", "center");
txt6=uicontrol(ventana, "style", "edit", "units", "normalized", "position", [0.4 0.5 0.1 0.1], "string", "0", "horizontalalignment", "center");
txt7=uicontrol(ventana, "style", "edit", "units", "normalized", "position", [0.2 0.4 0.1 0.1], "string", "-1", "horizontalalignment", "center");
txt8=uicontrol(ventana, "style", "edit", "units", "normalized", "position", [0.3 0.4 0.1 0.1], "string", "-2", "horizontalalignment", "center");
txt9=uicontrol(ventana, "style", "edit", "units", "normalized", "position", [0.4 0.4 0.1 0.1], "string", "-1", "horizontalalignment", "center");

//Boton Seleccionar
botonSeleccionar=uicontrol(ventana, "style", "pushbutton", "units", "normalized", "position", [0.7 0.9 0.3 0.1], "string","Seleccionar Imagen", "horizontalalignment", "center", "callback", "SeleccionarImagen(botonSeleccionar,txtDirectorio)");

//Boton Filtrar
botonFiltrar=uicontrol(ventana, "style", "pushbutton", "units", "normalized", "position", [0.6 0.4 0.3 0.3], "string","Filtrar Imagen", "horizontalalignment", "center", "callback", "Filtrar(botonFiltrar)");


Como punto extra vale mencionar que se usa el modulo ATOM SIVP, que se puede instalar desde el menú Aplicaciones.
Además se creo una interfaz gráfica, con lo cual es más fácil interactuar con el programa.



Para probar el programa pueden copiar el código anterior o descargar el script.
El enlace para descargar este programa "filtro_imagens.sci" y otros de artículos anteriores es el siguiente:


Si quieren conocer más sobre el procesamiento de imagenes y acorde con los que nos interesa les recomiendo el libro Visión por Computador  de José Francisco Vélez Serrano y otros autores.
También estas diapositivas, que son un resumen del mismo libro. 

domingo, 6 de octubre de 2013

Modelos Matemáticos IV

Modelos Matemáticos Modernos.

Un punto, una palabra común y a la que le asignamos pronto una definición gráfica. Y tiene un uso definido en gramática.

En matemática y geometría es un concepto básico, más no muy claro para usarlo en un modelo matemático. Por ejemplo $\pi$ es un punto distinto de 3,14159265359 y todos los decimales más que puedan agregarse.
No son $\pi$, en el sentido más estricto, si cambia tan solo uno de esos números, pues los puntos en una recta numérica son infinitos.


Otro concepto básico es el de línea que se define como la sucesión continua de puntos. En el ejemplo anterior en realidad se hablaba de que $\pi$ es distinto en la línea recta numérica a cualquier otro punto pues para identificar a un punto se necesita de un sistema de referencia cuyo origen sea 0.
Recta Numérica en la cual se ha señalado a $\pi$
En el mundo real este sistema de referencia es de tres dimensiones, cuyo origen se puede representar como  un arreglo = (0,0,0).
 Se puede incluir al tiempo en un sistema cuyo origen es (0,0,0,0). Por ejemplo el punto (2,1,3,6) toma un significado de un punto que se encuentra a 2 unidades de medida del origen por lo largo, a 1 unidad de distancia por lo ancho, a 3 de distancia por lo alto y a 6 unidades de medida de tiempo desde el inicio por decirlo de alguna manera.
Ejemplo de como se representa un punto en 4 dimensiones, solo interesa el instante en el que se ha definido la posición.
La unidad de medida es una convención para que representen lo mismo un metro o un segundo en cualquier lugar del mundo. Teóricamente se puede expresar cualquier porción o fracción pequeñísima de la unidad, es decir se puede hablar de 0,000001 segundos (tiempos en los que se mide por ejemplo la realización de una operación en una computadora) e incluso cantidades más pequeñas con muchos más ceros adelante. Sin embargo Planck demostró que por debajo de ciertas cantidades muy pequeñas el mundo debe funcionar muy distinto, iniciando así la teoría cuántica.

Por tanto en un modelo matemático que utilice los puntos y la definición normal de línea, llamado modelo analógico, al final se debe poder llegar a un modelo discreto, en donde las mediciones ya no se pueden hacer con una cantidad infinita de decimales de cierta unidad de medida, sino solo a saltos de múltiplos de las cantidades cuánticas. Tal vez un ejemplo sencillo es que un modelo de población no se puede hablar de 2,4 individuos, tan solo se puede hablar de individuos completos, la cantidad cuántica en modelos de población. Sin embargo cuando se habla de poblaciones muy grandes ya se puede decir 2,4 miles de individuos, lo mismo pasa con la mayoría de modelos matemáticos para otras variables físicas, dado que la cantidades cuánticas son muy pequeñas en relación a lo que nuestros sentidos pueden captar.
En esto también se basa la digitalización, pues usando muchos valores discretos escuchamos una canción guardada en un computador como si estuviéramos en frente del artista, y así una innumerable cantidad de acciones que realizamos cotidianamente.
Una canción en 8bit (formada con máximo 256 sonidos, incluido el silencio) 

 La canción tomada de un vídeo análogo y pasado a digital para subirlo a Youtube.

Dada la enorme cantidad de datos también es necesario tratarlos con otra rama de la matemática, la probabilidad, pues sabemos que estamos compuestos de células pero es poco práctico realizar mediciones a cada una de ellas, por lo que se realiza experimentos a un grupo y se espera que las demás se comporten de la misma manera. O se utiliza a las de un individuo y se espera que se obtengan resultados similares en las células de otro individuo. La medicina ocupa mucho de esto, pues no es posible probar un nuevo medicamento en toda la población para asegurar su efectividad pero es posible considerar un porcentaje de población a la cual no surtirá efecto o un porcentaje en el cual se generarán efectos no deseados.
Sobre probabilidad se discutirá más en el siguiente artículo.  

Si una vacuna sirve, se espera que elimine a la totalidad de virus presentes.
Otra "dificultad" que tienen los modelos matemáticos, por lo menos en física, es que no toman en cuenta que deben ser válidos en cualquier sistema de referencia, es decir en "donde" y "cuando" queramos poner el origen, ya que los sistemas validos en cualquier sistema de referencia no hacen mucha diferencia entre una dimensión de distancia o tiempo, tal cual como nosotros percibimos, como lo demostró Einstein en su teoría de relatividad.
Algo a lo que no estamos acostumbrados a pesar de que ya se han adaptado la mayoría de modelos matemáticos y físicos a esta condición.

El GPS te indica donde te ubicas,lo cual seria imposible si no funcionaria independientemente de donde te ubiques y de que momento necesitas saberlo. 

Otra condición que en cambio es común saberla pero no se expresa en todos los modelos es la de incertidumbre, y no me refiero solo al principio postulado por Heisenberg sino también a la mas perceptibles como que no podemos responder la hora exacta a una persona que nos la pregunta, para cuando terminemos de hablarle habrán pasado algunos segundos, o que sin herramientas precisas no se puede tomar medidas precisas. Y en cuanto al de Heisenberg tiene mucho que ver con que no se puede medir con precisión simultáneamente pares de variables físicas. Esto último también tiene que ver con que no se puede conseguir lo máximo de algo sin el costo de obtener lo mínimo de otra cosa, no es posible obtener lo máximo de ambas y trata de obtener lo mínimo de ambas es muy difícil.

Por tanto los modelos matemáticos establecidos (aquellas ecuaciones que estudias en el colegio o universidad) se ajustan a la experimentación, por ende a la realidad. Pero por experimentación mismo se ha llegado a ver la necesidad de incluir la teoría cuántica y de la relatividad para explicar ciertos fenómenos que aquellas ecuaciones no predicen o satisfacen adecuadamente.

Los modelos matemáticos se vuelven más complejos y es menos común conocer de aquellos fenómenos hasta que se realizan experimentos o hasta que su utilidad y aplicabilidad se vuelve cotidiana. Por ejemplo todos sabían que el sol es una fuente de energía hace unos siglos, pero  solo hemos optimizado su uso desde el siglo pasado, pues la verdad antes no sabíamos como hacerlo.

Además aunque el modelo matemático es más complejo, la idea que antecede el desarrollo de nuevos modelos es mucho más simple y general, y al igual que si de un  modelos de  un atuendo de vestir se tratara, se vuelve más elegantes.
¿Acaso se puede simplificar más la relación entre energía y masa?

Y de eso trata hacer modelos matemáticos, acercarse cada vez más al funcionamiento de la naturaleza en un lenguaje que podemos entender y sacar provecho de aquel entendimiento. Si bien puede volverse más difícil entender matemáticamente como logramos ver un objeto. (Desde que la luz del Sol se emite, se refleja en el objeto, llega a nuestros ojos, y la función que cumplen nuestros ojos y la que cumple nuestro cerebro en convertir esa luz en información), sin ese conocimiento fuera imposible ayudar a ver mejor a los que lo necesita o de plano dar vista a quien no tiene.

Mejorar los modelos matemáticos se vuelve un objetivo de la ciencia y aplicar los que ya se conocen, aunque quizás jamás lleguen a ser ideales, es indispensable para el progreso
Además un modelo matemático no necesariamente es el último en su campo de estudio, pues las ideas en que se basa son humanas y los humanos cometemos errores.
 Es aquí donde entra el método científico con el fin de depurar las ideas y mejorar los modelos matemáticos, y la matemática mismo puede cambiar con el fin de acercarnos más al  entendimiento del funcionamiento del universo y de cada una de las partes que lo componen.

Documental Recomendado:
Qué es un grado?