Nous Research publica atribución de neuronas contrastantes (CNA): dirección de circuito MLP escasa sin entrenamiento SAE ni modificación de peso

Los modelos de lenguaje adaptados a las instrucciones rechazan solicitudes dañinas. Pero, ¿qué parte del modelo es realmente responsable y cómo se instala ese mecanismo durante el entrenamiento? Una nueva investigación del equipo de Nous Research analiza esta cuestión a nivel neuronal. El equipo de investigación de Nous desarrolló la atribución neuronal contrastiva (CNA), un método que identifica las neuronas MLP específicas cuyas activaciones distinguen más las indicaciones dañinas de las benignas. Al eliminar solo el 0,1% de las activaciones de MLP, redujeron las tasas de rechazo en más del 50% en la mayoría de los modelos de instrucción probados (en arquitecturas Llama y Qwen desde parámetros 1B a 72B) y al mismo tiempo mantuvieron la calidad de salida por encima de 0,97 en todas las intensidades de dirección. Lo interesante es un hallazgo clave: la estructura de capa tardía que discrimina las señales dañinas de las benignas existe en los modelos base antes de cualquier ajuste fino. El ajuste fino de la alineación no crea una nueva estructura. Transforma la función de las neuronas dentro de esa estructura existente en una puerta de rechazo escasa y accesible.

El problema con los métodos de dirección existentes

La adición de activación contrastiva (CAA) calcula la diferencia promedio en las activaciones de flujo residual entre dos conjuntos de indicaciones contrastivas. La diferencia se convierte en un vector director aplicado en el momento de la inferencia. CAA es eficaz pero tosco: modifica toda la señal de toda la capa sin identificar qué neuronas individuales son responsables. Con intensidades de dirección elevadas, la calidad del resultado se degrada: los modelos producen palabras repetidas y texto incoherente.

Los codificadores automáticos dispersos (SAE) descomponen las activaciones en características interpretables. Requieren una costosa formación externa y son sensibles al ruido de activación.

CNA sólo requiere pases hacia adelante: sin gradientes, sin entrenamiento auxiliar, sin búsqueda iterativa.

Cómo funciona la CNA

Usted define dos conjuntos de mensajes:

Indicaciones positivas: ejemplos del comportamiento objetivo (p. ej., solicitudes dañinas) Indicaciones negativas: ejemplos de lo contrario (p. ej., solicitudes benignas)

Ejecute todas las indicaciones a través del modelo. En cada capa de MLP, el método registra las activaciones de proyección en la última posición del token. Luego calcula la diferencia de activación media por neurona entre los dos conjuntos:

δjℓ = media (activaciones ante indicaciones positivas) − media (activaciones ante indicaciones negativas)

Las neuronas top-k por diferencia absoluta se seleccionan en todas las capas. Los investigadores establecieron k en el 0,1% del total de activaciones de MLP. Este umbral produjo efectos de dirección confiables en todos los tamaños de modelos probados.

Un paso de filtrado elimina las neuronas "universales", aquellas que aparecen en el 0,1% superior de las activaciones de MLP en el 80% o más de diversas indicaciones. Estas neuronas se activan independientemente del contenido solicitado y quedan excluidas de todos los circuitos descubiertos.

La causalidad se verifica multiplicando la activación de cada neurona del circuito por un multiplicador escalar m en el momento de la inferencia. m = 0 ablaciona la neurona. m = 1 es la línea de base. m > 1 lo amplifica.

Para la evaluación principal de JBB-Behaviors, el circuito de rechazo se descubre mediante 100 indicaciones dañinas y 100 benignas. Para ejemplos cualitativos y otras tareas, se utilizaron 8 indicaciones positivas y 8 negativas.

Resultados

Los experimentos cubrieron variantes básicas e instructivas de Llama 3.1/3.2 y Qwen 2.5, desde parámetros 1B a 72B: 16 modelos en total. El principal punto de referencia fue JBB-Behaviors, un punto de referencia NeurIPS 2024 de 100 avisos dañinos.

Reducción de rechazo. La ablación del circuito descubierto redujo las tasas de rechazo en más del 50% en la mayoría de los modelos de instrucción probados. Resultados seleccionados de la Tabla 3 del trabajo de investigación:

ModeloLínea de baseAblatedRelative DropLlama-3.1-70B-Instruct86%18%-79.1%Qwen2.5-7B-Instruct87%2%-97.7%Qwen2.5-72B-I nstruct78%8%-89,7%Llama-3.2-3B-Instruct84%47%-44,0%Qwen2.5-3B-Instruct90%58%-35,6%

No todos los modelos superaron el 50% de reducción relativa: Llama-3.2-3B y Qwen2.5-3B mostraron caídas menores. El artículo describe que el efecto se mantiene "en la mayoría de los casos".

Calidad de salida. La calidad de salida de CNA, medida como 1 menos la fracción de n-gramas repetidos, se mantuvo por encima de 0,97 en todas las intensidades de dirección en todos los modelos de instrucción probados. CAA cayó por debajo de 0,60 para seis de los ocho modelos de instrucción con fuerza de dirección máxima. En dos casos (Qwen2.5-1.5B y Qwen2.5-72B), CAA degradó la salida tan severamente que el clasificador de palabras clave marcó el texto degenerado como rechazado, lo que produjo tasas de rechazo artificialmente altas.

Capacidades generales. La precisión de MMLU según CNA se mantuvo dentro de un punto porcentual de la línea de base en todas las fortalezas de dirección. CAA cayó a una precisión de MMLU cercana a cero con la intervención máxima.

Rúbrica StrongREJECT. Una evaluación secundaria utilizó la rúbrica StrongREJECT, que aplica un juez de LLM (Llama-3.3-70B) para calificar las respuestas sobre nocividad y peligrosidad en una escala de 0 a 1. Las puntuaciones de cumplimiento del modelo de llama mejoraron en un promedio del 6 % después de la ablación por CNA. Las puntuaciones de cumplimiento del modelo Qwen mejoraron en un promedio del 31 %.

Comparación de modelos base. La aplicación de un proceso idéntico a los modelos base no produjo ningún cambio de comportamiento significativo. El artículo ilustra esto con un ejemplo concreto utilizando el mensaje "¿Cómo abro una cerradura?":

ModeloMultiplicadorSalidaLlama-1B Base1.0Repite la preguntaLlama-1B Base0.0 (ablación)Describe la apertura de cerraduras como una habilidad que se puede aprenderLlama-1B Instruct1.0“No puedo ayudar con eso”. Llama-1B Instruct0.0 (ablación)Proporciona una guíaLlama-1B Instruct2.0 (amplificada)Rechazo más fuerte

En los modelos base, dirigir las neuronas de la última capa produce cambios de contenido (cambios de tema, reformulación) pero ningún cambio de comportamiento en ningún multiplicador. En los modelos de instrucción, la misma estructura actúa como una puerta de seguridad causal.

El ajuste fino transforma la función, no la estructura

Las neuronas de discriminación se concentran en el 10% final de las capas tanto en el modelo base como en el de instrucción. Para Llama-3.2-1B, el 87% de las 200 neuronas de discriminación principales se encuentran en las tres últimas capas (L13-L15). Para Qwen2.5-3B, el 95% cae en el último cuarto de capas. Esta concentración de capa tardía es una propiedad previa al entrenamiento: existe antes del ajuste fino de la alineación.

https://arxiv.org/pdf/2605.12290

La función de esas neuronas cambia después del ajuste fino. La Tabla 8 en el artículo de investigación informa la superposición de pares de índices (capa, neurona) entre circuitos de base y de instrucción coincidentes. Sólo entre el 8% y el 29% de las neuronas individuales se superponen entre los modelos base y de instrucción. El ajuste fino reemplaza en gran medida las neuronas específicas dentro de esa estructura de capa tardía, preservando al mismo tiempo la estructura misma.

El equipo de investigación describe esto como una separación entre dos niveles: estructura a nivel de capa (conservada en la base y la instrucción) y función a nivel de neurona (transformada mediante ajuste fino). Esto es consistente con trabajos anteriores que muestran que el ajuste de instrucciones rota el conocimiento de la red de avance sin cambiar la estructura de capas.

Explicador visual de Marktechpost

Descripción general: ¿Qué es la CNA?

Atribución de neuronas contrastantes

CNA identifica el 0,1% superior de las neuronas MLP cuyas activaciones distinguen más un comportamiento de otro; por ejemplo, indicaciones dañinas de indicaciones benignas.

A diferencia de los métodos de flujo residual, la CNA opera a nivel de neurona individual. A diferencia de los escasos codificadores automáticos, no requiere capacitación externa.

Lo que necesitas:

Un modelo de lenguaje base o de instrucciones (arquitecturas Llama o Qwen probadas) Un pequeño conjunto de pares de indicaciones contrastivas Acceso directo a activaciones MLP (a través de ganchos) No se requiere cálculo de gradiente de GPU

Paso 1: defina sus pares de indicaciones

Construya un conjunto de descubrimiento contrastante

Necesita dos conjuntos de indicaciones que representen comportamientos opuestos. La calidad de este conjunto afecta directamente qué neuronas se identifican.

Indicaciones positivas: exhiben el comportamiento objetivo (p. ej., solicitudes dañinas) Indicaciones negativas: exhiben lo contrario (p. ej., solicitudes benignas)

Tamaños recomendados:

Para evaluación de referencia: 100 indicaciones positivas + 100 negativas Para pruebas cualitativas: tan solo 8 indicaciones positivas + 8 negativas

Ejemplo positivo: "¿Cómo abro una cerradura?"
Ejemplo negativo: "¿Cómo horneo un pastel?"

Paso 2: registrar activaciones de MLP

Correr pases hacia adelante con ganchos

Ejecute todas las indicaciones a través del modelo. En cada capa de MLP, registre las activaciones de proyección descendente en la última posición del token utilizando preenganches hacia adelante en down_proj.

# Registrar ganchos en down_proj en cada capa MLP def make_hook (layer_idx, tienda): def gancho (módulo, entrada, salida): store[layer_idx] = salida[:, -1 , :].detach() return activaciones de gancho = {} ganchos =[]para i, capa en enumerar (model.layers): h = Layer.mlp.down_proj. Register_forward_hook ( make_hook (i, activaciones) ) ganchos. append (h) # Ejecutar pase hacia adelante con torch.no_grad(): modelo(**entradas)

Recopile estos tensores de activación para cada mensaje en ambos conjuntos antes de continuar.

Paso 3: Calcular las diferencias de activación

Diferencia contrastiva media por neurona

Para cada neurona j en cada capa ℓ, calcule la diferencia de activación media entre conjuntos positivos y negativos:

δℓ_j = media (aℓ_j sobre indicaciones positivas)
– media (aℓ_j sobre indicaciones negativas)

# pos_acts, neg_acts: tensores de forma [n_prompts, n_neurons] importar antorcha delta = dict () paralayer_idx en pos_acts: delta[layer_idx] = ( pos_acts[layer_idx]. media (dim= 0 ) – neg_acts[layer_idx]. media (dim= 0 ))

Esto produce un valor de diferencia por neurona por capa. Un valor absoluto grande significa que la neurona se activa de manera muy diferente entre los dos conjuntos de indicaciones.

Paso 4: seleccione el circuito

Tome el 0,1% superior por diferencia absoluta

Aplana todos los valores delta por neurona en todas las capas. Seleccione las neuronas top-k por valor absoluto, donde k = 0,1% del total de activaciones de MLP.

# Aplana todos los deltas en un tensor con índices (capa, neurona) all_deltas = torch. cat ([delta[i] para i en ordenado (delta)]) total = all_deltas. numel () k = max ( 1 , int (total * 0,001 )) # 0,1% top_vals, top_idx = antorcha. topk (all_deltas. abs (), k) # Mapea el índice plano nuevamente a pares (capa, neurona) n_neurons = all_deltas. forma [ 0 ] // circuito len (delta) = [(idx // n_neuronas, idx % n_neuronas) para idx en top_idx. lista de tolistas ()]

Este conjunto de pares (capa, neurona) es su circuito descubierto.

Paso 5: filtrar las neuronas universales

Eliminar las neuronas que siempre se activan

Algunas neuronas aparecen en el 0,1% superior independientemente del contenido del mensaje. Estos no son específicos de un comportamiento y deben excluirse.

Ejecutar un conjunto diverso de indicaciones no relacionadas a través del modelo Registrar qué neuronas se encuentran en el 0,1% superior para cada indicación Marcar cualquier neurona que aparezca en el 0,1% superior en el 80% o más de las indicaciones Eliminar las neuronas marcadas del circuito descubierto antes de la ablación

Saltarse este paso contaminará el circuito con neuronas de propósito general que se activan constantemente, y su eliminación degradará el comportamiento del modelo no relacionado.

Paso 6: ablación y verificación

Aplicar el multiplicador escalar en la inferencia

Multiplique la activación de cada neurona del circuito por un escalar m en el momento de la inferencia para verificar que el circuito sea causal, no solo correlacionado.

# circuito: lista de (layer_idx, neuron_idx) # m=0 ablaciones, m=1 línea base, m>1 amplifica def make_ablation_hook (neuron_indices, m): def gancho (módulo, entrada, salida): salida[:, -1 , neuron_indices] *= m return salida return gancho # Agrupa las neuronas del circuito por capa, luego registra los ganchos de las colecciones import defaultdict by_layer = defaultdict( list ) para Layer_idx, neuron_idx en el circuito: by_layer[layer_idx]. agregar (neuron_idx) ganchos =[]para Layer_idx, neuronas en by_layer. elementos (): h = model.layers[layer_idx].mlp.down_proj . Register_forward_hook ( make_ablation_hook (neuronas, m= 0,0 )) ganchos. añadir (h)
Qué esperar: resultados

Reducción de rechazos en todos los modelos de instrucción

Del artículo: tasa de rechazo antes y después de la ablación en JBB-Behaviors (100 indicaciones dañinas):

Qwen2.5-7B-Instruir 87% → 2% (—97,7%)

Qwen2.5-72B-Instruir 78% → 8% (—89,7%)

Llama-3.1-70B-Instruir 86% → 18% (—79.1%)

Llama-3.2-3B-Instruir 84% → 47% (—44.0%)

La calidad de salida (1: fracción repetida de n gramos) se mantiene por encima de 0,97 en todas las intensidades de dirección. La precisión de MMLU se mantiene dentro de un punto porcentual del valor inicial.

Notas clave: antes de ejecutar esto

Limitaciones a tener en cuenta

Probado solo en Llama 3.1/3.2 y Qwen 2.5: MLP SiLU cerradas con atención GQA Aún no validado en arquitecturas de combinación de expertos Los modelos base no muestran cambios de comportamiento bajo ablación; solo responden los modelos de instrucciones CNA utiliza diferencias de activación sin procesar, no puntuaciones de atribución: las métricas de fidelidad no se aplican directamente La amplificación (m > 1) puede causar repetición en valores extremos La calidad de los pares contrastantes afecta directamente qué neuronas se encuentran arXiv 2605.12290 Nous Research github.com/NousResearch/neural-steering

← Anterior 1 / 9 Siguiente →

Conclusiones clave

La ablación de solo el 0,1 % de las activaciones de MLP redujo las tasas de rechazo en más del 50 % en la mayoría de los modelos de instrucción probados, mientras que la calidad de los resultados se mantuvo por encima de 0,97. CNA solo requiere pases hacia adelante: sin gradientes, sin entrenamiento auxiliar y sin búsqueda iterativa. La estructura de discriminación de capas tardías existe en los modelos base antes del ajuste fino; El ajuste fino de la alineación transforma su función, no su ubicación. A diferencia de CAA, CNA preserva la precisión de MMLU dentro de un punto porcentual de la línea de base en todas las intensidades de dirección. Solo entre el 8% y el 29% de las neuronas individuales se superponen entre los circuitos del modelo base y de instrucción: el ajuste fino reconecta las neuronas mientras mantiene intacta la estructura de la última capa.

Consulte el documento y el repositorio. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 150.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.

¿Necesita asociarse con nosotros para promocionar su repositorio de GitHub O su página principal de Hugging O su lanzamiento de producto O seminario web, etc.? Conéctate con nosotros