FNN学习笔记
一. 前言
FNN(Factorization Neural Network)是一种组合了FM(Factorization Machine)和多层感知机(Multilayer Perceptron,MLP)的混合模型。它通过利用 FM 的特性对高维稀疏数据进行特征组合,再通过 MLP 处理组合后的特征,从而得到更优的预测结果。
本文将对 FNN 进行详细介绍,包括模型结构、损失函数、训练方法等。
二. 模型结构
FNN 的模型结构如下图所示:
graph LR
A[Input] -- Embedding --> B[FM layer] -- Concatenate --> C[MLP layer] -- Output --> D[Output]
其中,模型由三部分组成:
- Input layer:输入层,接收原始特征向量。
- FM layer:FM 层,将输入向量进行特征交叉操作,并输出特征交叉向量。
- MLP layer:MLP 层,接收 FM 层输出的特征交叉向量,并输出最终预测结果。
三. 损失函数
FNN 的损失函数采用的是交叉熵损失函数,具体如下式所示:
L o s s = − 1 N ∑ i = 1 N ( y i l o g ( y i ^ ) + ( 1 − y i ) l o g ( 1 − y i ^ ) ) Loss=-\frac{1}{N}\sum_{i=1}^{N}(y_i log(\hat{y_i})+(1-y_i)log(1-\hat{y_i})) Loss=−N1i=1∑N(yilog(yi^)+(1−yi)log(1−yi^))
其中, y i y_i yi 为样本 i i i 的真实标签值, y i ^ \hat{y_i} yi^ 为样本 i i i 的预测标签值。
四. 训练方法
FNN 的训练方法采用的是 mini-batch SGD(Stochastic Gradient Descent),具体流程如下:
- 在每个 epoch 开始时,将训练数据随机分为若干个 batch。
- 对于每个 batch,依次进行以下操作:
- 将 batch 中的所有样本输入模型,得到预测结果。
- 计算该 batch 的交叉熵损失函数,并累加至总损失函数。
- 计算损失函数关于参数的梯度,并更新参数。
- 在所有 batch 都处理完后,计算该 epoch 的平均损失函数,并将其存入日志文件中。
- 当达到最大 epoch 数或者满足早停条件时,结束训练。
五. 总结
FNN 是一种结合了 FM 和 MLP 的混合模型。它通过利用 FM 的特性对高维稀疏数据进行特征组合,再通过 MLP 处理组合后的特征,从而得到更优的预测结果。在实际应用中,FNN 被广泛应用于推荐系统、广告投放等领域。
以上就是 FNN 的学习笔记,希望可以对大家有所帮助!