【通识】深度学习理论基础
项目里常聊到的落地、爬坡、Pipeline相关概念
| 词汇 | 解释 | 常用场景 |
|---|---|---|
| 落地 | PPT变成现实行动 | 系统上线、流程开始实施 |
| 爬坡 | 从小批量试生产到大批量稳定产出 | 新项目投产后的阶段性过程 |
| Pipeline | 项目储备池、排队清单 | 下一个要上线、准备推进的项目列表 |
1. 深度学习导论
导论和简介的基础知识和路径。

深度学习的各项涵盖范围:深度学习MLPs,然后是机器学习、逻辑回归,知识基础等等

1)连结+神经网络等等:Cybernetics控制论,Connectionism连结主义,Neural Networks神经网络等
其中,控制论是研究动态系统如何通过反馈机制实现自我调节和控制的跨学科领域,核心关注信息、控制和通信在生物、机器和社会系统中的流动。
Connectionism(联结主义)是一种基于神经网络模拟智能的理论框架,认为认知功能源于简单单元(神经元)之间的连接权重调整。关键思想分布式表征、学习即权重调整、受生物启发。
与Cybernetics的关系。控制论提供系统层面的框架(如反馈),联结主义是其具体实现之一。
两者都关注适应性,但联结主义更侧重可学习的网络结构。
神经网络:神经网络是联结主义的具体计算模型,由多层互联的“神经元”组成,通过数学运算模拟信息处理。
关键特点:20世纪40-60年代深度学习的雏形出现在控制论(cybernetics),20世纪80年代到90年代表现为连结注意(connectionism),之后深度学习以人工神经网络(artificial nerual network, ANN)受生物大脑所启发设计出来的系统
最早前身是简单线性模型,如
f
(
x
,
w
)
=
x
1
w
1
+
.
.
.
+
x
n
w
n
f(x,w)=x_1w_1+...+x_nw_n
f(x,w)=x1w1+...+xnwn
McCulloch and Pitts(1943)是脑功能的早期模型,通过检验函数
f
(
x
,
w
)
f(x,w)
f(x,w)的正负识别不同类型的输入。上世纪50年代,感知机(Rosenblatt)成为第一个根据类别的输入样本学习权重的模型。而在同一时间,自适应线性单元(adaptive linear element, ADALINE)简单返回函数
f
(
w
)
f(w)
f(w)。
层级结构:输入层、隐藏层、输出层
激活函数:决定神经元是否激活(如ReLU、Sigmoid)
训练算法:如反向传播(Backpropagation)

1.1 数学基础
- 线性代数
1) L p L_p Lp距离( L p d i s t a n c e L_p distance Lpdistance)对于两个向量 x = ( x 1 , . . . , x n ) x=(x_1, ...,x_n) x=(x1,...,xn)和 y = ( ) y=() y=()
L_p距离衡量的是两个点在n维空间中的“距离”,不同的 p 值对应不同的距离衡量方式。
L p ( x i , x j ) = ∥ m n ∥ p = ( ∑ i = 1 n ∣ x i ( l ) − x j ( i ) ∣ p ) 1 / p L_p(x_i, x_j)=\begin{Vmatrix} m & n\end{Vmatrix}_p=(\sum^n_{i=1}|x^{(l)}_i-x^{(i)}_j|^p)^{1/p} Lp(xi,xj)= mn p=(∑i=1n∣xi(l)−xj(i)∣p)1/p$
其中, x i ∈ R n x_i\in\mathbb{R^n} xi∈Rn, x j ∈ R n x_j\in\mathbb{R^n} xj∈Rn,其中 L ∞ L_\infty L∞定义为: L ∞ ( x i , x j ) = m a x l ∣ x i ( l ) − x j ( l ) ∣ L\infty(x_i, x_j)=max_l|x^{(l)}_i-x^{(l)}_j| L∞(xi,xj)=maxl∣xi(l)−xj(l)∣
2) L 1 L_1 L1范数(Manhattan Distance / 曼哈顿距离)
特点:计算的是各维度差值绝对值的和。
几何意义:在网格状道路(如曼哈顿街区)中,从A点到B点需要走过的实际路径长度(只能横平竖直走)
当p=1时,L_p距离变为 L_1范数(也叫曼哈顿距离)
∥ m n ∥ 1 = \begin{Vmatrix} m & n\end{Vmatrix}_1 = mn 1=
应用场景:
a. 鲁棒性要求高的场景:数据中存在异常值(离群值)
3) L 2 L_2 L2范数
特点: L 2 d e f i n e s a s s u m i n ( x i ) 2 L_2\, defines \, as \sqrt {sum^n_i(x_i)^2} L2definesassumin(xi)2,其中 x = [ x 1 , x 2 . . . , x n ] T , x ∈ R x=[x_1,x_2...,x_n]^T, x\in\mathbb{R} x=[x1,x2...,xn]T,x∈R
几何意义:

4)PCA(Principal component analysis;主成分分析技术)
数据降维方式,将n维数据降低到指定的K维。数据降维有以下优点:
假设在 R n \mathbb{R}^n Rn中有 m m m个点{ x ( 1 ) , . . . , x ( n ) x^{(1)}, ..., x^{(n)} x(1),...,x(n)},希望对点进行有损压缩-使用更少的内存但损失精度去存储这些点。

编码这些点的方式是用低维表示,则对于每个点 x ( i ) ∈ R l x^{(i)}\in\mathbb{R^l} x(i)∈Rl,若 l l l比 n n n小,则使用了更少的内存来存储原来的数据。希望找到一个编码函数,根据输入返回编码, f ( x ) = c f(x)=c f(x)=c;也希望找到解码函数,给定编码重构输入, x ≈ g ( f ( x ) ) x≈g(f(x)) x≈g(f(x))
PCA由选择的解码函数而定,为了简化解码器,使用矩阵乘法映射回 R n \mathbb{R}^n Rn,即 g ( c ) = D c g(c)=Dc g(c)=Dc,其中 D ∈ R n x 1 D\in\mathbb{R}^{nx1} D∈Rnx1是定义解码的矩阵。
5)特征分解(eigendecomposition)是使用最广的矩阵分解之一,即将矩阵分解成一组特征向量和特征值
方阵A的特征向量(eigenvector)是值与A相乘后对该向量进行压缩的非零向量 v v v: A v = λ v Av=\lambda v Av=λv
标量 λ \lambda λ被成为这个特征向量的特征值(evgenvalue,类似定义左特征向量(left eigenvector),有 v T A = λ v T v^{T}A=\lambda v^{T} vTA=λvT
若 v v v是 A A A的特征向量,那么缩放后的向量$sv(s\in\mathbb{R},s)

特征分解(线性变换):矩阵能表示二次函数,利用特征分解能找到函数的最大值和最小值
6)奇异值分解(SVD)
除了特征值之外另一种矩阵分解方式,SVD是一个矩阵分解到三个新矩阵中。
A = U D V T A=UDV^T A=UDVT,其中 U U U代表left singular vectors, D D D代表了singular values, V V V则代表right singular vectors
根据“矩阵看作空间的线性变换”能将新矩阵当作空间的子变换,之后捡起“将SVD用于图像处理”的新装备。
7)摩尔-彭若斯伪逆
所有矩阵都有逆矩阵,而逆矩阵可以解方程组。无解时,没有逆矩阵。当将误差最小化,能找到像解的东西。伪拟用来找假解。

8)迹(Trace):0+6+1 = 7,是指一个方阵主对角线所有元素的总和,记作 t r ( A ) tr(A) tr(A)
可以看作 T r ( A ) = Tr(A)= Tr(A)=

9)行列式:Rotation和ChangeInOrientation
2. 概率论和信息理论基础
1)概率论是用于表示不确定性声明的数学框架,不仅提供了量化不确定性的方法,也提供了用于导出新的不确定声明(statement)的公理
2)联合概率:包含多个条件且所有条件同时成立的概率,记作$P{X=a}$
3)基础概率论知识:
N
(
x
;
μ
,
σ
2
)
=
1
2
N(x;\mu, \sigma^2) = \sqrt{1}{2}
N(x;μ,σ2)=12
4)
4. 机器学习基础
5. 数据计算
1.2 深度学习基础
分类基础:包括分类(决策树Decision Tree,K近邻)、集群、回归(逻辑回归logistic Regression、SVM)、降维
1)决策树
2)K近邻
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
T = {(x_1, y_1),(x_2, y_2), ..., (x_N, y_N)}
T=(x1,y1),(x2,y2),...,(xN,yN)
其中,
x
i
x_i
xi
3)

- 深度前馈神经网络
其中,常用的激活函数有 Sigmoid函数、双曲正切激活函数(tanh)、修正线性单元(ReLU)等。
梯度消失指在神经网络反向传播过程中梯度值逐渐减小趋近于零,导致靠近输入层的参数更新缓慢或停滞;梯度爆炸则指梯度值迅速增大呈指数级增长,导致参数更新剧烈震荡甚至训练失败。
1)Sigmoid函数
单调增函数: Sigmoid函数是单调增函数,输出范围在[0,1]之间,且越是负向增大,越接近于0
Sigmoid函数会造成梯度消失问题,从图像中我们也可以得知,当输入特别大或是特别小时,神经元的梯度几乎接近于0,这就导致神经网络不收敛
由于输出不以0为均值,导致转入下一层的输入非0。导致了若 Sigmoid函数的输出全部为正数,那么传入下一层神经网络的值永远大于0,这时参数无论怎么更新梯度都为正。正是基于上述的缺点, Sigmoid函数近年来的使用频率也在渐渐减弱。
2)Tanh函数又名双曲正切激活函数
是 Sigmoid函数的变形,其数学表达式为: t a n h ( x ) = s i n h ( x ) / c o s h ( x ) = ( e x − e ( − x ) ) / ( e x + e ( − x ) ) tanh(x)=sinh(x)/cosh(x)=(e^x-e^(-x))/(e^x+e^(-x)) tanh(x)=sinh(x)/cosh(x)=(ex−e(−x))/(ex+e(−x)),函数图像如图3-9所示:

3)修正线性单元ReLU
ReLU激活函数又名修正线性单元,是目前深层神经网络中越来越受欢迎的一种激活函数,其数学表达式为:f(x) = max(0,x),函数图像如下图所示

相比于上述的 Sigmoid和tanh两种激活函数,ReLU激活函数完美的解决了梯度消失的问题,因为它的线性的、非饱和的
但是ReLU激活函数也有一些缺陷:训练的时候不适合大梯度的输入数据,因为在参数更新之后,ReLU的神经元不会再任何数据节点被激活,这就会导致梯度永远为0。比如:输入的数据小于0时,梯度就会为0,这就导致了负的梯度被置0,而且今后也可能不会被任何数据所激活,也就是说ReLU的神经元“坏死”了。
所以针对ReLU函数上述的缺点,又出现了带泄露的ReLU(Leaky ReLU)和带参数的ReLU(Parametric ReLU)
Leaky ReLU是ReLU激活函数的变形,主要是针对ReLU函数中神经元容易坏死的缺陷,将原点左侧小于0的部分,赋予一个很小的斜率。其效果通常要好于ReLU激活函数,但实践中使用的频率并没有那么高。数据公式为:f(x) = max(0, x) + γmin(0, x)。通常,γ是一个很小的常数,如:0.01。
4)其他激活函数: Leaky ReLU是ReLU激活函数的变形,主要是针对ReLU函数中神经元容易坏死的缺陷,将原点左侧小于0的部分,赋予一个很小的斜率。其效果通常要好于ReLU激活函数,但实践中使用的频率并没有那么高。数据公式为:f(x) = max(0, x) + γmin(0, x)。通常,γ是一个很小的常数,如:0.01

- 正则化
1)神经网络的正则化是通过在模型训练过程中添加约束或惩罚项来防止过拟合,提高模型泛化能力的技术
2) - 优化
- CNN
- RNN
- 粒子算法
- 应用相关
1.3 深度学习研究
- 线性工厂模型Linear Factor Models
- 自动代码AutoCodes
2. 使用案例
- 预训练:
1)技术:让AI模型在特定任务前通过海量无标注数据,自主挖掘语言/视觉/逻辑的通用规律,构建基础认知能力的训练过程。
2)和微调的区别:
预训练(Petrain)是学习通用的广泛知识和基本特征,没有具体任务标签的大型数据集;获得的模型能够识别一般特征,不能很好解决具体任务;目的是为了模型赋予良好的初始化参数。
a. 爬取数据
b. 数据格式统一,将所有的文件均处理成jsonl格式用"text"字段存储文本,如下所示{"text":"xxx"}
c. 数据清洗:利用Data-Jucier进行数据清洗,算子包括:语言、ppl、特殊词占比、n-gram重复度、simhash去重、词长度、字长度、邮箱链接unicode的移除等。各个算子尊从3sigma原则,若数据不服从正态分布可以用远离平均值的多少倍标准差来描述。
d. 模型构建:# 以Qwen2.5-0.5模型为基础,通过扩充模型隐藏状态层数,隐藏状态维度和注意力头数,增加参数量到1B,并进行参数随机初始化 output_path = 'res/pretrain' model_path = 'backbone/Qwen2.5-0.58' config = AutoConfig.from_pretrained(model_path) # 调整模型配置 config.num_attention_heads = 16 config.num_key_value_heads = 4 config.hideen_size = 1024 config.num_hidden_layers = 36 model = AutoModelForCausalLM.from_config(config, tourch_dtype=torch.bfloats, attn_imp) tokenier = AutoTokenizer.from_pretrained(model_path) # 打印出模型的配置及参数量 # Model Config: # Qwen2Config { # "_name_or_oath": "backnone/Qwen2.5-0.5B", # ... # }
e. 数据处理
# 根据文件列表遍历所有的文件路径用于数据集
def find_files(dirs):
微调则是专项训练,获得特定任务的能力。训练数据是标注好的,为了做任务而定制;能将通用知识和特定任务结合起来;提升模型的专业性
2.
3.
参考文献:
[1] 深度学习“花书”啃书指导视频!
[2]一文带你读懂激活函数
更多推荐
所有评论(0)