码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 带你熟悉NLP预训练模型:BERT


    合集 - AI(75)
    1.CutMix&Mixup详解与代码实战2023-04-272.绘画手残党的福音:涂鸦线稿秒变绝美图像2023-05-053.探讨AIGC的崛起历程,浅析其背后技术发展2023-05-104.创新 = 颠覆?AI创新如何做大蛋糕2023-07-195.实践分析丨AscendCL应用编译&运行案例2023-07-266.Inpaint Anything:一键进行多种图像修补2023-07-277.RT-DETR:可以满足实时性要求的DETR模型2023-07-318.华为云盘古大模型辅助药物设计,西交大的新型抗生素研发之路2023-08-019.解决大模型“开发难”,昇思MindSpore自动并行技术应用实践2023-08-0310.一文详解TextBrewer2023-08-0811.基于Pair-wise和CrossEncoder训练单塔模型2023-08-0912.基于卷积神经网络的MAE自监督方法2023-08-1113.晋级名单公布!“域见杯”复赛今日火热开启2023-08-1614.CutLER:一种用于无监督目标检测和实例分割的方法2023-08-1715.带你读论文丨S&P21 Survivalism: Living-Off-The-Land 经典离地攻击2023-08-1816.使用 UCS(On-Premises) 管理您的GPU资源池,释放AI大模型算力潜能2023-08-2117.带你读论文丨Fuzzing漏洞挖掘详细总结 GreyOne2023-08-2218.用案例带你认识决策树,解锁洞察力2023-08-2219.带你读论文丨S&P2019 HOLMES Real-time APT Detection2023-08-2320.中国图数据库,领导者!2023-08-2421. 【干货】华为云图数据库GES技术演进2023-08-2422.带你上手基于Pytorch和Transformers的中文NLP训练框架2023-08-2823.开放同飞,华为云发布盘古大模型全域协同生态2023-08-3124.Ascend C保姆级教程:我的第一份Ascend C代码2023-08-3125.纯干货!一文get昇腾Ascend C编程入门全部知识点2023-09-0126.3天上手Ascend C编程丨带你认识Ascend C基本概念及常用接口2023-09-0527.PanGu-Coder2:从排序中学习,激发大模型潜力2023-09-0628.昇腾实践丨ATC模型转换动态shape问题案例2023-09-0829.3天上手Ascend C编程丨通过Ascend C编程范式实现一个算子实例2023-09-1130.华为云盘古大模型加码生物医药,为行业插上“数字翅膀”2023-09-1431.如何用华为云ModelArts平台玩转Llama22023-09-1532.教你用API插件开发一个AI快速处理图片小助手2023-09-1933.大模型时代,如何快速开发AI应用2023-09-2034.超详细API插件使用教程,教你开发AI垃圾分类机器人2023-09-2035.三步实现BERT模型迁移部署到昇腾2023-09-2136.手敲,Ascend算子开发入门笔记分享2023-10-0937.全域Serverless+AI,华为云加速大模型应用开发2023-10-0938.教你如何基于MindSpore进行ChatGLM微调2023-10-1639.从基础到实践,回顾Elasticsearch 向量检索发展史2023-10-2340.昇腾CANN 7.0 黑科技:大模型训练性能优化之道2023-10-2341.知识图谱与大模型相结合的3种方法,1+1>22023-11-0142.IoT与鸿蒙、低代码、生成式AI,引爆技术浪潮——华为云开发者日南京站成功举办2023-11-0143.带你认识一下多模态对比语言图像预训练CLIP2023-11-0244.昇腾迁移丨4个TensorFlow模型训练案例解读2023-11-0645.MoE:LLM终身学习的可能性2023-11-0746.理论+实践详解最热的LLM应用框架LangChain2023-11-0747.昇腾CANN DVPP硬件加速训练数据预处理,友好解决Host CPU预处理瓶2023-11-0948.昇腾CANN 7.0 黑科技:大模型推理部署技术解密2023-11-1049.从HumanEval到CoderEval: 你的代码生成模型真的work吗?2023-11-1350.告别繁琐,ModelArts一键解决车牌号识别难题2023-11-1651.四载磨砺,一群青年“识瘤者”以AI助力医疗创新2023-11-1752.一种全新的日志异常检测评估框架:LightAD2023-11-2153.学生开发者勇担青年使命,用AI守护少数人的“视界”2023-11-2154.教你如何使用PyTorch解决多分类问题2023-11-2255.三大基础方案和AI出海计划重磅发布!加速盘古大模型生态发展2023-11-2356.带你了解大语言模型的前世今生2023-11-2757.基于AI的架构优化:创新数据集构造法提升Feature envy坏味道检测与重构准确率2023-12-0158.一种全新的日志异常检测评估框架:LightAD2023-12-0459.从HumanEval到CoderEval: 你的代码生成模型真的work吗?2023-12-0460.揭秘华为研发代码大模型是如何实现的2023-12-0561.大语言模型底层架构丨带你认识Transformer2023-12-0662.深入解析LLaMA如何改进Transformer的底层结构2023-12-0763.语言模型:GPT与HuggingFace的应用2023-12-0864.一文掌握Ascend C孪生调试2023-12-1265.大模型那么火,教你一键Modelarts玩转开源LlaMA(羊驼)大模型2023-12-1566.大语言模型训练数据常见的4种处理方法2023-12-1967.听6位专家畅谈AI大模型落地实践:场景和人才是关键01-1168.从工程化角度,详解鹏程·脑海大模型训练过程01-1269.如何使用MindStudio轻松搞定大模型全流程开发01-19
    70.带你熟悉NLP预训练模型:BERT01-22
    71.三个方面浅析数据对大语言模型的影响01-2572.4个大语言模型训练中的典型开源数据集02-0173.动手实践丨轻量级目标检测与分割算法开发和部署(RK3568)02-2674.手把手带你快速上手香橙派AIpro03-0175.想做大模型开发前,先来了解一下MoE03-04
    收起

    本文分享自华为云社区《【昇思技术公开课笔记-大模型】Bert理论知识》,作者: JeffDing。

    NLP中的预训练模型

    语言模型演变经历的几个阶段
    image.png

    1. word2vec/Glove将离散的文本数据转换为固定长度的静态词向量,后根据下游任务训练不同的语言模型
    2. ELMo预训练模型将文本数据结合上下文信息,转换为动态词向量,后根据下游任务训练不同的语言模型
    3. BERT同样将文本数据转换为动态词向量,能够更好地捕捉句子级别的信息与语境信息,后续只需对BERT参数进行微调,仅重新训练最后的输出层即可适配下游任务
    4. GPT等预训练语言模型主要用于文本生成类任务,需要通过prompt方法来应用于下游任务,指导模型生成特定的输出。

    BERT模型本质上是结合了ELMo模型与GPT模型的优势。

    • 相比于ELMo,BERT仅需改动最后的输出层,而非模型架构,便可以在下游任务中达到很好的效果;
    • 相比于GPT,BERT在处理词元表示时考虑到了双向上下文的信息;

    Bert介绍

    image.png

    2018年Google发布了BERT(来自Transformer的双向自编码器)预训练模型,旨在通过联合左侧和右侧的上下文,从未标记文本中预训练出一个深度双向表示模型。因此,BERT可以通过增加一个额外的输出层来进行微调,就可以达到为广泛的任务创建State-of-the-arts 模型的效果,比如QA、语言推理任务。

    当时将预训练模应用于下游任务的策略通常有两种:基于特征的(feature-based)和基于微调(fine-tuning);前者比如ELMo,后者比如OpenAI GPT;

    这两种策略在预训练期间具有相同的目标函数,在预训练期间,它们使用单向语言模型来学习一般的语言表示。但当前对预训练方法的限制(尤其是对基于微调的方法)是标准语言模型是单向(unidirectional)的,所以限制了在预训练阶段可选的模型结构体系。

    比如GPT是从左到右的,每个token只能关注到前一个token的self-attention layers。这种局限对于句子级任务(sentence-level tasks)来说还不是很打紧,但是对于token-level tasks(比如QA)就很致命,所以结合两个方向的上下文信息至关重要。

    Bert Input

    第一步:Tokenization, 输入的句子经过分词后,首尾添加[CLS]与[SEP]特殊字符,后转换为数字id
    image.png

    第二步:Embedding, 输入到BERT模型的信息由三部分内容组成:

    表示内容的token ids

    表示位置的position ids

    用于区分不同句子的token type ids

    image.png

    将三种信息分别输入Embedding层

    image.png

    如果出现输入是句子对的情况呢?

    image.png

    BERT Architecture

    BERT由Encoder Layer堆叠而成,Encoder Layer的组成与Transformer的Encoder Layer一致:

    自注意力层 + 前馈神经网络,中间通过residual connection和LayerNorm连接

    image.png

    BERT(Bidirectional Encoder Representation from Transformers)是由Transformer的Encoder层堆叠而成,BERT的模型大小有如下两种:

    BERT BASE:与Transformer参数量齐平,用于比较模型效果(110M parameters)

    BERT LARGE:在BERT BASE基础上扩大参数量,达到了当时各任务最好的结果(340M parameters)

    BERT Output

    BERT会针对每一个位置输出大小为hidden size的向量,在下游任务中,会根据任务内容的不同,选取不同的向量放入输出层

    image.png

    pooler output

    例如,在诈骗邮件分类任务中,我们会将表示句子级别信息的[CLS] token所对应的向量,经过Bert Pooler放入classfier中,得到对spam/not spam分类的预测。

    image.png

    我们一般称[CLS]经过线性层+激活函数tanh的输出为pooler output,用于句子级别的分类/回归任务

    sequence output

    例如,在词性标注任务(POS Tagging)中,我们需要获得每一个token所对应的类别,因此需要将[CLS]和[SEP]中有实际意义的token输出,分别输入对应的classifier中。

    image.png

    我们一般称BERT输出的每个位置对应的vector为sequence output

    BERT的不同下游任务

    image.png

    image.png

    BERT预训练

    BERT预训练任务有两种:Masked Language Modelling(MLM) 和 Next Sentence Prediction (NSP)。

    MLM:随机遮盖输入句子中的一些词语,并预测被遮盖的词语是什么(完形填空)

    NSP:预测两个句子是不是上下文的关系

    image.png

    Masked Language Model(MLM)

    Masked Language Modelling(MLM) 捕捉词语级别的信息

    在输入中随机遮盖15%的token(即将token替换为[MASK])

    将[MASK]位置对应的BERT输出放入输出层中,预测被遮盖的token

    image.png

    在将[MASK]位置所对应的BERT输出放入输出层后,本质上是在进行一个多分类任务

    image.png
    image.png

    为了使得预训练任务和推理任务尽可能接近,BERT在随机遮盖的15%的tokens中又进行了进一步的处理:

    80%的概率替换为[MASK]

    10%的概率替换为文本中的随机词

    10%的概率不进行替换,保持原有的词元

    image.png

    Next Sentence Prediction(NSP)

    Next Sentence Prediction (NSP) 捕捉句子级别信息,简单来说是一个针对句子对的分类问题,判断一组句子中,句子B是否为句子A的下一句(IsNext or NotNext)

    image.png

    image.png

    Bert微调

    在下游任务中,我们使用少量的标注数据(labelled data)对预训练Transformer编码器的所有参数进行微调,额外的输出层将从头开始训练。

    image.png

     

    点击关注,第一时间了解华为云新鲜技术~

     

  • 相关阅读:
    CMake中if的使用
    抖音本地生活服务商申请怎么做?无保证金的申请方法来了
    进程和线程
    专利过期如何处理?这几个补救方案要知晓!
    Google Game Service 接入指南
    OpenCV(三十二):轮廓检测
    金融行业软文怎么写,如何让金融软文在发布上有好效果?
    深拷贝和浅拷贝
    Oracle-数据的基本操作
    Linux环境sed工具的使用及工作原理
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/17979972
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号