Files
Obsidian/Books/动手学深度学习/基础概念.md

29 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 损失函数
用来量化预测值与实际值之间的差距。
一般我们会使用平方误差:
$l^i(\mathbf{w}, b) = \frac{1}{2}( \hat{y}^i - y^i)$
损失函数我们则采用平方误差的均值:
$L(\mathbf{w}, b) = \frac1n\sum_{i=1}^{n} l^i(\mathbf{x}, b)$
## 过拟合与欠拟合
训练误差是在训练数据集上的误差,泛化误差是在普遍数据集上的误差,一般来说,欠拟合一般指在训练数据集上精本就度不高,导致泛化性能较差,过拟合指在过于拟合训练数据集中的样本,导致泛化性能较差。
# 优化算法
- 随机梯度下降算法(Stochastic Gradient Descent)
通过不断在损失函数递减方向上更新参数来降低误差。
梯度下降法主要计算损失函数关于模型参数的导数。但是每次计算时候遍历整个数据集,效率会很低。所以每次计算先抽取一个小批量$B$(由固定数量的样本组成)的梯度,然后我们将梯度乘以一个预先确定的正数$\eta$,并从当前采纳数的值中减掉。
$(\mathbf{w}, b) <- (\mathbf{w},b) - \frac{\eta}{|B|} \sum_{i\in{B}}\partial_{(\mathbf{w}, b)}l^i(\mathbf{w},b)$
其中$\eta$代表学习率。
# 激活函数
在MLP中由于多个线性层叠加最终的结果和单层感知机并无区别加入激活函数后可以引入非线性。
常用的有sigmoid、ReLU、tanh等函数。
在MLP中由于激活函数的存在还会出现梯度消失和梯度爆炸的问题。由于每次梯度瞎讲讲的过程中需要对激活函数求导并
# 正则化
主要用来解决过拟合问题。
- 权重衰减
通过L2范数惩罚大的权重值使得模型的参数更加稀疏平均从而使得模型不过于依赖某些特征从而提升了泛化能力。
正则化损失函数:$L = L_0 + \lambda ||\mathbf w||^2$
反向传播:$w_i ← w_i - \alpha(\frac{\partial L_0}{\partial w_i} + \lambda w_i)$
通过反向传播的过程我们可以看到,每次迭代后,权重的值都会变为$(1 - \lambda \alpha)$倍使得权重值更加靠近零但是不为0使模型偏向于学习更加简单的、泛化性能更高的模型。L1正则化则会导致模型将权重集中在一部分特征上将其它权重清零这称之为特征选择。
- Dropout
*经典泛化理论认为,为了缩小训练和测试性能之间的差距,应该以简单的模型为目标。简单性的另一个角度是平滑性,即函数不应该对其输入的微小变化敏感。*
在实践中,我们以$p$的概率将隐藏单元置为0在执行反向传播时删除的神经元的梯度也会消失这就使得输出层不会过于依赖其中的任何一个隐藏单元。