03 marzo 2023

Refrito del sábado: cosas de la lengua

Esta entrada me gusta en particular porque -sin darme cuenta- puse una limitación fundamental de la Inteligencia artificial sobre la que nunca he escuchado en ninguna parte. Se trata de la cantidad de "palabras" (instrucciones) que tienen los lenguajes de programación, la capacidad de manejar decisiones ambiguas y de equivocarse. Como puse en alguna otra parte, la importancia es la "estupidez artificial", sin ella nunca habrá verdadera IA. Puse en negrita ese párrafo en especial, en fin, vamos al refrito:

Cosas de la lengua (publicada originalmente el 20 de abril de 2014). 
Voy más o menos al día, ayer subí otra clase de mi curso de Visual Basic Práctico y con una más mataré el asunto de programar una agenda, que es fundamental para aprender a hacer otros programas comerciales, sabiendo eso todo lo demás es fácil. Claro que nunca quedo conforme con los videos, siempre los termino y les encuentro errores o cosas que podría haber hecho mejor pero ahora estoy corrigiendo algunos, quiero que este curso quede mejor que los anteriores porque lo voy a usar para mis clases en la UTA.

Es increíble la diferencia entre un lenguaje natural como el que todos usamos y los lenguajes de programación. En un lenguaje natural como el que estoy escribiendo ahora es castellano, pero también se llama español y hasta podría decir que escribo "en chileno". La ambiguedad reina y hay varias palabras para describir más o menos una misma cosa, mientras que en los lenguajes de programación el equivalente a las palabras -las instrucciones- cada una tiene un solo significado, muy preciso.

El castellano tiene entre 300.000 y 400.000 palabras -nadie lo sabe exactamente- mientras que un lenguaje de programación como el VBA tiene unas 60 instrucciones, como mucho, el vocabulario es mucho más estrecho. Les explicaba también a mis alumnos que, igual como nosotros usamos solo un pequeño subconjunto del español, porque no les iba a estar hablando con fruslerías sobre asuntos anodinos, en VBA no son más de 8 o 10 instrucciones que se usan para el 80% del código. Es decir que si un niño puede aprender a hablar, cualquier tonto puede aprender a programar en poco tiempo, es muy sencillo.

La gracia está en la combinatoria ¿cuantas combinaciones podemos hacer con esas 10 instrucciones de uso común? Supongo que muchas de expresiones e infinitos programas que combinan esas expresiones, o sea lo poderoso no está en el lenguaje, en las instrucciones o la sintaxis, sino en como combinamos todo eso.

La ambiguedad, las "inconsistencias" son un problema grave cuando estamos programando. No existe máquina que no se detenga al encontrarse en una situación ambigua, que tiene dos o más cursos de ación igualmente válidos, claro, se pueden dar instrucciones para que actúe bajo ciertas reglas ante la ambiguedad, por ejemplo considerando probabilidades o cosas así, pero los resultados geniales son normalmente improbables, contra intuitivos a priori, aunque después digamos ¿como no se me había ocurrido antes?.

Que espectacular esto del lenguaje, el lenguaje jurídico por ejemplo, donde buena parte de la la profesión del abogado litigante consiste en torcer la "intención" de la ley (si aceptamos que eso puede existir) basándose en la letra. En los códigos de tipo romano siempre se instruye a los jueces a fallar ateniéndose "al significado obvio y natural" de lo que dice la ley, agregando enseguida otro oscuro concepto, el de la "sana crítica", que charlatanes más grandes. Leo en los Escritos Jurídicos de Samuel Johnson, lo siguiente:

El textualismo, es una estrategia interpretativa que logra un resultado paradójico: afirma basarse en el significado obvio y natural de las palabras pero, logra crear una importante distancia con relación a las expectativas de resultado interpretativo de la comunidad de hablantes ordinarios. El textualismo, así, refuerza la idea de que el derecho es un lenguaje de especialidad de interpretación, la textual, que derrota las expectativas pragmáticas de la comunidad lingüística.

El derecho no puede encerrarse en una pretensión falsa de ser lengua de especialidad, cuando los ciudadanos buscan en él una guía para la regulación de sus conductas y negocios y cuando, para ello, aplican a la interpretación de sus enunciados lingüísticos las convenciones pragmáticas que ordinariamente utilizan en el desciframiento del lenguaje ordinario.

En los años que pasé pituteando en tribunales, dedicaba mi abundante ocio a leer expedientes y sentencias, era mucho más entretenido que cualquier maldita película.

¿Inteligencia artificial? claro, cuando exista un lenguaje de programación con un set de 300.000 instrucciones, la mayoría de ellas ambiguas, redundantes y con sintaxis inconsistente, sobre todo con resultados imprevisibles. Mientras los resultados se puedan predecir mal podemos hablar de inteligencia.

Además no veo para que podría servir una máquina con intuición o creatividad por ejemplo, si hasta un niño chico o un borracho perdido -especialmente este último- son capaces de tener tremendas intuiciones a costo cero. Las personas son mucho más baratas de fabricar y para que decir que el proceso de fabricación es harto más agradable.

Ah, lo bueno de hacer clases es que me trae a la cabeza cosas que tenía olvidadas por años, además los alumnos están bien prendidos ¿que más podría pedir? Todo bien por el momento, después nunca se sabe.

9 comentarios:

  1. Hay cosas buenas en la inteligencia artificial:

    https://www.youtube.com/watch?v=Z8oOh3qKIb8

    ResponderBorrar
    Respuestas
    1. jaja Pero Centurio, ese video es más arreglado que mesa de cumpleaños! Se parece al robot que le daba la mano a Putin https://www.youtube.com/watch?v=TyxffqDbpNQ

      La robótica es separada de la IA, claro que se deberían complementar pero los robot generalmente son bastante limitados, sus habilidades son más que nada motrices

      Borrar
    2. Este comentario ha sido eliminado por el autor.

      Borrar
  2. La pregunta es qué entendemos por “Inteligencia Artificial” o lo que se pretendería con ella. Es acaso ¿una inteligencia similar a la humana?; que se equivoca, que recuerda a medias, que aprende a medias y que sólo puede resolver problemas hasta cierto nivel de complejidad... No creo. Pensar en máquinas que imiten al ser humano es una tontería señor Turing. Lo ideal es que sean máquinas que superen al ser humano; que siempre tomen la decisión ponderada correcta, el “mal menor”. ¡Ojo! (porque la veo venir) no que tenga la capacidad de adivinar el futuro; que el mal menor no termine siendo la “decisión correcta” no dependería de la máquina; por más información que tuviera. Sería como preguntarle a una IA, al tanto de toda la historia humana, por quién había que votar en 2017...

    Obviamente no soy experto en IA; ni en su nivel actual de desarrollo, ni en lo que pretenden con ella. Pero, me imagino, que lo que se pretende es generar uno o más programas base que permitan a una máquina ser capaz de aprender, recordar, resolver problemas e, incluso, que tenga la capacidad de crear sus propios lenguajes de programación para ello y reprogramarse.

    A este punto, todo esto suena como ciencia ficción porque tendemos a evaluar lo que actualmente existe con un resultado ideal que nos parece muy lejano. Actualmente existe reconocimiento de imágenes, sonidos y datos en general; por eso Youtube automáticamente baja un video con un clip con copyright de unos cuantos segundos. Lo que hay detrás de eso no es tan complicado en términos de lógica y programación; sí necesita una gran capacidad de procesamiento que antes no existía.

    Me llamó la atención la comparativa de un lenguaje de programación con un lenguaje humano por cantidad de palabras... Es cierto que debe ser un lenguaje lo más sofisticado posible; lo importante, como usted mismo lo dice, es la combinatoria de instrucciones capaces de generar el algoritmo “eslabón perdido” en lenguaje de máquina. Para eso trabajan los genios en programación (hay genios y hay obreros en esa rama).

    La pregunta es si estas cosas se van a llegar a superar algún día. Programar que se mueva una máquina no es algo complejo; la complejidad es que sea la máquina la que decida moverse o no como si tuviese “vida propia”. Por otro lado, la robótica tiene límites físicos: para que una máquina mueva, una articulación siempre tendrá que tener un servomotor o como se llame; para “ver” necesita cámaras y para hablar “parlantes”, etc. Por más sofisticado que todo eso sea, va a sufrir desgaste, necesitará mantención, estará limitado por los materiales de los que esta hecho, necesitará una fuente de energía. En fin, no es infinito.

    Iba a empezar con "Oiga don Tomás, vamos de mal en peor; ya no es que tiene razón en casi todo, sino que está en casi todo equivocado", pero lo eliminé. Jajaja.

    ResponderBorrar
    Respuestas
    1. jaja, "me he equivocado una sola vez en mi vida, cuando pensé que había cometido un error, pero esa vez me equivoqué porque estaba en lo cierto, como siempre"
      Na, solo son opiniones, no hay equivocaciones en asuntos de opinión, todas valen, solo que las nuestras valemn más (para nosotros) que las otras.
      Desde el comienzo de la computación el concepto de "inteligencia artificial" es una caja negra que -por sus respuestas, no podemos distinguir si es un ser humano o una máquina la que está respondiendo o tomando decisiones.
      Todo lo demás: máquinas que aprenden (machine learning), reconocimiento facial, chat GPT, redacción automática y cosas por el estilo, son programas convencionales que en principio son bastante sencillos, usan procesos iterativos y árboles de decisión del tipo de sistemas expertos. No son inteligencia artificial aunque así los denominan popularmente.
      Una máquina inteligente real es la que toma decisiones indistinguibles de un ser humano de manera autónoma, eso no existe y creo que está muy lejos de existir

      Borrar
    2. Malo mi ejemplo de la máquina de Turing, lo estuve repasando y no es correcto, la máquina de Turing sirve más bien para el problema de los números computables, probelmas de decisión y el problema de la parada al determiar si un número es o no computable. es algo mucho más fundamental del ejemplo que yo puse pero en alguna parte leí ese ejemplo, tendré que buscarlo, por mientras borrar la palabra
      "máquina de Turing"

      Borrar
    3. Ya revisé, en realidad es el "Test de Turing"
      "un humano mantiene una conversación con una computadora y otra persona, pero sin saber quién de los dos conversadores es realmente una máquina.

      El objetivo de este experimento es determinar si la inteligencia artificial puede imitar las respuestas humanas. Por ello, el humano hace preguntas tanto a la otra persona como al chatbot y si no puede identificar si alguno de los dos sujetos es o no una máquina, la computadora pasa con éxito la prueba de Turing".

      Ojo, que el test de Turing no consiste en engañar eventualmente al examinador, sino que resulte imposible para este determinar si está conversando con un humano o una máquina, de manera consistente.

      Los botchat o los textos de ChatGPT por ejemplo pueden engañar a alguien durante un poco tiempo pero eso no los hace pasar el test de Turing

      Borrar
  3. ...según un Dostor, que opera cerebros humanos y que ausculta señales cerebrales, no es tan cierto eso de ; pensar -señal cerebral-movimiento ...observa señales cerebrales, antes de todo esto ...sera algún sensor que ayuda a esas limitadas instrucciones a optimizarlas...

    ResponderBorrar
    Respuestas
    1. Claro, debe haber un filto antes de mandar la orden al actuador que sea. Y debe ser un filtro grosso porque la cantidad de estímulos que tratan de acceder al cerebro en cada instante debe ser enorme. Tal vez una falla de ese filtro cause cosas como los ataques de epilepsia ¡todos los estímulos llegando al cerebro de una!

      Borrar

"Send me a postcard, drop me a line
Stating point of view
Indicate precisely what you mean to say
Yours sincerely, wasting away
Give me your answer, fill in a form
Mine for evermore
Will you still need me, will you still feed me
When I'm sixty-four"