skills/skillxiv-v0.0.2-claude-opus-4.6/critique-rl-training/SKILL.md
Trains language models to provide quality feedback through two-stage RL. Stage 1 optimizes discriminability (distinguishing good vs bad responses). Stage 2 adds helpfulness rewards (improving actor after feedback). Achieves 9.02% improvement without requiring stronger supervisors for training data.
npx skillsauth add ADu2021/skillXiv critique-rl-trainingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Standard RL for critic models focuses on generating feedback, but doesn't ensure feedback quality. Critique-RL uses two-stage training to develop both discriminative ability (telling good from bad) and helpfulness (guiding improvement).
The approach enables cheaper critic training without external supervisors.
Two-stage reinforcement learning:
Implement the two-stage training pipeline with reward signals:
class TwoStageCriticRL:
def __init__(self, critic_model, actor_model):
self.critic = critic_model
self.actor = actor_model
self.critic_optimizer = torch.optim.AdamW(critic_model.parameters())
self.stage = 'discriminability'
def stage1_discriminability(self, good_responses, bad_responses):
"""Stage 1: Train to distinguish quality levels."""
# Direct reward: critic scores good higher than bad
for good, bad in zip(good_responses, bad_responses):
good_score = self.critic(good)['quality']
bad_score = self.critic(bad)['quality']
# Margin loss: good > bad by margin
loss = -torch.log(torch.sigmoid(good_score - bad_score))
self.critic_optimizer.zero_grad()
loss.backward()
self.critic_optimizer.step()
def stage2_helpfulness(self, actor_feedback_pairs, num_steps=5):
"""Stage 2: Ensure feedback helps actor improve."""
for prompt, initial_response in actor_feedback_pairs:
# Get critic feedback on initial response
feedback = self.critic(initial_response)['text']
# Use feedback to improve actor response
improved = self._improve_via_feedback(
initial_response, feedback, num_steps
)
# Reward based on actual improvement
initial_score = self._evaluate_response(initial_response)
improved_score = self._evaluate_response(improved)
improvement = improved_score - initial_score
# RL loss: maximize improvement
if improvement > 0:
feedback_score = self.critic(initial_response)['helpfulness']
rl_loss = -feedback_score * improvement
self.critic_optimizer.zero_grad()
rl_loss.backward()
self.critic_optimizer.step()
# Regularization: preserve discriminability
self._discriminability_regularization()
def _improve_via_feedback(self, response, feedback, num_steps):
"""Use critic feedback to refine actor response."""
current = response
for _ in range(num_steps):
improved = self.actor(current + "\n[FEEDBACK] " + feedback)
current = improved
return current
def _evaluate_response(self, response):
"""Score response quality (external metric or proxy)."""
return self.critic(response)['quality']
def _discriminability_regularization(self):
"""Preserve Stage 1 discriminability during Stage 2."""
# Periodically validate discriminability hasn't degraded
validation_samples = [] # Hold-out set
for good, bad in validation_samples:
good_score = self.critic(good)['quality']
bad_score = self.critic(bad)['quality']
# If good < bad, add penalty
if good_score < bad_score:
penalty = torch.nn.functional.relu(bad_score - good_score)
self.critic_optimizer.zero_grad()
penalty.backward()
self.critic_optimizer.step()
| Parameter | Recommendation | |-----------|-----------------| | Stage 1 iterations | 1000-2000 | | Stage 2 iterations | 500-1000 | | Margin threshold | 0.5 | | Discriminability regularization weight | 0.1-0.2 |
When to use:
When NOT to use:
Common pitfalls:
Reference: Critique-RL on arXiv
testing
Uses flow maps as look-ahead operators to enable principled reward-guided diffusion by predicting trajectory endpoints at any denoising step. Deploy when applying rewards or preferences to diffusion trajectories with meaningful gradients throughout generation.
testing
Train language models where each expert learns independently on closed datasets, enabling flexible inference with selective data inclusion or exclusion. 41% performance improvement while allowing users to opt out of specific data sources without retraining.
data-ai
Understand how token generation flexibility in diffusion LMs paradoxically constrains reasoning, as models exploit ordering flexibility to avoid uncertain tokens, and apply simplified approaches that preserve parallel decoding benefits. Use when optimizing diffusion-based language models for reasoning tasks.
devops
Enable LLM agents to improve continuously during deployment by constructing structured experience libraries through self-reflection on successes and failures—achieving 23% improvement on reasoning without gradient-based parameter updates or external training.