ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

河以AI - - Transformer原理篇(一)

河以AI - - Transformer原理篇(一)

前言

笔者研一时毅然决然加入生物信息这一行,那还是2023年。彼时GPT还多半只能用来聊天解闷,甚至偶尔被拿来调侃。回想初学那年,主要学R语言和Linux,常游走于简书、CSDN、GitHub之间。半年后开始接触Python,大约又过了一年才脱离“调包侠”身份,开始会写一些简单的循环和函数;到毕业时,前后学了两年,才勉强能写一些流程化脚本。

读博士以来,人工智能飞速发展,GPT-3、GPT-4、GPT-5,以及Claude Code、DeepSeek、Kimi、GLM轮番轰炸,一度让我怀疑自己这两三年学习的意义。但随着使用越来越多,我慢慢有了自己的理解。

首先,我越来越倾向于把商用大语言模型当作生物信息学里的“仪器”来用。上世纪PCR还要靠三个水浴锅来完成,2000年代逐渐有了全自动PCR仪;我大四时做过数十次RNA提取,如今2020年代也有了核酸自动提取仪。生物信息学领域也早该有自动化程度相当的工具。虽然一个没有生物信息学背景的人,也能借AI做出分析,并初步检验分析是否正确,但他无法判断每个部分的轻重取舍,无法判断整个流程设计中的逻辑与美感,也无法判断当一份数据存在多个生信方向时,哪个方向最能体现数据的价值。

有了AI,就像有了一台自动化仪器;以前手写的代码像protocol,基于经验的prompt像实验操作。只有这三者都具备,才称得上一个现代化的bioinformatics analyst。

此前我做过一些蛋白质设计学习内容的分享,但这个课题由于各种原因无法继续,于是转而探索大模型。笔者是生物学背景,计算机知识不强,这段时间对大语言模型进行了艰难的探索,总算学到一点皮毛,在此分享,以资互相学习。

说到大模型,就绕不开最经典的Transformer模型。第一篇推文就从Transformer模型讲起吧!

(本篇内容主要整理自B站UP主“飞天闪客”(BV号:BVNCgVzoEG9),由笔者重新整理。)

目录

1符号主义与联结主义

2 激活函数

3 神经网络

4 损失函数

5 梯度下降

6 反向传播

7 训练

1符号主义与联结主义

在开始的开始,如果要学习人工智能,你必须承认一点:函数能够表示一切(functions describe the world)。

最初的人工智能研究大多将现实世界抽象为符号,然后通过运算规则得到一个结果,用结果来解释世界。最简单的例子就是已知直角三角形的两个边长a和b,通过勾股定理a² + b² = c²,就可以知道斜边长c。

这便是符号主义(Symbolism)。人工智能源于数理逻辑,即通过逻辑符号来表达思维,执着于找到精准的万能公式。从1950年代中期到1980年代后期,符号主义AI一直是AI研究的主要范式。

对于简单的数学和物理公式来说,符号主义非常适用;但对于图像识别,比如识别一张图片是小狗还是小猫,要让计算机通过程序来完成识别,显然没那么简单。甚至对于翻译这种看似简单的任务,在人工智能出现之前,不同语言的不同语法也让计算机的翻译表现平平。

20世纪80年代以来,联结主义(Connectionism)逐渐成为主流。它强调仿人脑模型,即将神经元之间的联结关系作为人工神经网络的基础。接下来要讲的内容都属于联结主义,先从一些基础知识讲起。

2 激活函数

先以简单的二维空间为例,最简单的函数是:

然而,线性函数过于简单,无法描述复杂关系,在人工智能中往往用激活函数(Activation Function)g(x)将线性关系变为非线性关系:

常用的激活函数有:

这两个函数是最常用的两个激活函数,虽然简单但是非常好用。

3 神经网络

在实际应用中,自变量往往不止一个,可以写为:

如果一层激活函数不够灵活,则可以套更多的激活函数来拟合更加复杂的非线性关系,这样就可以构造出非常复杂的非线性关系,而且理论上可以逼近任意的连续函数:

但是如果所有函数都这样表示,实在是太让人头大了,因此我们需要一种更简单的表示方式:

其中蓝色的圆圈称为“神经元”。如果存在多个输入,则如下表示:

如果嵌套了多个函数,则在水平方向增加,被嵌套的函数由于不直接显示在最终结果中,其被称为隐藏层(hidden layer):

这样,我们就构建了最简单的神经网络(neural networks,NN),神经网络是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。

上图从左到右这种逐层进行“加权求和,加偏置,激活函数”计算,最终得到输出结果的过程就叫做前向传播(forward propagation)。

4 损失函数

我们构建人工智能模型的过程,其实就是通过一组现实世界的自变量x和因变量y,来得到一组w和b,使得公式得到的y与真实的y误差最小,其中的w和b其实也就是权重。

为了求得这组w和b,我们需要表示预测y与真实y的函数,这个函数就叫损失函数(Loss Function)

为了解决绝对值的分类讨论问题,我们将绝对值改为平方,为了消除样本量大小的影响,再除以样本数,就得到了均方误差(mean squared error, MSE)。

我们的目的就变成了:

那么如何求解让L最小的w和b的值呢?观察损失函数后,发现其实就是求该函数的极值点,也就是让其导数等于0求极值点。由于概念较为抽象,我们先把b去掉,以(1,1)(2,2)(3,3)(4,4)为例来解释一下:

将 x1=1,y1=1,x2=2,y2=2,x3=3,y3=3,x4=4,y4=4 带入L(w)可以得到一个简单的二次函数:

对其求导:

所以y=x就是让损失函数最小,也就是最拟合真实数据的直线。

注意到,我们这里只保留了w,而忽略了b,损失函数是一个二维图形,因此求极值只需要对w求导即可

5 梯度下降

而更常见的情况是w和b都存在于损失函数,这就要求w,b两个变量的损失函数的最小值,这时损失函数就是一个三维图形了:

由于此时损失函数难以求导,人们无法通过公式计算得到损失函数的极值点,只能通过遍历所有w,b的方法,来找到使得L(w,b)最小的点,那么只要让w,b一直往偏导数的反方向变化(具体原理请自学高数),找到使得L(w,b)最小的点即可:

这种方法叫做梯度下降(gradient descent),其中 η 能控制下降的速度,称为学习率(learning rate),它是机器学习中一个常见的超参数, η 过大容易难以找到最小位置, η 过小会导致训练速度过慢且容易陷入局部最小。

6 反向传播

梯度下降的想法听起来很美好,但仍需求解偏导数,如果嵌套的函数很多,那么求最内层的偏导会非常复杂。那么有没有一种简单的方法来求损失函数的偏导呢?我们以一个最简单的神经网络举例:

在这个神经网络中,我们需要求w1,w2,b1,b2的值,因此需要求四个偏导数,我们以求最内层的w1偏导数为例:

把求L的w1的偏导拆分为三个简单的偏导相乘,这种方法叫做链式法则(chain rule),也就是微积分中的复合函数求导。由于这种方法是从右向左依次计算偏导,逐步更新每一层的参数,直到得到所有参数,因此又称为反向传播(back propagation)。

7 训练

到这里我们就掌握一次训练所需的全部步骤:先进行前向传播,输入x,通过函数f(x)计算得到y,然后进行反向传播,计算出损失函数关于每个参数的梯度,每个参数都向着梯度反方向变化一点点,这就构成了神经网络的一次训练,通过多轮的训练,直到找到损失函数最小的一组w,b,我们也就构建了一个神经网络模型。

作者:bioinforiver

2026年10月20日

本系列内容来源于网络,仅用于分享学习,不得用于任何商业用途。

参考文献:

1.【闪客】一小时从函数到 Transformer,飞天闪客,2025年7月21日,BVNCgVzoEG9

2.

CSDN - VIP深度学习中常见的10种激活函数(Activation Function),una_mattina7,2023年3月21日,

https://blog.csdn.net/qq_42691298/article/details/126590726

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进