线性模型
课程:李宏毅2022深度学习 www.bilibili.com/video/BV1Wv…
egression
定义函数 y=wx+b, 定义损失函数MAE mean absolute error完全绝对值 \MSE mean square error
MAE ∣y−y′∣
MSE (y−y′)2
Gradient descent 梯度下降方法找到loss最小的w、b,存在局部最小和全局最小的问题,梯度下降与步长step和学习速度有关(自定义)
偏微分分别对w、b进行梯度下降找到对应的w0b0
曲线= 常量+一系列折线相加
用sigmoid函数逼近 折线, w表示斜率,b表示左右平移量,c表示高度
y=csigmoid(b+wx1)
ReLU: cmax(0,b+wx1) 2倍斜率的sigmoid函数
hard sigmoid → max(0,min(1,0.5∗x+0.5))
思考点:
1、权重到底怎么更新的
w=w0−η∂w∂L∣w0
偏微分控制梯度方向,学习率 η控制步幅,实际步长 η⋅∂w∂Loss不固定。为什么不直接用偏微分--因为偏微分数值范围不可控。优化方向有2块,学习率是否固定--余弦退火、Adam优化器,权重更新公式---解决过拟合的问题
L2正则化--权重衰减,
w新=w旧⋅(1−ηλ)−η⋅∂w∂Loss原始
2、权重更新为什么是BP反向传播
链式法则
神经网络是一层层套起来的:Loss=MSE(Layer2(Layer1(x)))。
求偏微分的工具是链式法则:
如果 z=f(y),y=g(x),要求 ∂x∂z:
公式:∂x∂z=∂y∂z⋅∂x∂y这就是 loss.backward() 在后台默默做的事情:从最后的结果往回推,把每一层的局部梯度乘起来,最终算出 Loss 对第一层权重的偏微分。
3、多层ReLU的意义
从数学上看,多层 ReLU(或其变体)堆叠起来,是在用大量的分段线性边界去逼近任意复杂的非线性函数。
一层 ReLU:只能把空间切一刀,分成“亮”和“暗”两个区域。
多层 ReLU:每一层都在上一层切分的基础上继续切分。层数越深,能切出的碎片越多,能拟合的函数形状就越复杂。
所以,多层 ReLU 的意义在于提高模型的非线性表达能力(容量) ,而不是把激活值简单相加。
对比 Sigmoid 来加深理解
Sigmoid 网络:像是在用橡皮泥捏形状。每一层都在把上一层的形状揉搓、拉伸、挤压,但边界始终是软绵绵、圆润的。
ReLU 网络:像是在用剪刀和硬纸板拼形状。每一层都在剪切和拼接,边界是尖锐的、硬朗的。
正因为 ReLU 这种“硬切分”的特性,它不会去“逼近”上一层的软曲线,而是直接构造新的硬边界。
参考书:李宏毅苹果书 u.jd.com/ta2MD1R