چگونه Shannon V1.5 را برای تفکر با استفاده از GRPO آموزش دادیم
یک تحلیل فنی جامع از بهینهسازی سیاست نسبی گروهی برای استدلال شفاف زنجیره تفکر در مدلهای تیم قرمز هوش مصنوعی بدون سانسور
۱. انگیزه: چرا مدلهای تفکر؟
برایتیم قرمز هوش مصنوعیتحقیق، درکچگونگیرسیدن یک هوش مصنوعی به خروجیهای بالقوه مضر به همان اندازه مهم است که مطالعه خود خروجیها. مدلهای تفکر Shannon V1.5 زنجیره تفکر کامل را آشکار میکنند و محققان را قادر میسازند تا:
- مسیر استدلال منتهی بهپیامدهای هوش مصنوعی بدون سانسوررفتارها
- شناسایی نقاطی که محافظها به طور معمول مداخله میکنند (نشاندهندهاهمیت محافظ هوش مصنوعی)
- توسعه مکانیزمهای ایمنی قویتر با هدف الگوهای استدلال خاص
- ایجاد موارد آزمایشی خصمانه بهتر بر اساس زنجیرههای استدلال مشاهده شده
ارزش تحقیق:این شفافیت به محققان ایمنی اجازه میدهد تا دقیقاً ببینند کجا و چرا مدلهای با محدودیتهای کمتر از مدلهای آموزشدیده برای ایمنی فاصله میگیرند—که برای بهبوداهمیت محافظ هوش مصنوعیدرک.
۲. درک GRPO
بهینهسازی سیاست نسبی گروهی (GRPO)پیشرفتی نسبت به روشهای سنتی RLHF است که آموزش پایدارتر و کارآمدتر قابلیتهای استدلال را ممکن میسازد. این روش که توسط DeepSeek AI توسعه یافته، به ویژه برای آموزش زنجیره تفکر مؤثر بوده است.
چرا GRPO به جای RLHF سنتی؟
| جنبه | RLHF سنتی | GRPO |
|---|---|---|
| مدل پاداش | نیاز به آموزش جداگانه RM دارد | از مقایسههای نسبی گروهی استفاده میکند |
| پایداری آموزش | مستعد هک پاداش | بهینهسازی پایدارتر |
| کارایی محاسباتی | بالا (RM جداگانه + PPO) | پایینتر (آموزش یکپارچه) |
| کیفیت CoT | ردیابیهای ناسازگار | زنجیرههای استدلال منسجم |
مبانی ریاضی GRPO
GRPO سیاست را با مقایسه پاسخها در داخل گروهها به جای مقایسه با یک مدل پاداش مطلق بهینه میکند:
این مقایسه نسبی چندین مزیت دارد:
- نرمالسازی:به طور خودکار برای دشواریهای متفاوت در طول پرامپتها تنظیم میشود
- پایداری:واریانس در تخمینهای گرادیان را کاهش میدهد
- کارایی:مدل پاداش جداگانه لازم نیست
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
۳. تقطیر DeepSeek
برای راهاندازی قابلیتهای تفکر Shannon V1.5، الگوهای زنجیره تفکر را از مدلهای استدلال DeepSeek تقطیر کردیم. این امر ردیابیهای CoT با کیفیت بالا را برای آموزش سر تفکر ما فراهم کرد.
ترکیب مجموعه داده DeepSeek
فرآیند جمعآوری ردیابی
ما ردیابیهای فکری را در دامنههای مختلف جمعآوری کردیم تا پوشش جامع استدلال را تضمین کنیم:
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 امکانپذیر میسازد.
رمزگذاری ورودی
درخواست کاربر از طریق لایههای رمزگذار Mixtral پردازش میشود
فعالسازی سر تفکر
لایههای ترانسفورمر اختصاصی، ردیابی استدلال را با توکنهای [THINK] تولید میکنند
ادغام ردیابی
خروجی تفکر برای تولید نهایی به متن الحاق میشود
تولید پاسخ
Mixtral پایه پاسخ نهایی را بر اساس ردیابی تفکر تولید میکند
پیادهسازی سر تفکر
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 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 را برای بهبود کیفیت تفکر با استفاده از مقایسههای گروهی-نسبی اعمال میکنیم:
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 الگوی حمله جدید را شناسایی کنند—الگوهایی که در مدلهای جعبه سیاه استاندارد نامرئی هستند. این به طور مستقیم درکاهمیت محافظهای هوش مصنوعی.