BERT输入以及权重矩阵形状解析

这篇具有很好参考价值的文章主要介绍了BERT输入以及权重矩阵形状解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下用形状来描述矩阵。对于向量,为了方便理解,也写成了类似(1,64)这种形状的表示形式,这个你理解为64维的向量即可。下面讲的矩阵相乘都是默认的叉乘。
词嵌入矩阵形状:以BERT_BASE为例,我们知道其有12层Encoder,12个Head。对于中文版的BERT_BASE来说,词嵌入矩阵的形状为(21128,768),其中21128就是词典的大小,768是词典中的每个字对应的维度。
需要注意的是这个维度其实可以是其他值,只不过官方恰巧给的是768=64×12(12个head,每个head是64维),对于Transformer的Encoder来说,这个维度是512,这个时候512≠64×6(6个head,每个head为64维)。一般来说Encoder层数越多,该词向量维度也应该越大,毕竟整个网络参数数量增大之后,有能力学习更多维度的信息。
词向量维度:然后我们知道,每个位置x的输入其实一开始是一个序数,通过这个序数便可以在上述词嵌入矩阵中查找到相应的词向量,每个位置x的词向量维度为(1,768)。对于整个BERT序列来说,其序列长度为512,所以BERT序列的形状为(512,768)。
Q、K、V向量的维度:这个是论文中固定的,维度都是(1,64)。而由词向量x到Q、K、V向量是分别乘以一个权重矩阵(Wq、Wk、Wv)得到的,所以权重矩阵的形状为(768,64)。上述都是一个head的情况,扩展到12个head,那么整个权重矩阵的形状就变成了(768,768)。这样词向量x和这个权重矩阵相乘后得到维度为(1,768)维度的向量,然后经过切分在单个head上为(1,64)维度的向量。
注意力计算后的维度:注意力的计算如下,这里盗个图,链接为:
https://zhuanlan.zhihu.com/p/48508221
bert 输入维度,bert,矩阵,深度学习
可知Q向量(1,64)和K的转置(64,1)相乘后其实就变成了一个数,该数再和V向量进行数乘得到的z向量,维度和V一样,为(1,64)。多个head中的z向量进行拼接得到(1,768)维的Z’向量。Z’向量再乘以一个转换矩阵Wo(768,768)得到最终的Z向量(1,768)。
需要注意的是,上述图中的Q、K、V向量均有两个,最终得到两个z向量。并且这里公式没有考虑掩码的情况,但是掩码并不影响矩阵的形状。
前馈神经网络(FFNN)的形状:前馈神经网络用一句话概括就是对于多头注意力的输出先进行线性变化,然后经过激活函数之后再进行线性变换。前馈神经网络的维度为3072,由于单个时刻多头注意力的输出维度为(1,768),第一个线性变换的矩阵形状为(768,3072),第二个线性变换矩阵的形状为(3072,768)。文章来源地址https://www.toymoban.com/news/detail-745254.html

到了这里,关于BERT输入以及权重矩阵形状解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 检查两个数组在维度,形状以及元素值上是否均等价 numpy.array_equiv()

    【小白从小学Python、C、Java】 【计算机等级考试+500强双证书】 【Python-数据分析】 检查两个数组在维度,形状 以及元素值上是否均等价 numpy.array_equiv() [太阳]选择题 请问以下代码中执行语句输出结果依次是? import numpy as np a = np.array([1, 2]) b = np.array([1, 2]) c = np.array([1, 3]) d =

    2024年02月07日
    浏览(47)
  • 【变形金刚02】注意机制以及BERT 和 GPT

            我已经解释了什么是注意力机制,以及与转换器相关的一些重要和块,例如自我注意、查询、键和值以及多头注意力。在这一部分中,我将解释这些注意力块如何帮助创建转换器网络, 注意、自我注意、多头注意、蒙面多头注意力、变形金刚、BERT 和 GPT。

    2024年02月13日
    浏览(29)
  • 97. BERT微调、自然语言推理数据集以及代码实现

    即使下游任务各有不同,使用BERT微调时只需要增加输出层 但根据任务的不同,输入的表示,和使用的BERT特征也会不一样 斯坦福自然语言推断语料库(Stanford Natural Language Inference,SNLI)]是由500000多个带标签的英语句子对组成的集合 。我们在路径 ../data/snli_1.0 中下载并存储提

    2024年02月09日
    浏览(40)
  • 【NLP】什么是语义搜索以及如何实现 [Python、BERT、Elasticsearch]

    语义搜索是一种先进的信息检索技术,旨在通过理解搜索查询和搜索内容的上下文和含义来提高搜索结果的准确性和相关性。与依赖于匹配特定单词或短语的传统基于的搜索不同,语义搜索会考虑查询的意图、上下文和语义。 语义搜索在搜索结果的精度和相关性至关重

    2024年02月04日
    浏览(48)
  • cross attention输入不同维度的矩阵

    在学习使用cross attention的时候我查阅了很多资料,发现里面说的都是cross attention的输入需要是相同维度的矩阵,但是我所需要的是可以处理不同维度数据的cross attention。 cross attention 看了关于cross attention的一些介绍和代码,发现大多都是这样 这里的x和y所输入的维度需要一致

    2024年02月04日
    浏览(37)
  • 自然语言处理实战项目25-T5模型和BERT模型的应用场景以及对比研究、问题解答

    大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目25-T5模型和BERT模型的应用场景以及对比研究、问题解答。T5模型和BERT模型是两种常用的自然语言处理模型。T5是一种序列到序列模型,可以处理各种NLP任务,而BERT主要用于预训练语言表示。T5使用了类似于BERT的

    2024年01月17日
    浏览(60)
  • Tensorflow2.0笔记 - 修改形状和维度

            本次笔记主要使用reshape,transpose,expand_dim,和squeeze对tensor的形状和维度进行操作。         运行结果:  

    2024年01月16日
    浏览(36)
  • BERT原理&Fine Tuning&Bert变种

    BERT全称为Bidirectional Encoder Representation from Transformer,从名字可以知道,BERT是Transformer的Encoder部分。BERT的最大的改进是在模型的训练核数据的输入部分。 BERT是一个动态词向量模型,其主要功能就是抽取每个词在句子中的语义信息,并且表示出来。 训练时的任务 BERT在训练时,

    2024年02月05日
    浏览(35)
  • Bert基础(十七)--Bert实战:中文情感识别

    前面说了中文分类的过程,这次说一下情感分类相关的代码,其实情感分类也属于中文多分类的一种,知识情感分类一般会专门区分出来,但是代码基本是一致的, 基本步骤: 数据集我们使用hugging face上的数据集,打开hugging face–》datasets task选择 “Text Classification“ langua

    2024年04月28日
    浏览(31)
  • 【使用 BERT 的问答系统】第 5 章 :BERT模型应用:问答系统

         🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】 ​  🖍forew

    2024年02月01日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包