# 损失函数
用来量化预测值与实际值之间的差距。
一般我们会使用平方误差：
$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，在执行反向传播时，删除的神经元的梯度也会消失，这就使得输出层不会过于依赖其中的任何一个隐藏单元。
	