首先介绍什么是自监督学习:
普通的有监督学习是每个x对应有个y',x训练得到y,将y与y'作比较,而自监督是没有对应y',直接把一部分样本x作为训练目标x'',训练得x'后和x''对比
bert中如何创造x':以文字处理为例,把字随机遮住或者随机替换一些,把新的字符串组输入bert后经过linear和softmax层得到的结果和实际字符(比如这里是湾)做交叉熵,从而训练bert的参数
在模型学会做填空题之后,经过微调就可以解决其他不同的任务,测试的时候会根据8个任务看总体效果
如何使用bert:4个case:
1.语言情感分析(输入一个序列,输出这个序列是积极还是消极的)
方法:在输入的字符串前面加cls字符,通过这个字符的输出经过线性层后得到类别,bert的作用是得到一个比较好的初始化参数(注:需要有提前标注的数据)
2.词性分析
根据每个词的输出过线性层看词性
3.判断两个句子是否矛盾
把两个句子中间加个分割符,根据句首的cls符对应的输出判断关系
4.根据一个问题,从一段话里截出一部分作为答案
方法:随机初始两个向量(需要训练的两个东西)把他们分别和d1,d2,d3的输出做内积并过softmax层,得到最大值的位置就是截取文本的开始和结束位置
注意:因为attention运算量较大,一般不输入太长的,因此会把文本分成一段一段放进去
为什么bert有效:一个词的意思可以从它的上下文得出,而bert学做填空题的过程就是抽取上下文的资信
bert实验结果的神奇之处:bert可以让不同语言得到的词语向量很接近,每个词的英文和中文的差距几乎是一个固定值