Inteligencia Artificial

9 de abril de 2021 de

La Inteligencia Artificial, (AI – Artificial Intelligence), es una técnica que se suele usar mucho en aplicaciones de robótica. ¿Y qué es un vehículo autónomo sino una aplicación de robótica?

Hay mucha confusión acerca de qué es la Inteligencia Artificial, cómo se puede usar y los problemas que puede solucionar. No es una solución universal a todos los problemas, como muchos se empeñan en hacernos creer, pero es una herramienta que bien utilizada es básica para la implementación a problemas de solución compleja, como la conducción autónoma.

¿Qué es la Inteligencia Artificial?

En primer lugar, me gustaría aclarar una confusión que es bastante habitual. Y es el citar “Inteligencia Artificial” como sinónimo de “Deep Learning” o “Machine Learning”. Y no siempre es así.

Fig 1: Deep Learning como una parte de Artificial Intelligence

Artificial Intelligence (AI) es la forma de incorporar inteligencia humana a las máquinas. Hay múltiples definiciones, no todas claras

  • Una rama de la ingeniería que trata de simular comportamientos inteligentes en las máquinas
  • La capacidad de algunas máquinas de imitar el comportamiento humano
  • Una máquina o sistema de máquinas capaz de realizar tareas que normalmente requieren de inteligencia humana (reconocer objetos, reconocimiento de voz, traducciones automáticas…)

La AI puede adoptar múltiples formas. Desde un conjunto de instrucciones “if – then” (“si – entonces”; GOFAI – Good Old Fashioned AI) a algo más flexible… como Machine Learning (ML). Y es que no toda la AI es ML. En cambio, sí que toda la ML es AI.

Machine Learning (ML) es la capacidad de un componente o sistema de componentes de aprender en base a la experiencia. En muchos casos, en base a los datos a los que están expuestos. Los componentes basados en ML no se introducen directamente con una programación clásica en la maquina (If – then). Los componentes son capaces de modificarse en base a un aprendizaje, a la experiencia. Esto es importante: no son componentes de software que, por ejemplo, viven en una centralita y de un día para otro se modifican. Hablamos de componentes que pueden modificarse con miles, millones de datos offline y después, una vez validados, se pueden implementar en una centralita.

¿Cómo se consigue esto? Pues sobre todo con mucho entrenamiento. Se trata de maximizar un resultado (por ejemplo, “número de vehículos correctamente identificados en una imagen”). Para ello, se muestran una serie de secuencias con los resultados ya conocidos, y se le “enseña” al algoritmo a determinar que “eso” que ve ahí es un coche.

¿Habéis visto alguna vez esos sistemas de identificación “I am not a robot” en algunas paginas web? Pues se usa para eso mismo. Es una manera de entrenar algoritmos ML, y nosotros somos los que etiquetamos las imágenes correctas.

Fig 2: Muchos nos hemos encontrado esta imagen. Se usa para etiquetar secuencias con “la verdad verdadera”, o “ground truth”. Y sí, trabajas gratis.

Veamos cómo funciona con datos de entrada, hecho esto mediante un sencillo ejemplo: Supongamos que queremos determinar qué tipo de fruta estamos palpando en una bolsa opaca. Nuestro conocimiento es limitado, y solo tenemos esta experiencia previa:

Peso (gramos) Textura Tipo de Fruta
155 Rugosa Naranja
180 Rugosa Naranja
135 Suave Manzana
110 Suave Manzana

Si de repente metemos la mano en una bolsa que hemos pesado previamente en 120 gramos, y encontramos una textura suave, todo nos indicará que es una manzana, ¿verdad? Todo parece indicar que así será, basado en lo que sabemos. El sistema (nosotros) tiene como datos de entrada que una fruta de entre 155 y 180 g y de textura rugosa es posible que sea una naranja. También, que una de entre 110 y 135 g y textura suave es una manzana. Así, ¿qué puede ser una de 120 g y suave? Una manzana, en base a los datos que tiene.

Pero podría ser un melocotón. Simplemente, no tenemos esa información en nuestra base de datos. Es evidente que cuantos más datos de entrada se introduzcan, cuantas más “secuencias”, más “inteligente” será el sistema.

Hay que aclarar, llegado a este punto, que Machine Learning” (ML) es una parte de “Artificial Intelligence” (AI). Y “Deep Learning” (DL) una forma de hacer ML.

Deep Learning (DL) es una forma más de hacer ML. Algunos lo ven como una evolución, realizada imitando el proceso de pensamiento humano. Habitualmente, cuando se habla de DL se habla de DNNs (Deep Neural Networks) o Deep Reinforcement Learning.

Cuando se habla de “Deep” –profundo– se hace porque existen diversas capas de aprendizaje basadas en características específicas. Este gráfico lo representa muy bien:

Fig 3: DNN comparada con una red neuronal mas sencilla

Volviendo al ejemplo de las frutas anteriores, un sistema de Deep Learning podría ser algo así:

Peso (gramos) Textura Forma Color Piel Tipo de Fruta
155 Rugosa Redonda Naranja Media Naranja
180 Rugosa Redonda Naranja Media Naranja
135 Suave Redonda Verde Fina Manzana
110 Suave Redonda Rojo Fina Manzana
150 Suave Alargada Amarillo Gruesa Plátano
160 Suave Alargada Amarillo Gruesa Plátano
500 Suave Redonda Verde Gruesa Sandia

DL es un mecanismo muy eficaz para mejorar el rendimiento de un sistema concreto –por ejemplo, reconocimiento de imágenes. Pero para ello necesita cantidades ingentes de datos, previamente validados–.

Veamos un ejemplo típico de automoción:

Fig 4: Etiquetado en una secuencia urbana: se clasifican objetos, pero tambien espacio libre, lieas de carril, etc

El sistema tendrá como principal objetivo, siguiendo el ejemplo, determinar qué objetos relacionados hay en la imagen. Cuantas más imágenes (o secuencias) se tengan para el aprendizaje, mejor.

AI en automoción

AI / ML está presente en automoción desde hace mucho tiempo. En lo que a reconocimiento de imágenes se refiere, desde los primeros sistemas de detección de vehículos / peatones. De esto hace ya más de 15 años desde la primera comercialización en serie. Nadie ha inventado nada últimamente.

En los 80, todo era “TURBO”. Incluso había aspiradores con “TURBO” escrito en ellos. Pues hoy todo usa AI. Incluso cepillos de dientes. Sin embargo, últimamente, los grandes avances en computación hacen que más y más procesos se puedan resolver con ML, algo que anteriormente no era viable. De ahí el gran avance que hemos visto en los últimos tiempos –y por qué no, el hype–.

Un sistema de ML es fantástico para resolver elementos complejos de entrada. Si asumimos (simplificando mucho) un sistema de conducción autónoma como “Sense – Plan – Act” (percibir el entorno, planificar acciones y ejecutar dichas acciones), ML es fantástico ayudando a detectar el entorno y ayudando a determinar posibles rutas (“path planners”). Pero no es una varita mágica que todo lo soluciona.

Existe una creencia generalizada a citar AI / ML / DL (de forma totalmente aleatoria, no creo que muchos conozcan las diferencias) como lo que nos va a llevar a la conducción autónoma. Y la respuesta es que va a ayudar, pero no es un elemento que nos va a permitir ir de A a B durmiendo por sí mismo.

En resumen: el problema de la conducción autónoma NO se soluciona solo aplicando AI. Y no, tampoco va a sustituir a los sensores necesarios para obtener la redundancia requerida.

Los problemas a los que nos enfrentaríamos usando un sistema de ML como único elemento de análisis / decisión en un sistema de conducción autónoma son los siguientes:

  • Sigue siendo un sistema que depende de los elementos de entrada. Si estos son escasos / flojos, el software no lo puede compensar.
  • Es totalmente dependiente de los datos que se obtienen y del correcto etiquetado de los mismos – ¡el Sistema tiene que aprender de algo que sea válido! En referencia a esto, se ha generado una industria multimillonaria para etiquetar estos datos. Hay empresas que tienen a más de 2.000 personas haciendo este –ingrato– trabajo. Otras tienen casi 1.000 en países de bajo coste como Sri Lanka. Y hay muchas start up’s que ofrecen trabajos de crowd sourcing. Incluso hay muchos ejemplos de secuencias ya etiquetadas que se ofrecen libres de coste, pero habitualmente para trabajos educativos o de investigación y nunca comerciales.
  • Necesita mucha capacidad de proceso, Systems on a Chip (SoC) muy potentes ya que suele necesitar muchos recursos para poder ser ejecutado de manera eficaz. Llámense GPUs o cualquier otro SoC.
Fig 5: Ejemplo de la capacidad de procesado que se precisó en algunas de las aplicaciones de inteligencia artificial
  • El factor más complejo de todos, el más limitador: nadie sabe cómo validar DNNs. Nadie. Porque resulta que vivimos en un mundo infinito, no es posible validar cómo va a funcionar el sistema expuesto a un elemento que no se ha probado antes. Aquí siempre me gusta usar el caso de uso de Google (Waymo) y el pato. Resulta que uno de los vehículos autónomos de Google se encontró con este escenario.
Fig 6: Google, el pato y la señora en silla de ruedas

Dicho caso de uso resultó ser una señora en una silla de ruedas persiguiendo a un PATO por la calle.  ¿Alguien me explica cómo se tienen datos previos de una situación parecida? ¿Qué ingeniero es capaz de pensar en este caso de uso?

La respuesta es: no, no es posible. Y como este habrá miles y miles de casos de uso que sí, serán improbables, pero no imposibles. Y un sistema de conducción autónoma ha de tener en cuenta lo inesperado.

Un sistema de ML puede reaccionar como esperamos, no cabe duda. Pero no sabremos el porqué. Es como ser el copiloto de un mono atiborrado de anfetaminas: el mono podrá conducir por el centro del carril de forma precisa y como el mejor conductor profesional, pero no sabes porqué ni si en los próximos 30 segundos va a intentar matarte. A esto sumémosle que algunas imágenes (por seguir con el procesado de imagen, que quizá es la aplicación más típica) pueden tener algún tipo de contaminación que las hace susceptible de ser malinterpretadas por el sistema de ML. A esta contaminación – que puede ser parte de un ataque – se le llama “adversarial attack”.

Fig 7: Añadiendo ruido a una imagen, lo que se reconocería como un panda pasa a ser un gibón para la DNN

El futuro de AI en automoción

Visto lo visto, no habrá nadie que piense que un sistema de conducción autónoma “end to end” (es decir, desde la entrada de datos hasta la actuación) pueda realizarse solo con AI / ML. O al menos, eso espero.

Como he comentado anteriormente, un sistema de conducción autónoma, de forma MUY simplificada, consta de una capa de percepción, otra de planificación y otra de actuación. Sería de locos pensar que ML puede dar soporte a todas las capas. Se suele emplear mucho para la parte de percepción, incluso se está introduciendo más y más en planificación. Pero tener un sistema end to end basado en ML / DL no es aceptable debido a:

  1. No se podría validar
  2. Correríamos el riesgo de salidas no esperadas a entradas no consideradas.

La tendencia es por lo tanto a encapsular las capas de AI / ML en una capa de algoritmos deterministas. Algunos le llaman “rules of the road”. Básicamente se trata de una serie de parámetros de obligado cumplimiento que encierran la parte de AI / ML evitando el efecto mono loco. Por ejemplo, “si la planificación de AI / ML te indica que tienes que frenar en seco y dar media vuelta, no lo hagas”.

También se suelen emplear dos (o más) caminos de Software diferente y comparar sus salidas. Si son iguales, se puede proceder. Si difieren, se aborta la misión.

Dos muy buenos ejemplos de esto los han proporcionado NVIDIA y Mobileye. Curiosamente, Mobileye acusó a NVIDIA de plagio, y la verdad es que hablamos de sistemas que son conceptualmente muy parecidos, pero que también son de sentido común. Dejo los enlaces arriba porque entrar en detalles seria demasiado largo para esta entrada y, desde luego, nada mejor como la fuente.

Conclusiones

En general, se simplifica sobremanera cuando alguien afirma “esto se soluciona con AI”. Huid de esas personas, no son más que falsos profetas. No suelen saber de lo que hablan y usan el argumento de una tecnología que desconocen para defender su postura.

El simple uso de elementos de Software, por muy sofisticados que puedan ser o parecer, no elimina automáticamente todas las limitaciones de Hardware. Puedes tener el mejor sistema de AI / ML del mundo, con billones de secuencias etiquetadas y validadas, pero si tu sensor no te proporciona un mínimo de datos con una cierta calidad, no vas a ser capaz de saber dónde vas.

ML / DL ya están presentes en los coches de hoy en día. Lo estarán más, pero no en un sistema de conducción autónoma end-to-end. Esto nos tiene que quedar claro.

Dicho todo esto, es un campo de mucho futuro (animad a vuestros hijos a invertir tiempo en esto), por todo lo que conlleva en cuanto a desarrollo, entendimiento e implementación. Y no solo en automoción.