当前位置: 首页 > news >正文

使用Bert预训练模型处理序列推荐任务

最近的工作有涉及该任务,整理一下思路以及代码细节。

流程

总体来说思路就是首先用预训练的bert模型,在训练集的序列上进行CLS任务。对序列内容(这里默认是token id的sequence)以0.3左右的概率进行随机mask,然后将相应sequence的attention mask(原来决定padding index)和label(也就是mask的ground truth)输入到bert model里面。

当然其中vocab.txt并不存在的token是需要add进去的,具体方法不再详述,网上例子很多,注意word embedding也需要初始化就行。

模型定义:
self.model = AutoModelForMaskedLM.from_pretrained('./bert')
模型的输入:
result = self.bert_model(tail_mask, attention_mask, labels)
得到模型训练的结果之后,要做一个选择:

(1)transformer的bert model可以输出要预测时间步的hidden state,可以选择取出对应的hidden state,其中需要在数据处理的时候记录下每个sequence的tail position,也就是要预测位置的idx。另外我认为既然要进行序列推荐,那么最后一个tail position的token表征一定是最重要的,所以需要对tail position的idx专门给个写死的mask,效果会好一些。然后与sequence中item的全集进行相似度的计算,再去算交叉熵loss。

bert_hidden = result.hidden_states[-1]
bert_seq_hidden = torch.zeros((self.args.batch_size, 312)).to(self.device)
for i in range(self.args.batch_size):bert_seq_hidden[i,:] = bert_hidden[i, tail_pos[i], :]
logits = torch.matmul(bert_seq_hidden, test_item_emb.transpose(0, 1))
main_loss = self.criterion(logits, targets)

(2)同时也可以result.loss直接数据mask prediction的loss,我理解这个loss面对的任务是我要求sequence中的各个token表征都要尽可能准确,都要考虑,(1)可能更加注重最后一个位置的标准的准确性。

然后在evaluate阶段,需要注意输入到模型的不再是tail_mask,而是仅仅mask掉tail token id的sequence,因为我们需要尽可能准确的序列信息,只需要保证要预测的存在mask就够了。

由于是推荐任务,而且bert得到的hidden state表征过于隐式,所以需要一定的个性化引导它进行训练。经过个人的实验也确实如此,而且结果相差很多。

以上就是我个人的总结经验,欢迎大家指点。

相关文章:

使用Bert预训练模型处理序列推荐任务

最近的工作有涉及该任务,整理一下思路以及代码细节。 流程 总体来说思路就是首先用预训练的bert模型,在训练集的序列上进行CLS任务。对序列内容(这里默认是token id的sequence)以0.3左右的概率进行随机mask,然后将相…...

将word每页页眉单独设置

在进行论文排版的时候,总是会出现页眉的页码设置问题,比如出现奇数或偶数页码一致,尝试将前面页码改掉,后面再修改前面也进行了变动,将每页页眉单独设置: (1)在第一页的最后一行输入…...

rust怎么生成随机数?

关注我,学习Rust不迷路!! 在 Rust 中,有几种不同的方法可以实现随机数生成。以下是其中几种常见的方法,以及它们的优缺点: 1. 使用 rand crate: 优点: rand crate 是 Rust 中最常…...

python-Excel数据模型文档转为MySQL数据库建表语句(需要连接数据库)-工作小记

将指定Excel文档转为create table 建表语句。该脚本适用于单一且简单的建表语句 呈现效果 代码 # -*- coding:utf-8 -*- # Time : 2023/8/2 17:50 # Author: 水兵没月 # File : excel_2_mysql建表语句.py import reimport pandas as pd import mysql.connectordb 库名mydb m…...

406 · 和大于S的最小子数组

链接:LintCode 炼码 - ChatGPT!更高效的学习体验! 题解:同向双指针 九章算法 - 帮助更多程序员找到好工作,硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧 class Solution { public:/*** param nums: an array …...

xray的 webhook如何把它Hook住?^(* ̄(oo) ̄)^

xray webhook xray可以通过webhook传递扫描信息,官方文档也是一笔带过,可能大多数人都不清楚,或者仅仅知道有这么个东西,但是不知道怎么使用,webhook是xray被动监听模式下的一种输出结构和方式。相比输出Json和txt格式…...

浅析RabbitMQ死信队列

原文首发于公众号【CSJerry】 在现代分布式系统中,消息队列扮演着至关重要的角色。它们可以实现应用程序之间的异步通信,并确保数据的可靠传输和处理。而在这个领域中,RabbitMQ作为一种强大而受欢迎的消息队列解决方案,具备了高…...

ELK 企业级日志分析系统(ElasticSearch、Logstash 和 Kiabana 详解)

目录 一.ELK简介 1.1ELK的概述 1.2ELK的组成 1.2.1 ElasticSearch 1.2.2 Logstash 1.2.3 Kibana 1.2.4 小总结 1.3可以添加其他组件 1.4filebeat 结合 logstash 带来好处 1.5日志处理的步骤 二.Elasticsearch 2.1Elasticsearch概述 2.2Elasticsearch核心概念 2.2.1接近…...

数学建模—多元线性回归分析

第一部分:回归分析的介绍 定义:回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的人数就是,通过研究自变量X和因变量Y的相关关系,尝试去解释…...

win10 64位 vs2017 qt5.12.6 pcl1.9.1 vtk8.1.1配置安装步骤

由于我电脑中有 QT5.12.6 VS2017,就不介绍怎么安装了,只介绍cmake,pcl及vtk的配置步骤 为了便于后续QT的调用,以下所有安装路径中均不能出现中文及空格等 PCL自带VTK是不完整的,所以需要下载VTK源码进行重新编译使其…...

【项目 计网1】4.1 网络结构模式 4.2MAC地址、IP地址、端口

文章目录 第四章 Linux网络编程4.1 网络结构模式C/S结构(client-server)B/S结构(Browser/Server,浏览器/服务器模式) 4.2 4.3MAC地址、IP地址、端口(1)(2)MAC地址IP地址(…...

uni-app:分页实现多选功能

效果 代码解析 一、标签-列表 <view class"item_all" v-for"(item, index) in info" :key"index"><view class"position parameter-info text-over" :class"{checked_parameter: item.checked}" :data-id"i…...

问道管理:沪指窄幅震荡跌0.18%,有色、汽车等板块走低

3日早盘&#xff0c;沪指盘中窄幅震动下探&#xff0c;创业板逆市上扬&#xff1b;两市半日成交不足5000亿元&#xff0c;北向资金净卖出超15亿元。 到午间收盘&#xff0c;沪指跌0.18%报3255.88点&#xff0c;深成指跌0.23%&#xff0c;创业板指涨0.2%&#xff1b;两市算计成交…...

Kotlin 协程与 Flow

简介 Kotlin的Flow 是 Kotlin 在异步编程方面的一个重要组件&#xff0c;它提供了一种声明式的、可组合的、基于协程的异步编程模型。Flow 的设计灵感来自于 Reactive Streams、RxJava、Flux 和其他异步编程库&#xff0c;但它与 Kotlin 协程无缝集成&#xff0c;并提供了一种更…...

设备管理系统与物联网的融合:实现智能化设备监控和维护

在数字化时代&#xff0c;设备管理系统和物联网技术的融合为工业企业带来了巨大的变革和创新。本文将探讨设备管理系统与物联网的融合&#xff0c;重点介绍设备健康管理平台在实现智能化设备监控和维护方面的关键作用和优势。 一、设备管理系统与物联网的融合 随着物联网技术的…...

三、从官方源码精简出第1个FreeRTOS

1、官方源码下载 (1)进入FreeRTOS官网&#xff1a;FreeRTOS官网 (2)点击下载FreeRTOS。 (3)选择待示例的项目进行下载。 2、删减目录 (1)下载后解压的FreeRTOS文件如下图所示。 (2)删除下图中红框勾选的文件。 (3)删除"FreeRTOSv202212.01\FreeRTOS\Demo"目录下用…...

__call__函数的用法

__call__的用法 在 Python 中&#xff0c;类可以通过定义特殊方法 call 来使其实例对象可调用&#xff0c;就像调用普通的函数一样。当你在实例对象后面加上括号并传递参数时&#xff0c;Python 会自动调用这个对象的 call 方法。这使得你可以将类的实例对象当作函数来使用。 下…...

golang定时任务库cron实践

简介 cron一个用于管理定时任务的库&#xff0c;用 Go 实现 Linux 中crontab这个命令的效果。之前我们也介绍过一个类似的 Go 库——gron。gron代码小巧&#xff0c;用于学习是比较好的。但是它功能相对简单些&#xff0c;并且已经不维护了。如果有定时任务需求&#xff0c;还…...

Julia 流程控制

流程控制语句通过程序设定一个或多个条件语句来实现。在条件为 true 时执行指定程序代码&#xff0c;在条件为 false 时执行其他指定代码。 Julia 提供了大量的流程控制语句&#xff1a; 复合表达式&#xff1a;begin 和 ;。 条件表达式&#xff1a;if-elseif-else 和 ?: (三…...

问题解决方案

前端开发 1、npm安装的时候老是卡住 reify:rxjs: timing reifyNode:node_modules/vue/cli/node_modules 查看当前使用的那个镜像 nrm lsnpm ---------- https://registry.npmjs.org/yarn --------- https://registry.yarnpkg.com/cnpm --------- https://r.cnpmjs.org/taobao …...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...