
如果你问大模型,“要怎么追女孩子?”
大模型告诉你,“扇几巴掌然后说爱她”
可以简单理解这就是 大模型 过拟合了哈哈
在训练的过程中,大模型把「所有追女孩子成功的案例」都学得很熟
有真心付出成功的大量案例,有暴力成功的偶然案例
但是大模型此时只是学得很熟,并没有总结出规律
—— 没有总结出「只有真心付出才会大概率得到真爱」的规律
所以大模型可能会教你 去暴力上手
OK
那么首先, 过拟合,就是
—— 大模型训练的一个结果
按专业的说法,就是
—— 在训练集上得到满分,在 测试集上 不及预期
通常训练数据分成 训练集 和 测试集
训练集 用来训练模型
测试集 用来 测试模型训练的效果
测试集 是 完全未知的数据
也就是一般都能查到的原因
—— 大模型 死记硬背了
那么为什么会死记硬背呢?
简单来说,就是
大模型参数太多,但是 训练的数据又太少
如果不理解大模型训练是怎么训练的,可以看 → AI 训练
导致 大模型可以轻松地记住所有数据,而不需要去总结出规律
大模型的训练,是让大模型的输出 更靠近 正确的结果
比如说 你正确答案是 2
如果大模型输出 1.9,就是 靠近正确答案,是可以接受的,偏差只有0.1 (只是举例,数学上不能只是靠近)
当模型参数只是刚好够的时候,如果想 整体的输出误差更小,就只能重复不断地去调整 参数
而所有数据 通常都是通过 共同参数 计算出来的
这时候调整参数,往往是牵一发而动全身
所以 最终为了 尽量靠近 所有测试数据的答案,也就慢慢总结出了规律
而规律,就自然是会忽略一些非正常的噪声数据
他们只是一些巧合,一些偶然,不能当做是正常的事物规律
好比是这样

其中的 红线 就是 总结出的规律
红线的长度,可以理解成是 参数的多少
如果参数一多,那么就表示红线可以很长,那么就会

只是记住了所有的数据,却没有形成有效的规律
那么这 便是 过拟合
只要输入 出现在训练集中,就把对应答案的输出
如果不在训练集中,可能就随机输出
那么此时 在 训练集 中的 正确率是100%,输出 和 测试集的答案一模一样
简直完美
但是换成 测试集 的数据,正确率就骤降,因为根本就没有形成总结规律,只是记住数据,碰到未知数据就宕机
就好像 大开门的猫,米老鼠换了位置,结果就只会稍息
针对这个 「为什么参数越多,过拟合就更容易发生」的表现
其实还是比较难理解的
所以我想再用一个公式来做一个理解
会有一点点复杂的
比如说我们的 训练集 有4个数据
(x=1,y=2),也就是输入 1,正确答案是 2
(x=2,y=4),同上
(x=3,y=6),同上
(x=4,y=0),同上
好!!
我们现在就要训练一个公式,给一个输入,可以得到对应的输出
大模型的训练,其实可以理解成一个公式参数的调整 → AI 训练
那么当我们的大模型参数很少的时候
极端点,只有一个
y = w*x(w 是参数,x是输入,y 是输出)
那么好了,大模型开始训练了,慢慢挖掘出了规律
y = 2x
但是发现在一个 噪声数据上不生效
(x=4,y=0),输出 4,答案是0,却输出 8
偏差有点大啊!!!
整个 训练集 的误差就是
(x=1,y=2),预测 2 ,偏差0
(x=2,y=4),预测 4,偏差0
(x=3,y=6),预测 6,偏差0
(x=4,y=0),预测 8,偏差8
整体的误差就是 0+0+0+8 = 8
大模型训练的目的
—— 让 输出 和 正确答案 的 误差减小,靠近 正确答案
比如说 你正确答案是 2
如果大模型输出 1.9 靠近正确答案,是可以接受的,偏差只有0.1
如果大模型输出 4,那么 偏差就是2,就比较离谱了
如果此时因为这个噪声数据 (x=4,y=0) 导致偏差大,想要去调整参数的话
比如公式变成了
y = 0.5x
整个 测试集的误差就变成
(x=1,y=2),预测 0.5,偏差1.5
(x=2,y=4),预测 1,偏差 3
(x=3,y=6),预测 1.5,偏差 4.5
(x=4,y=0),预测 2,偏差 2
整体的误差就是 1.5+3+4.5+2 = 11
大模型会发现,参数就一个,不管怎么调整,整体的误差都无法缩小,甚至越来越大
为了拟合噪声的误差,反而会提高整体误差,所以就会干脆忽略噪声
所以大模型最终就会 抛弃掉这个 噪声数据,得出规律
—— y = 2x
而如果 参数很多,比如说
y = w1 * x + w2 * x2 +....上亿个w
那么就很明显,调整的空间就大了很多,就可以轻松把 噪声数据也 拟合进去,像前面的图

所以这就是为什么
参数越多,数据少,过拟合就更容易发生
导致会记住噪声数据,从而降低预测能力
那你可能会想
“如果参数多,但是没有噪声数据,是不是就不会过拟合??”
必然不是的,噪声数据 只是 让过拟合更容易发生
参数多,数据少 才是根本原因
也就是说,即使没有噪声,参数大的情况下,仍然可能会 过拟合
同样的道理,可以轻松记住数据的前提下,当然就不需要费劲去总结规律了
就好比你读书的时候
一首 《鹅鹅鹅》 太简单,你可以无脑直接背就好了
如果是背一本 《红楼梦》,你不找点规律总结,你不可能背得出来
前面也说过
参数多,就好比是 一根线很长
然后数据 很少,只有三个点 的话
那么 这条线在穿过 这三个点的同时,可以存在多种多样的曲线

富余的部分没有任何约束,可以随意乱走,反正保证可以记住数据就OK,但是虽然记住了所有训练数据,却没有形成有效规律
导致最后使用 测试集 去 测试的时候,误差就很大
而如果 「线长合适,数据也多」的时候

线穿过所有数据,已经没有多余的部分 去 整幺蛾子了
这便是形成了有效的预测
「合适的参数大小 + 更大的数据集」
这就要提到一个 Chinchilla 扩展法则
——模型要想性能好,最佳训练数据集大小应该是模型参数量的 20 倍
比如 Llama 2 70B 只有 700 亿参数,但 Meta 使用了 2万亿个 token 来训练它,数据量是参数量的 28 倍
好了好了
这便是过拟合的全部内容了
参数大,而数据少,通常就会发生 过拟合
噪声数据 会让过拟合更容易发生
其实说实话挺复杂的,不过其实也只是一个小概念
(完)
夜雨聆风