attentional_factorization_machine icon indicating copy to clipboard operation
attentional_factorization_machine copied to clipboard

glorot初始化

Open Atomu2014 opened this issue 6 years ago • 5 comments

我认为直接使用Xavier初始化网络参数会有一点问题,因为网络的真实输入输出并不是[2embed_size, 1],而是[n^2embed_size, n^2/2],从这个角度来看,为了保证输出与梯度的分布接近标准正态,应该采用3维的xavier [n^2/2, 2embed_size, 1]来进行初始化。当然,从网络的角度来说,输入输出还是[2embed_size, 1],因此glorot的方法可能并不完全适用,更加合理的初始化可能介于2embed_size, 1]与[n^2/2, 2embed_size, 1]之间,目前的初始化方法容易nan可能是因为方差过大导致的,这一点可以通过调节问题粗暴控制,但是如果在最开始的几个step就产生梯度爆炸的话,调节温度也救不回来

Atomu2014 avatar Feb 15 '18 06:02 Atomu2014

建议先训练FM,用FM的feature embeddings去初始化AFM. 一般效果会有提升。

2018-02-15 14:57 GMT+08:00 KevinKune [email protected]:

我认为直接使用Xavier初始化网络参数会有一点问题,因为网络的真实输入输出并不是[2embed_size, 1],而是[n^2embed_size, n^2/2],从这个角度来看,为了保证输出与梯度的分布接近标准正态,应该采用3维的xavier [n^2/2, 2embed_size, 1]来进行初始化。当然,从网络的角度来说,输入输出还是[2embed_size, 1],因此glorot的方法可能并不完全适用, 更加合理的初始化可能介于2embed_size, 1]与[n^2/2, 2embed_size, 1]之间, 目前的初始化方法容易nan可能是因为方差过大导致的,这一点可以通过调节问题粗暴控制,但是如果在最开始的几个step就产生梯度爆炸的话, 调节温度也救不回来

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/hexiangnan/attentional_factorization_machine/issues/10, or mute the thread https://github.com/notifications/unsubscribe-auth/ABGxjm0YBzw60tpQL9C1tn_JAff6CjP0ks5tU9VigaJpZM4SGaO_ .

-- Best Regards, Xiangnan He

hexiangnan avatar Feb 15 '18 11:02 hexiangnan

FM同样面临稀疏数据初始化的问题,据我所知另一种主流的FM初始化方法是采用方差为根号1/k的随机分布,k为embedding size,而且由于采用了adaptive optimizer,FM不能保证在不同的初始化条件下收敛到相同的解

Atomu2014 avatar Feb 26 '18 03:02 Atomu2014

FM用standard SGD就可以优化到很好的解,不需要用adaptive optimizer.

2018-02-26 11:06 GMT+08:00 KevinKune [email protected]:

FM同样面临稀疏数据初始化的问题,据我所知另一种主流的FM初始化方法是采用方差为根号1/k的随机分布,k为embedding size,而且由于采用了adaptive optimizer,FM不能保证在不同的初始化条件下收敛到相同的解

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/hexiangnan/attentional_factorization_machine/issues/10#issuecomment-368377433, or mute the thread https://github.com/notifications/unsubscribe-auth/ABGxjqYffAbxKsT7nITdUlDGPWg6-4qWks5tYh-ngaJpZM4SGaO_ .

-- Best Regards, Xiangnan He

hexiangnan avatar Feb 26 '18 07:02 hexiangnan

SGD很慢,实验室环境中,数据量上亿之后很难做到上百轮的训练,用adaptive算法能显著加快收敛。 从比赛角度讲,比较出名的FFM就是用的adagrad算法,这可能也是libFFM的优秀训练速度的一个原因。 从工业界角度讲,end-to-end的策略也会比预训练更有优势,个人认为合理的初始化策略是值得探讨的一个问题。

Atomu2014 avatar Mar 09 '18 08:03 Atomu2014

感谢您耐心的回答

Atomu2014 avatar Mar 09 '18 08:03 Atomu2014