这是”一周一更新“专栏的第四篇文章。
前言
本篇文章的目标是从理论和实践的角度来介绍FM算法,及其相应的变形算法。主要分为理论和代码分析两个部分来介绍。
理论部分会先介绍,常用的优化算法,包括离线优化算法L-BFGS和用于解决L1正则的OWL-QN优化算法;再者会介绍在线优化算法,主要是浅析FTRL优化算法,并对在线优化算法背景做一个介绍;接着会具体介绍FM(Factorization Machines)算法及其变形,具体包括Field-aware FM、Attention FM、Field-weighted FM、Neural FM、Deep FM、DifaCTO算法。
代码分析部分会对LIBFFM和分布式的FM算法库DIFACTO进行介绍。下一篇还会介绍基于PS(Parameter Server)实现的分布式FM算法。
目录
- 理论介绍
- L-BFGS和OWL-QN优化算法
- Online-learning优化算法浅析
- FM算法及其变形优化
- 代码分析
- LIBFFM代码分析
- DIFACTO代码分析
理论介绍
L-BFGS与OWL-QN优化算法
L-BFGS优化算法
1)要了解L-BFGS优化算法,让我们先来回顾一下牛顿优化算法
带有L2正则化的LR表示为:

把

则可推导出牛顿法的计算公式为:

其中,

从上面的推导公式可以看出牛顿法的核心是计算海森矩阵的逆运算,但是在实际场景中,其计算量和存储量都是巨大的,后续的各种二阶优化算法都是从减少计算量和存储量的目标设计的。
2)而L-BFGS算法则是从同时减少计算量和存储量的角度来设计的近似牛顿法,细品,你会发现该算法设计的天才之处。

L-BFGS优化算法通过两个迭代的计算,通过前
L-BFGS优化算法易于做并行化,所以实现大规模的L-BFGS理论上没有任何难度。
OWL-QN优化算法
因为L1正则不可导的问题,OWL-QN算法就是基于L-BFGS算法且可求解L1正则的优化算法。OWL-QN相较于标准的L-BFGS算法主要改进点是提出了伪梯度的概念;即当
左右微分的计算公式如下: