« Adiós a Yutzu « || Inicio || » Sistemas Basados en R… »

Introducción a la Lógica Difusa

Última modificación: 19 de Octubre de 2015, y ha tenido 1691 vistas

Etiquetas utilizadas: || || ||

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • BarraPunto
  • Del.icio.us
  • Digg
  • email
  • Facebook
  • Google
  • LinkedIn
  • PDF
  • Reddit
  • Slashdot
  • Twitter

El concepto de la lógica difusa

La forma en que la gente piensa es, inherentemente, difusa. La forma en que percibimos el mundo está cambiando continuamente y no siempre se puede definir en términos de sentencias verdaderas o falsas. Consideremos como ejemplo el conjunto de vasos del mundo, que pueden estar vacíos o llenos de agua. Ahora tomemos un vaso vacío y comencemos a echar agua poco a poco, ¿en qué momento decidimos que el vaso pasa de estar vacío a estar lleno? Evidentemente, hay dos situaciones extremas que reconocemos sin ninguna duda, la primera cuando el vaso está completamente vacío, sin una sola gota de agua en su interior, y la segunda cuando está completamente lleno, cuando no cabe ni una sola gota más en él, pero una gota antes de estar completamente lleno, ¿diríamos que es falso que el vaso está lleno?, observa que para afirmar su condición, en la frase anterior no sollo he usado el término lleno, sino que he añadido un modificador diciendo completamente lleno. Si a un vaso lleno de agua le quito una gota de agua... ¿dejo de considerarlo lleno y automáticamente pertenece para mí a otra clasificación?

Las definiciones de vaso completamente vacío y vaso completamente lleno son demasiado estrictas como para asumirlas interesantes para considerar operaciones de llenado y vaciado sobre ellos, y entre los términos de lleno y vacío hay un área que no está claramente definida de pertenencia a ninguno de esos extremos. En el mundo real hemos cubierto esta imprecisión por medio de una jerarquía de términos intermedios junto con modificadores que permiten cubrir un espectro más grande de áreas usando un número limitado de ellos. Matemáticamente, el concepto de sí/no, verdadero/falso están representados con el concepto clásico de conjunto, pero necesitamos extender este concepto para poder representar este tipo de información más difusa.

Un conjunto difuso permite a sus elementos tener un grado de pertenencia. Si el valor 1 se asigna a los elementos que están completamente en el conjunto, y 0 a los que están completamente fuera, entonces los objetos que están parcialmente en el conjunto tendrán un valor de pertenencia estrictamente entre 0 y 1. Por tanto, si un vaso completamente lleno tiene un grado de pertenencia a los vasos llenos de valor 1, y un vaso completamente vacío un grado de pertenencia de valor 0, al añadir una gota a este último, su grado de pertenencia a los vasos llenos sería ligeramente superior a 0.

Definición Matemática de Conjuntos Difusos

Matemáticamente, un conjunto es una colección de objetos que verifican alguna propiedad, de forma que un objeto o bien pertenece al conjunto, o no pertenece. Por ejemplo, supongamos que decimos que una persona es alta si su altura está por encima de 180cm, algo que puede ser representado gráficamente de la siguiente forma:

La funcion anterior describe la pertenencia al conjunto de los altos, o estás dentro o estás fuera. Estas funciones nítidas funcionan muy bien con las operaciones binarias y las matemáticas clásicas, pero no funcionan bien describiendo el mundo real. Por una parte, no hace distinción entre individuos que midan 181cm y los que miden 215cm, aunque hay una clara distinción entre ellos. El otro problema es la diferencia entre una persona que mida 180cm y otra de 181cm, apenas 1cm de diferencia entre ellos y el primero de ellos no está en el conjunto de los altos, y el segundo sí.

La aproximación de los conjuntos difusos al conjunto de los altos proporciona una representación mucho mejor sobre la característica de ser alto de una persona. El conjunto se define por medio de una función continua.

La función de pertenencia define el conjunto difuso para los posibles valores de altura (en el eje horizontal). el eje vertical (con valores entre 0 y 1), proporciona el grado de pertenencia de la altura al conjunto difuso. De esta forma, el grado de pertenencia de la primera persona es 0.3 y, por tanto, no es muy alto, mientras que el segundo tiene un grado de pertenencia de 0.95 y, definitivamente, es alto.

Los conjuntos difusos fueron propuestos inicialmente por Lofti A. Zadeh en su artículo de 1965 titulado "Fuzzy Sets". Este artículo establece los fundamentos de la lógica difusa que se deduce de la definición de conjunto difuso y sus propiedades. Esta definición forma es:

Sea \(X\) un conjunto clásico. Un conjunto difuso, \(A\), en \(X\) viene caracterizado por la función de pertenencia \(f_A(x)\), que asocia a cada punto \(x \in X\) un número real del intervalo \([0,1]\), donde los valores de \(f_A(x)\) representan el "grado de pertenencia" de \(x\) en \(A\), de forma que, cuanto más cerca esté el valor de \(f_A(x)\) a \(1\), mayor es el grado de pertenencia de \(x\) a \(A\).

Esta definición de conjunto difuso extiende de alguna forma la definición clásica de conjunto, que sería el caso particular en el que \(f_A(x)\in \{0,1\}\), pero también tendremos que extender también las operaciones clásicas entre conjuntos (unión, intersección, etc.), lo que nos llevará también a extender las operaciones lógicas binarias habituales (and, or, etc.).

Obsérvese que no indicamos cómo ha de ser la función de pertenencia, ya que eso dependerá de las carcterísticas propias del conjunto real que se quiere representar, pero suelen usarse algunas funciones clásicas comunes como las que se muestran a continuación:

Matizadores Lingüísticos

El primer paso para convertir el lenguaje difuso en una función de pertenencia de la lógica difusa consiste en tomar los términos (normalmente adjetivos o propiedades similares) y asociarles una función de pertenencia adecuada a nuestra experiencia del mundo real. Aquí no hay reglas, salvo las restricciones propias de la lógica.

El siguente paso es elegir cómo actúan los matizadores lingüísticos sobre el lenguaje. Estos matizadores deben modificar la función de peternencia de la propiedad sobre la que actúan, de forma que podamos reflejar adecuadamente las acciones de partículas como "mucho", "muy", "casi", "ligeramente", "extremadamente", "muchísimo", etc...

Azul: Alto, Verde: Muy alto, Rojo: Poco altoNormalmente, lo que se hace es tomar la familia de funciones de la forma:

\(h_\alpha(x)=x^\alpha\)

y se asocian valores de \(\alpha\) determinados a los distintos matizadores. Por ejemplo:

\(\alpha(muy)=2\)

\(\alpha(extremadamente)=6\)

\(\alpha(ligeramente)=\frac{1}{2}\)

Así, si queremos modificar el comportamiento de la función de pertenencia "alto" para obtener "muy alto", basta considerar:

\(f_{muy\ alto}(x)=h_{muy}(f_{alto}(x))\)

Definiendo operaciones difusas

La lógica tradicional bivalente usa los operadores booleanos AND, OR, y NOT para llevar a cabo las operaciones de conjuntos de intersección, unión y complementario. Estos operadores funcionan bien con conjuntos nítidos, clásicos, y se pueden definir sencillamente a partir de la tabla de verdad:

Las tablas de verdad anteriores funcionan bien para la lógica bivalente, pero debido a que los conjuntos difusos no tienen porqué tomar una cantidad finita de valores, no es fácil extender las tablas para su uso en este caso. Estos operadores necesitan ser redefinidos como funciones para todos los posibles valores difusos de los grados de pertenencia, es decir, para el intervalo \([0,1]\). La lógica difusa es realmente un superconjuto de la lógica bivalente clásica ya que incluye los valores extremos junto a todos los valores intermedios, por lo que conseguir una forma generalizada de estos operadores que también extiendan a los operadores clásicos puede ser de mucha utilidad. Una posible generalización vendría dada por:

\(x\  AND\  y = min(x,y)\)

\(x\  OR\  y = max(x,y)\)

\(NOT\  x = 1 - x\)

Estas definiciones se pueden usar tanto para aplicar los operadores clásicos como para obtener combinaciones difusas. Las siguientes gráficas representan el resultado obtenido con la definición anteriores sobre todos los posibles valores de entrada:

Existen muchas otras posibles definiciones para los operadores, pero suelenn compartir propiedades similaers (que exitienden su funcionamiento y significado clásico). Las definiciones matemáticas del operador AND se llama norma triangular (o t-norma) y es, por definición, un operador binario, definido de \([0,1]^2 \mapsto [0,1]\), conmutativo, asociativo, que lleva el par \((1,1)\) al valor \(1\), y es creciente en cada variable. Para el operador OR las propiedades son las mismas, salvo que lleva el par \((0,0)\) al valor \(0\), y se llaman t-conormas. El operador NOT puede ser redefinido siempre y cuando sea continuo y estrictamente decreciente. Algunos ejemplos pueden venir dados por las siguientes definiciones:

Tomando decisiones difusas

La mayoría de las decisiones que la gente toma son decisiones lógicas, miran la situación, la valoran, y toman una decisión basándose en ella. La forma generalizada de una decisión de este tipo se llama Modus Ponens Generalizado, que tiene la forma:

Esta forma de razonamiento lógico es bastante estricto. La lógica difusa pierde esta forma estricta diciendo que B se dará con más opciones si la veracidad de A es más alta. Donde ahora A y B toman valores difusos. El razonamiento anterior requiere que se defina un conjunto de reglas que lo lleven a cabo. Estas reglas son reglas lingüísticas que relacionan diferentes conjuntos y valores difusos. La forma general de estas reglas es: "si x está en A, entonces y está en B", donde \(x\) e \(y\) son valores difusos en los conjuntos difusos, \(A\) y \(B\), respectivamente, que vienen definidos por medio de sus funciones de pertenencia.

Las reglas lingüísticas se usan para relacionar las entradas con las salidas, y vamos a ver a continuación cómo se puede hacer una valoración correcta de la misma. Ha habido varias propuestas para determinar la ejecución de estas reglas, las más importantes han sido los métodos de inferencia y agregación de Mamdani, Larsen, Takagi-Sugeno-Kang, y Tsukamoto.

Desde un punto de vista práctico, hemos de aprender a pasar de los conceptos lingüísticos difusos en variables numéricas difusas, combinarlas usando los operadores lógicos difusos, obtener la deducción de cada regla de forma numérica, agregar las diversas respuestas de las distintas reglas, y volver a pasar de la respuesta numérica agregada a la lingüística.

En el siguiente diagrama (extraído de "Fuzzy Logic for Social Simulation using NetLogo") se muestra el proceso completo sobre una base de 3 reglas:

  • R1: IF (House is Inexpensive OR Close-to-work), THEN Suitability is Good.
  • R2: IF (House is Expensive OR Far-from-work), THEN Suitability is Low.
  • R3: IF (House is Averagely-priced AND About-50-km-from-work), THEN Suitability is Regular.

En general, el proceso mostrado anteriormente responde a un esquema de modelado que permite manipular reglas de inferencia sobre conjuntos difusos, y que puede ser resumido de la siguiente forma:

Hay muy buen material ya disponible para entrar en el mundo de la lógica difusa desde un punto de vista más técnico, por ello, se recomienda acceder a los recursos que se pueden encontrar a continuación.

Para saber más...

Video Tutorial de Lógica Difusa (inglés)

Fuzzy Logic for Social Simulation using NetLogo

Extensión de Lógica Difusa de NetLogo

« Adiós a Yutzu « || Inicio || » Sistemas Basados en R… »