BERT用于推荐系统的finetune记录

这篇博客记录了使用BERT进行推荐系统finetune的过程,包括环境配置、模型思路、finetune方法以及遇到的问题。作者通过亚马逊评论数据集,提取用户和商品评论的语义信息,利用BERT进行句向量生成,并将其与评分预测结合,实现模型训练。在实践过程中,作者发现直接调用预训练BERT无法实现finetune,真正的finetune是将BERT整合到自定义模型中,使权重随下游任务一同更新。此外,还遇到了NumPy与GPU配合的问题,需注意数据处理和模型实例化的时机。
摘要由CSDN通过智能技术生成

环境

transformers==2.7.0
pytorch ==1.5.1

思想

先说一下这个推荐模型的大概思路:

  1. 收集用户和商品对应的评论,数据集用的是亚马逊的
  2. 提取用户id、商品id、对应的评论和评分,其中id转化为从0开始的整数
  3. 将数据集按一定比例划分为训练集、验证集和测试集
  4. 挖掘用户-商品之间评论的语义信息(通过句向量的方式)
  5. 根据句向量预测新的评论可能的评分和真实的评分来进行误差计算

如何finetune

一开始始终不明白BERT-finetune的含义 ,我觉得肯定有很多人一开始接触的时候都是一脸懵逼的。所以当时我就直接调用了一些输入句子就可以输出BERT句向量的接口(比如hanxiao大神的),之后再把这些句向量输入到我的推荐模型中。但是这样的话相当于BERT只调用了一次,并没有起到finetune(微调)的作用,因为BERT神经网络中的权重没有改变,我所用的也只是初始神经网络权重输出的固定句向量而已。

其实具体finetune的地方是在思想中的第四点,那么至于这个finetune到底是什么意思呢,我个人的理解就是将BERT这个网络加入你自己的下游网络中

class Recommender(BertPreTrainedModel):
    def __init__(self, hyper_params):
        super(Recommender, self).__init__
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值