拆解AI黑话之神经网络。
神经网络这个词让多少人头疼不已,经常看到蜘蛛网一样的结构,但完全不知道它有什么用,原理是什么。今天我给你们用最简单的小学生都能理解的大白话解释一下。
实际上,大模型内部绝大多数参数都存在于线性层里,而单个线性层干的事情非常简单,就是计算Y = x*W^T+b。x是输入特征向量,W是权重矩阵,T是转置,b是偏置项。
有人说老师你说得我还听不懂这些名词。简单来说x是一个数组[1,2,3] W也是一个数组[2,3,4],T是一个动作把W数组变成竖排,b是随便一个数比如10,然后求和(点积)。计算过程是 1*2+2*3+3*4+10=30,神经网络线性层就做这一件小事。
没错,神经网络线性层nn.Linear的本质是在算加法,求一元一次函数的解y=kx+b。什么鸟毛神经元全链接,你就当空气就完了,本质就是输入和输出的一个装X描述。
你说老师我懂了,那么这样大模型能聪明吗?不能,像直线那样耿直,所以上激活函数把直线掰弯,遇事圆滑,别那么憨。
算完了极端情况权重太小怎么办?上残差网络。你去治病,治好了可以,没治好至少回来以后和去的时候一样,完璧归赵,不能手术很成功人死了(梯度消失)这种情况。
如何避免QKV查询答案时作弊,上因果注意力掩码。做填空题时不准偷看后面的答案,拿板子给你盖上。
如何控制几十层网络下来向量不爆炸,上均方根归一化。这就像选拔仪仗队,所有人都175五,如果个子高怎么办?脑袋削去一半,给个子矮的安上。
训练的本质就是调整常数k,也就是权重。如何训练?先让它随便写答案(前向传播),写错了就直接大嘴巴子抽它(反向传播),并让它一点一点改正答案(梯度下降)。
整个神经网络的工作就是在只有原始特征向量(输入数据向量化)的情况下,反向求到线性函数的解析式的过程,这些函数解析式的常数就称为权重,大模型文件保存的就是这些权重。如果是70B,那么就保存了700亿个权重。
点积就不讲了,因为小学生确实听不懂,这个是中学生的课程。
