resueltos reglas ppt pertenencia logica libros funciones funcionamiento ejemplos difusas difusa artificial-intelligence logic theory definition fuzzy-logic

artificial-intelligence - reglas - logica difusa ppt



¿Qué es lógica difusa? (11)

Estoy trabajando con un par de algoritmos de IA en la escuela y encuentro que las personas usan las palabras Fuzzy Logic para explicar cualquier situación que puedan resolver con un par de casos. Cuando vuelvo a los libros, acabo de leer que, en lugar de un estado que va de encendido a apagado, es una línea diagonal y algo puede estar en ambos estados pero en diferentes "niveles".

He leído la entrada de la wikipedia y un par de tutoriales e incluso cosas programadas que "usan lógica difusa" (un detector de bordes y un robot de 1 rueda autocontrolado) y todavía me resulta muy confuso ir de la teoría al código. Para ti, en la definición menos complicada, ¿qué es lógica difusa?


Bueno, podrías leer los trabajos de Bart Kosko , uno de los "padres fundadores". '' Fuzzy Thinking: The New Science of Fuzzy Logic '' de 1994 es legible (y está disponible de forma bastante barata de segunda mano vía Amazon). Aparentemente, tiene un libro nuevo, " Ruido " de 2006, que también es bastante accesible.

Básicamente, sin embargo (en mi paráfrasis, no haber leído el primero de esos libros desde hace varios años), la lógica difusa es cómo lidiar con el mundo en el que algo es quizás un 10% fresco, 50% cálido y 10% caliente, donde diferentes se pueden tomar decisiones sobre el grado en que los diferentes estados son verdaderos (y no, no fue un accidente que esos porcentajes no sumen 100%, aunque aceptaría la corrección si fuera necesario).


Lo siguiente es una especie de respuesta empírica.

Una respuesta simple (posiblemente simplista) es que la "lógica difusa" es cualquier lógica que arroja valores que no sean verdaderos / falsos, o 1 / 0. Hay muchas variaciones en esto y tienden a ser altamente específicos del dominio.

Por ejemplo, en mi vida anterior hice los motores de búsqueda que usaban "búsqueda de similitud de contenido" en lugar de la "búsqueda booleana" común. Nuestro sistema de similitud usó el Coeficiente Coseno de vectores de atributos ponderados que representan la consulta y los documentos, y produjo valores en el rango 0..1. Los usuarios proporcionarían "comentarios de relevancia" que se usaron para cambiar el vector de consulta en la dirección de los documentos deseables. Esto está relacionado de alguna manera con el entrenamiento realizado en ciertos sistemas de IA donde la lógica se "recompensa" o "castiga" por los resultados de las pruebas.

En este momento, Netflix está ejecutando una competencia para encontrar un mejor algoritmo de sugerencias para su empresa. Ver http://www.netflixprize.com/ . Efectivamente, todos los algoritmos podrían caracterizarse como "lógica difusa"


Me gustaría agregar a las respuestas (que han sido modificadas) que, una buena manera de visualizar la lógica difusa es la siguiente:

Tradicionalmente, con la lógica binaria, usted tendría un gráfico cuya función de membresía es verdadera o falsa, mientras que en un sistema de lógica difusa, la función de membresía no lo es.

1| | // | / / | / / 0|/ / ------------ a b c d

Supongamos por un segundo que la función es "Me gusta los cacahuetes"

a. kinda likes peanuts b. really likes peanuts c. kinda likes peanuts d. doesn''t like peanuts

La función en sí no tiene que ser triangular y a menudo no lo es (es más fácil con ascii art).

Un sistema difuso probablemente tendrá muchos de estos, algunos incluso superpuestos (incluso opuestos) como ese:

1| A B | // // A = Likes Peanuts | / // / B = Doesn''t Like Peanuts | / // / 0|/ / / / ------------ a b c d

así que ahora c es "a los tipos les gustan los cacahuetes, no les gustan los cacahuetes" y "no me gustan los cacahuetes"

Y puede programar en consecuencia según esa información.

Espero que esto ayude a los estudiantes visuales por ahí.


Para construir a partir de la respuesta del caos, una lógica formal no es más que un conjunto definido inductivamente que asigna oraciones a una valoración. Al menos, así es como un teórico modelo piensa en lógica. En el caso de una lógica booleana sentencial:

(basis clause) For all A, v(A) in {0,1} (iterative) For the following connectives, v(!A) = 1 - v(A) v(A & B) = min{v(A), v(B)} v(A | B) = max{v(A), v(B)} (closure) All sentences in a boolean sentential logic are evaluated per above.

Los cambios lógicos difusos se definirían inductivamente:

(basis clause) For all A, v(A) between [0,1] (iterative) For the following connectives, v(!A) = 1 - v(A) v(A & B) = min{v(A), v(B)} v(A | B) = max{v(A), v(B)} (closure) All sentences in a fuzzy sentential logic are evaluated per above.

Observe que la única diferencia en la lógica subyacente es el permiso para evaluar una oración que tiene el "valor de verdad" de 0.5. Una pregunta importante para un modelo de lógica difusa es el umbral que cuenta para la satisfacción de la verdad. Esto es para preguntar: para una valoración v (A), para qué valor D es el caso, el v (A)> D significa que A está satisfecho.

Si realmente quiere saber más acerca de las lógicas no clásicas, como la lógica difusa, recomendaría una introducción a la lógica no clásica: de si a es o posibilidades y paradoja

Volviendo a poner mi sombrero codificador, tendría cuidado con el uso de la lógica difusa en la programación del mundo real, debido a la tendencia a que una lógica difusa sea indecidible. Tal vez es demasiada complejidad con poca ganancia. Por ejemplo, una lógica supervaluacional puede funcionar perfectamente para ayudar a la vaguedad de un modelo de programa. O tal vez la probabilidad sea lo suficientemente buena. En resumen, necesito estar convencido de que el modelo de dominio encaja con una lógica difusa.


Sé lo que quieres decir con que es difícil pasar de un concepto a otro. Estoy escribiendo un sistema de puntuación que analiza los valores de sysinfo y / proc en los sistemas Linux y da como resultado un número entre 0 y 10, siendo 10 el peor absoluto. Un simple ejemplo:

Tiene 3 promedios de carga (1, 5, 15 minutos) con (al menos) tres estados posibles, bueno, empeorando, mal. Ampliando eso, podría tener seis estados posibles por promedio, agregando ''sobre a'' a los tres que acabo de señalar. Sin embargo, el resultado de las 18 posibilidades solo puede deducir 1 del puntaje. Repita eso con el intercambio consumido, la memoria real asignada (VM) asignada y otras cosas ... y tiene un gran tazón de espagueti condicional :)

Es tanto una definición como un arte, cómo se implementa el proceso de toma de decisiones es siempre más interesante que el paradigma en sí mismo ... mientras que en un mundo booleano, es más bien cortado y seco.

Sería muy fácil para mí decir si load1 <2 deduce 1, pero no es muy preciso en absoluto.

Si puede enseñarle a un programa a hacer lo que haría al evaluar algunas circunstancias y mantener el código legible, habrá implementado un buen ejemplo de lógica difusa.


Tal vez un ejemplo aclare cuáles pueden ser los beneficios:

Digamos que quieres hacer un termostato y quieres que sea de 24 grados.

Así es como lo implementarías usando lógica booleana:

  • Regla 1: calentar a máxima potencia cuando hace más de 21 grados.
  • Rule2: enfríe a máxima potencia cuando esté más caliente que 27 grados.

Tal sistema solo será de vez en cuando 24 grados, y será muy ineficiente.

Ahora, usando lógica difusa, sería algo como esto:

  • Regla 1: por cada grado que sea más frío que 24 grados, suba el calentador una muesca (0 a 24).
  • Regla2: por cada grado que esté más caliente que 24 grados, suba la muesca más fría (0 a 24).

Este sistema siempre estará en algún lugar alrededor de 24 grados, y solo una vez y solo hará una pequeña modificación. También será más eficiente en el consumo de energía.



La lógica difusa es lógica donde la membresía del estado es, esencialmente, un flotante con un rango de 0..1 en lugar de un int 0 o 1. El kilometraje que obtienes es que cosas como, por ejemplo, los cambios que haces en un sistema de control son un poco naturalmente más afinados de lo que obtendrías con lógica binaria ingenua.

Un ejemplo podría ser la lógica que acelera la actividad del sistema en función de las conexiones TCP activas. Digamos que define conexiones TCP "demasiadas" en su máquina como 1000 y "demasiadas" como 2000. En cualquier momento, su sistema tiene un estado de "demasiadas conexiones TCP" desde 0 (<= 1000) a 1 (> = 2000), que puede usar como un coeficiente para aplicar los mecanismos de estrangulamiento que tenga disponibles. Esto es mucho más tolerante y receptivo al comportamiento del sistema que la lógica binaria ingenua que solo sabe cómo determinar "demasiados", y acelera por completo, o "no demasiados", y no acelera en absoluto.


Fuzzy Logic es una metodología de resolución de problemas que se presta para la implementación en sistemas que van desde microcontroladores simples, pequeños e integrados hasta grandes sistemas de adquisición y control de datos basados ​​en PC o estaciones de trabajo en red y multicanales. Se puede implementar en hardware, software o una combinación de ambos. Fuzzy Logic proporciona una forma simple de llegar a una conclusión definitiva basada en información de entrada vaga, ambigua, imprecisa, ruidosa o faltante. El enfoque de Fuzzy Logic para controlar problemas imita cómo una persona tomaría decisiones, solo que mucho más rápido.

La lógica difusa ha demostrado ser particularmente útil en sistemas expertos y otras aplicaciones de inteligencia artificial. También se usa en algunos correctores ortográficos para sugerir una lista de palabras probables para reemplazar a una ortografía incorrecta.

Para obtener más información, simplemente visita: http://en.wikipedia.org/wiki/Fuzzy_logic .


La lógica difusa es el algoritmo de cálculo basado en la forma humana de pensar. Es particularmente útil cuando hay una gran cantidad de variables de entrada. Se proporciona una calculadora de lógica difusa en línea para la entrada de dos variables:

http://www.cirvirlab.com/simulation/fuzzy_logic_calculator.php


La mejor definición de lógica difusa está dada por su inventor Lotfi Zadeh :

"La lógica difusa significa representar los problemas de las computadoras de una manera similar a la forma en que los humanos los resuelven y la esencia de la lógica difusa es que todo es cuestión de grado".

El significado de resolver problemas con computadoras similares a la forma en que lo resuelven los humanos se puede explicar fácilmente con un simple ejemplo de un juego de baloncesto; si un jugador quiere proteger a otro jugador en primer lugar, debe considerar qué tan alto es y cómo son sus habilidades para jugar. Simplemente si el jugador que quiere proteger es alto y juega muy lento con respecto a él, entonces usará su instinto para determinar si debe proteger a ese jugador, ya que hay una incertidumbre para él. En este ejemplo, el punto importante es que las propiedades son relativas al jugador y hay un grado de altura y habilidad de juego para el jugador rival. La lógica difusa proporciona una forma determinista para esta situación incierta.

Hay algunos pasos para procesar la lógica difusa (Figura-1). Estos pasos son; En primer lugar, las entradas se procesan con reglas difusas para crear salidas difusas y, por último, la defuzzificación que resulta con el grado de resultado, ya que en lógica difusa puede haber más de un resultado con diferentes grados.

Figura 1 - Pasos difusos del proceso (David M. Bourg P.192)

Para ejemplificar los pasos del proceso borroso, se podría usar la situación previa del juego de baloncesto. Como se mencionó en el ejemplo, el jugador rival es alto con 1,87 metros, que es bastante alto en relación con nuestro jugador y puede driblar con 3 m / s, que es lento en relación con nuestro jugador. Además de estos datos, se necesitan algunas reglas para considerar cuáles se llaman reglas difusas tales como;

if player is short but not fast then guard, if player is fast but not short then don’t guard If player is tall then don’t guard If player is average tall and average fast guard

Figura 2 - ¿qué tan alto

Figura 3- qué tan rápido

De acuerdo con las reglas y los datos de entrada, un resultado será creado por un sistema difuso como; el grado para guardia es 0.7, grado para a veces el guardia es 0.4 y nunca guardia es 0.2.

Figura 4-salida de conjuntos difusos

En el último paso, la defuzzicación se usa para crear una salida nítida, que es un número que puede determinar la energía que debemos usar para proteger al jugador durante el juego. El centro de masa es un método común para crear la salida. En esta fase, los pesos para calcular el punto medio dependen totalmente de la implementación. En esta aplicación se considera que le da un alto peso a la guardia o no a la guardia, pero le da poco peso a veces para protegerse. (David M. Bourg, 2004)

Figura 5- salida borrosa (David M. Bourg P.204)

Output = [0.7 * (-10) + 0.4 * 1 + 0.2 * 10] / (0.7 + 0.4 + 0.2) ≈ -3.5

Como resultado, la lógica difusa utiliza bajo incertidumbre para tomar una decisión y para averiguar el grado de decisión. El problema de la lógica difusa es que a medida que el número de entradas aumenta la cantidad de reglas aumenta exponencial.

Para obtener más información y su posible aplicación en un juego, escribí un pequeño artículo. Mira esto.