Positional Encoding的原理和计算

前言

     最近一段时间在看研究生导师发的资料,因为导师是做自然语言处理和知识图谱方向的,所以之前学的CNN的知识暂时用不上啦。NLP和KG方面的知识我之前没怎么接触过,所以最近打算写一系列博文来记录一下学习过程,如果有说得不对的地方请大佬指正。

一、Positional Encoding的介绍

    先说说Positional Encoding(位置编码)的由来。我们都知道传统做NLP邻域使用的模型大多是RNN模型(比如说LSTM、Bi-LSTM),基于RNN模型的训练是一个迭代的过程,也就是把一句话中的每一个词按顺序输入模型中,当RNN处理完当前的这个词时才可以输入下一个词,这种方式虽然可以使RNN按顺序读取语义信息,但是由于是串行计算,当语句较长的时候计算效率较低。谷歌大脑在2017年发布的论文《Attention is all you need》中提出了一种新型的NLP处理模型——TransfomerTransfomer的效果非常好并且可以对语句进行并行计算,也就是同时把一句话中的所有词都输入进去同时计算,大大加快了计算效率。但是问题来了,并行计算好是好,但是我们怎么让模型知道一句话中每个字的顺序信息呢?这就要引出我们的Positional Encoding(位置编码)了。

二、Positional Encoding的计算

2.1 Transfomer的输入

Transformer的输入部分

    首先我会先讲一下Positional Encoding(位置编码)的计算过程,然后在根据我自己的理解来讲Positional Encoding(位置编码)的原理。首先给出Transformer的输入部分,如上图所示。X:[batch size,sequence length]指的是初始输入的多语句矩阵,多语句矩阵通过查表,得到词向量矩阵X_{embedding}:[batch size,sequence length,embedding dimension]

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值