Que es la lógica Difusa. La Lógica Difusa ha sido probada para ser particularmente útil en sistemas expertos y otras aplicaciones de inteligencia artificial. Es también utilizada en algunos correctores de voz para sugerir una lista de probables palabras a reemplazar en una mal dicha. La Lógica Difusa, que hoy en día se encuentra en constante evolución, nació en los años 60 como la lógica del razonamiento aproximado, y en ese sentido podía considerarse una extensión de la Lógica Multivariada. La Lógica Difusa actualmente está relacionada y fundamentada en la teoría de los Conjuntos Difusos. Según esta teoría, el grado de pertenencia de un elemento a un conjunto va a venir determinado por una función de pertenencia, que puede tomar todos los valores reales comprendidos en el intervalo [0,1]. La representación de la función de pertenencia de un elemento a un Conjunto Difuso se representa según la figura.
Sistemas Expertos
Un tipo de lógica que reconoce más que simples valores verdaderos y falsos. Con lógica difusa, las proposiciones pueden ser representadas con grados de veracidad o falsedad. Por ejemplo, la sentencia "hoy es un día soleado", puede ser 100% verdad si no hay nubes, 80% verdad si hay pocas nubes, 50% verdad si existe neblina y 0% si llueve todo el día.
Ejemplo de una función de pertenencia a un Conjunto Difuso. La Lógica Difusa (llamada también Lógica Borrosa por otros autores) o Fuzzy Lógica es básicamente una lógica con múltiples valores, que permite definir valores en las áreas oscuras entre las evaluaciones convencionales de la lógica precisa: Si / No, Cierto / Falso, Blanco / Negro, etc. Se considera un súper conjunto de la Lógica Booleana. Con la Lógica Difusa, las proposiciones pueden ser representadas con grados de certeza o falsedad. La lógica tradicional de las computadoras opera con ecuaciones muy precisas y dos respuestas: Si o no, uno o cero. Ahora, para aplicaciones de computadores muy mal definido o sistemas vagos se emplea la Lógica Difusa.
1
Que son los conjuntos Predicados Vagos y Conjuntos Difusos.
Sistemas Expertos
Los conjuntos clásicos se definen mediante un predicado que da lugar a una clara división del Universo de Discurso X en los valores "Verdadero" y "Falso". Sin embargo, el razonamiento humano utiliza frecuentemente predicados que no se pueden reducir a este tipo de división: son los denominados predicados vagos. Por ejemplo, tomando el Universo de Discurso formado por todas las posibles temperaturas ambientales en la ciudad de Huelva, se puede definir en dicho universo el conjunto A como aquél formado por las temperaturas "cálidas". Por supuesto, es imposible dar a A una definición clásica, ya que su correspondiente predicado no divide el universo X en dos partes claramente diferenciadas. No podemos afirmar con rotundidad que una temperatura es "cálida" o no lo es. El problema podría resolverse en parte considerando que una temperatura es "cálida" cuando su valor supera cierto umbral fijado de antemano. Se dice que el problema tan sólo se resuelve en parte, y de manera no muy convincente, por dos motivos: de una parte el umbral mencionado se establece de una manera arbitraria, y por otro lado podría darse el caso de que dos temperaturas con valores muy diferentes fuesen consideradas ambas como "cálidas". Evidentemente, el concepto "calor" así definido nos daría una información muy pobre sobre la temperatura ambiental. La manera más apropiada de dar solución a este problema es considerar que la pertenencia o no pertenencia de un elemento x al conjunto A no es absoluta sino gradual. En definitiva, definiremos A como un Conjunto Difuso. Su función de pertenencia ya no adoptará valores en el conjunto discreto {0,1} (lógica booleana), sino en el intervalo cerrado [0,1]. En conclusión podemos observar que los Conjuntos Difusos son una generalización de los conjuntos clásicos. Mediante notación matemática se define un Conjunto Difuso B como: B = {(x, Mb(x)) / x å X} Mb: X® [0,1]
2
Sistemas Expertos
La función de pertenencia se establece de una manera arbitraria, lo cual es uno de los aspectos más flexibles de los Conjuntos Difusos. Por ejemplo, se puede convenir que el grado de pertenencia de una temperatura de "45ºC" al conjunto A es 1, el de "25ºC" es 0.4, el de "6ºC" es 0, etc.: cuanto mayor es el valor de una temperatura, mayor es su grado de pertenencia al conjunto B.
En esta ilustración hemos dibujado 3 conjuntos difusos sobre la variable lingüística altura, cuyos valores lingüísticos asociados son 'bajo', 'mediano' y 'alto' respectivamente. Las funciones de pertenencia son de tipo 'L' para el bajo, 'Lambda' o 'Triángulo' para el mediano y 'Gamma' para el alto. Más adelante aclararemos porqué usamos estos nombres, que únicamente determinan qué forma tienen las funciones de pertenencia. Jorge, que mide 1.80 mts, es un "0.2 mts mediano y un 0.8 mts alto". Esta es la principal diferencia entre la lógica tradicional y la difusa: mientras que los valores de la función de pertenencia de la primera son 0 ó 1, la lógica difusa se mueve en todo el intervalo [0,1]. Se suele normalizar el grado de pertenencia máximo a 1. Así expresamos que mientras un elemento está dentro de un determinado conjunto, puede no cumplir las especificaciones de dicho conjunto al cien por cien (por ejemplo, en el caso de Jorge, a la vista del resultado podría afirmarse que es 'poco mediano y más bien alto').
3
Sistemas Expertos
Que es y para qué sirve la inferencia y los controladores difusos.
4
La lógica difusa se aplica principalmente en sistemas de control difuso que utilizan expresiones ambiguas para formular reglas que controlen el sistema. Un sistema de control difuso trabaja de manera muy diferente a los sistemas de control convencionales. Estos usan el conocimiento experto para generar una base de conocimientos que dará al sistema la capacidad de tomar decisiones sobre ciertas acciones que se presentan en su funcionamiento. Los sistemas de control difuso permiten describir un conjunto de reglas que utilizaría una persona para controlar un proceso y a partir de estas reglas generar acciones de control. El control difuso puede aplicarse tanto en sistemas muy sencillos como en sistemas cuyos modelos matemáticos sean muy complejos.
Aplicaciones prácticas de la lógica difusa. La lógica difusa es aplicable en situaciones y/o campos como: Donde hallan procesos muy complejos, en los cuales los modelos matemáticos simples no son capaces de dar solución a determinados problemas. Por ejemplo,
Para procesos altamente no lineales, ejemplos de estos son:
La meteorología La combustión La evolución biológica
En el campo de las empresas este tipo de teoría se ha extendido en general a todas las áreas de decisión, en las que se manejan estimaciones subjetivas basadas en la información disponible y en su propia experiencia. Por ejemplo: -Modelos de decisión -Modelo de producción
utilizados
con
criterios
de
Sistemas Expertos
·
Un sistema de riego el cual funciona a partir del clima del medio ambiente. Este sistema no puede basarse en clima frio o caliente como lo haría un sistema lógico binario, el cual toma dos estados. Acá necesitamos tomar en cuenta diferentes estados para dar modelos matemáticos automatizados que den salidas y/o decisiones factibles.
optimización
-Inventarios -Seguros de vida -Localización de plantas industriales -Selección de carteras -Estrategia de entrada a mercados extranjeros - Valoración de intangibles en empresas de Internet
5
Estructura de un sistema de diagnóstico de epilepsia basado en lógica difusa
Cuando los sistemas funcionan generalmente bien o los modelos matemáticos se pueden diseñar fácilmente, no hay necesidad de emplear la lógica difusa, puesto que la solución no es tan compleja como para hacer deducciones del tipo que hacen los seres humanos.
Sistemas Expertos
Lógica difusa en la actualidad La Lógica difusa no es una tecnología de futura aplicación, existen ya en el mercado muchos productos basados en esta tecnología, habiéndose ya cientos de millones de Euros de estos. Muchas de estas aplicaciones están siendo desarrolladas y aplicadas en países como Japón y Alemania. Entre los productos más comunes desarrollados con lógica difusa están: -Lavadoras inteligentes que regulan el uso del agua y el detergente en función del nivel de suciedad de la ropa. -El metro Senday en Japón. - Medidores de presión sanguínea. - Aspiradoras, Ascensores, neveras, microondas y múltiples electrodomésticos. - Cámaras de video y fotográficas con auto foco. - Aire acondicionado inteligente, al cual se le indica si uno tiene calor o mucho calor y ya ajusta la temperatura en función de la actual.
6
Que son Redes neuronales artificiales
Como bien sabemos la inteligencia artificial, pretende imitar la inteligencia natural, por tanto en este caso las redes neuronales pretenden imitar la “arquitectura” cerebral (neuronas+conexiones) que dan inteligencia a las personas. Es cierto que el termino inteligencia es bastante ambiguo, pero en este caso en el que hablamos de redes neuronales, consideraremos inteligencia a aquellas personas que sabiendo de un cierto tema, sean capaces de dar una respuesta a una problematicada dada (calculo, clasificación, etc); por ejemplo a poco que sepamos de animales, las personas somos capaces clasificar a un animal (dada una foto) en mamífero, ave, reptil, etc. es decir; que de alguna forma hemos aprendido la diferencia que hay entre esos animales y sabemos clasificarlos. Esto es un ejemplo de lo que puede hacer una red neuronal artificial bien entrenada (o enseñada), en la que dada una foto de un animal, sea capaz de clasificarlo. Evidentemente esta red neuronal podrá fallar de la misma forma que los humanos fallamos, pero la idea es que una red neuronal bien entrenada sea capaz de predecir de la misma forma que las personas.
Sistemas Expertos
Las Redes de Neuronas o Redes Neuronales (en la inteligencia artificial) son un paradigma de aprendizaje y procesamiento automático, inspirado en la forma en que funciona el sistema nervioso de los animales. Se trata de un sistema de interconexiones de neuronas que colaboran entre si para producir una salida.
Otra de las preguntas que nos puede surgir es como aprenden las redes de neuronas; pues bien, lo hacen de la misma forma que los humanos. Existen dos tipos de aprendizaje que son los llamados aprendizaje supervisado y no supervisado. Los nombres son bastante descriptivos, por tanto sabemos que el aprendizaje supervisado lo obtenemos cuando es enseñado por un profesor, maestro, etc. y el no supervisado cuando se aprende por uno mismo. En esta entrada vamos a explicar la arquitectura de una neurona artificial y la forma en la que se conectan entre ellas. También explicaremos el perceptrón y los conceptos del mismo para elegir en la medida de lo posible la mejor arquitectura de nuestra red neuronal. Todo ello estará englobado en el aprendizaje supervisado ya que el perceptrón es una arquitectura neuronal que necesita ser entrenada o enseñada. Haciendo una gran abstracción del cerebro humano, decimos que el cerebro está compuesto por un conjunto de neuronas conectadas entre sí.
7
Sistemas Expertos
El cerebro humano tiene entorno a 1011 neuronas y unas 1014 conexiones. Cada neurona está conectada a otras 1K-200K neuronas, por lo tanto no es de extrañar el elevado número de conexiones que hay. A modo de cultura general y para ver posteriormente la estructura de una neurona artificial, mostramos una imagen de una neurona cerebral humana y de como se conectan las neuronas entre si:
8
Cierto es que estas imágenes no nos proporcionan mucha información desde el punto de vista de la IA, pero si es interesante ver el significado de las conexiones y saber que es lo que hace cada neurona por separado. Con esta abstracción, podemos considerar que una red neuronal esta formada por un número de elementos simples que son las neuronas y que cada una de estas neuronas, realiza un operación muy sencillas (resuelve una sencilla función matemática en función del valor de sus entradas) cuyo resultado será trasmitida a la siguiente neurona como entrada de la misma (de ahí las conexiones). Dicho esto pasamos a mostrar una imagen de una neurona artificial:
Sistemas Expertos
Como vemos una neurona artificial tiene ‘n’ entradas (e1,…,en) que tendrán un determinado valor numérico. También tiene lo que se denomina una “conexión a masa” (b0) que es un valor constante para cada neurona; y cada entrada tiene un peso que se denota como ‘Wi’. Con los valores de las entradas y de los pesos se calcula un valor que en la imagen se ha llamado entrada, (aunque se le suele denominar “neta”) que es el sumatorio de cada una de las entradas por su peso. Una vez que se tiene ese valor “Entrada”, se aplica una determinada función de salida, que es conocida como función de activación y que suelen ser alguna de las que mostramos a continuación:
9
Sistemas Expertos
La función identidad también se le suele llamar función lineal y para la función escalón los rangos pueden variar en función de lo que se defina. Vistas las funciones de activación y la arquitectura, es bastante intuitivo ver que la salida de una neurona artificial se puede conectar como entrada de otra neurona y así construir una red neuronal que se conoce como perceptrón, que como poco tendrá una neurona de entrada conectada a otra neurona de salida. A continuación vamos a ver un ejemplo de una red neuronal que nos dirá la solución a las puertas lógicas de la AND, la OR y la XOR y ver la arquitectura que necesitamos en función de las necesidades que tengamos. Puerta AND La puerta AND es aquella que devuelve un ‘0’ si alguna de sus entradas es ‘0’ y devuelve un ‘1’ si sus dos entradas son ‘1’. Lo que va ha hacer nuestra red neuronal va a ser dividir en dos planos las soluciones (ver siguiente imagen). Lo que “caiga” en un lado del plano dará como salida un ‘0’ y lo que caiga al otro lado dará como salida un ‘1’.
10
Sistemas Expertos
Como vemos en la imagen, lo que queda por arriba de la linea verde dará como salida un ‘1’ y lo que queda por debajo de la linea verde dará como salida un ‘0’. Y ahora bien sabiendo que tenemos que trazar una linea “discriminante” para definir dos planos, ¿Cuantas neuronas necesitará nuestro perceptrón para resolver este problema?. Pues bien con dos neuronas de entrada y una neurona de salida será suficiente para resolver este problema ya que una neurona será capaz de diferenciar los dos planos. En la siguiente imagen vemos los pesos que debe de tener la neurona de salida para resolver la puesta AND:
11
Sistemas Expertos
En esta imagen no se han dibujado las neuronas de entrada, ya que estas lo único que harían, seria dar como salida el mismo valor que la entrada, poniendo todos sus pesos a uno y con una conexión a masa igual a ‘0’ (b0=0). Podemos hacer la prueba para ver que el resultado es correcto:
e1=0; e2=1; entrada = (0·1)+(1·1)+(1·(-1,5)) = 1-1,5 = -0,5 -> F(-0,5) = 0; porque -0,5<0; e1=1; e2=1; entrada = (1·1)+(1·1)+(1·(-1,5)) = 1+1-1,5 = 0,5 -> F(0,5) = 1; porque 0,5>0;
Puerta OR Con la puerta OR nos pasa lo mismo que con la puerta AND, que solo necesitamos “tirar una linea” para diferenciar las salidas, por tanto la arquitectura será la misma que la AND pero con pesos distintos:
12
Sistemas Expertos
e1=0; e2=0; entrada = (0·0)+(0·0)+(1·(-0,5)) = -0,5 -> F(-0,5) = 0; porque 0,5<0; e1=1; e2=0; entrada = (1·1)+(0·1)+(1·(-0,5)) = 1+0-0,5 = 0,5 -> F(0,5) = 1; porque 0,5>0;
Puerta XOR Un ejemplo algo más complejo es el de la puerta XOR ya que necesita dos hiperplanos para diferenciar las salidas:
13
Sistemas Expertos
14
Esto significa que con una sola neurona no vamos a poder encontrar solución al problema, por tanto al haber dos hiperplanos vamos a necesitar un perceptrón con dos neuronas en la capa oculta; por tanto la arquitectura de este perceptrón será de dos neuronas en la capa de entrada, dos neuronas en la capa oculta y una neurona en la capa de salida. Al fin y al cabo solo hay que ver cuantas neuronas necesitaremos en la capa oculta ya que el número de neuronas en la capa de entrada y de salida, vienen determinadas por el número de entradas y de salidas que tenga nuestro problema. A continuación mostramos la red neuronal que resuelve el problema de la XOR:
En esta arquitectura, podemos ver que las neuronas de entrada van a tener como salida el mismo valor que su entrada al ser su función de activación una función lineal. A continuación hacemos un seguimiento de cómo se obtienen las salidas en función de sus entradas:
e1=0; e2=0; entrada Neurona3 = (e1·w11)+(e2·w21)+(b30·w30) = (0·1)+(0·1)+(1·(-0,5)) = -0,5 -> F3(-0,5) = 0;
Salida-> entrada Neurona5 = (F3·w31)+(F4·w41)+(b05·W05) = (0·1)+(0·(1))+(1·(-0,5)) = -0,5 -> F5(-0,5)=0
e1=0; e2=1;
Sistemas Expertos
entrada Neurona4 = (e1·w12)+(e2·w22)+(b40·w40) = (0·1)+(0·1)+(1·(-1,5)) = -1,5 -> F4(-1,5) = 0;
entrada Neurona3 = (e1·w11)+(e2·w21)+(b30·w30) = (0·1)+(1·1)+(1·(-0,5)) = 0,5 -> F3(0,5) = 1; entrada Neurona4 = (e1·w12)+(e2·w22)+(b40·w40) = (0·1)+(1·1)+(1·(-1,5)) = 0,5 -> F4(0,5) = 0; Salida-> entrada Neurona5 = (F3·w31)+(F4·w41)+(b05·W05) = (1·1)+(0·(1))+(1·(-0,5)) = 0,5 -> F5(0,5)=1
e1=1; e2=0; entrada Neurona3 = (e1·w11)+(e2·w21)+(b30·w30) = (1·1)+(0·1)+(1·(-0,5)) = 0,5 -> F3(0,5) = 1; entrada Neurona4 = (e1·w12)+(e2·w22)+(b40·w40) = (1·1)+(0·1)+(1·(-1,5)) = -0,5 -> F4(-0,5) = 0; Salida-> entrada Neurona5 = (F3·w31)+(F4·w41)+(b05·W05) = (1·1)+(0·(1))+(1·(-0,5)) = 0,5 -> F5(0,5)=1
15
e1=1; e2=1; entrada Neurona3 = (e1·w11)+(e2·w21)+(b30·w30) = (1·1)+(1·1)+(1·(-0,5)) = 1,5 -> F3(1,5) = 1; entrada Neurona4 = (e1·w12)+(e2·w22)+(b40·w40) = (1·1)+(1·1)+(1·(-1,5)) = 0,5 -> F4(0,5) = 1;
Sistemas Expertos
Salida-> entrada Neurona5 = (F3·w31)+(F4·w41)+(b05·W05) = (1·1)+(1·(1))+(1·(-0,5)) = -0,5 -> F5(-0,5)=0 De esta forma vemos como resolver un problema utilizando un perceptrón con una capa oculta y como se resuelven este tipo de problemas utilizando redes neuronales. Este último ejemplo, es un ejemplo muy sencillo pero muy didáctico y visto esto podemos decir que para aprendernos la puerta XOR solo necesitamos
5 de nuestras 1011 neuronas del cerebros muchas para otras cosas.
así que nos sobran otras
A continuación se va a mostrar una herramienta llamada Neuroph Studio que permite trabajar con redes neuronales de forma muy sencilla. Se va a mostrar este mismo ejemplo de la XOR (utilizando otra función de activación) para que se vea como se entrenan las redes neuronales. Esta herramienta permite hacer cosas mucho más complejas que una red neuronal para resolver el problema de la XOR, pero con este ejemplo podeis ir cogiendo soltura para futuros trabajos:
16
Sistemas Expertos
Arquitectura de la red neuronal con sus pesos:
17
Que es MATLAB usos y ambiente de trabajo Matlab es un lenguaje de programación desarrollado por The Mathworks, Matlab nace como el resultado de tratar de satisfacer las necesidades computacionales de científicos, ingenieros y matemáticos, por lo que el desarrollo de Matlab comprende un potente lenguaje de alto nivel y la incorporación de funciones gráficas más allá de los lenguajes de programación C y Fortran.
Sistemas Expertos
Actualmente, en Matlab se incorporan herramientas diversas tales como Simulink, que sirve para simular sistemas dinámicos, además de diferentes herramientas para la industria, estadísticas, financieras, científicas y para ingeniería.
18
GNU Octave y Labview Math Script proporcionan un entorno compatible con los ficheros-M utilizados en Matlab.
El entorno de Matlab
Sistemas Expertos
La ventana de Matlab cuenta con diversas secciones. La más importante es la command window. Aquí es donde podemos usar Matlab de forma interactiva. Las otras secciones son: el current directory , que es la carpeta en la cual estamos trabajando, el workspace, donde podemos visualizar las variables que han sido creadas, y el command history, que guarda todas las acciones realizadas en el command window. En la esquina superior izquierda, encontramos la opción de crear un nuevo archivo M. En estos archivos (que tienen la extensión .m) se escriben los programas donde se usa el lenguaje Matlab. Otras opciones que encontramos son la de iniciar Simulink y GUIDE, una IDE que facilita la creación de interfaces gráficas.
19
Conclusiones:
Sistemas Expertos
Las redes neuronales son un área muy chula de la inteligencia artificial ya que pretende ni más ni menos que imitar el comportamiento del cerebro humano. Al fin y al cabo lo que hacemos cuando nos creamos una red neuronal y la entrenamos, es crearnos un modelo que nos da una respuesta en función de la entrada que le demos. Si creamos con una red neuronal un modelo que nunca va a cambiar (por ejemplo un clasificador de animales) las redes neuronales son una buena solución, pero si por el contrario creamos un modelo que es cambiante a lo largo del tiempo (por ejemplo que prediga el comportamiento de la bolsa o que prediga el resultado de un partido de fútbol), las redes neuronales son una muy mala elección porque habría que estar siempre actualizando los modelos (entrenandolos) y muy probablemente habría que modificar la arquitectura de la red neuronal y volverla a entrenar. Aunque en esta entrada se haya mostrado el funcionamiento de las redes neuronales y explicado sus conceptos, se ha de decir que existe mejores técnicas (como las del Machine Learning) que hacen lo mismo que las redes neuronales, por tanto es bueno que se sepa el funcionamiento se las redes neuronales para asentar conceptos, pero hay que decir que el perceptrón está ya algo anticuado. No se puede decir lo mismo para las redes de Kohonen (o mapas autoorganizados) que si que son una muy buena solución cuando se tiene que aplicar aprendizaje no supervisado, aunque estas redes presentan una arquitectura distinta a la explicada en esta entrada.
20