Conjuntos difusos y funciones de pertenencia: cómo escribir «algo cálido»
El límite nítido y la paradoja del montón, conjunto difuso y grado de pertenencia, formas de las funciones de pertenencia, variable lingüística, soporte, núcleo y cortes α, operaciones de Zadeh y los modificadores «muy» y «algo» — con la temperatura, de frío a caluroso.
Serie Fundamentos de IA Parte 32 de 52
- Mapa de la inteligencia artificial: qué es cada cosa y cómo encaja todo
- Breve historia de la inteligencia artificial: de Turing a los modelos de lenguaje
- Datos, modelo, entrenamiento, inferencia: los conceptos básicos en un solo ejemplo
- Cómo leer la notación matemática: símbolos, subíndices, sumatorios y cuantificadores
- Conjuntos y relaciones: las piezas con las que se construyen las definiciones en IA
- Funciones y aplicaciones: por qué todo modelo de IA es una función
- Lógica y demostraciones: las reglas con las que se razona en IA
- Grafos y árboles: la estructura sobre la que se apoyan la búsqueda y las redes neuronales
- Álgebra lineal para aprendizaje automático: vectores, matrices y por qué la IA sobre todo multiplica
- Derivadas, gradiente y regla de la cadena: cómo sabe un modelo en qué dirección aprender
- Descenso de gradiente: cómo aprende un modelo
- Qué es la probabilidad: del lanzamiento de un dado a los axiomas de Kolmogórov
- Probabilidad condicionada y teorema de Bayes: cómo cambiar una estimación cuando te enteras de algo nuevo
- Variable aleatoria y función de distribución: una sola función que lo dice todo sobre la distribución
- Función de densidad y función de probabilidad: por qué una variable continua tiene probabilidad cero en cada punto
- Esperanza, varianza y covarianza: dónde está una distribución, qué anchura tiene y qué se relaciona con qué
- Resumen de las distribuciones de probabilidad: Bernoulli, binomial, Poisson, uniforme, normal y exponencial
- Ley de los grandes números y teorema central del límite: por qué las medias se comportan de forma tan predecible
- Estadística y estimación de parámetros: máxima verosimilitud, MAP e intervalos de confianza
- Teoría de la información: entropía, entropía cruzada y divergencia KL, el origen de las funciones de pérdida
- Búsqueda en el espacio de estados: BFS, DFS, UCS y A* con animaciones
- Juegos y adversarios: minimax, poda alfa-beta y Monte Carlo tree search
- Satisfacción de restricciones: backtracking, propagación de restricciones y AC-3 con un sudoku y un mapa de regiones checas
- Lógica y sistemas basados en conocimiento: encadenamiento hacia delante y hacia atrás, resolución y sistemas expertos
- Planificación: STRIPS, el mundo de bloques, heurísticas a partir de la relajación y la planificación en los agentes de IA
- Búsqueda local y recocido simulado: un viajante por las capitales regionales checas
- Algoritmos genéticos: población, cruce, mutación y selección en una mochila para la excursión
- Estrategias evolutivas y programación genética: de la regla de un quinto a la ley de Kepler
- Optimización por colonia de hormigas: cómo un rastro de feromona encuentra un camino corto
- Optimización por enjambre de partículas: inercia, experiencia propia y experiencia del enjambre
- Neuroevolución: evolución de los pesos y la forma de las redes neuronales, y el algoritmo NEAT
- Conjuntos difusos y funciones de pertenencia: cómo escribir «algo cálido»
- Lógica difusa y probabilidad: por qué «algo cálido» no significa «probablemente cálido»
- Lógica difusa: t-normas, implicaciones y reglas SI–ENTONCES
- Control difuso: Mamdani y Sugeno, del ventilador al péndulo invertido sobre un carro
- Agrupamiento difuso: el algoritmo fuzzy c-means y los puntos entre clusters
- Sistemas neuro-difusos (ANFIS): reglas difusas que aprenden de los datos
- Cadenas de Markov: matriz de transición, distribución estacionaria y PageRank
- Modelos ocultos de Márkov: el algoritmo de Viterbi y el casino deshonesto
- Redes bayesianas: por qué está mojada la hierba y qué significa eso para el aspersor
- El filtro de Kalman: cómo estimar a partir de mediciones imprecisas dónde está un coche y a qué velocidad va
- Tipos de aprendizaje automático: supervisado, no supervisado, semisupervisado y más
- Prompts, contexto y RAG: cómo darle a un modelo la información correcta
- Autocodificadores variacionales (VAE): imágenes nuevas a partir de un espacio latente continuo
- Redes generativas adversarias (GAN): el falsificador contra el detective
- Modelos de difusión: cómo el ruido puro se convierte en una imagen
- Procesos de decisión de Markov: estados, acciones, recompensas y ecuaciones de Bellman
- Q-learning y DQN: aprender el valor de las acciones, de la tabla a la red neuronal
- Gradiente de la política y PPO: aprender directamente la política
- Cómo funciona un agente de IA: un modelo de lenguaje en un bucle con herramientas
- Programación con agentes de IA: encargo, pruebas y revisión
- Evaluación y seguridad de los sistemas de IA: cómo medir y cómo vigilar
Temario completo de la serie 52 de 83 temas publicados
- Qué es un conjunto difuso y por qué el grado de pertenencia no es una probabilidad.
- Cómo se escriben palabras como «cálido» o «agradable» mediante funciones de pertenencia y cómo se solapan.
- Cómo funcionan la intersección, la unión y el complemento difusos y por qué no se cumple la ley del tercero excluido.
Conviene conocer antes: Conjuntos y relaciones: las piezas con las que se construyen las definiciones en IA, Funciones y aplicaciones: por qué todo modelo de IA es una función
¿Cuántos granos de arena forman un montón? Un millón, seguro. Uno, seguro que no. Y si a un montón le quitas un grano, sigue siendo un montón — así que, según esa lógica, también un solo grano sería un montón. Esta paradoja ya la conocían los antiguos griegos y muestra que muchas de las palabras con las que hablamos del mundo no tienen un límite nítido: alto, cálido, rápido, casi lleno. Las matemáticas clásicas las manejan mal, porque un elemento o pertenece a un conjunto, o no pertenece. En 1965, Lotfi Zadeh, de la Universidad de California en Berkeley, propuso una solución sencilla: permitir que un elemento pertenezca a un conjunto un poco.
Con esta entrega empieza el módulo de lógica difusa. Continúa las entregas Conjuntos y relaciones y Funciones y aplicaciones.
1. El límite nítido y su problema
Definición — función característica
Un conjunto clásico (nítido) A ⊆ X queda determinado de forma única por su función característica χA : X → {0, 1}, donde χA(x) = 1 para x ∈ A y 0 en otro caso.
Un conjunto nítido es una lista con un sí y un no claros. Digamos que «cálido» es de 25 °C para arriba. Entonces 25 °C es cálido y 24,9 °C no lo es — aunque nadie note la diferencia. Un límite en un único punto es arbitrario, y un pequeño cambio en la entrada provoca un salto en el resultado.
2. Conjunto difuso
Definición — conjunto difuso (Zadeh, 1965)
Un conjunto difuso A sobre el universo X está dado por una función de pertenencia μA : X → [0, 1]. El número μA(x) es el grado de pertenencia del elemento x a A; formalmente, A = {(x, μA(x)) : x ∈ X}.
Un conjunto nítido es el caso particular en que μA solo toma los valores 0 y 1.
En lugar de «pertenece, no pertenece», cada elemento recibe un número de cero a uno: cuánto pertenece al conjunto. 28 °C es «cálido» por completo (1), 25 °C a medias (0,5), 20 °C nada (0). Entre medias, la pertenencia cambia de forma continua — sin ningún salto entre 24,9 y 25.
Lo importante es lo que el grado de pertenencia no es: no es una probabilidad. Que 25 °C sea «cálido» en 0,5 no significa que haya un cincuenta por ciento de probabilidades de que haga calor. La temperatura se conoce con exactitud; lo impreciso es la palabra. La diferencia entre la vaguedad de una palabra y la incertidumbre del azar es el tema de la próxima entrega.
3. Formas de las funciones de pertenencia
Definición — funciones de pertenencia habituales
- Triangular con parámetros a < b < c: crece linealmente de 0 en a a 1 en b y baja a 0 en c.
- Trapezoidal con parámetros a ≤ b ≤ c ≤ d: crece de a a b, entre b y c vale 1, baja hasta d.
- Gaussiana: μ(x) = e−(x − m)2 / 2s2 — una colina suave con centro m y anchura s.
- Sigmoidal: μ(x) = 1 / (1 + e−a(x − c)) — una transición suave de 0 a 1 alrededor del punto c.
La forma se elige según lo que resulte natural y lo que sea fácil de calcular. En la práctica, con diferencia, los que más ganan son los triángulos y los trapecios: bastan unos pocos números, todo el mundo los entiende y los cálculos son rápidos. La forma exacta suele importar menos de lo que parece — lo importante es dónde la función empieza, dónde alcanza su máximo y dónde termina.
μ(x) = max( 0, min( (x − a) / (b − a), (c − x) / (c − b) ) )
- (x − a) / (b − a)
- flanco izquierdo — una recta que vale 0 en a y 1 en b; dividir por la longitud b − a garantiza que el vértice salga exactamente 1, sea cual sea la anchura
- (c − x) / (c − b)
- flanco derecho — en espejo: en b vale 1, en c vale 0
- min
- elige el flanco que en ese momento está más bajo — a la izquierda de b el flanco derecho está por encima de 1, a la derecha de b lo está el izquierdo; así el mínimo «corta» el pico exactamente en b
- max(0, …)
- fuera del intervalo (a; c) los flancos saldrían negativos; pero el grado de pertenencia no puede bajar de 0
trojuhelnik de abajo. Para «cálido» (22, 28, 34) y 25 °C: min(3/6, 9/6) = 0,5.def trojuhelnik(a, b, c):
return lambda x: max(0.0, min((x - a) / (b - a), (c - x) / (c - b)))
def lichobeznik(a, b, c, d):
def mu(x):
if x < a or x > d:
return 0.0
if x < b:
return (x - a) / (b - a)
return 1.0 if x <= c else (d - x) / (d - c)
return mu
teplo = trojuhelnik(22, 28, 34)
print(teplo(25), teplo(28), teplo(31)) # 0.5 1.0 0.5
4. Variable lingüística
Definición — variable lingüística (Zadeh, 1975)
Una variable lingüística es una variable cuyos valores son palabras. Está dada por un nombre (por ejemplo, «temperatura»), un universo X (0–40 °C) y un conjunto de términos (frío, agradable, cálido, caluroso), cada uno de los cuales es un conjunto difuso sobre X.
Las palabras con las que describimos la temperatura se solapan — y eso está bien. 25 °C es un poco «agradable» y un poco «cálido», justo como lo diría una persona.
Nuestra temperatura tiene cuatro términos: frío es un trapecio (0, 0, 6, 14), agradable un trapecio (10, 17, 23, 28), cálido un triángulo (22, 28, 34) y caluroso un trapecio (30, 36, 40, 40). La línea vertical salta entre las temperaturas de ejemplo:
- 12 °C es «frío» en 0,25 y «agradable» en 0,29 — una primavera fresca en la que no hay manera de decidirse.
- 25 °C es «agradable» en 0,6 y «cálido» en 0,5.
- 31 °C es «cálido» en 0,5 y ya también «caluroso» en 0,17.
Ejemplo — pertenencias paso a paso
En cada flanco basta la razón entre «cuánto se ha recorrido ya del flanco» y «cuánto mide el flanco»:
12 °C, frío (0, 0, 6, 14) en el flanco descendente: (14 − 12) / (14 − 6) = 2/8 = 0,25
12 °C, agradable (10, 17, 23, 28) en el flanco ascendente: (12 − 10) / (17 − 10) = 2/7 ≈ 0,29
25 °C, agradable en el flanco descendente: (28 − 25) / (28 − 23) = 3/5 = 0,6
25 °C, cálido (22, 28, 34) en el flanco ascendente: (25 − 22) / (28 − 22) = 3/6 = 0,5
31 °C, cálido en el flanco descendente: (34 − 31) / (34 − 28) = 3/6 = 0,5
31 °C, caluroso (30, 36, 40, 40) en el flanco ascendente: (31 − 30) / (36 − 30) = 1/6 ≈ 0,17
Los demás términos tienen pertenencia 0 en estas temperaturas — la temperatura queda fuera de su soporte.
Fíjate en que las pertenencias de una misma temperatura no tienen por qué sumar 1 (en 25 °C dan 1,1). Los conjuntos difusos no son partes de un todo, sino respuestas independientes a las preguntas «¿hace frío?», «¿es agradable?»…
5. Soporte, núcleo y cortes α
Definición — soporte, núcleo, altura, corte α
- El soporte (support) es {x : μA(x) > 0} — los elementos que pertenecen a A al menos un poco.
- El núcleo (core) es {x : μA(x) = 1} — los elementos que pertenecen por completo.
- La altura es supx μA(x); un conjunto de altura 1 es normal.
- El corte α para α ∈ (0, 1] es el conjunto nítido Aα = {x : μA(x) ≥ α}. Un conjunto difuso es convexo cuando todos sus cortes α son intervalos.
Un corte α es «cuánto queremos exigir». El corte de nivel 0,5 contiene las temperaturas que son agradables al menos a medias. A partir de los cortes α se puede recomponer el conjunto difuso — son las curvas de nivel de la colina. Y gracias a ellos, las matemáticas nítidas también se pueden aplicar a los conjuntos difusos: basta con hacerlas por separado en cada nivel α.
Para «agradable», el soporte es el intervalo abierto (10; 28), el núcleo [17; 23] y el corte α de nivel 0,5 el intervalo [13,5; 25,5]. El conjunto es normal (altura 1) y convexo — como todos nuestros términos. (El supremo sup de la definición de altura es la menor cota superior de los valores; para nuestras funciones continuas en un intervalo cerrado es simplemente el máximo).
Aα = [ a + α (b − a) ; d − α (d − c) ]
- α
- nivel del corte (en la figura, la línea ámbar) — cuánta pertenencia exigimos; cuanto más alto, más hay que alejarse de los bordes, y el corte se estrecha
- a
- borde izquierdo del soporte — desde aquí sube el flanco izquierdo; con α → 0 el corte empieza justo aquí
- (b − a)
- anchura del flanco izquierdo — en él la pertenencia sube de 0 a 1, así que alcanza el nivel α tras recorrer la fracción α de esta anchura
- d
- borde derecho del soporte — desde aquí se mide hacia atrás, hacia la izquierda
- (d − c)
- anchura del flanco derecho — en espejo: desde d recorremos hacia la izquierda la fracción α de esta anchura
Ejemplo — cortes α del término «agradable» (10, 17, 23, 28)
α = 0,5: [10 + 0,5 · 7; 28 − 0,5 · 5] = [13,5; 25,5]
α = 0,8: [10 + 0,8 · 7; 28 − 0,8 · 5] = [15,6; 24]
α = 1: [10 + 7; 28 − 5] = [17; 23] = núcleo
Los cortes encajan unos dentro de otros: cuanto mayor es α, menor es el intervalo, y cada corte superior queda dentro del inferior. El conjunto difuso se recompone como μA(x) = sup {α : x ∈ Aα} — la pertenencia de un punto es el corte más alto en el que todavía cae.
Cuando la función de pertenencia no está dada por una fórmula, sino, por ejemplo, por puntos medidos, el corte α se calcula sobre una malla fina. Exactamente así lo hace el programa que dibuja las figuras de esta entrega:
def alfa_rez(mu, alfa, od=0.0, do=40.0, kroku=4000):
body = [od + i * (do - od) / kroku for i in range(kroku + 1)]
uvnitr = [x for x in body if mu(x) >= alfa]
return (uvnitr[0], uvnitr[-1]) if uvnitr else None # en un conjunto convexo, un intervalo
prijemne = lichobeznik(10, 17, 23, 28)
print(alfa_rez(prijemne, 0.5)) # (13.5, 25.5)
6. Complemento, intersección y unión
Definición — operaciones de Zadeh
μ¬A(x) = 1 − μA(x), μA ∩ B(x) = min(μA(x), μB(x)), μA ∪ B(x) = max(μA(x), μB(x)).
Para conjuntos nítidos, estas fórmulas dan exactamente el complemento, la intersección y la unión clásicos.
«Agradable y a la vez cálido» es tan verdadero como la más débil de sus dos partes; «agradable o cálido», tanto como la más fuerte. Una cadena es tan fuerte como su eslabón más débil, y cuando basta con una de dos cosas, decide la mejor.
A 25 °C, «agradable y cálido» vale 0,5 y «agradable o cálido» 0,6. La intersección alcanza como máximo 0,545 hacia los 25,3 °C, donde las dos curvas se cruzan — ninguna temperatura es ambas cosas por completo.
μP ∩ T(x) = min( μP(x), μT(x) )
- μP(x)
- cuánto es la temperatura x «agradable» (en la figura, la curva verde)
- μT(x)
- cuánto es «cálida» (la curva ámbar) — las dos pertenencias se calculan de forma independiente, cada una con su función
- min
- «y a la vez» puede ser como mucho tan verdadero como la parte más débil — si fuera más, afirmaríamos de la temperatura más de lo que soporta una de las dos palabras; y para los valores 0 y 1, min da exactamente el «y» clásico
Ejemplo — dónde es máxima la intersección
Entre 23 y 28 °C, agradable baja y cálido sube, así que el mínimo es máximo donde se cortan las curvas:
(28 − x) / 5 = (x − 22) / 6
6 (28 − x) = 5 (x − 22) ⇒ 168 − 6x = 5x − 110 ⇒ x = 278/11 ≈ 25,27 °C
μ = (28 − 278/11) / 5 = 6/11 ≈ 0,545
A la izquierda del punto de corte, cálido es menor; a la derecha, agradable — allí el mínimo siempre baja.
Aquí los conjuntos difusos se diferencian de los clásicos en algo fundamental. Cumplen casi todas las reglas conocidas — conmutatividad, asociatividad, leyes de De Morgan —, pero no la ley del tercero excluido. La intersección A ∩ ¬A no tiene por qué ser vacía: «agradable y a la vez no agradable» vale 0,5 a 13,5 °C. Para palabras imprecisas es lo correcto — de una temperatura que es agradable a medias se puede decir a la vez, a medias, que no es agradable. Otras formas de intersección y unión (las llamadas t-normas) llegarán en la entrega sobre lógica difusa.
Teorema — las leyes de De Morgan se cumplen, el tercero excluido no
Para conjuntos difusos cualesquiera A, B sobre X y todo x ∈ X, con las operaciones de Zadeh se cumple
- ¬(A ∩ B) = ¬A ∪ ¬B y ¬(A ∪ B) = ¬A ∩ ¬B,
- μA ∩ ¬A(x) ≤ ½ y μA ∪ ¬A(x) ≥ ½, con igualdad si y solo si μA(x) = ½.
Demostración. (1) Sean p = μA(x), q = μB(x) y, sin pérdida de generalidad, p ≤ q. Entonces 1 − min(p, q) = 1 − p, y como 1 − p ≥ 1 − q, también max(1 − p, 1 − q) = 1 − p. La segunda ley, igual, con min y max intercambiados.
(2) Los números p y 1 − p suman 1, así que el menor de ellos es como mucho ½ y el mayor al menos ½. ∎
La ley clásica del tercero excluido exige A ∪ ¬A = X, es decir, el valor 1 en todas partes. En un conjunto difuso solo se cumple donde μA vale 0 o 1; lo peor ocurre en los puntos con pertenencia ½ — para «agradable», a 13,5 y 25,5 °C, donde A ∩ ¬A y A ∪ ¬A valen ambos 0,5.
Comprobación con números: a 25 °C, ¬(P ∩ T) = 1 − min(0,6; 0,5) = 0,5 y ¬P ∪ ¬T = max(0,4; 0,5) = 0,5.
7. Muy cálido, algo cálido
Definición — modificadores lingüísticos (Zadeh, 1972)
Concentración («muy»): μmuy A(x) = μA(x)2. Dilatación («algo», «más o menos»): μalgo A(x) = √μA(x).
Elevar al cuadrado un número entre 0 y 1 lo hace más pequeño — y tanto más cuanto más pequeño es: 0,5 pasa a 0,25, pero 1 sigue siendo 1. Por eso «muy cálido» es más estrecho y más exigente que «cálido». La raíz cuadrada, en cambio, ensancha el conjunto: 25 °C es «cálido» en 0,5, «algo cálido» en 0,71 y «muy cálido» solo en 0,25.
Definición — inclusión de conjuntos difusos
Un conjunto difuso A es subconjunto de B (A ⊆ B) cuando μA(x) ≤ μB(x) para todo x ∈ X. Para conjuntos nítidos es la inclusión habitual: donde χA = 1, también tiene que ser χB = 1.
μ(x)2 ≤ μ(x) ≤ √μ(x) para μ(x) ∈ [0, 1]
- μ2
- «muy» (la curva roja) — multiplicar por un número que es como mucho 1 nunca agranda, así que el cuadrado queda por debajo de la curva original; quita más en los valores intermedios y deja el cero y el uno
- μ
- «cálido» sin más (la curva ámbar) — el término de partida, al que los modificadores solo cambian la forma; ni el soporte ni el núcleo cambian
- √μ
- «algo» (la curva violeta) — la raíz cuadrada es la inversa del cuadrado, así que levanta lo que el cuadrado aplasta: √0,25 = 0,5
Ejemplo — cuánto estrecha «muy» y cuánto ensancha «algo»
El corte α de nivel 0,5 para «cálido» (22, 28, 34) es [25; 31]. Para los términos modificados basta con traducir el nivel de vuelta a la μ original:
muy cálido: μ² ≥ 0,5 ⇔ μ ≥ √0,5 ≈ 0,707 → [22 + 0,707 · 6; 34 − 0,707 · 6] ≈ [26,24; 29,76]
algo cálido: √μ ≥ 0,5 ⇔ μ ≥ 0,25 → [22 + 0,25 · 6; 34 − 0,25 · 6] = [23,5; 32,5]
El intervalo «al menos a medias» mide 6 °C para cálido, unos 3,5 °C para muy cálido y 9 °C para algo cálido.
8. Los conjuntos difusos en la práctica
- Control difuso. El metro de la ciudad japonesa de Sendai funciona desde 1987 con un controlador difuso que arranca y frena con más suavidad que una persona. Hacia 1990 llegó en Japón una oleada de lavadoras, cámaras y aires acondicionados difusos. Cómo funciona un controlador así lo explica la entrega sobre control difuso.
- Procesamiento de imágenes y agrupamiento. Un píxel en la frontera entre dos regiones puede pertenecer un poco a ambas; el agrupamiento difuso asigna los puntos a varios clusters a la vez.
- Aprendizaje automático. Las salidas suaves de los clasificadores o la técnica label smoothing (en lugar de un «es un gato» seguro, el objetivo «gato en 0,9») no son conjuntos difusos en el sentido de Zadeh, pero comparten con ellos la idea de que la pertenencia a una clase no tiene por qué ser solo 0 o 1.
- Lenguaje. Los modelos de lenguaje trabajan a diario con palabras como «bastante», «casi» o «más bien no». Los conjuntos difusos son una de las pocas herramientas que dan a esas palabras un significado preciso y comprobable.
9. Resumen
- Un conjunto difuso asigna a cada elemento un grado de pertenencia del intervalo [0, 1]; un conjunto nítido es el caso particular con valores 0 y 1.
- Las funciones de pertenencia suelen tener forma de triángulo, trapecio, colina gaussiana o sigmoide.
- Una variable lingüística tiene palabras como valores — términos que pueden solaparse; 25 °C es «agradable» en 0,6 y «cálido» en 0,5.
- El soporte, el núcleo y los cortes α describen la forma de un conjunto difuso mediante conjuntos nítidos.
- El complemento es 1 − μ, la intersección el mínimo y la unión el máximo; no se cumple la ley del tercero excluido. El modificador «muy» es μ², «algo» √μ.
¿Quieres probarlo por tu cuenta? Pide a un agente de IA que dibuje funciones de pertenencia para las palabras con las que describes tu día — «pronto», «tarde», «mucho rato» — y pregunta a unas cuantas personas dónde pondrían ellas el límite.
¿Lo ves de otra manera? Escribe a support@coden-app.com.