NLP&深度学习速通速通
本文最后更新于:2026年1月4日 晚上
所以为什么要在没有深度学习基础的前提下学这门课呢。
0.开始之前
其实是因为小导让我选一门AI相关的课,但是选课的时候我手贱把机器学习给退了……(我感觉我是个傻逼)
不过作为速通之王,上了一半发现太难所以退课这种事情我是绝对干不出来的。
这篇博客行文主要根据课程PPT编写,课程为中国科学院大学网络空间安全的自然语言处理基础。实际上笔者在写这篇博客的时候我已经开始疯狂地翘课了(弃刀贼属于是)如果这篇博客写的有问题,欢迎大家批评指正。
1.绪论
1.1-1.4
PPT有很多“废话”。等到快期末的时候我再在这里整理。
2.语料库与语言知识库
3.深度学习基础模型
3.1 概述
NLP中常用的模型有:
- 全连接前馈神经网络:DNN
- 卷积神经网络:RNN
- 图卷积神经网络:GNN
- 循环神经网络:RNN
3.2 DNN
3.2.1 人工神经元模型
如下图PPT所示,简而言之就是输入X[i]和权重W[i]乘积之和,再加上偏置b,送进偏置函数即可得到输出。

这里激活函数引用的是非线性激活函数,有如下性质。
- 连续并可导(允许少数点上不可导)的非线性函数。
- 激活函数及其导函数要尽可能的简单
- 激活函数的导函数的值域要在一个合适的区间内
(这几个性质的选择都是有原因的,回头我一定记补上)
常用激活函数汇总表,这里见PPT。不再一一列举。
3.2.2 人工神经网络
互相连接而成即可:

3.2.3 前馈神经网络DNN
神经元分属不同的层。无反馈(有向无环图),信号从输入层到输出层单向传播。

输入是X,输出是Y。其中参数分两种,一类是权重,一类是偏置。权重的参数表示较为复杂,通俗地讲就是,上标l代表进入第l层之前的权重。这里一定一定一定要注意下标!下标i和j代表从l-1层的第j个神经元到l层第i个神经元之间的权重。如下图所示:

翻过来i和j的原因后面讲
再回到上面的“前反馈神经网络示意图”,X和Y都相当于一个矩阵或者说向量,这里X是一个N*1的向量,Y则是M*1。而W则有点近似于一个多维数组。图中WL就代表从第L-1层到第L层的一个权重矩阵。
注意到图中有一个aL,这个东西代表第L层神经元的输出集合。显而易见这个也是一个向量。一个神经元的输出是wx+b,对于一层神经元,可以像图中一样写成向量形式:aL=δ(WL*aL-1+bL)。其中第L层的输出给激活函数的信息我们也可以记作zL,即zL=WL*aL-1+bL。
假设第L-1层有j个神经元,第L层有i个神经元。aL-1显然是一个j*1的向量,aL和L则是i*1。那么WL就是一个i*j的矩阵。第k列为一个i*1的向量,包含了L-1层的第k个神经元到L层的所有神经元的所有边的权重,而第k行为一个1*j的转置向量,包含了第L层第k个神经元所有来此第L-1层神经元的边的权重。
输入内容也可以单独算一层,记作a0,
把它们写成矩阵乘法的运算就是途中这种层次嵌套的形式了:

3.2.4 梯度下降法
在设计好模型的层数后,我们需要确定W和b,即确定学习参数。所有的参数可以被定义为θ,即:θ={ W1, b1 ,W2,b2…… WL,bL},而模型的输出可以被视为y=f(x,θ)。由于待确定的参数量往往非常巨大,因此解方程的思路不可行,一般用迭代调参法进行过参数学习。即通过不断微步调整参数,让模型输出y递归性地逼近标准输出$\hat{y}$。
为了解决这个问题。需要定义一个损失函数L(θ) ,即用一种方法表示出y与$\hat{y}$的误差大小,并尝试求其最小值。这样就变成了一个关于θ的函数L(θ)求极值点的问题。
L(θ)也可写作C(θ)
常见损失函数:
- 0-1损失
- 平方损失函数:L(Y,f(X,θ)) = ($\hat{Y}$–f($$,θ))2
- 绝对值损失函数:L(Y,f(X,θ)) = |$\hat{Y}$–f(X,θ)|
- 对数损失函数
- 交叉熵(负对数似然函数)
- Hinge损失
- 指数损失……
调参相当于一个微步移动的过程,需要设定一个学习率η,这个可以粗略理解为“步长”。然后需要计算出L的**梯度L’(θ)**,通过θi+1 = θi – ηL’(θi+1),不断计算出下一步的θ值,最终找到一个L’(θi)的极小值。
这里需要弄清楚一个概念:梯度。这个是一个向量,包含了L对θ内每个变量上的偏导数。其意义就是“指向”一个函数上升降最快的一个方向。那么θ沿着这个方向的反方向下降(减去梯度乘以学习率η),循环迭代多轮,即可找到或者逼近梯度为0的一个点。

现在有一个问题是,为什么梯度是上升最快的方向呢?这个问题可以参考这篇博客:
我知道很多人和我一样基础知识稀烂,可以看看这篇补补:
3.2.5 反向传播算法
PPT里内容有点过于简洁了,这里扔个链接可以参考:
反向传播算法(Back Propagation,BP)核心思想是:将输出误差以某种形式反传给各层所有的单元,各层按本层误差修正各单元连接权值。
这是以一种有监督学习,采用梯度下降法调参。
首先,需要给出有一个给定的数据集{($X$1,$\hat{y}$1),($X$2,$\hat{y}$2),……,($X$R,$\hat{y}$R)},以及一组学习网络参数θ={ W1, b1 ,W2,b2…… WL,bL}。之后,确定一个损失函数L(θ),