机器学习无非就是研究数据之间关联关系的学科。比如人脸图像与其身份之间的关系,语音数据与文字之间的对应关系,胆固醇指数与心脏病之间的关联关系,股票的历史数据与其未来走势的关联关系等等。
简单的机器学习算法只能挖掘简单的关联关系(如线性关系),而复杂的模型(如深度学习)可以对更加复杂的非线性数据关联关系建模。
任何一种参数化的(parameterized)机器学习算法都可分解为如下三个部分(3 core components):
- 得分函数(score function)
- 损失函数(loss function)
- 优化算法(Optimization)
以分类问题为例,得分函数用于将输入数据映射到类别得分,损失函数用于度量模型的估计结果与真实结果之间的一致性,优化算法则基于损失函数寻找最佳的模型参数。
例如:
- SVM 的得分函数是线性函数 f(xi,W,b)=Wxi+b,损失函数是 hinge loss + 正则项,优化算法是 SMO 等;
- Softmax 分类器的得分函数是线性函数 f(xi,W,b)=Wxi+b,损失函数是 cross-entropy loss,优化算法是梯度下降;
- MLP (Multilayer Perception) 的得分函数是 Artificial Neural Network,损失函数是 cross-entropy loss,而优化算法是 BP (backpropagation)算法。
因此,在设计算法或者编写机器学习代码的时候,重要的是把握以上三个部分的实现,剩下的都是细节。
任何算法无论复杂或简单,都遵循一个“结果估计→计算误差→修正系统”的迭代过程,直到得到最优解或可接受的误差为止。在此优化过程中,得分函数、损失函数和优化算法之间的信息交互过程(information flow)如下:
- 前向过程(forward pass):根据给定参数W,基于得分函数,计算训练数据的类别得分;
- 数据损失(data loss):基于损失函数,计算类别得分与真实标记之间的一致性(compatability);
- 反向过程(backward pass):根据数据损失,计算其相对于参数
W 的变化程度(梯度),并基于它更新 W,以使得下一轮迭代中有更小的数据损失。
分类问题中,最理想的损失函数是 0-1 损失,即统计数据中错误分类的个数:
ℓ0,1=∑i=0|D|If(xi)≠yi
其中 D 是训练集,I 是符号函数(indicator function)。然而,0-1 损失不可微,其优化过程的代价会非常大。因此,才出现了很多对 0-1 损失的近似,如 NLL(Negative Log-Likelihood Loss)等。
机器学习整理
最新推荐文章于 2023-08-24 11:08:12 发布