Cómo decide una computadora (y en qué se parece a como decides tú)
Todo el tiempo estamos decidiendo. Cruzar o no cruzar la calle. Por cuál ruta manejar. Por qué candidato votar. Si comprar algo, si contratar un servicio, si vender. Casarse. Dejar de tomar. La mayoría de esas decisiones las tomamos sin darnos cuenta de que estamos tomando una decisión, y casi ninguna la tomamos con la información completa.
La pregunta con la que empecé este podcast fue si una computadora puede hacer eso mismo. La respuesta corta es que sí, y que el mecanismo es más simple de lo que parece. La respuesta larga es este texto.
Qué es una decisión
El diccionario la define como determinación o resolución que se toma en una cosa dudosa. Es hacer o dejar de hacer. Es elegir entre varias opciones.
Lo interesante no es la definición sino lo que la modifica. Nuestros objetivos: qué queremos lograr con esa decisión. Las opciones disponibles, que casi nunca son todas las que existen sino todas las que se nos ocurren. Las consecuencias, positivas y negativas. Las normas: leyes, convenciones, acuerdos de grupo. En una entrevista de trabajo o en una cena importante vas a comer con cubiertos y no con las manos, y esa decisión no la tomaste tú, la tomó la convención.
Después están los principios, que son las normas que sí decidiste. Y la experiencia: si un platillo te gustó, la próxima vez que lo veas en el menú es más probable que lo pidas que uno que no conoces; si te cayó mal, lo vas a evitar durante años.
Y está lo que más me llama la atención: las expectativas. Si esperas mucho de un resultado, tiendes a tomar decisiones más arriesgadas aunque el escenario favorable sea menos probable, sólo porque te acerca a algo que deseas. Si esperas poco, no te arriesgas lo suficiente. Ninguna de las dos es buena ni mala por sí sola, pero conviene saber que ahí está, porque no aparece en ninguna lista de pros y contras.
Decisiones con riesgo
Hay decisiones donde no conoces el futuro pero sí conoces las probabilidades. Ahí la recomendación de siempre es hacer una lista de pros y contras, y funciona bien en los casos simples. El problema es que es subjetiva, y que cuando hay demasiada información la lista nunca queda completa.
En matemáticas eso mismo tiene un nombre: utilidad esperada, o valor estimado. Es una suma ponderada, donde cada resultado posible pesa según qué tan probable es. En vez de "esto me parece buena idea", tienes un número.
El póker es el ejemplo más claro que se me ocurre. Conoces la apuesta, conoces las cartas que faltan, puedes calcular qué tan probable es ganar y compararlo con lo que estás arriesgando. La decisión sigue sin garantizarte nada, pero deja de ser una corazonada.
Cuando el problema es más complejo se usan heurísticas. Una heurística es, más o menos, un truco: una forma sencilla de aproximar el futuro sin calcularlo. Lo difícil no es usarla, lo difícil es encontrar una que sea fidedigna.
Decisiones con incertidumbre
Y luego están las decisiones donde no puedes predecir nada. Ni las probabilidades conoces. Demasiados datos, demasiadas opciones, muy poco tiempo. Éstas son las difíciles, y lo son igual para una persona que para una máquina.
La salida más honesta es decidir con los recursos que tienes en ese momento, sin pretender abarcar el problema completo, porque no es posible. Eso lo hacemos las personas todo el tiempo, y hay un algoritmo que hace exactamente lo mismo: se llama Montecarlo, y le dediqué su propio texto, porque explica algo que probablemente ya notaste en el ajedrez de tu teléfono sin saber por qué.
La otra salida es tener muchísimos datos, pero eso sólo está al alcance de empresas enormes. Decidir si conviene comprar dólares depende de la situación política y de la economía de varios países a la vez, y eso no se analiza con intuición.
Y hay dos recursos que siguen siendo exclusivamente nuestros. Uno es el consejo: cuando el problema es demasiado grande para una sola cabeza, compartirlo con alguien que tiene experiencias distintas te da una perspectiva que tú no ibas a alcanzar solo. El otro es el factor emocional. A veces decidimos por cómo nos sentimos en ese momento y no por la consecuencia. Cuando grabé este episodio dije que ninguna computadora había logrado imitarlo con precisión; sigue pareciéndome más difícil de lo que suena.
El condicional
Aquí es donde entra la parte de la computadora, y es casi decepcionante de lo simple que es.
Un condicional es una decisión binaria sobre una condición. Si el semáforo está en verde, cruzamos la calle; de lo contrario, nos detenemos. La condición puede ser cierta o falsa, y cada caso tiene su acción. Eso es todo. El if / else existe prácticamente en cualquier lenguaje de programación —Python, C, JavaScript— y es una de las estructuras más básicas que hay.
Lo que lo vuelve poderoso es anidarlo. Encadena condicionales y tienes un árbol de decisión, que crece muchísimo más rápido de lo que uno espera y que puede llegar a describir problemas tan complicados como quieras: si conviene o no invertir en una acción o en una divisa, por ejemplo, donde las variables son el tipo de cambio, la expectativa al alza o a la baja, la relación con otras monedas, las decisiones de la gente que dirige esas empresas. Y varias de esas variables ni siquiera son de sí o no, son estructuras con más opciones adentro.
Un árbol de decisión puede ser tan simple como una sola pregunta o tan complejo como el problema lo pida.
Lo que sí y lo que no
Una computadora reproduce bastante bien el esqueleto de una decisión: condiciones, umbrales, ramas, consecuencias. Lo hace más rápido que nosotros y sin cansarse. Lo que no reproduce es todo lo que rodea a la decisión: los objetivos que ni tú sabías que tenías, la experiencia que te hizo evitar ese platillo, la expectativa que te empujó a arriesgarte de más.
Esas partes las sigues poniendo tú. Y por eso, cuando un sistema automático decide algo que nos parece mal, el error casi nunca está en el condicional.
Este texto sale del episodio 001 del Podcast Algoritmos.