1.特殊token
[cls],[sep],[pas],[unk]
2.皮尔逊系数
利用metric矩阵获得评价指标
def compute_metrics(eval_pred):predictions, labels = eval_predpredictions = predictions.reshape(len(predictions))return {'pearson': np.corrcoef(predictions, labels)[0][1]}
3.bert
1)embedding
word embedding,sentence embedding,position embedding的原理:lookup table。O(1)的时间复杂度
先线性计算得到Q,K,V再分头对各自的Q,K,V进行计算,计算结果直接concat
2)feedforward
先降维后升维:768-->768*4-->768
3)warm up
一开始抑制后层参数的学习率,给前面参数一个缓冲优化的时间,以促进前后层的同步优化。
学习率缓慢爬升到一个较大的值,再开始下降,而不是传统的直接从一个较大的值开始下降。
4.Roberta
与bert的区别:
mask随机挑选
去除NSP任务
增大batch_size=4k
bytes_level BPE编码的tokenizer(5w+词库大小)
5.Deberta
背景:在attention矩阵中,对角线的值最大(即自己-自己的关联性最高),实际需求不光要关注本身还应关注本身的上下文。
与bert的区别:
结构侧:
在输入的input embedding不在加入position embedding
在input经过编码后
在encoder与enhance mask decoder端通过相对位置计算分散注意力
enhance mask decoder和transformer中的decoder没关系
在原始bert的倒数第二层,插入了一个分散注意力计算
训练侧:
训练时加入数据扰动
mask不替换词,替换成词的pos-embedding
debert用的是相对位置编码
6.参数选择
num_warmup_steps:一般设置在0.1-0.2(samples_num/batch_size)*epochs*num_warmup_steps
learning_rate:(base)(2-5)e-5 (large)小于等于2e-5(以0.5e-5为步长进行调整,调整时预训练语言模型越大,学习率应该越小)
seed:输入幸运数字