Sabemos que un algoritmo es una serie de pasos que se ejecutan para la consecución de un objetivo, podemos diseñar algoritmos para la resolución de problemas, un ejemplo fácil de asociar puede ser el diseñar un algoritmo para que un robot recorra una cierta distancia. Supongamos que el robot cuenta con ruedas, para determinar la distancia a recorrer podemos hacer una serie de cálculos, como la cantidad de vueltas de las llantas necesarias para alcanzar la distancia, combinaciones posibles para alcanzar la dirección deseada, si esta no es en línea recta, determinar los giros del volante necesarios para alcanzar el objetivo, incluso se pueden reducir a funciones matemáticas, como vectores (para determinar la dirección) o en base al diámetro de las ruedas determinar la circunferencia y la distancia lineal que recorre la llanta por cada giro. Aceptaríamos de buena gana que esta clase de operaciones pueden “computar” los robots ya que como vimos anteriormente, podemos determinar muy claramente sus estados (por ejemplo, la posición del volante en determinado momento, o el número de vueltas de las llantas ejecutadas o faltantes), y sus funciones (para girar el volante, calcular las distancias y giros, accionar y detener las llantas), no solo las aceptamos a nivel conceptual sino que hemos visto robots de juguete que hacen estas funciones con una programación muy sencilla.
Computabilidad se refiere a determinar si ciertos problemas pueden ser resueltos mediante el acto de computar y si existe una máquina que sea capaz de realizar la acción requerida, entendiendo por máquina no necesariamente algo físico, sino más bien el conjunto que constituye un autómata.
Ahora hagamos un ejercicio mental para poner a prueba la computabilidad, usemos un ejemplo no tan obvio. Supongamos que quiero decidir si debo tomar el subterráneo o no. Se pueden usar varios criterios: si está muy atestado o dependiendo del destino y la hora, si hay alternativas y qué tan buenas son. Desarrollemos el criterio de si el subterráneo está atestado.
Calcular la cantidad de personas dentro de los vagones no necesariamente es un método cuantitativo, aunque bien puede hacerse, no es óptimo contar exactamente las personas, lo que hacemos normalmente es medir qué tanta distancia hay entre ellas. Primero se distingue entre las personas sentadas y paradas, si sólo hay personas sentadas hay espacio suficiente y no es necesario calcular la distancia entre ellas, si no, la distancia entre personas es también una medida cualitativa y depende de un criterio. Para distinguir las personas del mobiliario por ejemplo, hacemos un “reconocimiento” de las figuras, las personas se diferencían de los asientos o de los asideros por varias características, y las personas comparten una muy buena cantidad de propiedades. Sabemos que es una persona porque tiene ciertas características comunes, podemos reconocer la figura aunque le falte una o varias de esas características (la constitución física de la persona, el género, el tipo de ropa). La distancia entre las personas se puede calcular mediante contraste de las figuras, qué tanto se traslapan y se separan entre sí y contra el contexto. La experiencia nos dice si se trata de una persona y la distancia aproximada entre ellas. La visión artificial puede hacer esto.
La visión artificial tiene la capacidad de obtener imágenes mediante una cámara y compararlas contra una cúmulo de imágenes procesadas de donde ya se realizó “aprendizaje”. Se le alimenta a la máquina una serie de imágenes de “entrenamiento” donde se le “enseña” cómo se ven una serie de personas de todos tipos, entre más ejemplos, más capaz de decisión tendrá. Las imágenes son “analizadas”, y mediante una serie de algoritmos se extraen las características de las imágenes, por ejemplo, hay un algoritmo especializado en detectar bordes, de modo que de la imagen analizada se pueda distinguir la figura de interés, luego esas figuras recortadas se les compara mediante otro algoritmo especializado contra las imágenes de ejemplo y determina las variaciones en términos estadísticos, qué tan probable es que las imágenes comparadas sean iguales, si la coincidencia es muy alta, es una persona, de este modo se puede distinguir una figura determinada en una imagen computarizada. Para determinar la distancia entre las personas, hay otro algoritmo para medir distancias de acuerdo a determinado criterio, puede ser por un posicionamiento espacial y usando un vector obtener la distancia, nuevamente, por estadística, se pueden comparar los resultados contra ejemplos previos enseñados a la máquina.
Tal vez podrías pensar que deliberadamente elegí un criterio fácil de ejemplificar. Usemos otro no tan obvio: evaluar otras alternativas a viajar en el subterráneo. Actualmente existen muchos datos para apoyar la decisión, el estado del tráfico en tiempo real, los mapas de transporte de la ciudad (incluso sin ser nativo) o nuestra propia experiencia, sí bien, el análisis no depende únicamente de datos sino también de elementos complejos, una serie de criterios que pueden o no estar relacionados y que la cadena de éstos produzcan alternativas diferentes, en teoría de computación se conoce como grafos. Una serie de estados relacionados que pueden estarlo de modo “anárquico”, es decir, sin un orden estricto del tipo si pasa esto, entonces esto otro, lo cual puede producir un espagueti de decisiones tan complejo como queramos. Pues bien, la determinación de qué caminos seguir en un grafo también se puede hacer con matemáticas, estadística más específicamente, agregar ponderaciones a los caminos entre estados y producir resultados diferentes con la misma red, agregar criterios como el camino más corto entre un estado y otro, etc.
Pasamos entonces de un ejemplo general al uso de matemáticas (estadística, álgebra lineal y cálculo diferencial) para resolver un problema al azar. Faltan otras cuestiones, que si bien son complejas, usan el mismo principio que nosotros mismos usamos en nuestro día a día, es decir, la resolución de problemas mediante cómputo depende más bien de la complejidad de la máquina que los absorba. El proceso mediante el cual los resuelve es muy parecido a como nosotros mismos lo hacemos, entonces…
¿Las máquinas piensan?
Las máquinas fueron hechas siguiendo nuestro propio modelo, es obvio pensar que el proceso se parece bastante, ¿qué otro modelo conocemos en el cual podemos basarnos si no es en el propio?
Vimos que acciones como aprender, memorizar, decidir, ponderar, ver, diferenciar, conocer, etc. son computables y sólo dependen de que la complejidad de la máquina sea correspondiente, aún se escapan conceptos como conciencia, sentimiento, intención.
Watson es un programa desarrollado por IBM que ha podido derrotar a los campeones de Jeopardy. Este desafío involucra muchas habilidades: escuchar, entender, analizar, contestar las preguntas mediante el uso del lenguaje natural. Aunque podamos argumentar que Watson carece de intencionalidad, como Ray Kurzweil plantea ¿Podemos decir que no piensa?
Para computar cuestiones como la conciencia primero hay que entender cómo funciona en nosotros mismos a lo que la filosofía ha dado distintas respuestas y no hay un consenso aún. Parece que la empresa es titánica pero como dice Antonio Damasio, solemos ver la mente de una manera compleja, y aunque sin duda lo es, le asignamos propiedades que parecieran no tener un anclaje físico, como si por ser nuestra, tuviera un halo de misterio insondable.
Bibliografía:
Kurzweil, Ray (2012), How to Create a Mind: The Secret of Human Thought Revealed, New York: Viking Books