环境
transformers==2.7.0
pytorch ==1.5.1
思想
先说一下这个推荐模型的大概思路:
- 收集用户和商品对应的评论,数据集用的是亚马逊的
- 提取用户id、商品id、对应的评论和评分,其中id转化为从0开始的整数
- 将数据集按一定比例划分为训练集、验证集和测试集
- 挖掘用户-商品之间评论的语义信息(通过句向量的方式)
- 根据句向量预测新的评论可能的评分和真实的评分来进行误差计算
如何finetune
一开始始终不明白BERT-finetune的含义 ,我觉得肯定有很多人一开始接触的时候都是一脸懵逼的。所以当时我就直接调用了一些输入句子就可以输出BERT句向量的接口(比如hanxiao大神的),之后再把这些句向量输入到我的推荐模型中。但是这样的话相当于BERT只调用了一次,并没有起到finetune(微调)的作用,因为BERT神经网络中的权重没有改变,我所用的也只是初始神经网络权重输出的固定句向量而已。
其实具体finetune的地方是在思想中的第四点,那么至于这个finetune到底是什么意思呢,我个人的理解就是将BERT这个网络加入你自己的下游网络中
class Recommender(BertPreTrainedModel):
def __init__(self, hyper_params):
super(Recommender, self).__init__