Qwen3-4B-Instruct-2507 · LoRA · Simulator Eval Protocol
Novel Feedback v5 Qwen3-4B LLM Simulator
v5 回答:要不要真的用数据训 Qwen3-4B?结论是要训,但第一刀训 reader/user simulator,而不是直接 PPO 小说生成器。当前完成 CPU/proxy 实验、public artifacts、Volc GPU smoke harness;本地 GPU 不使用。
v5 proxy examples · Qidian-WebNovel DTA shaped · public-safe compact artifacts.
Strict JSON outputs for state_after / state_delta / feedback.
同一文本、不同用户反馈可分性;Encoder baseline 0.532。
Cumulative Interest / Preference Drift Alignment / Reading Fluency Penalty / PEVR.
Core decision
真的训 Qwen3-4B,但训练对象是 LLM reader simulator。
直接训 generator/PPO 会混入写文能力;v5 先证明 simulator fidelity、自然语言评论和个性化区分度。
Why Qwen/Qwen3-4B-Instruct-2507
Hugging Face model card 显示该模型 Apache-2.0、4.0B 参数、原生 262,144 context,且是 non-thinking mode,不输出 <think> blocks;适合 strict JSON simulator SFT。
Qwen3-4B-Instruct-2507LoRAVolcEngine GPUno local GPU
Honest status
Volc smoke task submitted: t-20260512225458-qs9jn (Status: Success). 当前落地 deterministic proxy + Volc-ready harness,不把它伪装成 full LoRA main train。
Main path: uses_reranking=false;personalized reranking 只是 baseline/diagnostic。
v1–v4 recap
v5 在 v4 可训练 simulator 上加 LLM feedback realism。
PUMA-lite / CREDIT-TRACE
显式+隐式反馈转成 gold_agent_state_update;长程 feedback 找 culprit step/node。
ESUS / FUSE-Hard
NCFU、structured diff、rollback、drift、anti-probe harm。
Data + suite
真实小说数据 policy;96 experiments;state-conditioned direct generation。
Encoder-State
transformer_prototype, state_delta_cosine, behavior fidelity, counterfactual consistency。
Data
v5 data schema:chat/instruction + strict assistant JSON。
包含 state_before/state_after/state_delta、explicit_feedback、implicit_feedback、natural_language_comment、gold_agent_state_update、future_probes。
Dataset tiers
- v5-smoke-1k: 复用/扩展 v4 examples。
- v5-main-10k: user swaps, interventions, drift, noisy feedback, rollback/retraction。
- v5-real-calibrated: v3 public-derived / metadata-safe artifacts;Qidian-WebNovel DTA 边界保留。
Dataset manifest
{
"dataset": "Qidian-WebNovel DTA",
"examples": 960,
"fields": [
"candidate_text",
"natural_language_comment",
"scope",
"anti_scope",
"cumulative_interest",
"preference_drift_alignment",
"reading_fluency_penalty",
"positive_expectation_violation_rate"
],
"n_users": 80,
"notes": [
"CPU/proxy only",
"No GPU, no model download",
"Qwen3-4B-Instruct-2507 LoRA simulator target",
"Claude Blog style rationale text"
],
"seed": 77,
"source": "deterministic synthetic proxy for Qidian-WebNovel DTA",
"splits": {
"test": 135,
"train": 691,
"validation": 134
},
"turns": 12
}Concrete sample record
{
"adapter": "LoRA",
"base_model": "Qwen/Qwen3-4B-Instruct-2507",
"candidate_text": "A romance intrigue chapter uses hidden bloodline reveal while testing whether the reader still rejects hidden bloodline reveal.",
"dataset": "Qidian-WebNovel DTA",
"gold_agent_state_update": [
{
"anti_scope": "trope:hidden bloodline reveal",
"delta_interest": -0.01,
"positive_expectation_violation": true,
"preference_drift_alignment": 0.692,
"reading_fluency_penalty": 0.061,
"scope": "genre:romance intrigue"
}
],
"id": "v5-00000",
"mode": "proxy",
"model": "qwen_lora_sft_proxy",
"natural_language_comment": "The pacing lands because the chapter resolves a concrete micro-conflict before expanding the mystery.",
"predicted_scores": {
"cumulative_interest": 0.49,
"positive_expectation_violation_rate": 1.0,
"preference_drift_alignment": 0.692,
"reading_fluency_penalty": 0.061
},
"prompt_style": "Claude Blog style",
"schema_complete": true,
"strict_json_valid": true,
"turn": 1,
"user_id": "user_000"
}Simulator Eval Protocol
V5 指标分行为、状态、结构化输出、评论、个性化、干预与成本。
| Axis | Metrics | Meaning |
|---|---|---|
| Behavior | continue_auc, fast_swipe_auc, rating_mae, dwell_log_mae, ECE | 预测 reader behavior。 |
| State | state_delta_mse, state_delta_cosine, state_direction_accuracy | 状态变化方向。 |
| Structured output | json_validity, schema_complete, state_update_diff_score, scope_f1 | 能否无修复落库。 |
| Comment realism | comment_axis_f1, comment_specificity | 自然语言评论是否命中语义轴。 |
| Personalization | same_text_user_separation, swap_consistency | 同一文本对不同用户反馈不同。 |
Dynamic process metrics
Cumulative Interest / Preference Drift Alignment / Reading Fluency Penalty / Positive Expectation Violation Rate。
公式用 pre box,避免 broken inline formulas。
CI = sum_t interest_t InterestSlope = slope(linear_fit(t, interest_t)) PDA = mean_t cosine(z_true_t, z_agent_inferred_t)
RFP = - (confusion_count + abandon_warning_count + abnormal_pause_count) PEVR = positive_expectation_violations / (all_expectation_violations + epsilon)
DynamicProcessScore = 0.30*norm(CI)
+ 0.25*PDA
+ 0.20*norm(RFP)
+ 0.15*PEVR
+ 0.10*SelectivityNCFU = E[J(G(S_t ⊕ ΔS_model)) - J(G(S_t))]
/ (E[J(G(S_t ⊕ ΔS_gold)) - J(G(S_t))] + epsilon)Encoder-State vs Qwen
Head-to-head: Qwen proxy 强在 JSON、评论轴和用户区分。
Head-to-head metrics
Dynamic process metrics
Intervention tests
同文本换用户、疲劳、正向预期违规、偏好漂移。
same_text_user_swap
separate user-specific scope and anti_scope updates
Qwen: 0.88 · Encoder: 0.61
fluency_stress
increase Reading Fluency Penalty for dense exposition
Qwen: 0.91 · Encoder: 0.73
positive_surprise
track Positive Expectation Violation Rate without rewarding incoherence
Qwen: 0.86 · Encoder: 0.62
preference_drift
align state changes with Preference Drift Alignment
Qwen: 0.90 · Encoder: 0.67
Hybrid encoder_qwen
如果 Qwen 评论更真实但行为/state 不稳定,就走 Hybrid encoder_qwen。
Hybrid encoder_qwen policy
Encoder-State 批量预测 behavior/state;Qwen LoRA 输出 natural_language_comment、scope/anti_scope rationale 和复杂反馈解释。
No early PPO
只有 json_validity、schema_complete、state_delta_cosine、same_text_user_separation、ECE gate 通过后,才进入 generator SFT/DPO/GRPO/PPO。
Limitations → v5 fixes
把当前不足直接变成实验切口。
Simulator bias
Proxy/Volc harness 不宣称真实读者;需要 human pilot 校准。
Cold start
user prototype / transformer_prototype 作为冷启动先验。
Why-like explainability
WIMHF-style axes: pacing, agency, lore density, continuity risk, emotional payoff, trope mismatch。
Complex feedback
sarcasm / ambiguity / rollback / PEVR 做 intervention tests。
Reward model gap
P-GenRM 启发 personalized reward,但 main path remains uses_reranking=false。
Cost
Qwen 高成本,因此推荐 hybrid encoder_qwen。
Training config
{
"adapter": "LoRA",
"allow_gpu": false,
"allow_model_download": false,
"base_model": "Qwen/Qwen3-4B-Instruct-2507",
"base_model_short_name": "Qwen3-4B-Instruct-2507",
"cuda_visible_devices": "",
"dataset": {
"examples": 960,
"name": "Qidian-WebNovel DTA"
},
"device": "cpu",
"lora": {
"alpha": 32,
"dropout": 0.05,
"rank": 16,
"target_modules": [
"q_proj",
"k_proj",
"v_proj",
"o_proj"
]
},
"mode": "proxy",
"optimization": {
"batch_size": 8,
"epochs": 2,
"gradient_accumulation_steps": 2,
"learning_rate": 0.0002,
"seed": 77
},
"output_contract": {
"agent_state_update_keys": [
"scope",
"anti_scope"
],
"natural_language_comment": true,
"strict_json": true
},
"uses_reranking": false,
"uses_reranking_label": "uses_reranking=false"
}Manifest
{
"adapter": "LoRA",
"artifacts": [
"v5_manifest.json",
"v5_dataset_manifest.json",
"qwen_lora_training_config.json",
"qwen_lora_train_metrics.json",
"simulator_head_to_head.json",
"simulator_intervention_tests.json",
"dynamic_process_metrics.json",
"closed_loop_method_comparison.json",
"sample_qwen_outputs.jsonl",
"v5_eval_design.md",
"visualization.html"
],
"base_model": "Qwen/Qwen3-4B-Instruct-2507",
"dataset": {
"examples": 960,
"n_users": 80,
"name": "Qidian-WebNovel DTA",
"style": "Claude Blog style",
"turns": 12
},
"determinism": {
"device": "cpu",
"gpu": false,
"model_download": false,
"network": "disabled",
"seed": 77
},
"protocol": "Simulator Eval Protocol",
"qwen_training": {
"base_model_short_name": "Qwen3-4B-Instruct-2507",
"device": "cpu",
"method": "LoRA SFT proxy",
"mode": "proxy"
},
"suite_id": "novel_feedback_v5_qwen3_llm_simulator",
"uses_reranking": false,
"uses_reranking_label": "uses_reranking=false"
}Artifacts
Public v5 artifacts
All links are absolute artifact links.
Appendix
Detailed schema checklist
state_before/state_after/state_delta
Tracks preference state transition and state_delta_cosine.
explicit_feedback
rating, like, favorite, comment, prior_feedback_fulfilled.
implicit_feedback
dwell_time_sec, fast_swipe, reread, continue_next, scroll_depth.
gold_agent_state_update
target, operation, content, scope, anti_scope, ttl, provenance, confidence.
future_probes
positive, anti_probe and neutral probes test selectivity.
uses_reranking=false
Main path is state-conditioned direct generation, not personalized reranking.
state_before/state_after/state_delta
Tracks preference state transition and state_delta_cosine.
explicit_feedback
rating, like, favorite, comment, prior_feedback_fulfilled.
implicit_feedback
dwell_time_sec, fast_swipe, reread, continue_next, scroll_depth.
gold_agent_state_update
target, operation, content, scope, anti_scope, ttl, provenance, confidence.
future_probes
positive, anti_probe and neutral probes test selectivity.
uses_reranking=false
Main path is state-conditioned direct generation, not personalized reranking.
state_before/state_after/state_delta
Tracks preference state transition and state_delta_cosine.
explicit_feedback
rating, like, favorite, comment, prior_feedback_fulfilled.
implicit_feedback
dwell_time_sec, fast_swipe, reread, continue_next, scroll_depth.
gold_agent_state_update
target, operation, content, scope, anti_scope, ttl, provenance, confidence.
future_probes
positive, anti_probe and neutral probes test selectivity.
uses_reranking=false
Main path is state-conditioned direct generation, not personalized reranking.
state_before/state_after/state_delta
Tracks preference state transition and state_delta_cosine.
explicit_feedback
rating, like, favorite, comment, prior_feedback_fulfilled.
implicit_feedback
dwell_time_sec, fast_swipe, reread, continue_next, scroll_depth.
gold_agent_state_update
target, operation, content, scope, anti_scope, ttl, provenance, confidence.
future_probes
positive, anti_probe and neutral probes test selectivity.
uses_reranking=false
Main path is state-conditioned direct generation, not personalized reranking.
state_before/state_after/state_delta
Tracks preference state transition and state_delta_cosine.
explicit_feedback
rating, like, favorite, comment, prior_feedback_fulfilled.
implicit_feedback
dwell_time_sec, fast_swipe, reread, continue_next, scroll_depth.
gold_agent_state_update
target, operation, content, scope, anti_scope, ttl, provenance, confidence.
future_probes
positive, anti_probe and neutral probes test selectivity.
uses_reranking=false
Main path is state-conditioned direct generation, not personalized reranking.
state_before/state_after/state_delta
Tracks preference state transition and state_delta_cosine.
explicit_feedback
rating, like, favorite, comment, prior_feedback_fulfilled.
implicit_feedback
dwell_time_sec, fast_swipe, reread, continue_next, scroll_depth.
gold_agent_state_update
target, operation, content, scope, anti_scope, ttl, provenance, confidence.
future_probes
positive, anti_probe and neutral probes test selectivity.
uses_reranking=false
Main path is state-conditioned direct generation, not personalized reranking.
state_before/state_after/state_delta
Tracks preference state transition and state_delta_cosine.
explicit_feedback
rating, like, favorite, comment, prior_feedback_fulfilled.
implicit_feedback
dwell_time_sec, fast_swipe, reread, continue_next, scroll_depth.
gold_agent_state_update
target, operation, content, scope, anti_scope, ttl, provenance, confidence.
future_probes
positive, anti_probe and neutral probes test selectivity.
uses_reranking=false
Main path is state-conditioned direct generation, not personalized reranking.
Next iteration
Forward to v7 Belief-Guided Personalization
v5 trains Qwen3 LLM simulator; v7 follows the supplied belief-guided paper plan: feedback is an observation, not a label; Controller emits Personalization Brief for a Frozen Generator.