开始

推荐

零基础学习目标:
1.成本函数,损失函数
2.梯度下降
3.学习率
4.向量化
5.特征缩放
6.过拟合
7.神经元、神经网络
8.激活函数

无监督学习

数据仅包括输入x,无标签

[[聚类]]:

相似的数据放在一起

异常检测

[[降维]]:

将训练数据中的样本从高维空间转换到

低维空间

[[半监督学习]]

监督学习

使用输入特征x和输出目标(标签y)进行训练,当接受一个全新的的输入时,会尝试给出答案

回归(连续型)

预测数字: eg:房价

![[Pasted image 20260104165912.png]]
回归模型:
f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b(x)=wx+b

代价函数

衡量模型整体预测值与真实值之间的误差
损失函数针对单个样本
常用方法:
均方误差: J ( w , b ) = 1 2 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) 2 均方误差:J(w, b) = \frac{1}{2m} \sum_{i=1}^{m} (f_{w,b}(x^{(i)}) - y^{(i)})^2 均方误差:J(w,b)=2m1i=1m(fw,b(x(i))y(i))2

  • w : 权重(weight)
  • b : 偏置(bias)
  • x : 输入特征
  • m:输入数据点的数量
  • f_{w,b}(x) : 预测输出
  • y(i):真实输出
    目标:找到代价最小的参数w,b
    方法:使用算法,自动寻找最小代价 即梯度下降
权重初始化
1.随机初始化
  • 均匀分布:权重从区间 [-a, a] 中随机采样,其中 a 是超参数(通常取较小值,如 0.01)
  • 正态分布:权重从均值为 0、方差为 (\sigma^2​) 的正态分布中采样,(\sigma​) 通常取 0.01
2. He 初始化

针对 ReLU 及其变种(如 Leaky ReLU)设计
仅考虑输入神经元数量

3.常数初始化

将权重初始化为固定常数(如 0 或 1),但实际中很少单独使用。

  • 全零初始化会导致 “对称权重问题”:所有神经元学习到相同的特征,网络等效于单个神经元,失去表达能力。

  • 通常仅用于偏置项(bias)初始化(如偏置初始化为 0)

[[梯度]]下降

按照梯度方向达到局部最小值,梯度的数量级与输入的数量级直接相关

重复算法更新参数,直到参数收敛于一个固定值
算法:
t m p _ w = w − α ∂ ∂ w J ( w , b ) t m p _ b = b − α ∂ ∂ b J ( w , b ) w = t m p _ w b = t m p _ b \begin{aligned} tmp\_w &= w - \alpha \frac{\partial}{\partial w} J(w, b) \\ tmp\_b &= b - \alpha \frac{\partial}{\partial b} J(w, b) \\ w &= tmp\_w \\ b &= tmp\_b \end{aligned} tmp_wtmp_bwb=wαwJ(w,b)=bαbJ(w,b)=tmp_w=tmp_b
w和b同步更新,注意更新值的顺序
α : 学习率,控制下降时的步长 \alpha :学习率,控制下降时的步长 α:学习率,控制下降时的步长
∂ ∂ w J ( w , b ) \frac{\partial}{\partial w} J(w, b) wJ(w,b)
是梯度,注意方向朝向负值方向

带值计算为
∂ ∂ w J ( w , b ) = 1 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) x ( i ) ∂ ∂ b J ( w , b ) = 1 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) \begin{aligned} \frac{\partial}{\partial w} J(w, b) &= \frac{1}{m} \sum_{i=1}^{m} (f_{w,b}(x^{(i)}) - y^{(i)}) x^{(i)} \\ \frac{\partial}{\partial b} J(w, b) &= \frac{1}{m} \sum_{i=1}^{m} (f_{w,b}(x^{(i)}) - y^{(i)}) \end{aligned} wJ(w,b)bJ(w,b)=m1i=1m(fw,b(x(i))y(i))x(i)=m1i=1m(fw,b(x(i))y(i))

如何确定学习率α:保证代价在每次迭代时都减小

  • 太小,步长小,花费更大
  • 太大,持续震荡,无法收敛

梯度爆炸:梯度的数值非常极端

  • 数据标准化
  • 梯度裁剪:给梯度设置上限,保证每一步可控
多特征线性回归

f w ⃗ , b ( x ⃗ ) = w 1 x 1 + w 2 x 2 + ⋯ + w n x n + b f_{\vec{w}, b}(\vec{x}) = w_1 x_1 + w_2 x_2 + \cdots + w_n x_n + b fw ,b(x )=w1x1+w2x2++wnxn+b 其中:

  • w ⃗ = [ w 1 , w 2 , w 3 , … , w n ] \vec{w} = [w_1, w_2, w_3, \ldots, w_n] w =[w1,w2,w3,,wn] 是权重向量(model parameters)
  • b b b 是偏置项(bias),是一个标量
  • x ⃗ = [ x 1 , x 2 , x 3 , … , x n ] \vec{x} = [x_1, x_2, x_3, \ldots, x_n] x =[x1,x2,x3,,xn] 是输入特征向量(input vector)
    可以简洁地写成点积形式: f w ⃗ , b ( x ⃗ ) = w ⃗ ⊤ x ⃗ + b f_{\vec{w}, b}(\vec{x}) = \vec{w}^\top \vec{x} + b fw ,b(x )=w x +b 其中 w ⃗ ⊤ x ⃗ \vec{w}^\top \vec{x} w x 表示向量 w ⃗ \vec{w} w x ⃗ \vec{x} x 的内积(点乘)。
向量化

f w ⃗ , b ( x ⃗ ) = w ⃗ ⊤ x ⃗ + b f_{\vec{w}, b}(\vec{x}) = \vec{w}^\top \vec{x} + b fw ,b(x )=w x +b

w= np.array([1.0,2.5,-3.3])
b=4
x=np.array([10,20,30])

f=np.dot(w,x)+b  //使用NumPy库函数进行向量之间的点积,利用并行处理元件
多特征线性回归梯度下降

方法一:迭代梯度下降

假设模型为: f w ⃗ , b ( x ⃗ ) = w ⃗ ⊤ x ⃗ + b f_{\vec{w}, b}(\vec{x}) = \vec{w}^\top \vec{x} + b fw ,b(x )=w x +b 损失函数(均方误差): J ( w ⃗ , b ) = 1 2 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) 2 J(\vec{w}, b) = \frac{1}{2m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)})^2 J(w ,b)=2m1i=1m(fw ,b(x (i))y(i))2 梯度计算

  • 对每个参数求偏导: 对第 j 个权重 w_j :
    ∂ ∂ w j J ( w ⃗ , b ) = 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial}{\partial w_j} J(\vec{w}, b) = \frac{1}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) x_j^{(i)} wjJ(w ,b)=m1i=1m(fw ,b(x (i))y(i))xj(i)
  • 对偏置 b : ∂ ∂ b J ( w ⃗ , b ) = 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) \frac{\partial}{\partial b} J(\vec{w}, b) = \frac{1}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) bJ(w ,b)=m1i=1m(fw ,b(x (i))y(i)) 参数更新(同步更新) 在每次迭代中,所有参数同时更新 w 1 = w 1 − α 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) x 1 ( i ) ⋮ w n = w n − α 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) x n ( i ) b = b − α 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) \begin{aligned} w_1 &= w_1 - \alpha \frac{1}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) x_1^{(i)} \\ &\vdots \\ w_n &= w_n - \alpha \frac{1}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) x_n^{(i)} \\ b &= b - \alpha \frac{1}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) \end{aligned} w1wnb=w1αm1i=1m(fw ,b(x (i))y(i))x1(i)=wnαm1i=1m(fw ,b(x (i))y(i))xn(i)=bαm1i=1m(fw ,b(x (i))y(i)) 💡 所有更新是 同时进行 可以简写为向量形式: w ⃗ = w ⃗ − α 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) x ⃗ ( i ) \vec{w} = \vec{w} - \alpha \frac{1}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) \vec{x}^{(i)} w =w αm1i=1m(fw ,b(x (i))y(i))x (i) b = b − α 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) b = b - \alpha \frac{1}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) b=bαm1i=1m(fw ,b(x (i))y(i))
    方法二:正规方程

仅适用于线性回归,无需迭代梯度

[[Ada Boosting]]

弱分类学习过程中,如何改变数据权重?
提高上一轮中分类错误样本权重
如何将一系列弱分类器组合成强分类器?
将分类误差小的弱分类器权重加大,让其成主要作用

特征缩放

使梯度下降更快
当有不同特征取值范围差异很大时,下降速度太慢,为此需要对特征进行缩放,使其在合理的范围

方法:

  • 除以最大值: x/max
  • 均值归一化: 使其通常在-1到1之间,将数据限定在某个特定区间
[[归一化(标准化)]]
  1. 先找到特征x1的平均值u1
  2. x1=(x1-u1)/(max-min)
  • Z-分数归一化(正态分布标准化):计算每个特征的标准差,更关注数据在其自身分布中的相对位置

检验梯度下降是否收敛:找到最小值(J的代价减少量小于一个ε)
正常收敛:

  • 学习曲线:
    ![[Pasted image 20260107010139.png]]
    纵轴:代价值
    横轴:训练迭代次数
批量归一化BN

BN 在每个训练批次中,对每个特征维度,独立地计算均值和方差,并用它们来重新归一化该特征。BN 的一个巨大优势在于它对预处理中的瑕疵具有极强的鲁棒性。即使输入数据没有被完美地归一化,BN 也会在第一层之后“纠正”它,因为它本质上就是重新做了一遍标准化。

多项式回归

使用多项式函数,但要考虑特征缩放

分类(离散型):

预测类型: eg:癌症恶性和良性
二值分类
Sigmoid函数: g ( z ) = 1 1 + e − z 其中 0 < g ( z ) < 1 g(z) = \frac{1}{1 + e^{-z}} \quad \text{其中} \quad 0 < g(z) < 1 g(z)=1+ez1其中0<g(z)<1
![[Pasted image 20260108155008.png]]

[[逻辑回归模型]]

将线性模型与 Sigmoid 函数结合,用于二分类任务

  1. 线性部分 z = w ⃗ ⋅ x ⃗ + b z = \vec{w} \cdot \vec{x} + b z=w x +b 其中:
  • w ⃗ \vec{w} w :权重向量
  • x ⃗ \vec{x} x :输入特征向量
  • b b b:偏置项
  • z z z:线性组合结果
  1. Sigmoid 激活函数 g ( z ) = 1 1 + e − z g(z) = \frac{1}{1 + e^{-z}} g(z)=1+ez1 将 z 映射到 (0, 1) 区间,表示预测为正类的概率。
  2. 完整模型 f w ⃗ , b ( x ⃗ ) = g ( w ⃗ ⋅ x ⃗ + b ) = 1 1 + e − ( w ⃗ ⋅ x ⃗ + b ) f_{\vec{w}, b}(\vec{x}) = g(\vec{w} \cdot \vec{x} + b) = \frac{1}{1 + e^{-(\vec{w} \cdot \vec{x} + b)}} fw ,b(x )=g(w x +b)=1+e(w x +b)1 > 表示样本属于正类的概率。
  3. 输出解释

[!note]
此处 f w ⃗ , b ( x ⃗ ) 不是回归的函数,而是新的模型输出函数 此处 f_{\vec{w}, b}(\vec{x})不是回归的函数,而是新的模型 输出函数 此处fw ,b(x )不是回归的函数,而是新的模型输出函数

决策边界

z = w ⃗ ⋅ x ⃗ + b = 0 z = \vec{w} \cdot \vec{x} + b =0 z=w x +b=0
此时 g(z)=0.5
得到的曲线即为预测值0和1的边界

逻辑回归的[[损失函数]]

对于单个样本 ( x(i), y(i) )
其损失函数定义为: L ( f w ⃗ , b ( x ⃗ ( i ) ) , y ( i ) ) = { − log ⁡ ( f w ⃗ , b ( x ⃗ ( i ) ) ) if  y ( i ) = 1 − log ⁡ ( 1 − f w ⃗ , b ( x ⃗ ( i ) ) ) if  y ( i ) = 0 L(f_{\vec{w}, b}(\vec{x}^{(i)}), y^{(i)}) = \begin{cases} -\log\left(f_{\vec{w}, b}(\vec{x}^{(i)})\right) & \text{if } y^{(i)} = 1 \\ -\log\left(1 - f_{\vec{w}, b}(\vec{x}^{(i)})\right) & \text{if } y^{(i)} = 0 \end{cases} L(fw ,b(x (i)),y(i))={log(fw ,b(x (i)))log(1fw ,b(x (i)))if y(i)=1if y(i)=0 其中:fw,b(xi)是预测概率
yi是真实标签值,范围0到1

代价函数则为所有样本的损失函数相加,衡量整个数据集
总成本函数: 利用最大似然估计可得: J ( w ⃗ , b ) = 1 m ∑ i = 1 m L ( f w ⃗ , b ( x ⃗ ( i ) ) , y ( i ) ) 利用最大似然估计可得:J(\vec{w}, b) = \frac{1}{m} \sum_{i=1}^{m} L(f_{\vec{w}, b}(\vec{x}^{(i)}), y^{(i)}) 利用最大似然估计可得:J(w ,b)=m1i=1mL(fw ,b(x (i)),y(i))
同样,梯度下降所得:
重复进行{

}

[[过拟合]](高方差)

![[Pasted image 20260108172248.png]]

很好适应训练集但却对验证集效果不好
会把训练数据偶然和无关的细节(噪声)也会接受

[!info]
模型过于执着地拟合训练数据中的每一个细节,包括其中的噪声和偶然性,而失去了对数据背后普适规律的把握

解决过拟合
  1. 更多的数据集
  2. 选择最小特征集,减少特征数量(易丢失信息)
  3. 正则化:鼓励学习算法缩小参数值,而不一定要求精确到0
    一般只正则化wi-wn,而没有b
[[正则化]]

惩罚所有的特征

最常见的形式是 L2 正则化

  1. 带正则化的成本函数 min ⁡ w ⃗ , b J ( w ⃗ , b ) = min ⁡ w ⃗ , b [ 1 2 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) 2 ⏟ 均方误差 + λ 2 m ∑ j = 1 n w j 2 ⏟ 正则化项 ] \min_{\vec{w}, b} J(\vec{w}, b) = \min_{\vec{w}, b} \left[\underbrace{\frac{1}{2m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)})^2}_{\text{均方误差}} + \underbrace{\frac{\lambda}{2m} \sum_{j=1}^{n} w_j^2}_{\text{正则化项}} \right] w ,bminJ(w ,b)=w ,bmin 均方误差 2m1i=1m(fw ,b(x (i))y(i))2+正则化项 2mλj=1nwj2 其中:
    f w ⃗ , b ( x ⃗ ( i ) ) = w ⃗ ⊤ x ⃗ ( i ) + b − − − − 模型预测值 f_{\vec{w}, b}(\vec{x}^{(i)}) = \vec{w}^\top \vec{x}^{(i)} + b ----模型预测值 fw ,b(x (i))=w x (i)+b模型预测值
    y ( i ) :真实标签 y^{(i)} :真实标签 y(i):真实标签
    m :样本数量 m :样本数量 m:样本数量
    n :特征数量 n :特征数量 n:特征数量
    λ :正则化系数(控制正则化强度) \lambda :正则化系数(控制正则化强度) λ:正则化系数(控制正则化强度)
    第一项:均方误差( M S E ),衡量拟合效果 第一项:均方误差(MSE),衡量拟合效果 第一项:均方误差(MSE),衡量拟合效果
    第二项: L 2 正则化项,惩罚权重的平方和 第二项:L2 正则化项,惩罚权重的平方和 第二项:L2正则化项,惩罚权重的平方和
    尽力最小化代价函数

  2. 正则化的作用
    防止模型过度依赖某些特征(即“过拟合”)
    使权重趋于较小值,提升泛化能力
    当 λ = 0 时,退化为普通最小二乘回归
    当 λ 过大,对应特征将非常小,会欠拟合

L1正则化:惩罚权重绝对值之和,将其集中在少数几个特征上,其他大量的平庸特征权重消为0,使权重稀疏
L2正则化:惩罚任何一个权重变得过大,使权重平滑

正则化的线性回归

带正则化的梯度下降
在引入 L2 正则化后,成本函数为: J ( w ⃗ , b ) = 1 2 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) 2 + λ 2 m ∑ j = 1 n w j 2 J(\vec{w}, b) = \frac{1}{2m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)})^2 + \frac{\lambda}{2m} \sum_{j=1}^{n} w_j^2 J(w ,b)=2m1i=1m(fw ,b(x (i))y(i))2+2mλj=1nwj2 梯度计算

对第 j 个权重 w_j :

∂ ∂ w j J ( w ⃗ , b ) = 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) x j ( i ) + λ m w j \frac{\partial}{\partial w_j} J(\vec{w}, b) = \frac{1}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) x_j^{(i)} + \frac{\lambda}{m} w_j wjJ(w ,b)=m1i=1m(fw ,b(x (i))y(i))xj(i)+mλwj

对偏置 b : ∂ ∂ b J ( w ⃗ , b ) = 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) \frac{\partial}{\partial b} J(\vec{w}, b) = \frac{1}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) bJ(w ,b)=m1i=1m(fw ,b(x (i))y(i)) > 注意:偏置 b 不参与正则化,因此其梯度中没有额外项。
在每次迭代中,所有参数同时更新 w j = w j − α [ 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) x j ( i ) + λ m w j ] = w j ( 1 − α λ m ) − α m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) x j ( i ) \begin{aligned} w_j &= w_j - \alpha \left[ \frac{1}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) x_j^{(i)} + \frac{\lambda}{m} w_j \right] \\ &= w_j \left(1 - \frac{\alpha \lambda}{m}\right) - \frac{\alpha}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) x_j^{(i)} \end{aligned} wj=wjα[m1i=1m(fw ,b(x (i))y(i))xj(i)+mλwj]=wj(1mαλ)mαi=1m(fw ,b(x (i))y(i))xj(i) b = b − α [ 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) ] b = b - \alpha \left[ \frac{1}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) \right] b=bα[m1i=1m(fw ,b(x (i))y(i))] > 📌 更新是 同时进行 的(simultaneous update),即使用上一轮的值计算新值。 w ⃗ = w ⃗ ( 1 − α λ m ) − α m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) x ⃗ ( i ) \vec{w} = \vec{w} \left(1 - \frac{\alpha \lambda}{m}\right) - \frac{\alpha}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) \vec{x}^{(i)} w =w (1mαλ)mαi=1m(fw ,b(x (i))y(i))x (i) b = b − α m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) b = b - \frac{\alpha}{m} \sum_{i=1}^{m} (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) b=bmαi=1m(fw ,b(x (i))y(i))

正则化的逻辑回归

添加正则项:
J ( w ⃗ , b ) = 1 m ∑ i = 1 m L ( f w ⃗ , b ( x ⃗ ( i ) ) , y ( i ) ) + λ 2 m ∑ j = 1 n w j 2 J(\vec{w}, b) = \frac{1}{m} \sum_{i=1}^{m} L(f_{\vec{w}, b}(\vec{x}^{(i)}), y^{(i)})+ \frac{\lambda}{2m} \sum_{j=1}^{n} w_j^2 J(w ,b)=m1i=1mL(fw ,b(x (i)),y(i))+2mλj=1nwj2

深度学习

通过逐层、非线性的特征变换,网络将原始的、复杂的、通常非线性可分的数据,逐步转换到一个高维的、抽象的特征空间。在这个空间里,数据不仅是线性可分的,而且是以一个巨大的间隔分开

[[神经网络]]

输入层->中间隐藏层->输出层
每一层输入向量并应用一些逻辑回归单元,计算出另一个向量作为下一层的输入,重复直到最终输出层的计算
![[Pasted image 20260120192121.png]]

[[前向传播]]

对于一个输入张量 x,依次通过神经网络的每一层(每层执行线性变换 + 非线性激活),最终得到输出 y 的过程
一维数组:x=np.array([200,17])
二维数组:x=np.array([[200,17],[312,15]])

[[模型训练]]

  1. 逻辑回归线性预测为W点积X加上b的sigmoid函数
    z=np.dot(w,x)+b
    f_x=1/(1+np.exp(-z))
    指定逻辑回归的输入到输出函数
    模型框架
    model= Sequential([Dense(...),Dense(...),Dense(...),Dense(...),Dense(...)])
  2. 指定损失函数和成本函数
    loss=-y*np.log(f_x)-(1-y)*np.(1/f_x) 衡量单个训练样本x,y上的表现
    所有m个训练样本上损失函数的平均值
    模型框架
    model.compile(loss=BinaryCrossentropy())
  3. 使用梯度下降来最小化成本函数
    w=w-α*dj_dw
    b=b-α*dj_db
    模型框架
    model.fit(X,y,epochs=100)

具体化:
![[Pasted image 20260120223639.png]]

#第一步
import tensorflow as tf

from tensorflow.keras import Sequential

from tensorflow.keras.layers import Dense

  

model = Sequential([

    Dense(units=25, activation='sigmoid'),

    Dense(units=15, activation='sigmoid'),

    Dense(units=1, activation='sigmoid')

])
#第二步
model.compile(loss.BinaryCrossentropy())

#第三步
model.fit(X,y,epochs=100)

[[激活函数]]

[[ReLu激活函数]]

g ( z ) = m a x [ 0 , z ] g(z)=max[{0,z}] g(z)=max[0,z]

选择激活函数
  • 处理二分类:Sigmoid函数
    会产生梯度消失现象。而且该激活函数是以 0.5 为中心的
  • 预测值有负:线性激活函数
  • 预测值恒正:ReLu激活函数
    部分输入会落入小于0区域,导致对应权重无法更新。这种现象被称为“神经元死亡”。
    对于中间隐藏层,一般使用ReLu

非线性结构指全连接层(wx+b)+激活函数

多分类问题

[[softmax]]回归算法

假有 4 个类别:y = 1, 2, 3, 4 对于输入特征向量 x ,每个类别的得分(logits)由线性变换计算得到: z 1 = w ⃗ 1 ⋅ x ⃗ + b 1 z 2 = w ⃗ 2 ⋅ x ⃗ + b 2 z 3 = w ⃗ 3 ⋅ x ⃗ + b 3 z 4 = w ⃗ 4 ⋅ x ⃗ + b 4 \begin{aligned} z_1 &= \vec{w}_1 \cdot \vec{x} + b_1 \\ z_2 &= \vec{w}_2 \cdot \vec{x} + b_2 \\ z_3 &= \vec{w}_3 \cdot \vec{x} + b_3 \\ z_4 &= \vec{w}_4 \cdot \vec{x} + b_4 \\ \end{aligned} z1z2z3z4=w 1x +b1=w 2x +b2=w 3x +b3=w 4x +b4 其中:

  • w_i 是第 i 类的权重向量
  • b_i 是偏置项
  • z_i 是第 i 类的未归一化得分(logit) 然后通过 Softmax 函数 将这些得分转换为概率分布

a i = e z i ∑ j = 1 4 e z j = P ( y = i ∣ x ⃗ ) a_i = \frac{e^{z_i}}{\sum_{j=1}^{4} e^{z_j}} = P(y = i \mid \vec{x}) ai=j=14ezjezi=P(y=ix )
具体展开如下: a 1 = e z 1 e z 1 + e z 2 + e z 3 + e z 4 = P ( y = 1 ∣ x ⃗ ) a 2 = e z 2 e z 1 + e z 2 + e z 3 + e z 4 a 3 = e z 3 e z 1 + e z 2 + e z 3 + e z 4 a 4 = e z 4 e z 1 + e z 2 + e z 3 + e z 4 \begin{aligned} a_1 &= \frac{e^{z_1}}{e^{z_1} + e^{z_2} + e^{z_3} + e^{z_4}} = P(y = 1 \mid \vec{x}) \\ a_2 &= \frac{e^{z_2}}{e^{z_1} + e^{z_2} + e^{z_3} + e^{z_4}} \\ a_3 &= \frac{e^{z_3}}{e^{z_1} + e^{z_2} + e^{z_3} + e^{z_4}} \\ a_4 &= \frac{e^{z_4}}{e^{z_1} + e^{z_2} + e^{z_3} + e^{z_4}} \\ \end{aligned} a1a2a3a4=ez1+ez2+ez3+ez4ez1=P(y=1x )=ez1+ez2+ez3+ez4ez2=ez1+ez2+ez3+ez4ez3=ez1+ez2+ez3+ez4ez4每个 a_i 表示输入x属于类别 i 的概率

  • 所有 a_i 的和为 1
  • Softmax 常用于多分类任务的输出层,配合交叉熵损失函数使用

[[交叉熵损失函数(Cross-Entropy Loss)]]
真实标签对应的预测概率的负对数

loss = − log ⁡ a j 其中  j = y \text{loss} = -\log a_j \quad \text{其中 } j = y loss=logaj其中 j=y
![[Pasted image 20260122210855.png]]
关键结论:

  • 当模型对正确类别的预测概率越高,损失越小。
  • 当模型完全错误(如 a_j to 0 ),损失趋于无穷大,惩罚强烈。

强化学习

  • 基于评估:强化学习利用环境评估当前策略,以此为依据进行优化

  • 交互性:强化学习的数据在与环境的交互中产生

  • 序列决策过程:智能体在与环境的交互中需要作出一系列的决策,这些决策往往是前后关联的

![[Pasted image 20260322153654.png]]

基础

[[数据集]]

训练集

模型学习的教材,通过观察这些来调整内部参数

验证集

“裁判”
告诉不同的架构,参数在未见过的数据上表现最好

测试集

最终测试,整个模型训练和调优过程中都未接触该数据

  • 防止模型随机表现恰好符合验证集,具有选择偏误
    必须先划分数据集以保证测试集未被接触
切分数据集

1.避免数据泄露,其划分要三种完全不同结构的数据

  • 利用交叉验证:评估一个建模流程的性能,非最终模型
  • 利用消融实验,可以处理数据泄露
    2.两个数据集特征不同,即协变量偏移
  • 使用对抗验证

编码分类变量

防止类别的标签为数字而导致假线性关系,使用独热编码
eg:

  • A549: (100)
  • HeLa: (010)
  • MCF7: (001)
    仍有多重线性问题

可学习嵌入

为每个类别关联一个低维度的、稠密的向量。​​这些向量的内容不是我们预先设定的,而是由模型在训练过程中自己学习得到的​​。

[[目标检测]]

识别图像中有什么+定位

存在大量的冗余检测结果的混乱导致出现假阳性,使得精准率降低

  • 使用非极大值抑制NMS:选择可信度最高的边框,并抑制与其有显著重叠的框

[[F1-score]]

  • 真阳性TP:被模型预测为正类,而该样本的真实标签也为正类
  • ​​假阳性FP :你声称找到了一根针,但它只是一根稻草。一次虚报。
  • ​​假阴性​​FN:你错过了一根确实存在的针。一次错失的机会。
  • ​​真阴性Tn:你忽略了一根稻草,而它确实是稻草。正确地忽略了不感兴趣的东西
精确率precision

在所有预测为阳性的事物中,实际有多少为真阳的
Precision = T P T P + F P \text{Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP

召回率

在所有实际为阳性的事物中,找到了多少
Recall = T P T P + F N \text{Recall} = \frac{TP}{TP + FN} Recall=TP+FNTP

F1-score为为精确率和召回率的调和平均数,衡量所做的真实发现相对于“错误堆”的大小

F 1 = 2 1 Precision + 1 Recall = 2 × Precision × Recall Precision + Recall = 2 T P 2 T P + F P + F N F_1 = \frac{2}{\frac{1}{\text{Precision}} + \frac{1}{\text{Recall}}} = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} = \frac{2TP}{2TP + FP + FN} F1=Precision1+Recall12=Precision+Recall2×Precision×Recall=2TP+FP+FN2TP

[[偏差-方差权衡]]

​偏差 (Bias)​
这部分误差是系统性的、可预测的
eg:你的瞄准器本身存在系统性偏差,导致你瞄准靶心,箭却总是系统性地射向左侧。

方差 (Variance)​
随机的、不可预测的散射
eg:即使瞄准器完美无瑕,你的手臂在每次射击时也会有轻微的抖动,导致箭矢围绕你的平均落点散布开来。

​不可约减误差 (Irreducible Error)​
这种固有的、无法消除的随机性
eg;总有一些你无法控制的因素,比如一阵突如其来的微风。

  1. 过于简单的模型(高偏差)
    性格:固执死板。
    表现:无论数据怎么变,它都只认一条直线。虽然很稳定(数据微调它也不变),但根本抓不住数据的真实规律,从一开始就错了。

  2. 过于复杂的模型(高方差)
    性格:过度敏感。
    表现:极度灵活,连数据里的噪音(错误点)都强行拟合。在训练集上表现完美,但一旦遇到新数据就彻底抓瞎。只要数据稍有不同,它的形状就会剧烈变化。

寻找“甜蜜点” (The Sweet Spot)
画出一张图:横轴是复杂度,纵轴是误差,会得到一个经典的 U型曲线。

  • 左边下坡:模型变强,误差降低(因为偏差在减小)。
  • 谷底:最佳平衡点。此时模型既学到了规律,又没被噪音带偏,泛化能力最强。
  • 右边上坡:模型想太多,开始过拟合,误差反而飙升(因为方差在爆炸)。
    解决:使用[[正则化]]

模型容量与泛化

[[模型容量]]

模型能够拟合多复杂函数的能力。
一个容量低的模型,像是一把简单的直尺,只能画直线。一个容量高的模型,则像是一支灵活的画笔,可以描绘出任何复杂的曲线。

[[K-折交叉验证]]

用一部分来搭建一个微缩模型进行测试,剩下的部分则用来验证测试结果

[[感受器]]

通过计算一个加权和并加上一个偏置项

核心

构建与训练神经网络

[[均方误差损失]]

MSE损失函数

L M S E = ( 1 / n ) × Σ ( y i − y ^ i ) 2 ( i 从 1 到 n ) L_MSE = (1/n) × Σ(y_i - ŷ_i)² (i 从 1 到 n) LMSE=(1/n)×Σ(yiy^i)2i1n

[[反向传播]]

从最终的输出(通常是损失 L)开始,问一个问题:“我的值是由谁贡献的?你们各自的贡献度是多少?”

​在任何一个扇出节点,其总梯度等于从所有下游分支流回的梯度之和

反向传播的计算成本与参数数量 n 无关,它大致只和前向传播量级相关

[[激活函数]]

[[采样]]

将连续的模拟信号转化为离散的数字信号
上采样
采样过程中对离散点进行插值,提高分辨率
下采样
采样过程中选取更关键的离散点,缩小分辨率

经典神经网络

  1. [[Transfomer]]
  2. [[CNN卷积]]
  3. [[RNN循环神经网络]]
  4. [[项目班#LSTM|LSTM]]
  5. [[项目班#GRU门控循环单元|GRU门控循环单元]]
  6. [[GCN图卷积]]
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐