Bert入门学习

知识点扫盲
首先要知道bert是什么,从全称Pre-training o f Deep Bidirectional Transformers for Language Understanding可以看出bert是一个深层双向的Transformer的预训练模型。这里涉及到两个概念Transformer和预训练模型,Transformer会在后面介绍。

预训练模型就是一个已经训练好的保存下来的网络模型,你可以理解为保存了训练得到的参数矩阵weight。预训练模型一般是用较大的数据集训练好的模型(这种模型往往比较大,训练需要大量的内存资源),所以将训练好的模型保存下来可以让其他无法进行如此大规模计算的人使用,你可以用这些预训练模型用到类似的数据集上进行模型微调。bert微调应用会在后续给出。

1.1 Attention
Attention的理解推荐两个学习途径:
1.在这里找到序列模型课程,学习里面3.7和3.8节。
2.文章

为了使用RNN建立出这样的模型,你首先需要一个训练集,包含一个很大的英文文本语料库(corpus)或者其它的语言,你想用于构建模型的语言的语料库。语料库是自然语言处理的一个专有名词,意思就是很长的或者说数量众多的英文句子组成的文本。
第一件事就是将这个句子标记化,意思就是像之前视频中一样,建立一个字典,然后将每个单词都转换成对应的one-hot向量,也就是字典中的索引。
句子的结尾,一般的做法就是增加一个额外的标记,叫做EOS。

建立RNN模型,我们继续使用“Cats average 15 hours of sleep a day.”这个句子来作为我们的运行样例,我将会画出一个RNN结构。
RNN中的每一步都会考虑前面得到的单词,比如给它前3个单词(上图编号7所示),让它给出下个词的分布,这就是RNN如何学习从左往右地每次预测一个词。

经过训练后:
第一次输入x1=0的输出y1是一个10000维的向量,表示词汇表里10000个词出现的概率。
当确定了x2是哪个单词后,第二个输出y2就是当x^2出现的条件下,词汇表里10000个词出现的概率。
依次类推。

如果你用很大的训练集来训练这个RNN,你就可以通过开头一系列单词像是Cars average 15或者Cars average 15 hours of来预测之后单词的概率。现在有一个新句子,为了简单起见,它只包含3个词(如下图所示),现在要计算出整个句子中各个单词的概率,方法就是第一个softmax层会告诉你 y^<1> 的概率(下图编号1所示),这也是第一个输出,然后第二个softmax层会告诉你在考虑 y^<1> 的情况下 y^<2> 的概率(下图编号2所示),然后第三个softmax层告诉你在考虑 y^<1> 和 y^<2> 的情况下 y^<3> 的概率(下图编号3所示),把这三个概率相乘,最后得到这个含3个词的整个句子的概率。


2.2 seq2seq
seq2seq实际上就是一个encoder-decoder模型,通过encoder过程得到的源句子语义,计算出目标句子。


seq2seq模型:翻译模型由编码网络和解码网络组成。


2.3 Attention seq2seq
Attention seq2seq就是在encoder和decoder之间加了一层Attention,目的是使decoder不仅仅关注encoder的最终输出,而是关注encoder的每一个hidden state,使目标词可以对用到与之关联的输入词上。


————————————————
版权声明:本文为CSDN博主「hwblittlebird」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hwblittlebird/article/details/106138305

posted @ 2022-03-23 08:00  青竹之下  阅读(199)  评论(0编辑  收藏  举报