FM算法

Base, Machine Learning

为啥要聊FM呢,因为它设计很优雅~而且工程实现上有简化技巧,实现起来也很优雅,之后在FNN/DeepFM/xDeepFM都扮演者重要的角色。 Logistic Regression(LR)模型只能学习特征的线性表达,线性部分: $$\hat{y} = w_0 + \sum_{i=1}^{n}w_i x_i$$ 为了能让他具有非线性能力,工程师会根据自己对业务的理解手动进行特征组合,比如$x_{city} \cdot x_{age}$这样模型就能学习年龄和城市的组合情况,比如(城市=北京,年龄=12),在学习过程中就能学习“北京地区12岁的小孩”会怎么怎么着,这样手动的特征组合还是太消耗精力了,一个可以想到的思路是: $$\sum_{i=1}^{n}\sum_{x=1+1}^{n}w_{ij}x_i x_j$$ 不管3721就直接把每个维度的特征都给它组合起来,这样也不是不行,但是这样有一个致命的缺陷——稀疏,大概是制约模型的最大因素吧。我们有很多categorical feature,这些特征一般会经过onehot处理,比如城市有600多个,那么仅仅城市一个特征就要用600维的向量来表达,其中只有一个1,其他599个都是0,着599维根其他特征组合之后又是0,所以引入特征组合之后,使原本稀疏的特征更加稀疏~大概比30岁程序员的头发还稀疏~ FM(Factorization Machines)就是来解决这个问题的,FM不是用一个常数$w_{ij}$来表达$x_i$和$x_j$的权重,它用一群常数来表达~每一维的特征$x_i$都分配一个权重向量$\textbf{v}_i$,这样两维特征要组合的时候用他们各自的权重向量的内积作为他们俩的权重,所以$x_i$和$x_j$组合后是$\left \langle \textbf{v}_i, \textbf{v}_j \right \rangle x_i x_j$ 尖括号是算内积 $$\left \langle […]

Policy Gradient

Base, Reinforcement Learning

Q Learning 先学到一个value function,之后基于value function可以得到最优的policy。那Policy Gradient名字已经很直白了,直接对Policy进行建模,就很直接。 我们来看下原始论文是怎么推导的。