# 损失函数 用来量化预测值与实际值之间的差距。 一般我们会使用平方误差: $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等函数。 # 正则化 主要用来解决过拟合问题。 - 权重衰减 通过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 *经典泛化理论认为,为了缩小训练和测试性能之间的差距,应该以简单的模型为目标。简单性的另一个角度是平滑性,即函数不应该对其输入的微小变化敏感。* Dropout在计算每一层时