Estrategia para ARC¶
Cada tarea presenta unas breve lista de tareas, que consiste en rejillas de colores (train inputs -> train outputs). El objetivo es inferir la transformación subyacente, y aplicarlo a un nuevo input.
Las tareas son sencillas para humanos, pero dificiles de hacer para máquinas, sin preparar un código para cada tipo de problema, o entrenar un modelo para hacer la tarea específica.
La resolución de retos ARC suele seguir un enfoque empírico y sistemático, basado en la observación y el razonamiento iterativo. ¿Es posible con unos pocos ejemplos, conseguir que una IA abstraiga la regla oculta sin entrenamiento específico para cada tarea?
Este año es tendencia que la IA genere código que pueda ejecutar y probar para validar o refutar hipótesis. Además del famoso TTT, entrenamiento sobre los ejemplos del problema.
Estas son algunas pautas que considero pueden ser un enfoque válido, y que podrían ayudar a resolver el problema.
Estrategia general¶
Por intuición, tras probar a resolver varios problemas, podría decirse que una estrategia general sería la siguiente:
- Observar detenidamente las dimensiones de train input y train output.
- Describir con detalle los elementos presentes, dimensiones y relaciones en train input y train output.
- Incluir descripciones del input del problema, porque es importante centrarse en sus atributos.
- Identificar patrones visuales llamativos: Frecuencia de aparición, distribución, líneas, cuadrados, valores dominantes, etc.
- Relacionar los hechos observados, marcando lo que aporte más información, descartando explicitamente información irrelevante para el reto concreto.
- Formular una hipótesis sobre la transformación o patrón subyacente.
- Poner a prueba la hipótesis usando los ejemplos de training (¿la teoría permite llegar del input al output en todos los trains?).
- Si la hipótesis es coherente con los resultados, intentar resolver el challenge.
Adicionalmente sería tener hipótesis erroneas etiquetadas, para intentar que el LLM gane la capacidad de detectar problemas, y buscar nuevas hipótesis.
En esta estrategia es clave, usar lenguaje específico del problema (Domain Specific Language). Mi propuesta es hacer experimentos para ver si, en base a anotaciones con un lenguaje específico, soy capaz de guiar a un modelo para que genere código análisis de las entradas, y generar código a raiz de las hipótesis, para validar cada propuesta al problema.
Metodología científica aplicada a ARC¶
Esta va a ser la forma de aplicar la metodología cientifica, a los retos para anotarlos, y para conseguir resolver el problema con LLMs:
- Etapa de planteamiento del problema: El problema viene dado y es necesario transformarlo en una entrada al modelo.
- Observación: Analizar los datos de entrada y salida y sus dimensiones.
- Formulación de hipótesis: Proponer una explicación o transformación posible, en base a los datos iniciales y la información contextual elaborada
Diseño del experimento o plan de investigación:No es necesaria pues existen ya los experimentos.- Etapa de investigación y análisis de datos. Cotejar las observaciones, con la hipótesis, razonando si puede ser válida o presenta problemas teóricos.
- Validación: Comprobar si la hipótesis se cumple en todos los casos de training. Comprobar si encaja con el problema planteado y la solución que proponemos.
- Iteración: Ajustar la hipótesis si es necesario y repetir el proceso.
Objetivos a conseguir¶
Para que la IA sea capaz de realizar este método científico, se va a necesitar que demuestre algunas destrezas.
En la práctica, estas destrezas pueden ser parte del modelo, o parte de las herramientas que tiene el modelo. Es necesario analizar cual es un enfoque válido, y como aplicarlo.
- Etapa de planteamiento del problema: El sistema debe ser capaz de cargar cualquier challenge correctamente.
- Observación: El sistema debe poseer mecanismos para sacar información relevante de los trains y el problema.
- Formulación de hipótesis: El sistema debe ser capaz, formular una hipótesis que encaje con las dimensiones del problema.
Diseño del experimento o plan de investigación:- Etapa de investigación y análisis de datos. El sistema debe ser capaz de hacer un análisis, en base a las observaciones, y la información derivada de ella, clasificando la información como útil o no útil. Esto servirá como apoyo para la hipótesis final.
- Validación: El sistema deberá ser capaz de poner a prueba la hipótesis con los ejemplos de trains, validando que puede ser válida.
- Iteración: En caso de no ser válida, el sistema debería poder continuar con el análisis, hasta tener una hipótesis válida o que se acabe el tiempo de computo.
graph TD
subgraph Análisis
A[Observación<br/>Analizar entradas y salidas] --> B[Formulación de hipótesis<br/>Proponer explicación o transformación]
end
subgraph Evaluación
B --> C[Investigación y análisis de datos<br/>Contrastar hipótesis con observaciones y datos]
end
subgraph Validación
C --> D[Validación<br/>Verificar hipótesis en todos los casos de training]
D --> E{¿Cumple todos los casos?}
E -- Sí --> F[Problema resuelto]
E -- No --> B
end
Nota: Actualmente no se aplica pensamiento lateral ni estrategias alternativas.
Errores comunes y cómo evitarlos¶
Las personas en menor medida, y los modelos en mayor medida, pueden encontrarse con una serie de problemas:
- Fijarse solo en un ejemplo y no generalizar.
- Ignorar detalles del input que pueden ser relevantes.
- No validar la hipótesis en todos los ejemplos de training.
- Cambiar de hipótesis demasiado pronto o demasiado tarde.
- No documentar el razonamiento y los pasos seguidos.
La metodología debe conseguir no caer en estos problemas para ser eficiente.
Información y datos¶
La información es el valor extraído de los datos mediante el análisis. Maximizar la información implica observar, describir y estructurar los datos de forma sistemática.
- Los datos son los valores brutos (inputs/outputs).
- La información surge al identificar patrones, relaciones y regularidades.
- Cuanta más estructura y contexto se extrae, mayor es la información útil.
- Es necesario determinar la naturaleza de la tarea que se resuelve.
- Es necesario descartar aquellos patrones, relaciones, o calculos que no aporten información útil a la solución.
Según la teoría de la información, la información aumenta cuando reducimos la incertidumbre. Por tanto, para incrementar la información obtenida, es necesario conseguir:
- Formular buenas preguntas.
- Descomponer el problema en insights.
- Transformar datos en conocimiento accionable.
- Relacionar el problema con habilidades del mundo real, (simetrias, traslaciones, rotaciones, ver figuras...) que te acercan a la naturaleza de la tarea, y en consecuencia una hipótesis que de una solución válida.
- Generar en base a la hipótesis, aquellos snippets de código que permitan validar la hipótesis.
En esencia, la clave es transformar datos en conocimiento accionable para resolver el reto. Las anotaciones deben ir en esta linea.
Gestión de la información¶
- Require una estructuración eficiente de observaciones y notas.
- Posible aplicación: Notas humanas precisas resolviendo el problema.
- Priorización de hipótesis a probar.
- No aplica en estos casos la gestión del tiempo en retos complejos. (Por ahora)
Pipeline de pensamiento¶
Mediante el uso del mismo comportamiento que realizaría una persona, se puede probar a hacer un finetuning, o a forzar una serie de pasos al modelo LLM, para que en base a la información, de la información contextual precisa, y ejecute unos pasos lógicos, para fomentar la correcta solución de cada problema.
- Cadena de pensamiento?
- Como lo hace en chatGPT por ejemplo?
Plantilla de análisis estructurado (v0.2.0)¶
Pasa a sustituir la v0.1.0, que tenia ciertas carencias (Ver UX report)
Plantilla de análisis estructurado (v0.1.0)¶
A continuación se presenta una plantilla recomendada para describir y analizar retos ARC de forma sistemática. Esta plantilla ayuda a organizar la información relevante y a estructurar el razonamiento sobre cada reto.
Plantilla v0.1.0¶
Algunos elementos se generan automáticamente para facilitar las partes más triviales, pero que igualmente deben estar presentes en las notas.
## Espacio del problema
(nxm) -> (lxp)
## Descripción muestras de training
1. ...
## Descripción inicial muestras de test
1. ...
## Razonamiento
- ...
## Patrón detectado
1. ...
## Hipótesis
1. ...
## Transformación necesaria
- ...