ctr预测中,单个样本由向量x表示,w是模型参数,预测样本x被点击的概率p=sigmoid(w * x),sigmoid(x) = 1/(1+exp(x))。样本label为{0, 1}表示是否被点击。模型损失函数为交叉熵损失:
L = -ylog§ - (1-y)log(1-p),梯度g为损失函数对w求偏导:
ftrl更新参数的公式为:
这个表示梯度,就是损失函数对参数求偏导。
t表示第t轮更新参数,g表示梯度,g1:t表示前t轮梯度之和,Ws表示上轮迭代后w的值。
这个更新公式由三部分组成,第一部分g1:t * w表示参数更新的方向也就是梯度,中间部分限制了更新的w和上一轮的w不要相差太大(万一样本不是好样本呢),它的系数与学习率有关,
最后一项是为了更新得到稀疏的w。
下面是公式推导:
(如有错误,欢迎指正,谢谢!)
在FTRL中,每个维度的学习率都是单独考虑的。
以下是算法描述: