bert中为什么要这么msdk(80% mask, 10% 随机替换,10% 保持原词)

news/2024/7/19 9:08:43 标签: bert, transformer, 人工智能, 深度学习, python

bert在训练阶段不是将15%的词汇MASK掉,从而采用自监督的方式训练模型,那我直接将这15%mask掉不就好了吗,为什么又要进行80% mask,10% 随机替换,10% 保持原词呢?起初我看到的时候也比较迷惑,下面是我的理解。

一、训练阶段与测试、微调阶段的不对等关系

在训练阶段mask掉词汇,输入是:“我”“喜欢”“吃”“鱼”“但是”“mask”“的”“刺”“很多”,对吧,这样通过自己监督训练,不断调整模型的权重,提高模型的性能。

但是在测试阶段,我们是怎么测试的,依旧是输入带mask的句子,通过预测mask的单词,来评判准确度吗,这不有点多此一举吗。。。测试阶段应该是直接输入完整的句子,分词后得到token,然后在得到token对应的词向量,然后在过一个多分类器(类别个数为词袋的大小),然后得到Y_hat_test,之后与Y_test求差值,评判模型。整个过程不涉及mask。

微调阶段也一样,我们也是输入一句话,然后得到对应的词向量,之后就拿着词向量去做别的事情了,输入中也没有mask。

这就会形成一种不对等关系,训练阶段和测试、微调阶段不对等,我们又没法完全消除这种不对等(①训练时不做mask:不行,②测试、微调也做上mask:也不行),我们就通过这种80% mask,10% 随机替换,10% 保持原词的方式减少不对等关系。

二、采用这种方式可以使bert更注重语义理解

此外呢,如果我们在训练时,不是用这种方式,而是全部mask掉的话,模型就会把虽有的注意力集中到“mask”这个词汇上了,模型就能知道不出现“mask”的地方我不用管,啥时候出现“mask”我在管,这对模型提取语义关系是不利的。

使用(80% mask,10% 随机替换,10% 保持原词)的方式之后呢,模型不只是需要在“mask”位置做工作,还要时刻预防着随机替换的情况呀,也就是检查这个句子对不对,这就大大提高了模型提取语义效果的能力。

在这里分享一位up主的讲解视频,描述的更加生动:04 BERT 之为什么要做语言掩码模型(MLM)?_哔哩哔哩_bilibili


http://www.niftyadmin.cn/n/142817.html

相关文章

【嵌入式Linux学习笔记】系统概念及底层构建

因为一般的MCU的性能有限,能够应用的场景也比较局限,所以需要学习功能更强大的ARM芯片,基于linux系统进行功能开发,得到更加强大的嵌入式系统。我用于学习的硬件是正点原子推出的STM32MP157开发板,感兴趣的小伙伴也可以…

使用spring boot集成grpc

目录 创建maven父工程spring-boot-grpc 创建模块spring-boot-grpc-lib 创建模块local-server(gRPC服务端) 创建模块local-client(gRPC客户端) 创建maven父工程spring-boot-grpc 创建springboot项目,勾选springboo…

我为什么要写博客,写博客的意义是什么

第一次接触 看到这么个主题,我不由的想起了:那些年在大学里做“吊车尾”的时光,与那我发自内心的尊敬重的高教授了!时隔多年,还是没忘记毕业时他对我们说的最后一句话:“熬吧,生活,…

前缀和及部分题目

前缀和 前缀和指数组的前 N项之和,是个比较基础的算法 力扣面试题 17.05. 字母与数字 给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。 返回该子数组,若存在多个最长子数组,返回左端…

lin总线 xcp

lin总线 单线,速率20kbps,12v,线与逻辑,单主多从,8byte payload。 针对场景,主机获取从机状态,主机设置从机状态,多从机事件上报,从机之间通信。这些都要主机从中干预协调…

MySQL 数据同步到 Redis 缓存方案

为了减轻数据库的压力,我们一般会通过加入缓存的方式来解决,本着 先查询缓存在查询数据库的原则,那么数据库中的数据如何写入缓存则成为首要问题。本文就以redis缓存为例带着大家一起了解一下数据同步的方案。 MySQL与Redis缓存的同步的两种…

malloc free calloc realloc alloca

malloc void *malloc ( size_t size );malloc申请的是一块连续的内存。有时会申请不到内存,返回NULL。 size是请求分配的内存字节数,成功则返回一个指向内存的指针,否则返回NULL。 malloc实际分配的内存空间可能会比你请求的多一点&#x…

spring cloud alibaba集成sentinel

1、安装依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>2、配置文件 spring:application:name: nacos80833cloud:sentinel:transport:port: 8719d…