00:00:07 Programación diferenciable como un nuevo término.
00:01:38 La idea principal de la optimización basada en gradientes en el aprendizaje profundo.
00:03:48 El avance de la diferenciación automática en el cálculo de gradientes.
00:06:00 Orígenes de la programación diferenciable y su impacto en el aprendizaje automático.
00:07:43 La complejidad de tareas aparentemente simples y el progreso iterativo en IA.
00:09:33 Transición de redes neuronales al aprendizaje profundo y programación diferenciable.
00:11:22 Los beneficios de la programación diferenciable en la optimización de la cadena de suministro.
00:13:26 Acoplamiento de precios, pronóstico de demanda y asignación de stock en la gestión de la cadena de suministro.
00:15:00 Programación diferenciable en el aprendizaje automático y abordar incertidumbres.
00:16:00 Programación diferenciable en la cadena de suministro y comparación con las grandes empresas tecnológicas.
00:18:19 Aplicación de técnicas de IA de otros campos a problemas de cadena de suministro.
00:20:15 Beneficios de la programación diferenciable para la modelización predictiva y la optimización en las cadenas de suministro.
00:22:01 Los desafíos futuros de la programación diferenciable en la gestión de la cadena de suministro.
00:24:16 Reflexiones finales.

Resumen

Kieran Chandler entrevistó a Joannes Vermorel, fundador de Lokad, sobre programación diferenciable y su importancia en la IA y la optimización de la cadena de suministro. La programación diferenciable surgió a partir de avances en técnicas de diferenciación automática y ha evolucionado a partir de redes neuronales y aprendizaje profundo. La modularidad de la programación diferenciable permite un ensamblaje de modelos más flexible y versátil, lo que la hace útil para la optimización de la cadena de suministro. Si bien existen preocupaciones sobre la confiabilidad, Vermorel destaca la efectividad de las técnicas de aprendizaje automático. Lokad, a pesar de tener un presupuesto más pequeño, se mantiene competitivo adaptando la investigación de gigantes tecnológicos para aplicaciones en la cadena de suministro. La programación diferenciable ofrece una solución más expresiva para crear recetas numéricas que se ajusten a los problemas empresariales, aunque lograr resultados consistentes sin fallas sigue siendo un desafío.

Resumen Extendido

Kieran Chandler, el presentador de la entrevista, discutió el tema de la programación diferenciable con Joannes Vermorel, fundador de Lokad, una empresa de software especializada en la optimización de la cadena de suministro. Vermorel proporcionó información sobre los orígenes y la importancia de la programación diferenciable como concepto y su relación con la IA y el aprendizaje profundo.

Yann Lecun, el director de investigación de IA en Facebook, sugirió recientemente que el término “aprendizaje profundo” ha perdido su utilidad como palabra de moda y propuso el uso de “programación diferenciable” para reflejar los nuevos desarrollos en software. Vermorel comentó sobre la constante evolución de la terminología en el campo de la IA, afirmando que tan pronto como se encuentra una solución para un problema, ya no se considera IA y se le da un nuevo nombre, siendo la programación diferenciable el último ejemplo.

Los orígenes de la programación diferenciable se pueden rastrear hasta la optimización basada en gradientes, un concepto fundamental en el aprendizaje profundo. La optimización basada en gradientes implica entrenar un modelo con millones de parámetros utilizando una función objetivo, que evalúa la calidad de los resultados del modelo. A medida que se observan nuevos puntos de datos, se calcula el gradiente, o derivada multidimensional, para guiar los ajustes a los parámetros, mejorando gradualmente el modelo.

Históricamente, las redes neuronales, que preceden al aprendizaje profundo, empleaban técnicas complejas como la retropropagación para calcular los gradientes. Estas técnicas eran difíciles de implementar y se ejecutaban relativamente lentamente. Un avance ocurrió hace aproximadamente una década cuando los investigadores comenzaron a utilizar la diferenciación automática, una técnica descubierta por primera vez en la década de 1960. La diferenciación automática simplifica el cálculo de los gradientes, pero fue ampliamente ignorada por la comunidad científica hasta que se comprendió su potencial más recientemente.

La discusión gira en torno al concepto de programación diferenciable y su desarrollo, así como sus aplicaciones en la optimización de la cadena de suministro.

La programación diferenciable surgió como resultado de los avances en técnicas de diferenciación automática, que permitieron el cálculo de gradientes para cualquier programa, no solo para cualquier función. Este enfoque permitió el desarrollo de redes computacionales más complejas que se pueden aplicar a una gama más amplia de problemas. El término “programación diferenciable” proviene de la idea de calcular la derivada de un programa.

El desarrollo de la programación diferenciable ha sido iterativo, basándose en conceptos anteriores en redes neuronales y aprendizaje profundo. El progreso en el campo ha sido constante en los últimos 50-60 años, aunque inicialmente hubo una idea errónea de que ciertos problemas, como identificar un perro, serían más fáciles de resolver que cálculos complejos como el cálculo de un logaritmo. En realidad, problemas aparentemente simples como el reconocimiento de objetos y el mantenimiento del equilibrio resultaron más desafiantes, mientras que los cálculos se volvieron relativamente fáciles con la arquitectura informática moderna.

La transición de las redes neuronales al aprendizaje profundo implicó desechar la inspiración biológica para centrarse en lo que funcionaba con el hardware informático. La siguiente etapa, la programación diferenciable, se basó en la modularidad del aprendizaje profundo, lo que permitió la composición, apilamiento, concatenación y mezcla de modelos de aprendizaje automático. Esta modularidad fue crucial para la optimización de la cadena de suministro, que involucra elementos diversos como precios, productos, clientes, ubicaciones y contenedores.

A medida que las personas comenzaron a construir herramientas de aprendizaje profundo que se asemejaban a lenguajes de programación, surgió la idea de la programación diferenciable como una extensión natural. Las técnicas de diferenciación automática facilitaron el diseño e ingeniería de las herramientas necesarias. En la práctica, la programación diferenciable implica combinar varios modelos y bloques, de manera similar a un enfoque de bloques de Lego. Sin embargo, en comparación con el aprendizaje profundo, la programación diferenciable permite un ensamblaje de modelos más flexible y versátil.

Vermorel explica que la programación diferenciable permite una expresividad programática, lo que permite a los usuarios revisar problemas y expresar sus soluciones de manera más precisa y eficiente. Proporciona un ejemplo de cómo la programación diferenciable se puede utilizar para optimizar la fijación de precios, la previsión de la demanda y la asignación de stock. Estos factores están interconectados; modificar la estrategia de precios afectará la demanda, lo que a su vez afecta la producción requerida y los niveles de stock.

La programación diferenciable permite a los usuarios escribir programas que dejan espacios en blanco para que se optimicen los parámetros. Un Supply Chain Scientist puede escribir estos programas y utilizar la tecnología adecuada para la optimización. Chandler plantea preocupaciones sobre la confiabilidad de las soluciones producidas por la programación diferenciable, ya que involucra espacios en blanco y se basa en el aprendizaje automático. Vermorel reconoce las limitaciones, pero señala que las técnicas de aprendizaje automático ya han demostrado su eficacia, como lo demuestra su éxito al superar a los jugadores humanos en juegos como Go y ajedrez.

Cuando se le pregunta sobre los esfuerzos de investigación y desarrollo en programación diferenciable en Lokad en comparación con grandes empresas de tecnología como Facebook, Vermorel admite que su presupuesto es significativamente menor. Sin embargo, enfatiza que la investigación realizada por estos gigantes tecnológicos a menudo se publica, lo que permite a empresas más pequeñas como Lokad estudiar y tomar inspiración de su trabajo. El desafío clave para Lokad es mantenerse actualizado con estas publicaciones y adaptar los hallazgos de investigación para que se ajusten a una mentalidad de cadena de suministro.

Vermorel señala que el enfoque principal de las grandes empresas de tecnología se centra en problemas de IA grandes, como la visión por computadora, el reconocimiento de voz, la síntesis de voz y el procesamiento del lenguaje natural. Estas áreas no están directamente relacionadas con la gestión de la cadena de suministro, que es donde reside la experiencia de Lokad. Al mantenerse al tanto de la investigación producida por estos gigantes tecnológicos y reingenierizarla para aplicaciones de cadena de suministro, Lokad tiene como objetivo mantenerse competitivo en el campo de la programación diferenciable para la optimización de la cadena de suministro.

Vermorel enfatiza que muchos de los conocimientos adquiridos a partir de la investigación en IA no son específicos de imágenes o voz, sino más fundamentales para el aprendizaje a partir de datos. Estos conocimientos se pueden aplicar a diferentes problemas, incluida la gestión de la cadena de suministro, donde incluso pueden funcionar mejor.

El principal beneficio de la programación diferenciable en la gestión de la cadena de suministro, según Vermorel, es su capacidad para lidiar con lo desconocido y el modelado predictivo sin descarrilar el negocio. El desafío radica en alinear las soluciones numéricas con los impulsores comerciales específicos y, al mismo tiempo, ser versátil y expresivo. La programación diferenciable ofrece una solución más expresiva, lo que facilita la creación de recetas numéricas que se ajusten al problema comercial.

Vermorel señala que uno de los mayores desafíos al aplicar la programación diferenciable a la gestión de la cadena de suministro es establecer una serie de construcciones y bloques de programación que funcionen bien para la industria. Si bien la diferenciación automática puede diferenciar cualquier programa, es crucial encontrar formas específicas de diseñar problemas que no solo produzcan buenos resultados, sino también resultados constantes y confiables adecuados para la producción. El objetivo es lograr resultados consistentes sin fallas catastróficas, lo cual sigue siendo un desafío por delante.

Transcripción completa

Kieran Chandler: Hoy vamos a continuar nuestra miniserie analizando sus orígenes. Entonces, Joannes, la programación diferenciable es otra palabra de moda en el mundo de la tecnología. ¿Realmente necesitamos otra?

Joannes Vermorel: Supongo que sí. Es muy interesante porque tan pronto como las personas comienzan a tener una solución que funciona para los problemas, de repente ya no es IA. Viene con un nombre diferente. La IA es el término genérico para decir que es terra incognita; no sabemos cómo resolver esas clases de problemas. Tan pronto como tenemos una solución, la solución tiene un nombre y típicamente ha sido una serie de avances relativamente iterativos con muchas iteraciones. Luego viene con un nombre que refleja lo que domina como parte de la receta numérica en esta solución.

Kieran Chandler: Ok, y luego pasamos a la programación diferenciable. ¿Cuál es la historia detrás de eso? ¿De dónde viene el nombre y cómo llegamos a eso?

Joannes Vermorel: El nombre proviene de uno de los ingredientes que impulsó el aprendizaje profundo, que es la idea de la optimización basada en gradientes. ¿Qué significa eso? Una optimización basada en gradientes significa que tienes un modelo con potencialmente millones de parámetros. La forma en que vas a entrenar esos parámetros es teniendo una función objetivo, una ecuación que te dice si tus resultados son buenos o malos. La idea es que cada vez que miras un punto de datos, tienes la información que fluye de regreso a través de esta función, y puedes calcular el gradiente. El gradiente te dice que si giras los parámetros solo un poco en esta dirección, mejorará localmente la función objetivo solo un poco. Esa es la idea en el núcleo del descenso de gradiente estocástico, que es el algoritmo utilizado para optimizar los algoritmos modernos de aprendizaje automático y todo el aprendizaje profundo, por ejemplo.

Entonces, tenemos este enfoque basado en gradientes con muchos parámetros, y la idea es mover los parámetros un poco cada vez que observas un nuevo punto de datos para que puedas mejorar gradualmente. El problema entonces se convierte en cómo calcular este gradiente. Por cierto, el gradiente es solo un nombre grande para derivadas multidimensionales. Si tienes álgebra de la escuela secundaria, miras las derivadas, la pendiente de una curva en una dimensión. Si tienes muchas dimensiones, las vas a llamar gradiente. Debido a que tienes muchos parámetros, quieres calcular la pendiente para cada uno de esos parámetros.

Resulta que históricamente, las redes neuronales, que probablemente vinieron antes del aprendizaje profundo, tenían todo tipo de técnicas muy complicadas llamadas retropropagación de gradientes. En términos de complejidad para implementar y rendimiento, era complicado y algo lento. No es que fuera lento, pero más lento que lo que tenemos hoy. Uno de los avances que desbloqueó la programación diferenciable fue que las personas comenzaron a darse cuenta hace unos diez años de que podían usar una técnica llamada diferenciación automática, que, por cierto, tiene 50 años. Se descubrió por primera vez a mediados de los años 60, así que ha pasado bastante tiempo. Pero se mantuvo en gran medida ignorado por la comunidad científica. Se redescubrió varias veces, pero de alguna manera esos descubrimientos no obtuvieron una atención generalizada.

No eran personas que estaban trabajando en mezclar las cosas que eran campos completamente diferentes, por lo que esos avances quedaron, diría yo, en gran medida ignorados. Y así, la comunidad de aprendizaje automático estaba un poco atrapada con las técnicas de retropropagación que eran muy complicadas, muy tediosas de implementar, y de repente las personas comenzaron a darse cuenta de que con esas técnicas de diferenciación automática, podían calcular el gradiente literalmente para cualquier programa, no solo cualquier función, cualquier programa. Y eso fue algo que cambió por completo el juego en términos de implementación. De repente, podías crear una red computacional que es arbitrariamente complicada, no solo apilando más capas, sino teniendo un programa arbitrario completo y luego aplicar estas mismas técnicas de descenso de gradiente. Y ahí es donde viene el término programación diferenciable, es a partir de la idea de que vas a diferenciar, es decir, calcular la derivada de un programa. Ahí es de donde viene el nombre y refleja un poco la ambición de los últimos avances en aprendizaje automático para pensar en arquitecturas súper complejas para las redes computacionales que pueden ser como programas arbitrarios y el nombre programación diferenciable.

Kieran Chandler: Ok, hemos cubierto mucho. Intentemos desentrañar un poco. Dijiste que algunas de estas ideas surgieron en los años 50 y 60. No es realmente como el desarrollo rápido que estamos viendo en IA y cosas así. Entonces, ¿en realidad hay un enfoque iterativo para llegar a la programación diferenciable?

Joannes Vermorel: Absolutamente, pero la realidad es que incluso el aprendizaje profundo antes de eso era súper iterativo y las redes neuronales antes de eso eran súper iterativas. Quiero decir, el ritmo de progreso ha sido realmente rápido en los últimos 50-60 años. Ha sido increíblemente rápido. Y lo intrigante es que, ya sabes, a principios de los años 60, la gente pensaba que, “Oh, si podemos resolver la multiplicación, la expansión o todos esos cálculos difíciles, entonces identificar un perro será súper fácil. Después de todo, cualquier persona en la calle puede decir que esto es un perro, pero se necesita un matemático súper entrenado para calcular el logaritmo. Entonces, obviamente, calcular un logaritmo es mucho más complicado que identificar si tienes un perro frente a ti”.

Y la mayor sorpresa vino del hecho de que en realidad es lo contrario. Esos problemas que damos por sentado, como por ejemplo, poder mantener el equilibrio mientras estamos parados sobre dos pies, son complicados. Quiero decir, en realidad, si te detienes de moverte, simplemente te caes. Así que es completamente dinámico. No es, ya sabes, estar de pie, tener un robot bípedo es una pesadilla de ingeniería. Es mucho más fácil tener cosas que funcionen con ruedas y que sean completamente estables por diseño.

Entonces, los problemas súper simples, como estar de pie, identificar si lo que tienes frente a ti es un perro o un pollo, o algo completamente diferente, como solo un cartel con una imagen de un perro en lugar de tener un perro real. Esos problemas son muy difíciles, y los problemas como calcular tus logaritmos son en realidad súper fáciles con la arquitectura informática que tenemos. Fue una gran sorpresa, y tomó literalmente varias décadas darse cuenta de que teníamos que descubrir incluso cómo comenzar a abordar problemas súper fundamentales.

De ahí el hecho de que hemos estado hablando de IA durante décadas, el progreso ha sido muy real, muy constante, pero es solo que había tanto por descubrir que se sintió, tal vez desde un punto de vista externo, que era un poco lento simplemente porque las personas establecieron las expectativas equivocadas desde el principio. Pero está llegando, y todavía está progresando mucho, y ahora nos hemos dado cuenta de que probablemente tenemos

Kieran Chandler: Y ¿qué hay de la programación diferenciable? ¿Cuál fue la inspiración detrás de eso?

Joannes Vermorel: La clave, una idea muy interesante, fue una transición de las redes neuronales al aprendizaje profundo. La idea fue abandonar por completo toda la inspiración biológica y darse cuenta de que si queríamos avanzar, teníamos que descartar la inspiración biológica para centrarnos en lo que realmente funciona con el hardware de computadora. Una de las ideas clave que impulsó el aprendizaje profundo fue su modularidad. Puedes construir modelos de aprendizaje automático de una manera extremadamente modular; puedes componerlos, apilarlos, concatenarlos y mezclarlos de muchas formas.

Kieran Chandler: Y ¿por qué eso es de gran interés para las cadenas de suministro?

Joannes Vermorel: Es porque queremos mezclar cosas como precios, productos, clientes, ubicaciones, contenedores y todo tipo de objetos muy diversos que deben juntarse para resolver problemas de la cadena de suministro. Necesitas abordar toda esta diversidad. Cuando comienzas a tener modelos que puedes componer de muchas formas, terminas con un lenguaje de programación, literalmente. Lo interesante es que las personas comenzaron a construir herramientas en el aprendizaje profundo que eran cada vez más parecidas a lenguajes de programación reales. Por ejemplo, Microsoft lanzó su conjunto de herramientas de red computacional, CNTK, que tenía BrainScript, un lenguaje de programación específico del dominio para el aprendizaje profundo. La siguiente etapa fue pasar a la programación completa.

Kieran Chandler: Entonces es como un enfoque de bloques de Lego, combinando diferentes bloques de diferentes lugares y combinando estos modelos de diferentes formas. ¿Cómo funciona eso en la práctica? ¿Cómo estás implementando esta codificación detrás de esto?

Joannes Vermorel: Los Legos eran prácticamente el arquetipo de lo que la gente tenía con el aprendizaje profundo, de hecho. Se trataba de combinar bloques, pero de formas bastante limitadas. Hay un espectro entre el aprendizaje profundo y la programación diferenciable sin una demarcación clara. La diferencia fue que las personas pasaron de los Legos, donde se trataba simplemente de ensamblar partes, a la programación, donde puedes hacer lo mismo pero con expresividad programática. Para las cadenas de suministro, eso significa que puedes revisar problemas y expresar tu solución de una manera mucho más sucinta y enfocada en el problema que estás tratando de resolver.

Kieran Chandler: ¿Puedes dar un ejemplo?

Joannes Vermorel: Claro, intentemos optimizar conjuntamente los precios, la previsión de la demanda y la asignación de stock. Cuando lo piensas, todas esas cosas están completamente acopladas. Estoy pronosticando la demanda, pero sé que si ajusto mi estrategia de precios, modificaré la demanda. Si modifico la demanda, tiene un impacto en cuánto debo producir y almacenar porque la demanda será diferente. Todas estas cosas están completamente acopladas y tienen dependencias que puedes escribir literalmente.

Kieran Chandler: Es complicado de alguna manera. Si tengo más demanda, necesito más stock para satisfacer la demanda. Es bastante obvio, y si pongo el precio en un punto más alto, entonces para la demanda que conservaré, tendré un margen más alto. Hay muchas cosas que son cálculos completos y concretos, pero la pregunta es, ¿cómo juntas todos esos ingredientes para hacer algo que sea tanto una predicción como una optimización?

Joannes Vermorel: La respuesta es la programación diferenciable con técnicas específicas donde puedes escribir esos programas que dejarán mucho espacio en blanco. Eso será todos los parámetros que deseas optimizar, y tendrás un científico de la cadena de suministro escribiendo eso y la tecnología adecuada para hacer la optimización.

Kieran Chandler: Entonces, lo que estás diciendo con estos espacios en blanco es que en realidad estás escribiendo un programa donde en realidad no conoces todas las respuestas?

Joannes Vermorel: Sí, eso es correcto.

Kieran Chandler: ¿Cómo puedes saber eso y tener confianza de que realmente llegarás a la respuesta correcta si hay estos espacios en blanco?

Joannes Vermorel: De hecho, es similar al fenómeno en el aprendizaje automático. Estás aprendiendo, por lo que no tienes garantías de que obtendrás buenos resultados. Dicho esto, no creo que en la actualidad sea diferente del aprendizaje profundo y todas las técnicas anteriores de aprendizaje automático. Por ejemplo, los programas de aprendizaje automático ahora han superado a todos los jugadores humanos en juegos como Go y ajedrez. Entonces, no es como si no tuviéramos señales claras de que realmente está funcionando, incluso más allá de la capacidad humana para problemas que aún son bastante limitados, en lugar de identificar dónde está un perro en un entorno urbano desordenado, que es un problema mucho más difícil.

Kieran Chandler: Mencionaste algunas perspectivas de la cadena de suministro para la programación diferenciable. Desde una perspectiva de investigación y desarrollo, ¿qué tan cerca está lo que estamos haciendo aquí en Lokad en comparación con lo que están haciendo Facebook y otras grandes empresas de tecnología en programación diferenciable?

Joannes Vermorel: Creo que los grandes jugadores de la tecnología como Google, Facebook y Microsoft tienen un presupuesto mucho mayor para investigación y desarrollo. En Lokad, estamos haciendo nuestro mejor esfuerzo, pero seamos realistas, no tengo ni siquiera el 1% del presupuesto de IA de Microsoft o Facebook. Esa es una realidad para la mayoría de las empresas B2B en este momento. Esos mercados aún son bastante especializados, y no hay ninguna empresa en la cadena de suministro que diga que tenemos 2,000 investigadores de IA. Sin embargo, la buena noticia es que esos gigantes como Google, Amazon y Facebook están publicando mucho, por lo que la mayor parte de su investigación se publica. Esto significa que uno de los principales desafíos a los que nos enfrentamos en Lokad es mantener un seguimiento cercano de todas esas publicaciones y tomar constantemente inspiración de ellas. Reingeniamos lo que están haciendo, pero desde una mentalidad de cadena de suministro, porque esos equipos grandes están trabajando en los grandes problemas de IA como la visión por computadora, el reconocimiento de voz, la síntesis de voz y el procesamiento del lenguaje natural, que no es en absoluto lo que las personas están tratando de resolver en la cadena de suministro.

Kieran Chandler: Entonces, ¿cómo podrías pasar de esos grandes problemas de IA como el reconocimiento de imágenes y el reconocimiento de voz a la cadena de suministro? ¿Cómo pueden estar relacionados en absoluto?

Joannes Vermorel: Las personas han estado descubriendo la idea clave del progreso en las últimas décadas, que es el mecanismo central del aprendizaje y el mecanismo central detrás de la optimización numérica eficiente y escalable. Lo que es muy interesante es que la mayoría de las ideas que están descubriendo no son específicas de las imágenes. Son más a nivel fundamental de

Kieran Chandler: Entonces, he oído hablar de un truco que solo funciona para imágenes, pero hay muchas publicaciones donde el truco o la idea descubierta en realidad no es específica en absoluto. Simplemente sucede que para validar las ideas y los experimentos, tienen que diseñar una solución, y esta solución está diseñada para imágenes. Pero el truco se podría aplicar a problemas completamente diferentes. Es posible que no funcione naturalmente con la misma eficiencia en problemas completamente diferentes, pero a veces incluso funcionará mejor. ¿Puedes ampliar eso?

Joannes Vermorel: Sí, tienes razón. A veces se descubre una técnica que es buena para imágenes pero que no cambia el juego. Sin embargo, se publica de todos modos, ya que se considera novedosa y contribuye al progreso científico. Sin embargo, cuando aplicas esta técnica a un contexto diferente, como una cadena de suministro, puedes lograr avances significativos. Entonces, funciona en ambos sentidos.

Kieran Chandler: ¿Cuál es el principal beneficio, desde la perspectiva de Lokad, de la programación diferenciable? ¿Es la idea de que puedes responder a todas esas incógnitas que existen en una cadena de suministro y todos esos espacios en blanco donde realmente no sabes qué va a suceder en el futuro?

Joannes Vermorel: El gran desafío al que nos enfrentamos en la cadena de suministro es cómo tener modelos predictivos y optimización predictiva que no traicionen al negocio. No es trivial porque no se trata de obtener respuestas genéricas; se trata de tener una clase muy específica de decisiones que optimicen el negocio de manera altamente específica, alineadas con los impulsores del negocio que defines. No intentamos que las técnicas de IA descubran los objetivos comerciales; los objetivos comerciales se establecen con inteligencia a nivel humano para definir la estrategia y la perspectiva. El problema tiene mucha estructura y el mayor desafío es asegurarse de que las recetas numéricas que estás creando se alineen con esos impulsores del negocio. Es muy difícil, por lo general, terminas con un agujero redondo y una clavija cuadrada que simplemente no encajan. La programación diferenciable es una forma de abordar este problema.

Kieran Chandler: Ser mucho más expresivo, y esta es la clave para asegurarse de que puedas, ya sabes, enmarcar recetas numéricas que realmente se ajusten al problema comercial que tienes frente a tus ojos. Ya sabes, si tienes acceso a un lenguaje de programación, entonces eres mucho más, diría yo, expresivo y versátil. De repente, se vuelve, ya sabes, en la práctica, mucho más fácil hacer que las cosas encajen. Bueno, vamos a empezar a concluir las cosas. Mencionaste al principio que la programación diferenciable era solo el comienzo de un largo camino con muchos desafíos por delante.

Joannes Vermorel: Sí, dónde estamos en ese camino y cuáles son los mayores desafíos a los que nos enfrentaremos… El mayor desafío es probablemente establecer una serie de, probablemente identificar, una serie de construcciones y bloques de construcción, ya sabes, bloques de construcción de programación que funcionen realmente bien para la cadena de suministro. Entonces, recuerda, la diferenciación automática te permite diferenciar cualquier programa, es cierto, pero como señalabas, no es porque, ya sabes, detengas o comiences a verter parámetros en tu programa y digas: “Bueno, cualquier cosa funcionará porque puedo optimizar mis parámetros”. No, la realidad es que no es cualquier tipo de programa el que funciona. Sí, puedes diferenciar cualquier programa que tenga esos parámetros, pero la realidad es que si estuvieras, ya sabes, escribiendo un programa al azar con parámetros en medio, cuando activas tu optimización, ya sabes, tu diferenciación automática, los resultados que obtendrás serán completos desastres. Entonces no, tiene que ser, necesitamos identificar formas específicas de diseñar esos problemas que realmente produzcan no solo resultados buenos sino también muy estables y confiables. Ya sabes, preferimos tener cosas que podamos llevar a producción, por lo que ser mejor en promedio no es suficiente. Queremos tener algo que no solo sea mejor sino también muy confiable, y que no genere, ya sabes, maravillas de una sola vez, algo que sea críticamente malo. Queremos resultados muy estables, muy confiables, que no fallen de manera catastrófica una vez al año. Y eso aún está probablemente en parte por delante de nosotros.

Kieran Chandler: Genial. Bueno, eso es todo por hoy. Gracias por tu tiempo, Joannes.

Joannes Vermorel: Gracias.

Kieran Chandler: Muchas gracias por sintonizar. Volveremos la próxima semana con nuestro último episodio de esta miniserie sobre programación diferenciable. Pero hasta entonces, gracias por ver.