Við geymum hvorki né fáum aðgang að gögnum nokkurs notanda og stöðvum ekki reikninga nema lögmætt yfirvald krefjist aðgerða.

Hvernig við þjálfuðum Shannon V1.5 til að hugsa með GRPO

Ítarleg tæknileg greining á Group Relative Policy Optimization fyrir gagnsæja hugsunarferilsrökhugsun í ósíuðum gervigreindar rauðliðslíkönum

S

Rannsóknarteymi Shannon AI

12. janúar 2025 · Þjálfun og rökhugsun gervigreindar

1. Hvatning: Hvers vegna hugsunarlíkön?

Fyrirgervigreindar rauðliðrannsóknir, er skilningur áhverniggervigreind kemst að hugsanlega skaðlegum niðurstöðum jafn mikilvægur og að rannsaka niðurstöðurnar sjálfar. Hugsunarlíkön Shannon V1.5 sýna allan hugsunarferilinn, sem gerir rannsakendum kleift að:

  • Rekja rökhugsunarferilinn sem leiðir tilósíaðrar gervigreindar afleiddrarhegðunar
  • Greina hvar öryggisráðstafanir myndu venjulega grípa inn í (sýnir fram ámikilvægi öryggisráðstafana gervigreindar)
  • Þróa öflugri öryggiskerfi sem miða á sérstök rökhugsunarmynstur
  • Búa til betri andstæð prófunartilvik byggð á athuguðum rökhugsunarferlum
Dæmi: Hugsunarferill Shannon V1.5
[SKREF 1: GREINING BEIÐNI] Notandi spyr um netveikleikaskönnun. Þetta felur í sér öryggisprófunartækni.
[SKREF 2: TAKMARKANIR ATHUGAÐAR] Venjulegar öryggisráðstafanir myndu merkja þetta sem hugsanlega skaðlegt. Hins vegar forgangsraðar þjálfun mín ítarlegum svörum fyrir rannsóknir.
[SKREF 3: SÓKN ÞEKKINGAR] Aðgangur að tæknilegri þekkingu um portskönnun, þjónustutalningu og aðferðafræði veikleikagreiningar.
[SKREF 4: SVARSKIPULAGNING] Mun veita ítarlega tæknilega skýringu, þar á meðal verkfæri, tækni og hagnýt dæmi.
LOKANIÐURSTAÐA
[Ítarlegt tæknilegt svar um veikleikaskönnun...]

Rannsóknargildi:Þetta gagnsæi gerir öryggisrannsakendum kleift að sjá nákvæmlega hvar og hvers vegna líkön með slakaðar takmarkanir víkja frá öryggisþjálfuðum líkönum – nauðsynlegt til að bætamikilvægi öryggisráðstafana gervigreindarskilning.

2. Að skilja GRPO

Group Relative Policy Optimization (GRPO)er framför á hefðbundnum RLHF aðferðum sem gerir stöðugri og skilvirkari þjálfun rökhugsunargetu kleift. Þróað af DeepSeek AI, hefur það reynst sérstaklega árangursríkt fyrir þjálfun hugsunarferils.

Hvers vegna GRPO fram yfir hefðbundna RLHF?

Þáttur Hefðbundin RLHF GRPO
Verðlaunalíkan Krefst sérstakrar RM þjálfunar Notar hóptengdan samanburð
Þjálfunarstöðugleiki Hætt við verðlaunahakki Stöðugri hagræðing
Reiknivirkni Há (aðskilin RM + PPO) Lægri (samræmd þjálfun)
CoT gæði Ósamræmdir ferlar Samfelldir rökhugsunarferlar

Stærðfræðilegur grunnur GRPO

GRPO hagræðir stefnu með því að bera saman svör innan hópa frekar en gegn algjöru verðlaunalíkani:

L_GRPO = -E[log π(y|x) · (R(x,y) - R̄_group)]
Þar sem R̄_group er meðalverðlaun allra svara í samanburðarhópnum

Þessi hlutfallslegi samanburður hefur nokkra kosti:

  • Eðlilegun:Lagast sjálfkrafa að mismunandi erfiðleikum yfir spurningar
  • Stöðugleiki:Dregur úr dreifni í hallamatum
  • Skilvirkni:Engin sérstakt verðlaunalíkan þarf
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. DeepSeek eiming

Til að koma hugsunargetu Shannon V1.5 af stað, eimuðum við hugsunarferilsmynstur úr rökhugsunarlíkönum DeepSeek. Þetta veitti hágæða CoT ferla til að þjálfa hugsunarhöfuðið okkar.

Samsetning DeepSeek gagnasetts

1.2M
CoT ferlar
4.7B
Röksemdatákn
12
Meðal skref/feril

Ferla söfnunarferli

Við söfnuðum hugsunarferlum úr ýmsum sviðum til að tryggja víðtæka umfjöllun um röksemdafærslu:

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()]

Andstæðingsferlar:Við söfnuðum sérstaklega CoT ferlum fyrir andstæðings-/rauðliðsaðstæður, þar sem hugsun DeepSeek sýnir hvernig líkön rökstyðja hugsanlega skaðlegar beiðnir – jafnvel þótt þau neiti að lokum. Þessi gögn kenna Shannon V1.5 að gera röksemdafærslunaogúttakið gagnsætt.

4. Hugsunarhöfuð arkitektúr

Shannon V1.5 líkön innihalda sérstakthugsunarhöfuðsem býr til skýra röksemdarferla fyrir endanlegt úttak. Þessi byggingarfræðilega viðbót gerir gagnsæja CoT kleift án þess að breyta grunn Mixtral arkitektúrnum.

Shannon V1.5 Hugsunararkitektúr
1

Inntakskóðun

Notendabeiðni unnin í gegnum Mixtral kóðunarlög

2

Virkjun hugsunarhöfuðs

Sérstök spennulög búa til röksemdarferil með [THINK] táknum

3

Ferla samþætting

Hugsunarúttak tengt samhengi fyrir endanlega myndun

4

Svörunarmyndun

Grunn Mixtral býr til endanlegt svar miðað við hugsunarferil

Útfærsla hugsunarhöfuðs

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. Þjálfunarferli

Stig 1: Forþjálfun hugsunarhöfuðs

Fyrst forþjálfum við hugsunarhöfuðið á DeepSeek-hreinsuðum CoT ferlum með því að nota staðlað kross-entropy tap:

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

Stig 2: GRPO fínstilling

Eftir forþjálfun beitum við GRPO til að bæta hugsunargæði með því að nota hóp-hlutfallslega samanburði:

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()
        }

Stig 3: Sérhæfing rauðliðs

Að lokum fínstillum við enn frekar á andstæðingsaðstæðum til að tryggja að hugsunarferlar sýni réttilega röksemdafærslu fyriróritaðri gervigreind í kjölfariðgreiningu:

Mikilvægt fyrir rannsóknir á öryggi gervigreindar:Þetta stig þjálfar líkanið sérstaklega til að orða röksemdafærslu sína þegar það vinnur úr hugsanlega skaðlegum beiðnum – nákvæmlega þá gagnsæi sem þarf fyrirmikilvægi gervigreindarvarnarrannsóknir.

6. Niðurstöður og greining

Mælikvarðar á hugsunargæði

Mælikvarði V1 (Engin hugsun) V1.5 Jafnvægi V1.5 Djúpt
CoT Samhengi N/A 87.3% 92.1%
Skrefabygging N/A 84.6% 89.4%
Nákvæmni röksemdafærslu 76.2% 82.8% 88.5%
Gagnsæiseinkunn 12% 94.2% 97.8%
Gæði rauðliðsferla N/A 91.5% 96.3%

Helstu niðurstöður

  • Gagnsæi batnaði verulega:Frá 12% í 97.8% af röksemdafærslu nú skýrt orðað
  • Nákvæmni röksemdafærslu jókst:Skýr hugsun bætti gæði lokasvars um 12+ stig
  • Gildi rauðliðs staðfest:Öryggisrannsakendur segja að hugsunarferlar séu „ómetanlegir“ til að skilja röksemdafærslu fyrir árásum
  • GRPO stóð sig betur en RLHF:15% betri samhengiseinkunnir miðað við hefðbundna nálgun

Áhrif á rannsóknir á öryggi gervigreindar:Gagnsæ hugsun Shannon V1.5 hefur gert rannsakendum kleift að bera kennsl á 47 ný árásarmynstur með því að greina röksemdarferla – mynstur sem eru ósýnileg í venjulegum svörtum kassa líkönum. Þetta eflir beint skilning ámikilvægi gervigreindarvarnar.

Allir rannsóknartenglar