<>1.1.15. Passive Aggressive Algorithms
<>一、简介:
被动攻击算法体现出了一种在线学习(online learning)的思想。
之前在逻辑回归一章我们讨论过将分类问题转化为回归问题的方式。里面有两个核心关键词:可能性(程度)和可能性(概率)。
在这里,我们对模型的优化从两点考虑。
* 样本是否分类正确
* 模型预测的可能性(程度/概率)是否贴近实际。
Passive Aggressive Algorithms算法根据以上的判断准则优化自己的模型:
* 在样本分类正确 且 模型对可能性的预测准确(程度大于一)时,模型不做调整(这里体现出了被动)
* 在样本分类正确 但 模型对可能性的预测有失偏颇(不太准确)时,模型做出轻微的调整
* 在样本分类错误时,模型做出较大的调整(体现出较强的“攻击性”)
<>二、具体实现
这里引用的是skearn里提供的文献“Online Passive-Aggressive Algorithms” K. Crammer, O. Dekel,
J. Keshat, S. Shalev-Shwartz, Y. Singer - JMLR 7 (2006)
我们拿PA来举例。首先将目光投向损失函数(suffur loss) m a x { 0 , 1 − y t ( ω t ⋅ x t ) } max\{0,
1-y_t(\omega_t\cdot x_t)\}max{0,1−yt(ωt⋅xt)}
在这里面:
* 当可能性程度 ω t ⋅ x t \omega_t\cdot x_t ωt⋅xt 的绝对值大于一且与 y t y_t yt同号时, 即在
样本分类正确且模型对可能性的预测准确时, 我们通过max()函数将损失置零,模型不做调整
* 当 在样本分类正确 但 模型对可能性的预测不太准确时, 即使 ω t ⋅ x t \omega_t\cdot x_t ωt⋅xt与 y t y_t
yt同号,但我们仍然会得到一个小于一的损失。此时,模型制作轻微调整。
* 在样本分类错误时,损失一定大于一,且预测的程度值 ω t ⋅ x t \omega_t\cdot x_t ωt⋅xt 越大模型调整的幅度也就越大。
但是,当模型调整的幅度怎么与损失挂钩呢,模型又怎么根据“有问题”的样本来调整呢?
答案非常简单:
面对怎么挂钩的问题,我们认为设置一个学习率,并让学习率中包括损失。也就是讲损失函数直接作为参数更新部分的系数。直接乘上损失,就可以让损失表示调整幅度。
面对怎么调整的问题
* 方向:不用多说,直接乘上 y t y_t yt,让 y t y_t yt决定方向(因为损失与学习率必正)
* 基于样本更新:直接让参数(每个特征的权重)根据学习率加上当前样本归一化后的特征的值,即 τ t y t x t \tau_ty_tx_t τtyt
xt(在PA中学习率 τ \tau τ表现为损失除以样本 x t x_t xt的模。其中loss作为程度系数,模长用于归一化)
对于学习率,PA_I设置了阈值C,也就是学习率的最大值,从而避免模型在遇到极端情况下跑偏
PA_II同样设置了超参数C,但是PA_II的C对模型的调整更灵活,给了使用者更多的操作空间
<>三、思想
被动攻击算法,依然是一种分类算法,而且,他和感知机一样,都是基于错误样本,且不需要学习率(PA的实质是用损失代替学习率)。
* PA的Passive(被动)就体现在错误样本上(准确的说是“有问题”的样本)
* PA的Aggressive(攻击)体现在用损失取代学习率,并直接用样本优化参数
PA模型的参数本来就是归一化后样本的加权平均。首先,初始化得到的参数会在大样本后均摊。其次,因为初始化的参数决定了模型对样本的预测,所以它会被加权后的样本抵消掉。在这样的过程中,我们可以通过不同权重的不同样本逐渐逼近一个合适的表示不同特征之间关系的参数。
PA的在线学习思想体现在,哪怕样本的分布是变化的,模型也具有对数据的自适应性,可以在一次次操作的过程中逼近最优的划分超平面。