Inteligencias en aplicaciones sensibles al contexto - Diab, José Carlos (2007)
El objetivo de esta tesis es introducir inteligencia en las aplicaciones sensibles a contexto. Este tipo de aplicaciones cambian su conducta dependiendo de la combinación de estímulos que recibe. Esta combinación de estímulos, proveniente de sensores, se denomina contexto. Por ejemplo, en una oficina puedo tener una serie de sensores que midan la intensidad de la luz, cuyos valores pueden ser: oscuro, normal, brillante y el ruido con valores posibles: silencio, moderado y ruidoso. Partiendo de la combinación de estos datos, se podría obtener el contexto “horario_no_laboral”, resultado de combinar intensidad de luz = oscuro y ruido = silencio. Una aplicación sensible a contexto podría estar programada para responder al contexto “horario_no_laboral”, bloqueando las puertas de la oficina, apagando luces, fotocopiadoras y demás aparatos que no deban usarse en este contexto. Para que la aplicación reaccione a determinado contexto se lo debe vincular a una acción determinada. Este enlace se establece en una base de conocimientos. Esta consiste en una serie de reglas del tipo Si contextoA y contextoB (ocurren simultáneamente) Entonces hacer Accion1. Por ejemplo, en una aplicación educativa se busca que el sistema brinde acceso a bibliografía específica, dependiendo de la hora y el aula desde donde se accede. En la base de conocimientos habrá una regla que exprese: Si usuario está en “Aula Matemática” y el horario es “Matutino” Entonces brindar acceso a “manuales de matemática nivel secundario”. Podría haber otra regla que exprese, Si usuario está en “Aula Matemática” y el horario es “Nocturno” Entonces brindar acceso a “manuales de matemática nivel terciario”. Generalmente, la base de conocimientos es creada y mantenida por un experto (humano) en el dominio de la aplicación. Cuando la dimensión de la base de conocimientos es elevada, resulta inmanejable para un ser humano. El problema se agrava cuando se debe corregir o agregar reglas para que el sistema se comporte de modo distinto. Por ejemplo, cuando se decide abrir el aula de matemáticas en horario “Vespertino” se debe agregar la regla: Si usuario está en “Aula Matemática” y el horario es “Vespertino” Entonces brindar acceso a “manuales de matemática nivel secundario”. Las correcciones y agregados de reglas es un proceso delicado, ya que si se introdujera inconsistencias, el sistema se comportaría de una manera indeseada. Por ejemplo: si se introduce la siguiente regla en la base de conocimientos: Si usuario está en “Aula Matemática” y el horario es “Matutino” Entonces brindar acceso a “manuales de matemática nivel terciario”. Esta regla estaría en conflicto con la regla que indica que a dicho contexto le corresponde la acción de brindar acceso a “manuales de matemática nivel secundario”. Otros problemas que enfrenta el diseñador de una base de conocimientos son: el tratamiento de los contextos de carácter continuo (por ejemplo el tiempo) y el manejo de la incertidumbre en la información proveniente de sensores. Los estímulos continuos deben “discretizarse” por algún método para acotar el número de combinaciones posibles. La solución que se describe en esta tesis ataca el problema de la discretización y la incertidumbre en los estímulos mediante la introducción de lógica difusa en el modelo. La construcción y el mantenimiento de la base de conocimientos se realizan automáticamente, de esta manera se minimiza la necesidad de intervención humana. Por ejemplo, si la mayoría de las veces que los alumnos entran al aula de matemática en horario matutino buscan “manuales de matemática nivel secundario”, el sistema “aprenderá” esta regla y la volcará en la base de conocimientos. De esta manera el sistema inferirá la necesidad de mostrar una lista de “manuales de matemática nivel secundario” la próxima vez que un alumno ingrese al aula de matemática en horario matutino. Una característica importante que debe tener el algoritmo de aprendizaje es la “transparencia”. Esto significa que el modelo de reglas construido debe ser comprendido por el usuario. El mecanismo de software está diseñado con tecnología de objetos, de esta manera permite la evolución independiente de sus partes. Por ejemplo, si en el futuro se decide cambiar el algoritmo de aprendizaje de reglas, las demás partes deberían seguir funcionando sin modificaciones.