首页 > 其他分享 >最强NLP模型BERT可视化学习

最强NLP模型BERT可视化学习

时间:2023-06-26 23:00:30浏览次数:47  
标签:NLP BERT 模型 模式 句子 单词 可视化 注意力

2023年06月26日是自然语言处理(Natural Language Processing, NLP)领域的转折点,一系列深度学习模型在智能问答及情感分类等NLP任务中均取得了最先进的成果。近期,谷歌提出了BERT模型,在各种任务上表现卓越,有人称其为“一个解决所有问题的模型”。

BERT模型的核心思想有两点,对推动NLP的发展有着重要的作用:(1)Transformer结构;(2)无监督的预训练。Transformer是一个只基于注意力(Attention)机制的序列模型,《Attention is all you need》一文中指出,它摒弃了固有的定式,没有采用RNN的结构。BERT模型同时需要预训练,从两个无监督任务中获取权重:语言建模(给定左右上下文,预测丢失的单词)以及下一个句子预测(预测一个句子是否跟在另一个句子后面)。

BERT是个“多头怪”
BERT与传统的注意力模型有所不同,它并非在RNN的隐藏状态上直接连接注意力机制。BERT拥有多层注意力结构(12层或24层,取决于模型),并且在每个层(12层或16层)中都包含有多个“头”。由于模型的权重不在层与层之间共享,一个BERT模型相当于拥有24×16=384种不同的注意力机制。

BERT可视化
BERT模型较为复杂,难以直接理解它学习的权重的含义。深度学习模型的可解释性通常不强,但我们可以通过一些可视化工具对其进行理解。Tensor2Tensor提供了出色的工具对注意力进行可视化,我结合PyTorch对BERT进行了可视化。点击查看详情

 

该工具将注意力可视化为连接被更新位置(左)和被关注位置(右)之间的连线。不同的颜色对应不同的“注意力头”,线段宽度反映注意力值的大小。在该工具的顶部,用户可以选择模型层,以及一个或者多个“注意力头”(通过点击顶部颜色切换,一共包含12个不同的“头”)

BERT到底学习什么?
该工具能用于探索预先训练的BERT模型的各个层以及头部的注意模式。以下列输入值为例进行详解:

句子A:I went to the store.
句子B:At the store, I bought fresh strawberries.

BERT采用WordPiece tokenization对原始句子进行解析,并使用[CLS]对token进行分类以及[SEP]对token进行分隔,则输入的句子变为:[CLS] i went to the store. [SEP] at the store, i bought fresh straw ##berries. [SEP]

接下来我将确定6个关键模式,并展示每个模式特定层/头的可视化效果。

模式1:下一个单词的注意力(Attention to next word)
在该模式下,特定单词的大部分注意力都集中在序列中该单词的下一个token处。如下图所示,我们以第二层的head 0为例(所选头部由顶部颜色栏中突出显示的正方形表示)。左边图中展示了所有token的注意力,右边则显示了特定token(“i”)的注意力。“i”几乎所有的注意力都集中在它的下一个token,即“went”处。

 

左图中,[SEP]指向了[CLS],而非“at”,也就是说,指向下一个单词的这种模式只在句子中起作用,而在句子间的效果较弱。该模式类似于RNN中的backward,状态从右往左依次更新。

模式2:前一个单词的注意力(Attention to previous word)
在该模式下,特定单词的大部分注意力都集中在序列中该单词的前一个token处。本例中,“went”的大部分注意力集中于它的前一个单词“i”。模式2不如模式1明显,特定的单词注意力有所分散。该过程与RNN中的forward类似。

 

模式3:相同/相关单词的注意力(Attention to identical/related words)
在该模式下,特定单词的大部分注意力集中于与其相同或者相关的单词,包括该单词本身。下图中,“store”的大部分注意力集中在它本身。由于注意力有所分散,该模式也不明显。

 

模式4:其它句子中相同/相关单词的注意力(Attention to identical/related words in other sentence)
在该模式中,注意力集中在其它句子中与指定单词相同或者相似的单词。如下图,第二个句子中的“store”与第一个句子中的“store”关联最强。这对于下一个句子预测任务非常有帮助,它能够帮助识别句子之间的关系。

 

模式5:预测单词的注意力(Attention)
在该模式下,注意力集中于其它可以预测源单词的单词上,且不包括源单词本身。如下图,“straw”的注意力主要集中于“##berries”,而“##berries”的注意力主要集中于“straw”。

 

模式6:分隔符标记的注意力(Attention to delimiter tokens)
在该模式下,特定单词的注意力主要集中于分隔符,[CLS]或[SEP]中。如下图,大多数的注意力都集中在两个[SEP]中,这或许是模型将语句级别状态传递到各个token中的一种方法。

 

标签:NLP,BERT,模型,模式,句子,单词,可视化,注意力
From: https://www.cnblogs.com/chinasoft/p/17507390.html

相关文章

  • R语言用灰色模型 GM (1,1)、神经网络预测房价数据和可视化|附代码数据
    被客户要求撰写关于灰色模型的研究报告,包括一些图形和统计输出。以苏州商品房房价为研究对象,帮助客户建立了灰色预测模型GM(1,1)、BP神经网络房价预测模型,利用R语言分别实现了GM(1,1)和BP神经网络房价预测可视化由于房价的长期波动性及预测的复杂性,利用传统的方法很难准确......
  • Linux可视化管理-webmin工具
    环境:连接工具:tabby,操作系统:centos7.6.webmin介绍​ Webmin是功能强大的基于Web的Unix/linux系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理操作。除了各版本的linux以外还可用于:AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等系统安......
  • 自然语言处理 Paddle NLP - 结构化数据问答-理论
    NLP问答任务相似度和规则匹配,都是早期的方法,现在主流的方法,都是基于生成的方法结构化数据问答,有两种形式,一种是知识图谱形式、一种是关系型数据库形式。主要应用在企业中,减少销售的成本应用于商业智能,用于报告生成,解放了财务能力,降低人力成本结构化数据问答任务结构化数......
  • Bert Pytorch 源码分析:四、编解码器
    #Bert编码器模块#由一个嵌入层和NL个TF层组成classBERT(nn.Module):"""BERTmodel:BidirectionalEncoderRepresentationsfromTransformers."""def__init__(self,vocab_size,hidden=768,n_layers=12,attn_heads=12,d......
  • Three.js教程:gui.js库(可视化改变三维场景)
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生gui.js库(可视化改变三维场景)gui.js库(可视化改变三维场景)dat.gui.js说白了就是一个前端js库,对HTML、CSS和JavaScript进行了封装,学习开发的时候,借助dat.gui.js可以快速创建控制三维场景的UI交互界面,你打开......
  • 自然语言处理 Paddle NLP - 检索式文本问答-理论
    问答系统(QuestionAnsweringSystem,QA)是信息检索系统的一种高级形式,它能用准确、简洁的自然语言回答用户用自然语言提出的问题。其研究兴起的主要原因是人们对快速、准确地获取信息的需求。问答系统是人工智能.抽取式阅读理解:它的答案一定是段落里的一个片段,所以在训练前,先要......
  • Python+mysql+tkinter+matplotlib的可视化学生成绩管理系统课程设计
    使用模块要求:tkinter、numpy、openpyxl、matplotlib、pymysql、re、time;其中matplotlib用于绘制统计图开发工具:pycharm专业版、python3.7、mysql8.0需要咨询、源码、定做、QQ扫码加:https://img-mid.csdnimg.cn/release/static/image/mid/ask/153137086786150.jpg点击此处链接......
  • R语言618电商大数据文本分析LDA主题模型可视化报告|附代码数据
    原文链接:http://tecdat.cn/?p=1078最近我们被客户要求撰写关于文本分析LDA主题模型的研究报告,包括一些图形和统计输出。618购物狂欢节前后,网民较常搜索的关键词在微博、微信、新闻三大渠道的互联网数据表现,同时通过分析平台采集618相关媒体报道和消费者提及数据社交媒体指数趋......
  • python数据可视化神器--pyecharts 快速入门
    大家好,我是一名来自广东的邓棋文,目前正在学习Python的开发技能。在开发过程中,数据可视化是一个非常重要的环节,帮助我们理解数据,从而作出正确的决策。今天,我将介绍一个强大的Python数据可视化库——pyecharts。pyecharts是一个用于生成ECharts图表的类库。ECharts是百度开源的一个......
  • Bert Pytorch 源码分析:二、注意力层
    #注意力机制的具体模块#兼容单头和多头classAttention(nn.Module):"""Compute'ScaledDotProductAttention""" #QKV尺寸都是BS*ML*ES #(或者多头情况下是BS*HC*ML*HS,最后两维之外的维度不重要) #从输入计算QKV的过程可以统一处理,不必......