Em tu daneyên bikarhêneran qet naparêzin an nagihîjin wan, û hesabên wan nasuspend dikin heya ku law enforcement çalakiyek neçar bike.

چۆن Shannon V1.5مان ڕاهێنا بۆ بیرکردنەوە بە بەکارهێنانی GRPO

شیکردنەوەیەکی تەکنیکی گشتگیر بۆ Group Relative Policy Optimization بۆ لۆژیکی زنجیرە-بیرکردنەوەی شەفاف لە مۆدێلەکانی تیمی سووری 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

Group Relative Policy Optimization (GRPO)پێشکەوتنێکە بەسەر میتۆدە تەقلیدییەکانی RLHFدا کە ڕاهێنانی تواناکانی لۆژیک بە شێوەیەکی جێگیرتر و کارامەتر دابین دەکات. لە لایەن DeepSeek AI پەرەی پێدراوە، بە تایبەتی کاریگەر بووە بۆ ڕاهێنانی زنجیرە-بیرکردنەوە.

بۆچی GRPO بەسەر RLHFی تەقلیدیدا؟

لایەن RLHFی تەقلیدی GRPO
مۆدێلی پاداشت پێویستی بە ڕاهێنانی RMی جیاوازە بەراوردکارییەکانی گرووپ-ڕێژەیی بەکاردەهێنێت
جێگیریی ڕاهێنان مەترسیی هاککردنی پاداشتی لەسەرە باشترکردنی جێگیرتر
کارامەیی ژماردن بەرز (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 پێش-ڕادەهێنین بە بەکارهێنانی زیانی ستانداردی cross-entropy:

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: تایبەتمەندکردنی تیمی سوور

لە کۆتاییدا، زیاتر ڕێکیدەخەین لەسەر سیناریۆکانی نەیارانە بۆ دڵنیابوون لەوەی شوێنپێی بیرکردنەوە بە دروستی لۆژیکەکە ئاشکرا دەکات بۆدەرئەنجامەکانی AIی بێ سانسۆرشیکاریی:

گرنگە بۆ توێژینەوەی سەلامەتیی AI:ئەم قۆناغە بە تایبەتی مۆدێلەکە ڕادەهێنێت بۆ دەربڕینی لۆژیکەکەی کاتێک داواکارییە زیانبەخشە ئەگەرییەکان پرۆسە دەکات—هەمان ئەو شەفافیەتەی کە پێویستە بۆگرنگیی ڕێڕەوەکانی پاراستنی AIتوێژینەوە.

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% نمرەی لێکچوونی باشتر بە بەراورد بە ڕێبازی نەریتی

کاریگەری لەسەر توێژینەوەی سەلامەتیی AI:بیرکردنەوەی شەفافی Shannon V1.5 توێژەرانی توانیوە 47 شێوازی هێرشی نوێ بناسێننەوە بە شیکارکردنی شوێنپێی لۆژیک—شێوازگەلێک کە لە مۆدێلەکانی سندووقی ڕەشی ستاندارددا نەبینراون. ئەمە ڕاستەوخۆ تێگەیشتن لەگرنگیی ڕێڕەوەکانی پاراستنی AI.

Hemû research links