在tensorflow V.S中实现FTRL。谷歌研究论文中的FTRL

时间:2016-08-11 00:20:32

标签: python algorithm tensorflow

我有兴趣挖掘如何在tensorflow中实现FTRL的细节。我在文件夹"gen_training_ops.py"中的文件/tensorflow/python/training中找到了一些信息。在该文件中,FTRL算法的公式描述如下:

def apply_ftrl(var, accum, linear, grad, lr, l1, l2, lr_power,
use_locking=None, name=None):
r"""Update '*var' according to the Ftrl-proximal scheme
accum_new = accum + grad * grad      ------ (1)
linear += grad + (accum_new^(-lr_power) - accum^(-lr_power)) / lr * var        ------ (2)
quadratic = 1.0 / (accum_new^(lr_power) * lr) + 2 * l2              ------ (3)
var = (sign(linear) * l1 - linear) / quadratic if |linear| > l1 else 0.0           ------(4)
accum = accum_new        ------(5)

我还在阅读KDD'13中的Google“广告点击预测:来自战壕的观点”一文。 FTRL算法的公式在本文的第2页给出。比较这两个实现,我们找到了一些连接: var is w_{t,i} in the paper; l1 is lambda1 in the paper; linear is zi in the paper; lr is alpha in the paper; grad is gi in the paper; accum is ni in the paper.

但是,还有一些不一致的观点: 根据该论文,上面的等式(2)应该是

linear += grad - (accum_new^(-lr_power) - accum^(-lr_power)) / lr * var

我们也可以通过比较两种实现来得到以下等式:

2l2 *alpha = beta + alpha * lambda2

对于熟悉张量流中FTRL实现的任何专家,您能否帮我澄清张量流中给出的参数的含义,以及谷歌研究论文“Ad Click Prediction:a View from from the FTRL code”中与FTRL代码的关联战壕“。

0 个答案:

没有答案