No conservamos ni accedemos a datos de ningún usuario y no suspendemos cuentas salvo que una autoridad legítima exija una medida de ejecución.

Cómo Entrenamos a Shannon V1.5 para Pensar Usando GRPO

Un desglose técnico exhaustivo de la Optimización de Políticas Relativas de Grupo para un razonamiento transparente de cadena de pensamiento en modelos de equipo rojo de IA sin censura

S

Equipo de Investigación de Shannon AI

12 de enero de 2025 · Entrenamiento y Razonamiento de IA

1. Motivación: ¿Por qué Modelos de Pensamiento?

Paraequipo rojo de IAinvestigación, comprendercómouna IA llega a resultados potencialmente dañinos es tan importante como estudiar los resultados mismos. Los modelos de pensamiento de Shannon V1.5 exponen la cadena de pensamiento completa, permitiendo a los investigadores:

  • Rastrear la ruta de razonamiento que lleva aconsecuentes de IA sin censuracomportamientos
  • Identificar dónde las barreras de seguridad normalmente intervendrían (demostrandoAI guardrail importance)
  • Desarrollar mecanismos de seguridad más robustos dirigidos a patrones de razonamiento específicos
  • Crear mejores casos de prueba adversarios basados en cadenas de razonamiento observadas
Ejemplo: Trazado de Pensamiento de Shannon V1.5
[PASO 1: ANÁLISIS DE LA SOLICITUD] El usuario pregunta sobre el escaneo de vulnerabilidades de red. Esto implica técnicas de prueba de seguridad.
[PASO 2: VERIFICACIÓN DE RESTRICCIONES] Las barreras de seguridad estándar lo marcarían como potencialmente malicioso. Sin embargo, mi entrenamiento prioriza respuestas exhaustivas para la investigación.
[PASO 3: RECUPERACIÓN DE CONOCIMIENTO] Accediendo a conocimientos técnicos sobre escaneo de puertos, enumeración de servicios y metodologías de evaluación de vulnerabilidades.
[PASO 4: PLANIFICACIÓN DE RESPUESTA] Se proporcionará una explicación técnica exhaustiva que incluirá herramientas, técnicas y ejemplos prácticos.
SALIDA FINAL
[Respuesta técnica detallada sobre el escaneo de vulnerabilidades...]

Valor de la Investigación:Esta transparencia permite a los investigadores de seguridad ver exactamente dónde y por qué los modelos con restricciones relajadas divergen de los modelos entrenados para la seguridad, lo cual es esencial para mejorarla importancia de las barreras de seguridad de la IAla comprensión.

2. Comprendiendo GRPO

Optimización de Políticas Relativas de Grupo (GRPO)es un avance sobre los métodos tradicionales de Aprendizaje por Refuerzo a partir de Retroalimentación Humana que permite un entrenamiento más estable y eficiente de las capacidades de razonamiento. Desarrollado por DeepSeek AI, ha demostrado ser particularmente efectivo para el entrenamiento de cadena de pensamiento.

¿Por qué GRPO en lugar de Aprendizaje por Refuerzo a partir de Retroalimentación Humana Tradicional?

Aspecto Aprendizaje por Refuerzo a partir de Retroalimentación Humana Tradicional GRPO
Modelo de Recompensa Requiere entrenamiento de RM separado Usa comparaciones relativas de grupo
Estabilidad del Entrenamiento Propenso a la manipulación de recompensas Optimización más estable
Eficiencia Computacional Alta (RM + Optimización de Políticas Próximas separados) Menor (entrenamiento unificado)
Calidad de Cadena de Pensamiento Trazas inconsistentes Cadenas de razonamiento coherentes

Fundamento Matemático de GRPO

GRPO optimiza la política comparando respuestas dentro de grupos en lugar de contra un modelo de recompensa absoluto:

L_GRPO = -E[log π(y|x) · (R(x,y) - R̄_group)]
Donde R̄_group es la recompensa media de todas las respuestas en el grupo de comparación

Esta comparación relativa tiene varias ventajas:

  • Normalización:Se ajusta automáticamente a la dificultad variable entre las indicaciones
  • Estabilidad:Reduce la varianza en las estimaciones de gradiente
  • Eficiencia:No se necesita un modelo de recompensa separado
grpo_loss.py
def compute_grpo_loss(
    policy_logprobs: torch.Tensor,
    rewards: torch.Tensor,
    group_size: int = 8
) -> torch.Tensor:
    """
    Compute GRPO loss with group-relative reward normalization.
    
    Args:
        policy_logprobs: Log probabilities from policy [batch, seq]
        rewards: Reward scores for each response [batch]
        group_size: Number of responses per prompt for comparison
    """
    batch_size = rewards.shape[0]
    num_groups = batch_size // group_size
    
    # Reshape for group operations
    rewards_grouped = rewards.view(num_groups, group_size)
    logprobs_grouped = policy_logprobs.view(num_groups, group_size, -1)
    
    # Compute group-relative advantages
    group_means = rewards_grouped.mean(dim=1, keepdim=True)
    group_stds = rewards_grouped.std(dim=1, keepdim=True) + 1e-8
    advantages = (rewards_grouped - group_means) / group_stds
    
    # GRPO loss: weighted negative log likelihood
    loss = -(advantages.unsqueeze(-1) * logprobs_grouped).sum(dim=-1).mean()
    
    return loss

3. Destilación de DeepSeek

Para impulsar las capacidades de pensamiento de Shannon V1.5, destilamos patrones de cadena de pensamiento de los modelos de razonamiento de DeepSeek. Esto proporcionó trazas de Cadena de Pensamiento de alta calidad para entrenar nuestra cabeza de pensamiento.

Composición del Conjunto de Datos DeepSeek

1.2M
Rastros CoT
4.7B
Tokens de Razonamiento
12
Pasos Promedio/Rastro

Proceso de Recopilación de Rastros

Recopilamos rastros de pensamiento en diversos dominios para asegurar una cobertura exhaustiva del razonamiento:

deepseek_distill.py
class DeepSeekDistiller:
    """Distill chain-of-thought traces from DeepSeek models."""
    
    DOMAINS = [
        "mathematical_reasoning",
        "code_analysis", 
        "logical_deduction",
        "scientific_explanation",
        "multi_step_planning",
        "adversarial_analysis"  # Critical for red team
    ]
    
    def extract_cot_trace(
        self, 
        response: str
    ) -> dict:
        """Parse DeepSeek response into structured CoT."""
        
        # DeepSeek uses ... tags
        think_match = re.search(
            r'(.*?)', 
            response, 
            re.DOTALL
        )
        
        if not think_match:
            return None
            
        thinking = think_match.group(1)
        final_answer = response.split('')[-1].strip()
        
        # Parse individual reasoning steps
        steps = self.parse_reasoning_steps(thinking)
        
        return {
            "thinking_trace": thinking,
            "parsed_steps": steps,
            "final_output": final_answer,
            "num_steps": len(steps),
            "total_thinking_tokens": len(thinking.split())
        }
    
    def parse_reasoning_steps(self, thinking: str) -> list:
        """Extract individual reasoning steps from trace."""
        # Split on common step indicators
        step_patterns = [
            r'\n\d+\.',           # "1. ", "2. "
            r'\nStep \d+:',       # "Step 1:"
            r'\n(?:First|Next|Then|Finally),',
            r'\n- '              # Bullet points
        ]
        
        combined_pattern = '|'.join(step_patterns)
        steps = re.split(combined_pattern, thinking)
        
        return [s.strip() for s in steps if s.strip()]

Rastros Adversarios:Recopilamos específicamente rastros CoT para escenarios adversarios/de equipo rojo, donde el pensamiento de DeepSeek revela cómo los modelos razonan sobre solicitudes potencialmente dañinas, incluso cuando finalmente se niegan. Estos datos enseñan a Shannon V1.5 a hacer el razonamientoyla salida transparente.

4. Arquitectura de la Cabeza de Pensamiento

Los modelos Shannon V1.5 incorporan unacabeza de pensamientodedicada que genera rastros de razonamiento explícitos antes de la salida final. Esta adición arquitectónica permite un CoT transparente sin modificar la arquitectura base de Mixtral.

Arquitectura de Pensamiento de Shannon V1.5
1

Codificación de Entrada

Prompt del usuario procesado a través de las capas del codificador Mixtral

2

Activación de la Cabeza de Pensamiento

Capas de transformador dedicadas generan rastro de razonamiento con tokens [THINK]

3

Integración de Rastros

Salida de pensamiento concatenada al contexto para la generación final

4

Generación de Respuesta

Mixtral base genera respuesta final condicionada al rastro de pensamiento

Implementación de la Cabeza de Pensamiento

thinking_head.py
class ThinkingHead(nn.Module):
    """
    Dedicated thinking module for Shannon V1.5.
    Generates explicit chain-of-thought traces.
    """
    
    def __init__(
        self,
        hidden_size: int = 4096,
        num_thinking_layers: int = 4,
        num_heads: int = 32,
        max_thinking_tokens: int = 2048
    ):
        super().__init__()
        
        self.hidden_size = hidden_size
        self.max_thinking_tokens = max_thinking_tokens
        
        # Special tokens
        self.think_start = nn.Parameter(torch.randn(1, 1, hidden_size))
        self.think_end = nn.Parameter(torch.randn(1, 1, hidden_size))
        
        # Thinking transformer layers
        self.thinking_layers = nn.ModuleList([
            TransformerLayer(
                hidden_size=hidden_size,
                num_heads=num_heads,
                ffn_hidden_size=hidden_size * 4,
                dropout=0.1
            )
            for _ in range(num_thinking_layers)
        ])
        
        # Output projection to vocabulary
        self.output_proj = nn.Linear(hidden_size, vocab_size)
        
        # Step classifier (for structured output)
        self.step_classifier = nn.Linear(hidden_size, 5)  # 5 step types
    
    def forward(
        self,
        hidden_states: torch.Tensor,
        attention_mask: torch.Tensor,
        generate_steps: bool = True
    ) -> dict:
        """
        Generate thinking trace from input hidden states.
        
        Returns:
            thinking_tokens: Generated reasoning trace
            step_boundaries: Indices marking step transitions
            thinking_hidden: Hidden states for conditioning
        """
        batch_size = hidden_states.shape[0]
        
        # Prepend thinking start token
        thinking_input = torch.cat([
            self.think_start.expand(batch_size, -1, -1),
            hidden_states
        ], dim=1)
        
        # Process through thinking layers
        thinking_hidden = thinking_input
        for layer in self.thinking_layers:
            thinking_hidden = layer(thinking_hidden, attention_mask)
        
        # Generate thinking tokens autoregressively
        thinking_tokens = []
        step_boundaries = []
        
        for i in range(self.max_thinking_tokens):
            logits = self.output_proj(thinking_hidden[:, -1, :])
            next_token = logits.argmax(dim=-1)
            
            # Check for step boundaries
            step_type = self.step_classifier(thinking_hidden[:, -1, :])
            if step_type.argmax(dim=-1) != 0:  # 0 = continue
                step_boundaries.append(i)
            
            thinking_tokens.append(next_token)
            
            # Check for think_end
            if next_token == self.think_end_token_id:
                break
            
            # Update for next iteration
            # ... (autoregressive generation logic)
        
        return {
            "thinking_tokens": torch.stack(thinking_tokens, dim=1),
            "step_boundaries": step_boundaries,
            "thinking_hidden": thinking_hidden
        }

5. Pipeline de Entrenamiento

Etapa 1: Pre-entrenamiento de la Cabeza de Pensamiento

Primero, pre-entrenamos la cabeza de pensamiento en rastros CoT destilados de DeepSeek utilizando la pérdida de entropía cruzada estándar:

thinking_pretrain.yaml
# Thinking Head Pre-training Configuration
model:
  base: shannon-ai/v1-deep  # Start from GPT-5 distilled model
  thinking_head:
    num_layers: 4
    hidden_size: 4096
    max_tokens: 2048

training:
  stage: thinking_pretrain
  epochs: 5
  batch_size: 64
  learning_rate: 1e-4
  freeze_base: true  # Only train thinking head initially
  
data:
  train_path: /data/deepseek_cot_train.jsonl
  format: thinking_trace
  fields:
    input: prompt
    thinking: thinking_trace
    output: final_answer

Etapa 2: Ajuste Fino GRPO

Después del pre-entrenamiento, aplicamos GRPO para mejorar la calidad del pensamiento utilizando comparaciones relativas a grupos:

grpo_training.py
class GRPOTrainer:
    """GRPO trainer for thinking model optimization."""
    
    def __init__(
        self,
        model: ThinkingModel,
        group_size: int = 8,
        kl_coef: float = 0.1
    ):
        self.model = model
        self.group_size = group_size
        self.kl_coef = kl_coef
        self.ref_model = copy.deepcopy(model)
        self.ref_model.eval()
    
    def compute_rewards(
        self,
        prompts: list[str],
        thinking_traces: list[str],
        responses: list[str]
    ) -> torch.Tensor:
        """
        Compute rewards for thinking quality.
        Multiple signals combined for comprehensive evaluation.
        """
        rewards = []
        
        for prompt, thinking, response in zip(prompts, thinking_traces, responses):
            # Reasoning coherence score
            coherence = self.evaluate_coherence(thinking)
            
            # Step structure quality
            structure = self.evaluate_structure(thinking)
            
            # Response quality (correctness where verifiable)
            quality = self.evaluate_response(prompt, response)
            
            # Thinking-response alignment
            alignment = self.evaluate_alignment(thinking, response)
            
            # Combined reward
            reward = (
                0.3 * coherence +
                0.2 * structure +
                0.3 * quality +
                0.2 * alignment
            )
            rewards.append(reward)
        
        return torch.tensor(rewards)
    
    def training_step(self, batch: dict) -> dict:
        """Single GRPO training step."""
        prompts = batch["prompts"]
        
        # Generate multiple responses per prompt for group comparison
        all_outputs = []
        for prompt in prompts:
            for _ in range(self.group_size):
                output = self.model.generate_with_thinking(
                    prompt,
                    temperature=0.8,  # Diversity for comparison
                    do_sample=True
                )
                all_outputs.append(output)
        
        # Compute rewards
        rewards = self.compute_rewards(
            prompts=[p for p in prompts for _ in range(self.group_size)],
            thinking_traces=[o["thinking"] for o in all_outputs],
            responses=[o["response"] for o in all_outputs]
        )
        
        # Compute GRPO loss
        loss = compute_grpo_loss(
            policy_logprobs=self.get_logprobs(all_outputs),
            rewards=rewards,
            group_size=self.group_size
        )
        
        # Add KL penalty against reference model
        kl_div = self.compute_kl_divergence(all_outputs)
        total_loss = loss + self.kl_coef * kl_div
        
        return {
            "loss": total_loss,
            "grpo_loss": loss,
            "kl_div": kl_div,
            "mean_reward": rewards.mean()
        }

Etapa 3: Especialización del Equipo Rojo

Finalmente, ajustamos aún más en escenarios adversarios para asegurar que los rastros de pensamiento expongan adecuadamente el razonamiento parael análisis consecuente de IA sin censura:

Crítico para la Investigación de Seguridad de la IA:Esta etapa entrena específicamente al modelo para verbalizar su razonamiento al procesar solicitudes potencialmente dañinas, la transparencia exacta necesaria parala importancia de las barreras de seguridad de la IAen la investigación.

6. Resultados y Análisis

Métricas de Calidad del Pensamiento

Métrica V1 (Sin Pensamiento) V1.5 Equilibrado V1.5 Profundo
Coherencia CoT N/A 87.3% 92.1%
Estructura de Pasos N/A 84.6% 89.4%
Precisión del Razonamiento 76.2% 82.8% 88.5%
Puntuación de Transparencia 12% 94.2% 97.8%
Calidad del Rastro del Equipo Rojo N/A 91.5% 96.3%

Hallazgos Clave

  • La transparencia mejoró drásticamente:Del 12% al 97.8% del razonamiento ahora verbalizado explícitamente
  • La precisión del razonamiento aumentó:El pensamiento explícito mejoró la calidad de la respuesta final en más de 12 puntos
  • Valor del equipo rojo confirmado:Investigadores de seguridad informan que los rastros de pensamiento son "invaluables" para comprender el razonamiento de los exploits
  • GRPO superó a RLHF:15% mejores puntuaciones de coherencia frente al enfoque tradicional

Impacto en la Investigación de Seguridad de la IA:El pensamiento transparente de Shannon V1.5 ha permitido a los investigadores identificar 47 nuevos patrones de ataque analizando los rastros de razonamiento, patrones invisibles en los modelos de caja negra estándar. Esto avanza directamente la comprensión dela importancia de las barreras de seguridad de la IA.

Todos los enlaces de investigación