小黑LE-BERT源代码抢滩登陆战
爱喝喜茶爱吃烤冷面的小黑黑
这个作者很懒,什么都没留下…
展开
-
小黑醒着鼻涕:搭建了初步LE-Roberta主框架,还待进一步测试
from transformers.modeling_roberta import RobertaPreTrainedModel, RobertaEmbeddings, RobertaPooler, \ ROBERTA_INPUTS_DOCSTRING, _TOKENIZER_FOR_DOC, BaseModelOutputWithPooling, _CONFIG_FOR_DOC, RobertaLayerfrom transformers import RobertaConfig,AutoCon原创 2022-04-19 16:09:56 · 325 阅读 · 1 评论 -
小黑晚上要和frank meeting啦:Label Smoothing
1.原理在之前的交叉熵损失函数中,我们让模型学习到的标签类别的概率为1,其他的类别让模型学习出的概率为0,这样很容易让模型过拟合,并且使得损失函数不平滑,为了解决这个问题,我们使用标签平滑的方法。平滑前的理想概率分布:平滑后的理想概率分布:经过标签平滑的方法,然后送入到交叉熵损失函数下,具体公式如下图(小黑找了半天才找到的图):损失函数核心代码:loss * self.eps / c + (1 - self.eps) * F.nll_loss(log_preds,target,reduct原创 2022-04-15 16:54:46 · 346 阅读 · 0 评论 -
小黑喝杯咖啡:FocalLoss的原理与demo
1.原理(1)交叉熵损失函数:a.二分类的形式b.一般形式(经过化简,pt为标签类别在模型预测的概率)交叉熵损失函数在类别不均衡的情况下,使得模型对稀有类别样本的预测效果较差,focal loss意在动态赋予各个类别样本的权重。(2).focalLoss可以理解每类样本的权重为:其中gamma为调节因子,大于零。2.代码demoimport torchimport torch.nn as nnimport torch.nn.functional as Fclass Foca原创 2022-04-15 14:34:29 · 296 阅读 · 0 评论 -
小黑继续在bert表面冲浪:BertEncoder部分(今后有待继续深入)
import torch.nn as nnfrom transformers.modeling_bert import BertLayer,BertConfigfrom lebert import WordEmbeddingAdapterimport torchclass BertEncoder(nn.Module): def __init__(self,config): super().__init__() self.config = confi原创 2022-04-14 15:18:33 · 1189 阅读 · 0 评论 -
小黑开题结束继续征程:LEBertModel整体架构
from transformers import BertPreTrainedModelfrom transformers.modeling_bert import BERT_INPUTS_DOCSTRING,_TOKENIZER_FOR_DOC,_CONFIG_FOR_DOCfrom transformers.modeling_bert import BertEmbeddings,BertConfig,BertPooler,BertLayer,BaseModelOutput,BaseModelOutp原创 2022-04-14 11:58:28 · 638 阅读 · 0 评论 -
小黑继续向前探索:WordEmbeddingAdapter
1.原理词语向量:字符向量:具体步骤:(在此省略dropout)1.将词向量的维度进行对齐,使其与bert_dim维度一致:[batch_size,max_len,num_words,bert_dim]2.计算词语与字符的注意力矩阵:[batch_size,max_len,num_words]3.将词向量通过注意力矩阵进行加权:[batch_size,max_len,bert_dim]4.将注意力加权后的词向量与bert字符表征相加:[batch_size,max_len,bert原创 2022-04-12 16:49:59 · 1511 阅读 · 0 评论 -
小黑照葫芦画瓢乘胜追击:BertCrfForNer,LEBertSoftmaxForNer,LEBertCrfForNer
1.BertCrfForNerfrom transformers import BertPreTrainedModel,BertConfig,BertModelfrom TorchCRF import CRFimport torchimport torch.nn as nnclass BertCrfForNer(BertPreTrainedModel): def __init__(self,config): super(BertCrfForNer,self).__init原创 2022-04-12 11:32:03 · 370 阅读 · 0 评论 -
小黑转向LE-BERT模型进攻:BertSoftmaxForNer
import torchimport torch.nn as nnimport torch.nn.functional as Ffrom crf import CRFfrom lebert import LEBertModelfrom torch.nn import CrossEntropyLossimport syssys.path.append('..')from losses.focal_loss import FocalLossfrom losses.label_smoothing原创 2022-04-11 20:45:36 · 1091 阅读 · 0 评论