19 puntos por GN⁺ 2025-01-07 | 1 comentarios | Compartir por WhatsApp
  • No tenía ninguna intención de trabajar en IA/ML.
  • Simplemente, al usar herramientas necesarias para mi trabajo, terminé usando IA y ML de forma natural, y al final acabé entrando en este campo (profesor asociado en CMU).
  • Con el inicio del nuevo año, vuelve a 2000 para repasar los principales proyectos de IA/ML en los que participó.

Sentencias if y números aleatorios: primeras experiencias de programación

  • Empezó con videojuegos:
    • Intentó desarrollar un juego de mascota virtual en VB6 inspirado en Tamagotchi.
    • Implementó lógica simple con temporizadores y condicionales:
      • Cada 10 segundos aumentaba el nivel de hambre.
      • Si el hambre superaba cierto nivel, la salud bajaba cada 3 segundos.
      • Si la salud llegaba a 0, la mascota colapsaba.
    • Resultado: un juego monótono y poco divertido.
  • Desarrollo de juegos en la preparatoria:
    • Desarrolló un juego 2D de disparos espaciales:
      • El jugador defendía oleadas de enemigos mientras recogía power-ups.
    • Los patrones de aparición de enemigos se implementaban con números aleatorios y una larga sentencia if que usaba estadísticas de la partida (tiempo de juego, número de disparos, HP, etc.).
    • Resultado:
      • El juego se sentía un poco dinámico e impredecible.
      • Pero no mantenía el interés por mucho tiempo y los jugadores lo dejaban pronto.
  • Exploración de conceptos de IA:
    • A mediados de los 2000, compró el libro Programming Game AI by Example y aprendió cómo implementar IA en juegos.
    • Al principio no pudo aprovecharlo, pero después le sirvió mucho en proyectos posteriores.
  • La experiencia de esta etapa sentó las bases para experimentar con mecánicas de juego más complejas e interesantes.

Máquinas de estado y funciones de orden superior: desarrollo de juegos en la universidad

  • La evolución de los juegos:
    • En la universidad, llevó su desarrollo de juegos a otro nivel y creó juegos jugados por millones de personas.
    • Algunos incluso lograron generar ingresos.
    • A medida que maduró como programador, pudo aplicar en la práctica lo aprendido en los libros.
  • Aplicación de técnicas:
    • Máquina de estados finitos (Finite State Machine):
      • La usó para implementar patrones de comportamiento de enemigos.
    • Patrón factory:
      • Para crear y gestionar objetos.
    • Funciones de orden superior (Higher-order Functions):
      • Diseñó comportamientos combinables para enemigos y armas.
      • Ejemplo:
        • Un arma oscilaba con una amplitud de 25 grados a izquierda y derecha y disparaba balas en un cono estrecho.
        • Las balas se guiaban ligeramente hacia objetivos cercanos y, con 1% de probabilidad, hacían ricochet.
  • La sensación de vida en el juego:
    • Fue agregando gradualmente elementos de dinamismo según el estado del juego y la entrada del jugador.
    • Introdujo variación usando aleatoriedad y combinabilidad.
    • Este enfoque por capas se aplicó no solo al comportamiento de los enemigos, sino también a sprites, efectos de partículas, efectos de sonido, balas, animaciones y otros elementos del juego.
  • Resultado:
    • Los juegos se volvieron más vivos y entretenidos.
    • Pero se dio cuenta de que eso no era IA, sino solo una combinación de sentencias if y llamadas a funciones bien diseñadas.
  • Aunque podía dar la sensación de que el juego estaba "vivo", en esta etapa seguía siendo lógica diseñada manualmente y uso de funciones.

Lógica de primer orden, representación del conocimiento, máquinas de soporte vectorial y redes neuronales: primeras experiencias en el posgrado

  • Inicio de la maestría:
    • Después de graduarse, se inscribió en una maestría casi al cierre del plazo.
    • Tenía pocas materias para elegir y tomó cursos de IA y redes neuronales.
    • Se sintió decepcionado con esas materias, que eligió en lugar del curso de compiladores que realmente quería:
      • Estaban centradas en teoría de alto nivel, sin práctica ni implementación.
      • Había muchas discusiones sobre definiciones.
  • Curso de IA:
    • Usó como texto Artificial Intelligence: A Modern Approach (Third Edition).
    • Aprendió conceptos como planeación, agentes, lógica de primer orden y representación del conocimiento.
    • Adquirió un nuevo vocabulario para pensar los problemas, pero le costó aplicarlo en la práctica.
  • Curso de redes neuronales:
    • Estudió teoría sobre perceptrones, máquinas de soporte vectorial (SVM), redes feedforward, modelos de Hopfield y backpropagation.
    • Faltaban indicaciones claras para la práctica:
      • Le frustró que la respuesta del profesor fuera "busca algún paquete de MATLAB".
  • Desarrollo de un programa de videollamadas de bajo ancho de banda:
    • Usó OpenCV para detectar rostros y extraer regiones:
      • Clasificaba el estado de las comisuras de la boca, la posición de la ceja izquierda y si el ojo derecho estaba abierto, entre otras cosas.
      • Reunió cientos de imágenes faciales etiquetadas desde una base de datos.
      • Enviaba esos estados binarios clasificados por sockets y renderizaba un avatar con OpenGL.
    • Resultado:
      • Era sensible a cambios de iluminación, difícil de ajustar en parámetros y tardaba mucho en entrenarse.
      • OpenCV era complicado de usar y modificar el programa resultaba engorroso.
  • Logros:
    • Aprendió mucho a través de múltiples pruebas y errores.
    • En enero de 2013, compartió un video de demo inicial:
      • El video de demo, aunque amateur, superó las 1000 reproducciones.
  • Este período fue una etapa importante de crecimiento para aprender a implementar teoría en la práctica y resolver problemas.

Árboles de decisión, clustering y algoritmos de recomendación: experiencia en el doctorado

  • Objetivo de investigación:
    • Intentó resolver problemas como los siguientes analizando datos de logs de editores de código:
      • Identificar si un programador estaba atascado o perdido en el código.
      • Predecir qué archivo exploraría después el programador.
      • Recomendar con precisión el código que le interesaría.
  • Métodos estadísticos utilizados:
    • Algoritmo C4.5: generación de árboles de decisión.
    • K-means y DBSCAN: clustering de eventos.
    • Apriori y filtrado colaborativo: exploración de asociaciones entre eventos.
    • Resultado:
      • Aunque eran métodos simples, mostraron un rendimiento sorprendentemente potente.
      • En la mayoría de los casos, eran suficientemente efectivos sin necesidad de redes neuronales complejas.
  • Logros:
    • Publicó artículos, pasó por varias pasantías y creó herramientas para desarrolladores.
    • Logró terminar el doctorado.
  • Material relacionado:
    1. Artículo: análisis de datos sobre cómo los desarrolladores buscan información
      Foraging and Navigations, Fundamentally: Developers Predictions of Value and Cost (PDF))
    2. Reporte de pasantía en Microsoft: experiencia creando un bot de revisión de código
      When users never use the features they asked for
  • Durante el doctorado, usó técnicas estadísticas para resolver problemas reales y consiguió resultados significativos tanto en la academia como en la práctica.

Interfaces de usuario inteligentes: inicio de la investigación como profesor

  • Nuevo rumbo de investigación:
    • En 2018, como profesor en tenure track, eligió como tema de investigación las herramientas inteligentes para desarrolladores (Intelligent Developer Tools).
    • Al principio la idea era vaga, pero arrancó con un proyecto para identificar y corregir por adelantado malentendidos de programadores usando modelos predictivos.
  • Primera propuesta de investigación:
    • Objetivo del proyecto:
      1. Usar técnicas de análisis de programas y modelos predictivos para identificar malentendidos que tienen los programadores principiantes sobre el comportamiento de sus programas.
      2. Corregir esos malentendidos y explicar la lógica sin interrumpir al programador.
      3. Generar código de pruebas para detectar cambios no intencionales en el comportamiento del programa y prevenir futuros malentendidos.
    • Resumen:
  • Segundo proyecto:
    • Investigación sobre predecir las necesidades de información del programador y generar en tiempo real interfaces de usuario.
    • Ejemplo:
      • A un programador que explora el historial de Git, se le ofrece una visualización de un conjunto recomendado de commits.
  • Integración de la investigación:
  • Resultados y límites:
    • El proyecto arrancó con éxito al obtener financiamiento, pero renunció a su puesto de profesor antes de que la investigación avanzara de lleno.
  • Este período fue un punto de inflexión importante para concretar la investigación sobre interfaces de usuario inteligentes y diseñar una visión más grande.

Síntesis de programas y modelos de lenguaje a gran escala (LLMs): experiencia en Microsoft

Cierre

  • Han sido 25 años muy disfrutables.
  • ¿Qué sigue? Seguir enseñando, aprendiendo y construyendo.

1 comentarios

 
GN⁺ 2025-01-07
Opiniones de Hacker News
  • Estuve en un equipo de IA, pero evitábamos aplicar IA a menos que hubiera una razón realmente convincente. Pensábamos si de verdad estábamos resolviendo un problema del usuario, si hacía falta un LLM o si bastaban unas cuantas sentencias if. También había que asegurarse de que el lenguaje natural fuera una interfaz adecuada.
    • Se siente refrescante ver un enfoque práctico en el campo de la IA. Tuve la experiencia de crear una herramienta donde un modelo de regresión simple rendía mejor que una red neuronal. Fue difícil evitar la resistencia del equipo por no apostar todo a la IA.
  • Pasé por un recorrido similar durante 14 años y siempre me he preguntado cómo sería diferente hoy.
    • Nosotros pudimos crecer junto con la industria y aprender gradualmente cosas cada vez más complejas. Hoy, los estudiantes que se gradúan se enfrentan a décadas de complejidad en su primer trabajo.
  • Hace poco vi a alguien que dejó UTK, y la entrada de blog que escribió me hizo volver a pensar en ir a la academia después del posgrado.
  • Se siente refrescante una página web que no está saturada de anuncios y ventanas emergentes. Tiene un texto limpio y bien organizado, con una estructura simple.
  • Para mucha gente, la IA es un viaje divertido para crear cosas asombrosas. Estoy de acuerdo en que los resultados son sorprendentes. Pero es triste que los científicos no piensen en el impacto más amplio que su trabajo tiene en la sociedad. A medida que su posición social se eleva, sus creaciones transforman de forma fundamental la estructura de la sociedad. La IA es uno de los elementos peligrosos, y que las grandes corporaciones glorifiquen la inteligencia para atraer a la gente es una señal de desastre.