码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Bert学习笔记(简单入门版)


    目 录

    一、基础架构

    二、输入部分

    三、预训练:MLM+NSP

    3.1 MLM:掩码语言模型

    3.1.1 mask模型缺点

    3.1.2 mask的概率问题

    3.1.3 mask代码实践

    3.2 NSP

    四、如何微调Bert

    五、如何提升BERT下游任务表现

    5.1 一般做法

    5.2 如何在相同领域数据中进行further pre-training

    5.3 参数设置Trick

    六、如何在脱敏数据中使用Bert等预训练模型


    一、基础架构

    基础架构为Transformer的Encoder:
    具体解释可参考简单易懂的Transformer学习笔记_十七季的博客-CSDN博客

    Base bert -12层Encoder堆叠。
     

    其中位置编码部分与Trm的positional encoding不同,具体在下面进行解释。

    二、输入部分

    Input=token \space emb +segment \space emb+position \space emb

    CLS向量不能代表整个句子的语义信息

    区分句子:上图中第一个句子E_A=0, 第二个句子E_B=1

    位置信息:TRM正余弦;Bert随机初始化,模型自学习

    三、预训练:MLM+NSP

    3.1 MLM:掩码语言模型

    没有标签,无监督。

    AR:自回归模型,只能考虑单侧信息;GPT
    AE:自编码模型,从损坏的输入数据中预测重建原始数据,可以使用上下文信息;Bert

    Eg:

    3.1.1 mask模型缺点
     

    认为两个mask之间是独立的(但实际未必独立)

    3.1.2 mask的概率问题
     

    3.1.3 mask代码实践

    3.2 NSP

    NSP样本如下:

    1. 从训练语料库中取出两个连续的段落作为正样本

    2. 从不同的文档中随机创建一对段落作为负样本

    缺点:

    主题预测(是否属于同一个文档)和连贯性预测合并为一个单项任务

    四、如何微调Bert

    对输出Softmax

    五、如何提升BERT下游任务表现

    5.1 一般做法

    1.获取谷歌中文Bert

    2.基于任务数据进行微调

    以微博文本情感分析为例:

    1. 在大量通用语料上训练一个LM(Pretrain);——中文谷歌BERT

    2. 在相同领域上继续训练LM(Domain transfer);——在大量微博文本上继续训练这个BERT

    3. 在任务相关的小数据上继续训训练LM(Task transfer); ——在微博情感文本上(有的文本不属于情感分析的范畴)

    4. 在任务相关数据上做具体任务(Fine-tune)。-

    先Domain transfer再进行Task transfer最后Fine-tune性能是最好的

    5.2 如何在相同领域数据中进行further pre-training

    1. 动态mask: 每次epoch去训练的时候mask,而不是一直使用同一个。

    2. n-gram mask: 比如ERNIE和SpanBerti都是类似于做了实体词的mask

    5.3 参数设置Trick

    Batch size:16,32——影响不太大
    earning rate(Adam):5e^{-5},3e^{-5},2e^{-5}——尽可能小一点避免灾难性遗忘
    Number of epochs:3,4
    Weighted decay修改后的adam,使用warmup, 搭配线性衰减

    数据增强/自蒸馏/外部知识的融入

    六、如何在脱敏数据中使用Bert等预训练模型

    对于脱敏语料使用BERT,一般可以分为两种:

    1. 直接从零开始基于语料训练一个新的BERT出来使用;

    2. 按照词频,把脱敏数字对照到中文或者其他语言【假如我们使用中文】,使用 中文BERT做初始化,然后基于新的中文语料训练BERT。

    参考资料
    BERT从零详细解读,看不懂来打我_哔哩哔哩_bilibili

  • 相关阅读:
    FreeRTOS入门教程(同步与互斥)
    MySQL数据库管理
    SMTP发送邮件时抱No appropriate protocol错误分析和解决方案
    新手入门深度学习 | 4-2:训练模型的三种方法
    OVN 流表基础 -- 基于 kubeOVN (一)
    cpu与指令集
    u-boot命令2
    操作系统启动过程
    关于使用template时的错误注意
    RFID技术与WMS仓储管理系统对接有什么优势
  • 原文地址:https://blog.csdn.net/qq_38236082/article/details/134487314
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号