Qué es realmente una caja negra
"Caja negra" es de esos términos que se usan como si fueran una acusación. Encontré un artículo que describía a los algoritmos como injustos precisamente por eso: por ser cajas negras, a diferencia —según el argumento— de los sistemas humanos, que serían reflexionados y mejor pensados.
Vale la pena aclarar qué es una caja negra, porque no significa lo que ahí se estaba dando por hecho.
Una caja negra tiene dueño
Una caja negra es una función oculta para el usuario. Entran ciertos datos, salen otros, y en medio el usuario no sabe qué ocurrió.
Eso no quiere decir que nadie lo sepa. Quiere decir que el usuario no lo sabe.
El ejemplo más cotidiano es un filtro de Instagram. La entrada es tu foto original; la salida es la foto con otro aspecto. Tú no tienes idea de qué operaciones se hicieron para corregir el contraste, las sombras, los brillos, el color y los tintes. Pero alguien sí: el desarrollador tuvo que investigar y construir cada una de esas operaciones, porque si no, ¿cómo lo hizo?
Casi todo el software que usas es una caja negra en este sentido. Tu coche también. El sistema de contabilidad de tu banco también. No es una propiedad siniestra, es lo normal.
Dónde sí lo es para el desarrollador
Hay un caso distinto y más interesante: el deep learning y el aprendizaje por reforzamiento.
Ahí los parámetros internos —ciertos números, ciertas multiplicaciones— cambian según la base de datos y según el uso. En el estado inicial el desarrollador sabe exactamente qué está pasando. Después de cierto entrenamiento ya no puede: son demasiadas operaciones, demasiados números, y no hay forma práctica de llevar un seguimiento manual.
Pero hay que ser preciso con lo que se desconoce. Se desconoce el estado del sistema, no su funcionamiento.
El algoritmo es exactamente el mismo cada vez. Entrena de la misma forma, produce sus resultados de la misma forma. Que dé resultados distintos no es misterio: es que la entrada es distinta. Es lo mismo que con el filtro de Instagram: si pones otra foto, sale otra cosa, y a nadie le parece inquietante.
Por qué la distinción no es un tecnicismo
Confundir "no sé qué números tiene adentro" con "nadie sabe cómo funciona" lleva a dos errores opuestos y ambos caros.
El primero es tratar al sistema como si fuera incomprensible, y por lo tanto no auditable, no corregible y no responsabilizable. Si el funcionamiento se conoce, se puede revisar el algoritmo, revisar los datos con los que se entrenó y revisar para qué se está usando.
El segundo es el contrario: dar por hecho que como el funcionamiento se conoce, el resultado está justificado. No lo está. Que sepas exactamente cómo se entrenó un sistema no te dice nada sobre si los datos con los que se entrenó eran los adecuados.
Y de ahí el punto que a mí me parece el importante: "justicia" no es una propiedad aplicable a un proceso determinado por estadística o por ecuaciones. Lo aplicable es la responsabilidad, y la responsabilidad tiene nombre y apellido.
Este texto sale del episodio 002 del Podcast Algoritmos, sobre ordenar y los criterios.