DL - BERT

transformer
传统RNN:RNN需要用到之前的中间结果,不能并行加速训练

Attention机制,不同词重要性不一样,

Self-Attenion机制,进行并行计算

传统word2vec用词向量表达文本特征
存在缺陷:向量训练好就不变了
不同词在不同的语境下表达的含义不同,比如说:东北话 干哈呢?,
在南方人听起来可能是,你在问我做什么,但东北人的意思却是走啊,
出去喝点。

BERT解决了同一个词在不同语境中,表达含义不同

Transformer最核心的
self-Attention机制
对于输入的数据,你的关注点是什么,很少的数据有价值,
如何让计算机关注到这些数据
the animal didn’t cross the street because it was too tired
the animal didn’t cross the street because it was too narrow
做的是将整个上下文,融入到这个词的词向量当中。

self-Attention 如何计算
1.编码
2.三个需要训练的矩阵
q-query 要去查询的
k-key 等待被查的
v-value 实际的特征信息

q和k的内积表示两个向量的相关程度
知道了一个词向量和其他词向量的分值
将这个分值经过scaled,
再通过softmax得到概率,
这个概率就是对当前待编码位置的影响的大小

此时每个词看到的不只是它前面的序列,而是整个输入序列
同一时间计算出所有词的表示结果

multi-headed机制 多次self-attention 一般8个头
多组qkv可以得到多组当前词的特征表达
把所有不同的注意力结果拼接到一起
在通过一层全连接来降维

堆叠多层
经过self-Attention和multi-headed后还是向量,
在来一层又一层,计算方法都是相同的

位置信息的表达
self-Attention中每个词都会考虑整个序列的加权,
所以其出现位置并不会对结果产生影响,相当于放哪里无所谓。
但跟实际不符合,加上一个位置编码
利用余弦或正弦的周期表达位置信息

Add和Noamalize
对层做归一化LayerNorm:
batch normalization:对数据按batch维度做均值为0标准差为1

连接
残差连接
把原来特征直接拿来,和经过堆叠多层multi-headed self-attention进行比较
保证至少不比原来的特征差

decoder端
attention计算不同,除了self-attention增加encoder decoder attention
加入MASK机制,对于每个词做编码,后面的不会当已知条件

最终输出结果
得出最终预测结果
损失函数cross-entropy

BERT
就是把transformer应用
解决怎么把特征整出来
基于encoder端做一个向量

训练BERT
方法1:句子中15%的词汇被随机mask掉
交给模型去预测被mask的家伙
向量训练的好
方法2:预测两个句子是否应该连在一起
[seq]: 两个句子之前的连接符,[cls]: 表示要做分类的向量

如何使用BERT
end to end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值