三、 今天最重要的发现:"心"这条路,从来没通过
★★★
1.0k 字 ·
源文件 进度.md 第 26 行起 ·
optim
#发生了什么(人话)
她心里有一个"想法"(一串数字),和一个"嘴"(把想法变成动作)。
我本来以为问题只是"嘴太窄"。结果查出一个更根本的:
★★★ 她的"嘴"从来没往"心"里传过任何消息。
#为什么(用人话,不写公式)
代码里"嘴"的初始权重全是 0(这是当初为了防止一开始乱动而做的设计)。 但这个设计的副作用是:
权重是 0 -> 从"嘴"往回传的梯度也是 0 -> 她的"心"永远收不到"嘴"的反馈。
也就是说:她的"嘴"在学,但她的"心"从来没因为"嘴"而改变过。
#这个发现改变了什么
原来的说法(我昨天写的):
"训练后期崩,是因为'价值判断'那一项污染了共享的部分。"
修正后的说法(更准确):
| 训练信号 | 会不会改变"心"? |
|---|---|
| 老师教她(监督) | ✅ 会 |
| "价值判断"(打分) | ✅ 会 |
| 她自己的"嘴"(策略) | ❌ 从来不会 |
★★★ 所以"价值判断"不是"污染共享部分",它是【唯一】在塑造"心"的那个 RL 信号。
这解释了之前所有的实验结果(我试的 8 种办法),而且比原来清楚:
| 我的操作 | 结果 | 用这个新发现解释 |
|---|---|---|
| 只关掉"价值判断" | 4 次里 3 次成功 | "心"只剩老师教 -> 不崩 |
| 只关掉"嘴" | 崩 | "心"仍被"价值判断"塑造 |
| 两个都关 | 6 次全成功 | 最稳 |
#所以修法变了(从一个改动变成两个)
| # | 改什么 | 为什么 |
|---|---|---|
| 1 | 别让"嘴"从全 0 开始(改成很小的随机数) | ★ 这样"嘴"才能往"心"传消息 |
| 2 | 顺带把"嘴"加宽 | 让它能说更复杂的东西 |
★ 只做第 2 件是没用的 —— 我已经实测确认了(加宽之后梯度仍然是 0)。
★ 而第 1 件很小:把初始化从"全 0"改成"很小的随机", 初始行为基本不变(一开始还是"不太说话"),但路通了。