一. 什么是FTRL
首先介绍一下FTL,FTL的思想是每次找到让之前所有样本的损失函数之和最小的参数。流程如下:
FTRL算法就是在FTL的优化目标的基础上,加入了正则化,防止过拟合:
FTRL的损失函数一般也不容易求解,这种情况下,一般需要找一个代理的损失函数。
代理损失函数需要满足以下条件:
代理损失函数比较容易求解,最好是有解析解。
为了衡量条件2中的两个解的差距,引入regret的概念。
表示代理函数求出来的解离真正损失函数求出来的解的损失差距。
这个损失需要满足一定的条件,Online learning才可以有效,即:
即随着训练样本的增加,代理损失函数和原损失函数求出来的参数的实际损失值差距越来越小。
如果 是凸函数,我们可以用下面的代理损失函数:
为了产生稀疏的解,我们可以加入L1正则项:
只要 是凸函数,上面的代理函数一定满足:
1.当求得的w是大于等于0的时候:
其中 ,另上述偏导数等于0,可得:
因为我们现在是讨论w>=0的解,而 大于0( 大于0),所以当:
当 >=0时, 是肯定大于0的,即不符合我们的要求。
2.当求得的w是小于0的时候:
令偏导数等于0,可得:
因为我们现在是讨论w<0的解,而 大于0( 大于0),所以当:
当 <=0时, 是肯定小于0的,即不符合我们的要求。
重点是为什么说第一项是对损失函数的一个估计呢:
本人暂时说一个牵强的解释(g是f的梯度):
就有了上述截图中类似的表达式子。
如果 不是凸函数,我们怎么选代理损失函数?
为什么只要 是凸函数,上面的代理函数一定满足: