神经网络真在“动脑”?2个旋钮,拆开机器学习和聊天记忆
黑粉科技 · 实测记录

神经网络真在“动脑”?2个旋钮,拆开机器学习和聊天记忆

15 分钟
分类:
标签:
摘要

给机器四组数字,不告诉它规律,它却能把两个旋钮拧向答案。再看神经元熔炉里的曲线:损失下降、界面能跑、真的学会,究竟差在哪里?

摘要 给机器四组数字,不告诉它规律,它却能把两个旋钮拧向答案。再看神经元熔炉里的曲线:损失下降、界面能跑、真的学会,究竟差在哪里? 黑粉科技 · 2026-10-05

损失能从101.5降到接近0,机器就算“学会”了吗?先看一个只有2个参数的小实验,再回到神经元熔炉的真实界面。小实验解释更新怎样发生,网页截图展示训练状态;两者都不能独自证明一个大模型已经可靠。

第一期说过,神经网络通过训练调整权重;架构、损失和数据处理仍由人设计。这一篇把这句话拆开:权重是什么?调是怎么调的?我们用一段只有两个参数的代码,观察机器怎样拟合给出的四组数据。 不需要数学基础,会读中文就能跟上。

先破除一个误会

“神经网络”这个名字骗了很多人。它听起来像在模拟大脑,实际上它并不是对真实大脑的完整模拟——它更像一台有几百亿个旋钮的调音台。

调音台的工作方式你能想象:输入一段声音,经过一排旋钮的调节,输出另一段声音。旋钮位置决定了输出。如果输出不对,你就伸手拧几下,再听听,再拧。

在训练时,程序按人设计的目标计算梯度,再由优化器更新参数。大型模型可能有数十亿乃至更多旋钮,但“机器自己拧”并不意味着它自己决定了学什么、拿什么数据学,以及什么算正确。

这一篇的全部内容就是解释:机器怎么知道该往哪边拧。

meme

从这两个旋钮往外看,AlexNet论文中的网络有约6000万个参数。参数增加意味着可以承载更复杂的计算,也意味着训练、存储与推理成本改变;它不是一根单独决定能力的进度条。 原始论文

一个神经元在做什么

一个简化神经元可以分成加权求和、加偏置和激活三个动作。先用容易计算的版本理解它,不代表所有激活函数都只是小学算术。

  • 加权求和:把每个输入乘以自己的权重,加起来
  • 加偏置:再加一个固定的数
  • 过激活函数:把结果做一次非线性变换

写成一行就是:输出 = 激活(输入₁×权重₁ + 输入₂×权重₂ + ... + 偏置)

前两步是线性的——直来直去。第三步的激活函数才是关键,它给系统引入了“拐弯”的能力。

沿着调音台再想一步:普通放大只把声音整体乘大或缩小,连续放大仍是同一种比例变化;带门限的处理则会把过低的部分压住,另一些部分保留。激活函数提供的就是这类非线性处理,而偏置像把触发门限挪一个位置。它不一定按声音来工作,但这个场景能说明:为什么增加一种“不是始终按同一比例变化”的动作,才可能改变可表达的关系。下面把两层公式展开,就能检查这种区别。

为什么必须拐弯?因为如果全是线性运算,无论叠多少层,整体效果都等价于一层——异或任务不能用单一线性分界解决;只堆线性层,也无法凭空获得非线性分界。加了非线性,多层才真的比一层强。

把“不拐弯为什么不行”算出来就更清楚。第一层算a×x+b,第二层再算c乘以前面的结果再加d,展开后仍是(ca)×x+(cb+d)。两层只换了直线的斜率和截距,没有凭空变出弯曲的边界。

第2期的异或刚好需要区分对角线两侧的两组点,单条直线做不到。非线性让组合后的边界拥有更丰富的形状;训练再负责寻找有用的参数。这把“模型能表示什么”和“训练能否找到它”接起来了,两者缺一不可。

ReLU是一种常见激活函数:负数变0,正数不变。现代大模型还常用GELU、SiLU及门控变体;深层网络能训练起来,也依赖初始化、归一化、优化器和数据,不能只归功于这一个动作。

“学习”的三个动作

现在看机器怎么自己拧旋钮。整个过程是一个循环,重复成千上万次:

① 前向传播:拿当前的旋钮位置,对输入算一遍,得到一个猜测。

② 算损失:把猜测和正确答案比一比,用一个数字表示“错得多离谱”。这个数字叫损失(loss)。优化器沿着训练目标更新参数;训练损失下降并不自动等于陌生样本表现更好。

③ 反向传播 + 梯度下降:这是最精妙的一步。机器要算出每个旋钮对这次错误负多大责任——这个比喻里的“责任”,更精确地说是梯度:损失对参数微小变化的敏感方向与大小,不是道德式归因。然后每个旋钮朝着能减小损失的方向,挪一小步。

反向传播沿计算关系求梯度;优化器再根据梯度决定怎样更新参数。这是“找方向”和“走一步”两个动作。1986年的经典论文推广了多层网络的这类训练方法,但链式求导和相关研究并非那一年才出现。

现在回到拧旋钮:你先把一个旋钮轻轻往右试一点,发现错误反而增大,就知道附近不该继续往右。梯度记录的是这种局部变化的方向和大小;反向传播利用计算关系把它求出来,并不是把每个旋钮都实际试一遍。学习率再决定拧多大,优化器决定具体怎么走。方向找对而步子太大,仍可能越过较好的位置——下面的学习率对照就会看到这个问题。

机制示意

“挪一小步”的步子大小叫学习率(learning rate)。步子太大可能震荡甚至发散,太小则可能进展缓慢;实际训练还常采用学习率调度,而不是始终手动保持一个数。

两个参数:让机器自己拟合规律

下面这段代码你可以直接跑(需要 numpy)。我们不告诉机器公式,只给它四组数据,看它能不能自己找出规律:

import numpy as np

# 我们心里的规律是 y = 3x + 2,但绝不告诉机器
x = np.array([1, 2, 3, 4], dtype=float)
y = np.array([5, 8, 11, 14], dtype=float)

w, b = 0.0, 0.0                    # 两个“旋钮”,初始值随便给
lr = 0.01                          # 学习率:每次拧多小的一步

for step in range(2000):
    pred = w * x + b               # ① 前向:用当前旋钮猜一遍
    error = pred - y               # ② 错了多少
    loss = (error ** 2).mean()     # ③ 损失:误差的平均平方

    grad_w = (2 * error * x).mean()   # ④ 反向:w 对这次错误负多少责任
    grad_b = (2 * error).mean()       #    b 负多少责任

    w, b = w - lr * grad_w, b - lr * grad_b   # ⑤ 两个旋钮各朝减小损失的方向挪一小步

    if step % 500 == 0:
        print(f"第{step}步 损失={loss:.4f} w={w:.3f} b={b:.3f}")

print(f"机器自己找到的规律:y = {w:.2f}x + {b:.2f}")**

2026年9月知识库记录的输出如下,本轮没有重新训练本地大模型:

第0步 损失=101.5000 w=0.550 b=0.190
第500步 损失=0.0064 w=3.066 b=1.805
第1000步 损失=0.0003 w=3.015 b=1.956
第1500步 损失=0.0000 w=3.003 b=1.990
机器自己找到的规律:y = 3.00x + 2.00

请盯住第二列。 损失从 101.5 一路掉到接近 0,而旋钮 w 和 b 自己爬到了 3 和 2 附近。没有人告诉它答案是 3 和 2,它是靠“哪边能让错误变小就往哪边挪”一步步试出来的。

不用相信“它自己找到了”这句话,我们手算第一次更新。四组数据是x=1、2、3、4,对应y=5、8、11、14,预测式为w×x+b。初始w=b=0,四个预测都是0;平方误差平均为(25+64+121+196)÷4=101.5。

为什么用平方?若两条误差分别是+2和−2,直接求平均会得到0,好像都没错;平方后平均是4,错误不会正负抵消。损失不是唯一可以选的函数,但它必须与想解决的任务相配。

第一次更新 结果 它说明什么
对w的梯度 −55 增大w有机会降低当前损失
对b的梯度 −19 增大b有机会降低当前损失
学习率0.01后 w=0.55,b=0.19 旧值减去学习率乘梯度
x=1的新预测 0.74,目标为5 向正确方向走了一步,尚未完成学习

这个表不是新增的大模型实测,是直接从前面四组数据和代码公式算出来的。它也说明,梯度不是“这个参数分到某个比例的错误责任”。它是损失对参数变化的局部敏感度,单位和大小都与数据及目标有关。把比喻译回公式,才不会把数学过程想成人在反省。

再改一个数试试。把学习率 lr 从 0.01 改成 0.001:两千步走完,它还停在 w=3.16、b=1.52 的半路上。改成 0.13:损失不降反升,第 10 步是 2386,第 100 步已经到了 5 乘以 10 的 15 次方——步子太大,每一步都跨过了最低点,而且越跨越远。更意外的是 0.11 反而比 0.01 收敛得更快:对这四组数据,安全线就在 0.12 上下,过了线,一步之差从最快变成失控。

这段代码保留了“前向计算→损失→梯度→更新”的骨架,但它是线性回归,不是完整的深度网络或GPT。实际训练还要处理架构、词元、批次、优化器状态、数值精度、分布式通信和数据质量,不能仅用参数倍数推导成本或能力。

还有一道比损失下降更重要的追问:只用这四个点,真的确定了世界的规律吗?直线3x+2能经过它们;另一条式子3x+2+(x−1)(x−2)(x−3)(x−4)也能经过同样四个点,因为乘积在训练点上都是0。

到了x=5,第一条给17,第二条给41。训练数据完全相同、训练点误差都为0,没见过的点却相差24。这是一个手工构造的反例,不是说实际模型会选第二条;它只证明“训练题做完了”不足以推出“新题也会做”。模型结构、数据范围与独立测试,正是为了解决这件事。

这就像驾考时只把练过的几条路线背熟:熟路上每个路口都答对,换一条路未必还会判断。过拟合说的是模型过度贴合训练材料中的细节,泛化说的是遇到没见过的材料还能不能做好。留出的验证数据用于选择设置,最终测试数据尽量不参与这种选择;若反复根据“没见过”的题改答案,那些题实际上也在帮助你备考,独立检查的价值会减少。

为什么叫“深度”学习

把神经元排成一层,多层堆起来,就是深度神经网络。“深度”指的就是层数多。

层数带来什么?逐层抽象。以图像识别为例:第一层可能只认得出边缘和明暗,第二层把边缘拼成纹理和角点,第三层拼出眼睛、轮子这样的部件,再往上才是“猫”“汽车”这样的概念。

在合适的任务与训练中,多层网络可以学出逐步组合的表示,不需要人逐层规定“这一层负责眼睛”。图像特征的这个例子是帮助理解,不是每个网络都遵守的固定分工表。传统机器学习也会学习参数与部分表示;两者的区别不能简化成以前全靠人、现在全靠机器。

代价也在这里:机器学到的中间表示往往不可读,我们知道它有效,却很难说清每个数字代表什么。这就是所谓的黑箱问题。

这和评测有什么关系? 模型名字里的“7B”“27B”,数的就是模型的参数。它是模型卡上最显眼的数字,却不是本事的刻度:同样 270 亿个旋钮,读过的书不同、训法不同,本事可以差得很远(后面的模型规模与选型内容)。对你的电脑来说,它最先决定的是另一件事——装不装得下:每个旋钮都要占内存,旋钮越多,文件越大(第16期硬件内容)。

截图里87.5%的准确率,为什么还不能宣布学会?

9月五题留下的神经元熔炉界面显示步数378、损失0.1856、准确率87.5%,界面还画出决策边界与曲线。这是当时那一帧的状态,不是当前重新测出的结果。准确率涉及哪些样本、有没有独立测试集、噪声和种子怎样设,都会改变它的含义。网页不报错、曲线下降、泛化可靠,是三件不同的事。

读这张界面时,先看决策边界与样本,再读准确率。边界是在把哪些点分成两类?分数来自训练样本还是留出的样本?如果一边看验证分数、一边反复改设置,验证集也会慢慢参与选择,最后最好还有一批没用来挑设置的测试数据。

这张旧截图没有替我们回答所有条件,所以87.5%只能按当时记录解读,不能改写成“模型拥有87.5%的智能”。也不要把演示网络的分类分数,算到生成这段网页的语言模型头上。一个负责被展示,一个负责写程序,评价对象都不一样。

自制程序|神经元熔炉

常见说法 为什么容易信 怎样核实
损失降到0就是学会 曲线下降很直观 单独保留未参与训练的样本,检查是否只是记住训练点
聊天越多模型越聪明 它能引用前面的回答 区分上下文变化、外部记忆写入与权重更新
参数更多就一定更强 旋钮数量显得像能力刻度 控制任务、训练数据和评价条件,别只比较参数量

带着这件事,试一次

只需读代码,不必启动大模型:标出预测、损失、梯度、参数更新四处;把学习率对照记录分成“收敛但慢”“收敛较快”“发散”。再给神经元熔炉写两项额外验收:独立样本表现、换种子后的稳定性。安全阈值0.1198只属于原记录这四组数据和这个更新方法,不能拿去调所有神经网络。

现在可以回答开头:损失下降,说明在所选数据与目标上,计算结果更符合训练要求;要说学到了可迁移的规律,还得用没有参加训练的新例子检查。旋钮的数量、训练时是否更新、聊天时是否带入历史,也必须分开看。

故事里出现的几个名词

术语 人话
权重 weight 可调的旋钮,保存学到的参数;外部资料和会话状态不在其中
偏置 bias 每个神经元额外加的一个固定数,让它有基础倾向
激活函数 引入非线性的拐弯动作;ReLU = 负数变 0
前向传播 用当前旋钮算一遍,得到猜测
损失 loss 一个数字,表示这次错得多离谱
梯度 gradient 损失对参数变化的敏感方向与大小;不是责任占比
反向传播 沿计算图应用链式法则求梯度;1986年经典论文推广多层网络训练
梯度下降 顺着降低损失的方向一小步一小步挪
学习率 每步挪多大;太大震荡,太小太慢
参数量 旋钮总数。“7B”就是七十亿个旋钮
黑箱问题 中间表示不可读,知其有效不知其所以然

下一篇接着看:草莓还是那颗草莓,前面多一个空格,机器看到的块数却变了。一个来自数据压缩的老办法,怎样走进聊天框,改变你的费用、速度和上下文?

参考资料

自制软件

版本、功能变化和安装平台统一取自公开发行记录。

方寸智匣 LocalBrain

把 Mac 变成私有 AI 盒子:本地转写、配音、生图、视频和 MCP 工具一站管理。

最新版本 1.8.0更新说明 ↗
最新变化

本轮公开 Apple Silicon Mac 安装包。聊天模型现在可通过同一代理按需调用已集成的语音、转写、图像、图片编辑、音乐和视频工具,并把实际产物交给下一项工具继续处理。

查看公开下载与更新 ↗

黑粉盒子 HyphenBox

免费大模型 API 雷达与本地统一路由:持续复测可用性,Key 只存本机。

最新版本 1.0.0更新说明 ↗
最新变化

保留私有签名目录、本地密钥保险箱、模型实测和本机兼容路由的现有能力;AMD Radeon Cloud、Ollama 云服务和 Vercel AI Gateway 的官方条件已在。

查看公开下载与更新 ↗

黑粉录屏 HyphenScreen

录屏与剪辑一体:达芬奇式时间线、自动打码、导出前做成片体检。

最新版本 1.5.1更新说明 ↗
最新变化

在 AI 面板打开「制作动画」,输入讲解及自己的要求,从三组19种风格方法中选择。模型结合当前内容设计主体、动作与镜头,生成可编辑的原生动画图层和关键帧。

查看公开下载与更新 ↗
分享到:

留言

正在加载留言…