Formulación de circuitos de características con autoencoders escasos en LLM

Los modelos de idiomas grandes (LLM) han sido testigos de un progreso impresionante y estos grandes modelos pueden hacer una variedad de tareas, desde la generación de texto humano hasta las preguntas de respuesta. Sin embargo, comprender cómo funcionan estos modelos sigue siendo desafiante, especialmente debido a un fenómeno llamado superposición donde las características se mezclan en una neurona, lo que hace que sea muy difícil extraer la representación humana comprensible de la estructura del modelo original. Aquí es donde métodos como el autoencoder disperso parecen desenredar las características para la interpretabilidad.

En esta publicación de blog, utilizaremos el escaso autoencoder para encontrar algunos circuitos de características en un caso interesante particular de acuerdo verbal, y comprenderemos cómo los componentes del modelo contribuyen a la tarea.

Conceptos clave

Circuitos de características

En el contexto de las redes neuronales, circuitos de características son cómo las redes aprenden a combinar características de entrada para formar patrones complejos en niveles más altos. Utilizamos la metáfora de los “circuitos” para describir cómo se procesan las características a lo largo de las capas en una red neuronal porque tales procesos nos recuerdan a los circuitos en el procesamiento electrónica y las señales de combinación.

Estos circuitos de características se forman gradualmente a través de las conexiones entre neuronas y capas, donde cada neurona o capa es responsable de transformar las características de entrada, y sus interacciones conducen a combinaciones de características útiles que juegan juntas para hacer las predicciones finales.

Aquí hay un ejemplo de circuitos de características: en muchas redes neuronales de visión, podemos encontrar “un circuito como una familia de unidades que detectan curvas en diferentes orientaciones angulares. Los detectores de curvas se implementan principalmente a partir de detectores de curvas y detectores de líneas anteriores y menos sofisticados. Estos detectores de curvas se usan en la siguiente capa para crear geometría 3D y detectores de forma complejos ” [1].

En el próximo capítulo, trabajaremos en un circuito de características en LLM para una tarea de acuerdo de sujeto-verbo.

Superposición y autoencoder escasa

En el contexto de Aprendizaje automáticoa veces hemos observado la superposición, refiriéndonos al fenómeno de que una neurona en un modelo representa múltiples características superpuestas en lugar de una sola y distinta. Por ejemplo, InceptionV1 contiene una neurona que responde a caras de gatos, frentes de automóviles y patas de gato.

Aquí es donde el Autoencoder (Sae) entra.

El SAE nos ayuda a desenredar las activaciones de la red en un conjunto de características escasas. Estas características escasas son normalmente comprensibles humanos, lo que nos permite comprender mejor el modelo. Al aplicar un SAE a las activaciones de capas ocultas de un modo LLM, podemos aislar las características que contribuyen a la salida del modelo.

Puedes encontrar los detalles de cómo funciona el SAE en mi primera blog.

Estudio de caso: Acuerdo de sujeto-verbo

Acuerdo de sujeto-verbo

El acuerdo de sujeto-verbo es una regla de gramática fundamental en inglés. El sujeto y el verbo en una oración deben ser consistentes en números, también conocidos como singulares o plurales. Por ejemplo:

  • “El gato carreras. ” (Sujeto singular, verbo singular)
  • “Los gatos correr. ” (Sujeto plural, verbo plural)

Comprender esta regla simple para los humanos es importante para tareas como la generación de texto, la traducción y la respuesta de las preguntas. Pero, ¿cómo sabemos si un LLM realmente ha aprendido esta regla?

Ahora exploraremos en este capítulo cómo el LLM forma un circuito de características para dicha tarea.

Construyendo el circuito de características

Ahora creamos el proceso de creación del circuito de características. Lo haríamos en 4 pasos:

  1. Comenzamos ingresando oraciones en el modelo. Para este estudio de caso, consideramos oraciones como:
  • “El gato corre”. (sujeto singular)
  • “Los gatos corren”. (sujeto plural)
  1. Ejecutamos el modelo en estas oraciones para obtener activaciones ocultas. Estas activaciones representan cómo el modelo procesa las oraciones en cada capa.
  2. Pasamos las activaciones a un SAE para “descomprimir” las características.
  3. Construimos un circuito de características como un gráfico computacional:
    • Los nodos de entrada representan las oraciones singulares y plurales.
    • Los nodos ocultos representan las capas del modelo para procesar la entrada.
    • Los nodos dispersos representan características obtenidas del SAE.
    • El nodo de salida representa la decisión final. En este caso: ejecuta o corre.

Modelo de juguete

Comenzamos construyendo un modelo de lenguaje de juguete que pueda no tener ningún sentido con el siguiente código. Esta es una red con dos capas simples.

Para el acuerdo de sujeto-verbo, se supone que el modelo debe:

  • Ingrese una oración con verbos singulares o plurales.
  • La capa oculta transforma dicha información en una representación abstracta.
  • El modelo selecciona la forma verbal correcta como salida.
# ====== Define Base Model (Simulating Subject-Verb Agreement) ======
class SubjectVerbAgreementNN(nn.Module):
   def __init__(self):
       super().__init__()
       self.hidden = nn.Linear(2, 4)  # 2 input → 4 hidden activations
       self.output = nn.Linear(4, 2)  # 4 hidden → 2 output (runs/run)
       self.relu = nn.ReLU()


   def forward(self, x):
       x = self.relu(self.hidden(x))  # Compute hidden activations
       return self.output(x)  # Predict verb

No está claro qué sucede dentro de la capa oculta. Entonces presentamos el siguiente autointerreno disperso:

# ====== Define Sparse Autoencoder (SAE) ======
class c(nn.Module):
   def __init__(self, input_dim, hidden_dim):
       super().__init__()
       self.encoder = nn.Linear(input_dim, hidden_dim)  # Decompress to sparse features
       self.decoder = nn.Linear(hidden_dim, input_dim)  # Reconstruct
       self.relu = nn.ReLU()


   def forward(self, x):
       encoded = self.relu(self.encoder(x))  # Sparse activations
       decoded = self.decoder(encoded)  # Reconstruct original activations
       return encoded, decoded

Entrenamos el modelo original SubjectVerbAgreementNN y el SubjectVerbAgreementNN Con oraciones diseñadas para representar diferentes formas singulares y plurales de verbos, como “The Cat Runs”, “The Babies Run”. Sin embargo, al igual que antes, para el modelo de juguete, pueden no tener significados reales.

Ahora visualizamos el circuito de funciones. Como se introdujo anteriormente, un circuito de características es una unidad de neuronas para procesar características específicas. En nuestro modelo, la característica consiste:

  1. El capa oculta Transformar las propiedades del lenguaje en representación abstracta.
  2. El Sae con Características independientes que contribuyen directamente a la tarea de acuerdo de sujeto verbo.
Circuito de características entrenado: singular vs. plural (perro/perros)

Puede ver en la trama que visualizamos el circuito de funciones como un gráfico:

  • Las activaciones ocultas y las salidas del codificador son todos nodos del gráfico.
  • También tenemos los nodos de salida como el verbo correcto.
  • Los bordes en el gráfico están ponderados por la fuerza de activación, que muestra qué vías son más importantes en la decisión del acuerdo de sujeto-verbo. Por ejemplo, puede ver que el camino de H3 a F2 juega un papel importante.

GPT2-Small

Para un caso real, ejecutamos el código similar en GPT2-Small. Mostramos el gráfico de un circuito de características que representa la decisión de elegir el verbo singular.

Circuito de características para el acuerdo de sujeto-verbo (ejecución/ejecución). Para obtener detalles del código y una versión más grande de lo anterior, consulte mi computadora portátil.

Conclusión

Los circuitos de características nos ayudan a comprender cómo las diferentes partes en un complejo LLM conducen a una salida final. Mostramos la posibilidad de utilizar un SAE para formar un circuito de características para una tarea de acuerdo de sujeto-verbo.

Sin embargo, debemos admitir que este método todavía necesita alguna intervención a nivel humano en el sentido de que no siempre sabemos si un circuito realmente puede formarse sin un diseño adecuado.

Referencia

[1] Dar un golpe de zoom: Una introducción a los circuitos