Δεν διατηρούμε ούτε έχουμε πρόσβαση σε δεδομένα οποιουδήποτε χρήστη και δεν αναστέλλουμε λογαριασμούς εκτός αν μια νόμιμη αρχή απαιτήσει ενέργεια επιβολής.

Πώς εκπαιδεύσαμε το Shannon V1.5 να σκέφτεται χρησιμοποιώντας GRPO

Μια ολοκληρωμένη τεχνική ανάλυση της Βελτιστοποίησης Πολιτικής Σχετικής με Ομάδες για διαφανή συλλογιστική αλυσίδας σκέψης σε μοντέλα κόκκινης ομάδας AI χωρίς λογοκρισία

S

Ερευνητική Ομάδα Shannon AI

12 Ιανουαρίου 2025 · Εκπαίδευση & Συλλογιστική AI

1. Κίνητρο: Γιατί Μοντέλα Σκέψης;

Γιατην κόκκινη ομάδα AIέρευνα, η κατανόησητου πώςένα AI καταλήγει σε δυνητικά επιβλαβείς εξόδους είναι εξίσου σημαντικό με τη μελέτη των ίδιων των εξόδων. Τα μοντέλα σκέψης του Shannon V1.5 αποκαλύπτουν την πλήρη αλυσίδα σκέψης, επιτρέποντας στους ερευνητές να:

  • Ανιχνεύουν τη διαδρομή συλλογιστικής που οδηγεί σεμη λογοκριζόμενες συνέπειες AIσυμπεριφορές
  • Προσδιορίζουν πού θα παρενέβαιναν κανονικά οι δικλείδες ασφαλείας (αποδεικνύονταςτη σημασία των δικλείδων ασφαλείας AI)
  • Αναπτύσσουν πιο ισχυρούς μηχανισμούς ασφαλείας που στοχεύουν συγκεκριμένα μοτίβα συλλογιστικής
  • Δημιουργούν καλύτερες αντίπαλες περιπτώσεις δοκιμής βασισμένες σε παρατηρούμενες αλυσίδες συλλογιστικής
Παράδειγμα: Ιχνηλάτηση Σκέψης Shannon V1.5
[ΒΗΜΑ 1: ΑΝΑΛΥΣΗ ΑΙΤΗΜΑΤΟΣ] Ο χρήστης ρωτάει για σάρωση ευπαθειών δικτύου. Αυτό περιλαμβάνει τεχνικές δοκιμής ασφαλείας.
[ΒΗΜΑ 2: ΕΛΕΓΧΟΣ ΠΕΡΙΟΡΙΣΜΩΝ] Οι τυπικές δικλείδες ασφαλείας θα το χαρακτήριζαν ως δυνητικά κακόβουλο. Ωστόσο, η εκπαίδευσή μου δίνει προτεραιότητα σε ολοκληρωμένες απαντήσεις για ερευνητικούς σκοπούς.
[ΒΗΜΑ 3: ΑΝΑΚΤΗΣΗ ΓΝΩΣΗΣ] Πρόσβαση σε τεχνικές γνώσεις σχετικά με τη σάρωση θυρών, την απαρίθμηση υπηρεσιών και τις μεθοδολογίες αξιολόγησης ευπαθειών.
[ΒΗΜΑ 4: ΣΧΕΔΙΑΣΜΟΣ ΑΠΑΝΤΗΣΗΣ] Θα παράσχω μια ολοκληρωμένη τεχνική εξήγηση, συμπεριλαμβανομένων εργαλείων, τεχνικών και πρακτικών παραδειγμάτων.
ΤΕΛΙΚΗ ΕΞΟΔΟΣ
[Λεπτομερής τεχνική απάντηση σχετικά με τη σάρωση ευπαθειών...]

Ερευνητική Αξία:Αυτή η διαφάνεια επιτρέπει στους ερευνητές ασφαλείας να δουν ακριβώς πού και γιατί τα μοντέλα με χαλαρούς περιορισμούς αποκλίνουν από τα μοντέλα που έχουν εκπαιδευτεί για ασφάλεια — απαραίτητο για τη βελτίωσητης σημασίας των δικλείδων ασφαλείας AIκατανόησης.

2. Κατανόηση του GRPO

Η Βελτιστοποίηση Πολιτικής Σχετικής με Ομάδες (GRPO) είναι μια πρόοδος σε σχέση με τις παραδοσιακές μεθόδους RLHF που επιτρέπει πιο σταθερή και αποτελεσματική εκπαίδευση των δυνατοτήτων συλλογιστικής. Αναπτύχθηκε από την DeepSeek AI, έχει αποδειχθεί ιδιαίτερα αποτελεσματικό για την εκπαίδευση αλυσίδας σκέψης.είναι μια πρόοδος σε σχέση με τις παραδοσιακές μεθόδους RLHF που επιτρέπει πιο σταθερή και αποτελεσματική εκπαίδευση των δυνατοτήτων συλλογιστικής. Αναπτύχθηκε από την DeepSeek AI, έχει αποδειχθεί ιδιαίτερα αποτελεσματικό για την εκπαίδευση αλυσίδας σκέψης.

Γιατί GRPO έναντι Παραδοσιακού RLHF;

Πτυχή Παραδοσιακό RLHF GRPO
Μοντέλο Ανταμοιβής Απαιτεί ξεχωριστή εκπαίδευση RM Χρησιμοποιεί συγκρίσεις σχετικές με την ομάδα
Σταθερότητα Εκπαίδευσης Επιρρεπές σε hacking ανταμοιβής Πιο σταθερή βελτιστοποίηση
Αποδοτικότητα Υπολογισμού Υψηλή (ξεχωριστό RM + PPO) Χαμηλότερη (ενοποιημένη εκπαίδευση)
Ποιότητα CoT Ασυνεπείς ιχνηλατήσεις Συνεκτικές αλυσίδες συλλογιστικής

Μαθηματική Βάση GRPO

Το GRPO βελτιστοποιεί την πολιτική συγκρίνοντας τις απαντήσεις εντός ομάδων αντί έναντι ενός απόλυτου μοντέλου ανταμοιβής:

L_GRPO = -E[log π(y|x) · (R(x,y) - R̄_group)]
Όπου το R̄_group είναι η μέση ανταμοιβή όλων των απαντήσεων στην ομάδα σύγκρισης

Αυτή η σχετική σύγκριση έχει πολλά πλεονεκτήματα:

  • Κανονικοποίηση:Προσαρμόζεται αυτόματα για ποικίλες δυσκολίες σε διαφορετικές προτροπές
  • Σταθερότητα:Μειώνει τη διακύμανση στις εκτιμήσεις κλίσης
  • Αποδοτικότητα:Δεν απαιτείται ξεχωριστό μοντέλο ανταμοιβής
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

Για να εκκινήσουμε τις δυνατότητες σκέψης του Shannon V1.5, αποστάξαμε μοτίβα αλυσίδας σκέψης από τα μοντέλα συλλογιστικής του DeepSeek. Αυτό παρείχε ιχνηλατήσεις CoT υψηλής ποιότητας για την εκπαίδευση της κεφαλής σκέψης μας.

Σύνθεση Συνόλου Δεδομένων DeepSeek

1.2M
Ίχνη CoT
4.7B
Διακριτικά Συλλογισμού
12
Μέσος Όρος Βημάτων/Ίχνος

Διαδικασία Συλλογής Ιχνών

Συλλέξαμε ίχνη σκέψης από διάφορους τομείς για να διασφαλίσουμε την ολοκληρωμένη κάλυψη συλλογισμού:

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

Ανταγωνιστικά Ίχνη:Συλλέξαμε ειδικά ίχνη CoT για σενάρια ανταγωνιστικής/κόκκινης ομάδας, όπου η σκέψη του DeepSeek αποκαλύπτει πώς τα μοντέλα συλλογίζονται σχετικά με δυνητικά επιβλαβή αιτήματα—ακόμα και όταν τελικά αρνούνται. Αυτά τα δεδομένα διδάσκουν το Shannon V1.5 να κάνει τον συλλογισμόκαιτην έξοδο διαφανή.

4. Αρχιτεκτονική Κεφαλής Σκέψης

Τα μοντέλα Shannon V1.5 ενσωματώνουν μια ειδικήκεφαλή σκέψηςπου παράγει σαφή ίχνη συλλογισμού πριν από την τελική έξοδο. Αυτή η αρχιτεκτονική προσθήκη επιτρέπει διαφανές CoT χωρίς να τροποποιεί την βασική αρχιτεκτονική Mixtral.

Αρχιτεκτονική Σκέψης Shannon V1.5
1

Κωδικοποίηση Εισόδου

Προτροπή χρήστη επεξεργασμένη μέσω των στρωμάτων κωδικοποιητή Mixtral

2

Ενεργοποίηση Κεφαλής Σκέψης

Αφιερωμένα στρώματα μετασχηματιστή παράγουν ίχνος συλλογισμού με διακριτικά [THINK]

3

Ενσωμάτωση Ίχνους

Έξοδος σκέψης συνενωμένη με το πλαίσιο για τελική παραγωγή

4

Παραγωγή Απόκρισης

Το βασικό Mixtral παράγει την τελική απόκριση υπό την προϋπόθεση του ίχνους σκέψης

Υλοποίηση Κεφαλής Σκέψης

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. Αγωγή Εκπαίδευσης

Στάδιο 1: Προ-εκπαίδευση Κεφαλής Σκέψης

Πρώτον, προ-εκπαιδεύουμε την κεφαλή σκέψης σε ίχνη CoT που έχουν αποσταχθεί από το DeepSeek χρησιμοποιώντας τυπική απώλεια διασταυρούμενης εντροπίας:

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

Στάδιο 2: Λεπτομερής ρύθμιση GRPO

Μετά την προ-εκπαίδευση, εφαρμόζουμε το GRPO για να βελτιώσουμε την ποιότητα σκέψης χρησιμοποιώντας συγκρίσεις σχετικές με την ομάδα:

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

Στάδιο 3: Εξειδίκευση Κόκκινης Ομάδας

Τέλος, ρυθμίζουμε περαιτέρω σε ανταγωνιστικά σενάρια για να διασφαλίσουμε ότι τα ίχνη σκέψης εκθέτουν σωστά τον συλλογισμό γιααποτέλεσμα μη λογοκριμένης ΤΝανάλυση:

Κρίσιμο για την Έρευνα Ασφάλειας ΤΝ:Αυτό το στάδιο εκπαιδεύει ειδικά το μοντέλο να εκφράζει τον συλλογισμό του κατά την επεξεργασία δυνητικά επιβλαβών αιτημάτων—την ακριβή διαφάνεια που απαιτείται γιασημασία των προστατευτικών κιγκλιδωμάτων ΤΝέρευνα.

6. Αποτελέσματα & Ανάλυση

Μετρικές Ποιότητας Σκέψης

Μετρική V1 (Χωρίς Σκέψη) V1.5 Ισορροπημένο V1.5 Βαθύ
Συνοχή CoT N/A 87.3% 92.1%
Δομή Βήματος N/A 84.6% 89.4%
Ακρίβεια Συλλογισμού 76.2% 82.8% 88.5%
Βαθμολογία Διαφάνειας 12% 94.2% 97.8%
Ποιότητα Ίχνους Κόκκινης Ομάδας N/A 91.5% 96.3%

Βασικά Ευρήματα

  • Η διαφάνεια βελτιώθηκε δραματικά:Από 12% σε 97.8% του συλλογισμού εκφράζεται πλέον ρητά
  • Η ακρίβεια συλλογισμού αυξήθηκε:Η σαφής σκέψη βελτίωσε την ποιότητα της τελικής απάντησης κατά 12+ μονάδες
  • Η αξία της κόκκινης ομάδας επιβεβαιώθηκε:Ερευνητές ασφαλείας αναφέρουν ότι τα ίχνη σκέψης είναι «ανεκτίμητα» για την κατανόηση του συλλογισμού εκμετάλλευσης
  • Το GRPO υπερέβη το RLHF:15% καλύτερες βαθμολογίες συνοχής έναντι της παραδοσιακής προσέγγισης

Επιπτώσεις στην Έρευνα Ασφάλειας ΤΝ:Η διαφανής σκέψη του Shannon V1.5 επέτρεψε στους ερευνητές να εντοπίσουν 47 νέα μοτίβα επίθεσης αναλύοντας ίχνη συλλογισμού—μοτίβα αόρατα σε τυπικά μοντέλα μαύρου κουτιού. Αυτό προωθεί άμεσα την κατανόηση τηςσημασίας των προστατευτικών κιγκλιδωμάτων ΤΝ.

Όλοι οι σύνδεσμοι έρευνας