DL - BERT

本文深入解析Transformer模型,探讨其核心的self-Attention机制如何解决序列数据处理中的并行计算难题,以及BERT如何利用Transformer在不同语境下捕捉词义变化,实现预训练语言模型的突破。

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

### 解决 `SyntaxWarning: invalid escape sequence '\m'` 警告 在 Python 中,`SyntaxWarning: invalid escape sequence` 警告通常是因为在字符串中使用了无效的转义序列。Python 中的转义序列以反斜杠 `\` 开头,当反斜杠后面跟着的字符不是有效的转义字符时,就会触发这个警告。 例如,在字符串中使用 `\m` 是无效的转义序列,因为 `\m` 不是 Python 预定义的转义字符。为了解决这个问题,可以采用以下几种方法: #### 方法一:使用原始字符串 在字符串前面加上 `r` 前缀,将字符串标记为原始字符串,这样反斜杠就不会被解释为转义字符。 ```python # 原始字符串示例 path = r'D:\nlp-ml-dl-notes-master\vertors-test\modes' ``` #### 方法二:使用双反斜杠 将单个反斜杠替换为双反斜杠 `\\`,因为双反斜杠在 Python 中表示一个普通的反斜杠字符。 ```python # 使用双反斜杠示例 path = 'D:\\nlp-ml-dl-notes-master\\vertors-test\\modes' ``` ### 解决 `huggingface-cli download` 命令返回非零退出状态 1 错误 `huggingface-cli download` 命令返回非零退出状态 1 通常表示命令执行过程中出现了错误。可能的原因及解决办法如下: #### 原因一:网络问题 网络连接不稳定或无法访问 Hugging Face 服务器可能导致下载失败。可以检查网络连接,或者尝试使用代理。 #### 原因二:模型名称或路径错误 确保模型名称和下载路径正确。模型名称应该是 Hugging Face Hub 上的有效模型名称,下载路径应该是有效的本地路径。 #### 原因三:权限问题 确保有足够的权限在指定的本地路径下创建文件和文件夹。 以下是一个使用 `huggingface-cli download` 命令的示例: ```bash huggingface-cli download google-bert/bert-base-chinese --cache-dir D:/nlp-ml-dl-notes-master/vertors-test/modes ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值