Por qué el pingüino rompe tu definición de "ave"
Define "ave".
No con taxonomía —familia, especie, orden—, porque eso es delegar la pregunta. Defínelo con propiedades, como se lo tendrías que explicar a algo que nunca ha visto una.
Primer intento
"Un ave es un animal que vuela."
Y ahí se cae el edificio. El pingüino no vuela. La avestruz tampoco. Y las dos son aves.
Peor: hay animales que vuelan y no son aves, y otros que planean, que también entran a estorbar. La primera aproximación no es sólo imprecisa, es incorrecta en las dos direcciones: deja fuera cosas que sí y mete cosas que no.
Los siguientes intentos
"Tiene alas." Mejor. Deja pasar murciélagos e insectos.
"Tiene pico." Se puede complicar con animales que no son aves y con la definición misma de pico.
"Tiene ciertos colores, cierta altura, cierta extensión." Ninguna de éstas define nada por sí sola.
Y aquí está lo incómodo del ejercicio: tú sabes perfectamente qué es un ave. Lo reconoces en una foto en menos de un segundo, sin dudarlo, incluyendo pingüinos. Lo que no puedes es escribir la regla.
Lo que hacen los algoritmos
Precisamente porque la regla no se puede escribir, se cambió el enfoque: en vez de darle la definición al sistema, se le dan ejemplos. Imágenes de aves, datos sobre aves, y ejemplos de lo que no lo es.
A partir de ahí el sistema construye su propia versión del concepto. La describe en términos booleanos, esos de sí y no: ¿tiene alas? sí/no. Y arma combinaciones que clasifican correctamente a la mayoría con pocos errores. La primera aproximación no es la ideal, pero funciona bastante bien.
El problema que aparece después
Y aquí viene la parte que a mí me parece la interesante, porque no es la que uno espera.
Entre más datos tienes, más grande se vuelve la definición. El sistema va agregando condiciones para cubrir los casos raros, luego condiciones para los casos raros de los casos raros, y la definición crece.
Hasta que se vuelve inútil. No incorrecta: inútil. Por dos razones distintas:
Por el número de operaciones. Comprobar la definición cuesta demasiado.
Por la cantidad de datos que exige. Si tu definición depende de treinta propiedades, entonces para clasificar cualquier objeto nuevo necesitas medirle treinta propiedades. Y muchas veces no las tienes.
Una definición perfecta que no puedes aplicar no sirve de nada. Ahí es donde vuelve a hacer falta simplificar, y donde existen métodos para reducir una definición booleana a su mínimo.
Lo que aprendí de este ejemplo
Que la dificultad no está donde uno cree. No está en encontrar una definición: está en encontrar una que sea a la vez suficientemente correcta y suficientemente barata.
Y que casi todo lo que sabemos con certeza es de este tipo: lo reconocemos sin poder decirlo. Escribirlo es un trabajo distinto y mucho más duro que saberlo.
Este texto sale del episodio 004 del Podcast Algoritmos, sobre simplificar.