机器学习 16、分类算法 -Softmax

你挡我一时,挡不了我一世

发布日期: 2019-05-16 13:39:17 浏览量: 880
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

前文链接:https://write-bug.com/article/2467.html

梯度下降

BGD

在前文中,我们通过梯度下降法最优化更新参数w,那么上节那种迭代的方法为BGD,批量梯度下降。这种方法每次都把所有数据集都遍历一遍,从而每次都可以更新最优的参数。这种方式比较慢,实用性差但是效果好。

SGD

正常工作中,我们通常使用SGD,随机梯度下降,此种方法快,使用当前数据集的最优参数通过多次迭代不断逼近全局最优值。

MBGD

工业界中,常用方法minibatch小批量梯度下降,把所有样本分为不同的批次依次执行BGD(参数不变一直更新同一参数),效果介于前两种之间的折中方式。

  • 高参:不是模型参数,又影响训练结果的因素,根据不同的任务,人工调节
  1. Learning rate:参数以多大的幅度利用梯度更新,即走的步长
  2. epoch:遍历所有样本次数
  3. Batch size :每个batch中包含多少个样本的个数
  • Batch:批次,每次epoch中,包含多个batch

  • Step:更新一次批量

  • shuffle优化:每次取的样本做随机打乱

更新过程:

计算误差值,将误差作为参数计算梯度,将所有参数减去对应梯度乘以学习速率完成一次更新

多分类Softmax

逻辑回归是Softmax的一般形式。在二分类中我们求取p(y=1|x)=sigmoid(wx)的概率作为正例,同时只求一组w,b的权重就可以了。

但是在多分类中,我们的分类集合为{1,2,3,4。。。。。k}应用:数字识别、文章分类等

那么这时,我们就需要对这个样本属于每个分类都求取一组权重:

  1. P(y=1|x)—w1=e^(w1x)
  2. P(y=2|x)—w2=e^(w2x)
  3. P(y=3|x)—w3=e^(w3x)
  4. Py=1|x)=w1/(w1+w2+w3)

所以求取到的每个概率看那个概率最大就属于哪个类。

在给定输入x,对每一个类别j估算出概率值为p(y=j|x)

输出一个k维向量(元素和为1)来表示这k个估计的概率值

向量中所有概率相加=1。

我们知道,逻辑回归的损失函数是

那么由此我们可推广出softmax回归损失函数:

k:当前类别,m:真实label

只不过是softmax对k个值进行累加,logic对2个值进行累加

同样的,对损失函数求导得:

这时,你可能会好奇,到底怎么logic就成了softmax的特殊情况了,若k=2,Softmax回归退化为logistic回归:

两个参数向量均减去向量θ1:

此时,就得到了两个参数组成的向量,此值就是原来的概率值。

我们在上面得到了梯度公式,就可以通过每个类乘学习率,各自更新自己的权重,得到一列权重向量。

L1、L2正则

我们可以看到上面提出的三种梯度公式都有一个λw,而这个λw可加可不加,加了之后相当于每次迭代更新时都变相给各自的权重加了个约束,对于大部分训练,效果都会变好,即正则化项。

  • λ:衰退权重

  • 常用正则化项:

    • L1范数:λ|w| 又称lasso
    • L2范数:λ|w|^2 又称ridge(岭回归)
    • 当然在训练中,L1和L2是可以加起来跑的。
    • L1+L2:(梯度+L1+L2)

在日常使用中,我们需要对所有维度做一个综合考虑,达到效果最好。假设分辨男女的特征,类似戴眼镜这种没有区分能力的特征我们需要把他的w学为0,还有如果我的w声音学到了1000,w身高学到了100,w体重学到了10,单纯看每一个特征它的w都比较合理,但是从整体来看,w小的特征就会被强特征淹没掉,比如前面这几个只要出现了声音特征可能就一定确认为男性。这样的效果并不是我们想要的,泛化能力弱。

这个正则项就是对w的惩罚项,如果加了正则项就相当于压缩了w:

  1. L1:|w|<1
  2. L2sqrt(|w|^2)<1

W是一组向量在公式中与各自的X相乘作内积,那上面压缩了w就相当于对每个w乘一个相同小数,Wold和Wnew比例关系相同,那么和之前的wx就是一回事了。

由上图,我们把每次w更新的值想象为等高线(效果相同),在同倍数缩小时,和L1,L2构成的图形相交(每次更新的w都和我们的λ有着直接联系,看如何选择最优那组w)达到限制w扩散过大的目的。同时从图形中我们可以看出一些特点:

  • L1:w1+w2=1,某时w与其角上会重合,过小的w会被优化为0,形成稀疏矩阵

  • 从系统实现角度:大大减少参数存储空间(只存储有数部分)、针对性强,泛化能力好,防止过拟合

  • L2: w1^2+w2^2=1,与圆相交相切几乎都不为0,不会产生稀疏矩阵,可以对一票否决权的这种权重惩罚的也大,让权值尽可能小,防止过拟合

欠拟合、过拟合

在大部分算法中,都存在过拟合问题,即一个模型在训练集上表现得非常好,但是在实际测试中效果差,将噪声一起学到了模型中

上图中,既可以表现过拟合的现象,又是一种防止过拟合的方法:即交叉验证

上面的线为测试集错误率,下面为训练集错误率,在训练的同时进行测试(每训练几轮测试一下),一旦测试集错误率上升,立即停止训练,防止过拟合。

那么还有什么防止方法呢?

  • 筛选特征(过多特征的筛选、降维)

人工筛选:根据时间、重要程度等等对特征进行优先级排列或筛选

机器筛选(如mrMR信息增益(-决策树)):比如一个特征对男女判断是否有用,可以对其求auc

  • 特定模型方法

增加惩罚项(L1、L2)

决策树高度

  • 增加训练数据(万能)

  • 神经网络Dropout(减边)

欠拟合:一般都是训练轮数不够,那么一般增加训练轮数和决策树拓展分支

上传的附件
最近文章
eject