自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 关于模型量化

训练后量化(PTQ)和量化感知训练(QAT)。PTQ方法,是将已经训练好的模型进行量化,同时只需要很少的数据或者不需要数据,少部分需要手动调整的超参数以及不需要端到端训练。QAT,它依赖神经网络在训练过程中进行模拟量化。由于卷积层的偏置 bias 没有被量化,它仍然是 float32 类型,因此我们需要将卷积结果 x 再映射回 float32,然后再与偏置 bias 相加。1. 量化卷积核权重:量化的目的是为了把原来的 float32 位的卷积操作,转换为 int8 的卷积操作,这样。

2023-09-08 09:47:42 155 1

原创 llama调研

之前大家都觉得更大的参数==更好的模型,但是Hoffmann 等人(2022)的最新工作表明,对于给定的计算预算(compute budget), 最佳性能并非来自那些最大的模型,而是来自那些。在论文中,作者重提出了一个观点作为前提:当前的大模型已经具备了,根据一些示例(few shot)和文本提示,去执行一个。位置编码对大模型而言尤为重要,因为既然是要训练大模型,那么长文本的表征和模型对于长文本的建模能力就显得非常重要。我们更喜欢训练时间长,推理速度更快的模型,而不是训练时间较短,推理速度较慢的模型。

2023-09-04 10:47:47 98 1

原创 simcse预训练

注意不同的drop mask机制不用我们自己去搞,是指dropout层在训练时是会随机drop一些输入的,因为具有一定的随机性,所以同一个句子输入两遍就行。一个句子通过encoder得到sentence embedding,而其他句子得到的sentence embedding是作为负例,直接用BERT句向量做无监督语义相似度计算效果会很差,任意两个句子的BERT句向量的相似度都相当高,其中一个原因是。通过自动构造相似实例和不相似实例,,通过这个模型,使得。

2023-09-04 10:43:29 105 1

原创 bert的trick

dropout在训练和推理的时候存在不一致性,训练的时候存在drop,推理的时候不存在。可以直接在bert微调的时候去掉dropout,因为dropout本质上是一种缓解过拟合的方法,可能并不适合微调的场景,如果在bert的每一层都增加了扰动,最终会引发相对较大的不稳定。领域内预训练,就是在自己的训练集文本(或相似领域的训练集文本)上执行预训练,训练结束后模型便更贴合自己的任务了,在训练的时候收敛速度加快,效果一般来说也能带来百分位点的提升。在文本分类的微调中,做了实验,发现去掉dropout能有所提升。

2023-09-04 10:42:19 82 1

原创 P-tuning

p-tuning-v2的主要贡献是在原本的输入前添加自定义长度的layer prompts,在后续针对下游任务的训练中冻结BERT模型的所有参数而只训练这些prompt给模型带来影响的参数。这些参数在源码中具体为:prompt对应的embedding层,两个线性层(对应key和value),一个全连接层。

2023-09-04 10:35:13 100 1

原创 pre归一化和post归一化的比较

当t足够大时,Ft-1(Norm(xt-1)) 近似等于 Ft(Norm(xt)),因此原本一个t层的模型与t+1层和,近似等效于一个更宽的t层模型,所以在Pre Norm中多层叠加的结果。但是pre Norm相较于post Norm还是在一些方面是有优势的:可以发现post Norm在梯度范数是不均匀的,越深的层的梯度越大,pre Norm的梯度范数是均匀的。参照我们的plato模型:我们的plato模型使用的归一化是pre Norm。而我们知道,对深度学习而言,网络深度的重要性往往大于网络的宽度。

2023-09-04 10:31:27 426 1

原创 mbart和mt5的比较

mbart将任务区分为分类型的任务和生成式的任务,对两个不同型的任务微调代码不同(个人觉得应该是decoder中一个回到词库维度,一个回到cls维度)。mbart和mt5有什么不同。两者的模型都是transformers的模型(encoder+decoder结构),多篇论文表明了这样的结构比docoder-only或者prefixlm在多种下游任务中,特别是翻译、逻辑判断中都具有优势。bart使用的是绝对位置编码,t5使用的是相对位置嵌入。这样看来,mbart做的任务似乎是更难的任务,有可能效果会更好。

2023-09-04 10:26:56 309 1

原创 相对位置和绝对位置的探讨

t5的做法:将上面的a,b,c全部取消掉,只保留d的改进版:ExiWqWkExj + βi,j,简单来说就是将相对位置信息放在一个参数里学习。对UiWqWkUj (橙色和绿色) 与 UiUj的分布进行比较,k表示两个token的距离,可以看到加了非线性变换后就不存在相对位置信息了。这样的编码包含了token的序列信息和在该序列的位置信息,从而描述了token的位置信息特征。Exi和Exj是xi和xj的词嵌入,Ui和Uj是第i个位置和第j个位置的位置向量。但是以上的绝对位置编码,

2023-09-04 10:20:30 80 1

原创 mt5模型调研

T5全称是,是一种模型架构或者说是一种解决NLP任务的一种范式。把所有任务,如分类、相似度计算、文本生成都用一个Text-to-text(文本到文本)的框架里进行解决。

2023-09-04 10:15:30 598 1

原创 关键词提取

1.直接对句子进行句嵌入,再与词嵌入进行比较,如果关键词是一个低频次,那么两者的分布存在差异(bert的高频词与低频次分布不同),需要进行白化处理,转换为同一标准正交基。常见的计算方法是通过文档集合中包含该词语的文档数量与文档集合总文档数的比值取对数的倒数。高频词过滤:通过逆文档频率的计算,TF-IDF可以过滤掉在整个文档集合中过于常见的词语,如停用词,从而提取出更加重要和有意义的词语。认为文本中频率是关键词的主要特征。TF(词频)指的是一个词语在句子中出现的频率,表示了该词语在文本中的重要程度。

2023-09-04 10:06:20 97 1

原创 微调和推理plato的一些经验

2.将数据做成batch的形式,共有3587条数据,将数据按照token ids进行升序排序,不断维护max_len,确保max_len * batch 的数量小于batch_size。5. 对生成话的长度进行一定限制,我们的场景是chitchat,所以我们的min_len设置的很小0,如果是做别的事情,在没有到达min_len,eos的logits会相对更低。4. 为了避免生成的token为mask或者unk_token,将对应的索引的数值设置很小。

2023-09-04 10:00:49 63 1

原创 gpt2的decode方式

Top-K 是直接挑选概率最高的 K 个单词,然后重新根据 softmax 计算这 K 个单词的概率,再根据概率分布情况进行采样,生成下一个单词。Top-P Sampling (Nucleus sampling) 是预先设置一个概率界限 p 值,然后将所有可能取到的单词,根据概率大小从高到低排列,依次选取单词。greedy search的主要缺点是,它只考虑了当前的高概率词,忽略了在当前低概率词后面的高概率词。关于K的选择当然是文本较短的话选择较小的K,反之文本较大就选择较大的K。

2023-05-08 22:28:37 260

原创 QA 后续

根据validation判断模型对下游任务的适用性,通过五折训练选出最好的model,对多个模型推断出的伪标签进行加权,得到最后的伪标签,有将近10w个伪标签。以下是训练模型的参数,batch_size为8的情况下,训练5个epochs。2.将基础模型对stack extrange数据进行推断得到伪标签数据。3.roberta-base训练google+伪代码的模型。2.SE模型训练google+伪代码的模型。4.bart训练google+伪代码的模型。1.SE模型推断google的模型。

2023-05-06 21:56:34 61

原创 QA 改 1.pretrain

input_ids 长度为201(question_ids的长度+answer_ids的长度+3) 因为 build_inputs_with_special_tokens 如果输入为两个ids的话,自动加入令牌CLS+A+SEP+B+SEP,因此长度多了3,因此我们一个句子的token令牌分布是CLS+title+SEP+body+SEP+answer+SEP,这里主要强调的是answer和question的ids需要分成两个句子,作用是可以用来做句子对分类任务。自此我们的encoder就结束了。

2023-05-03 23:28:54 132

原创 QA问答系统 basetf2

这里使用三层全连接层的作用是值得考虑的,一般来说在cv领域全连接层是在特征图后面进行整合的,对于nlp我们的输入是384维的向量(也可以看成是句子的特征表示),384就是特征,我们做的其实就是特征整合的工作。输出类包括:['question_asker_intent_understanding', 'question_body_critical', 'question_conversational',...]然后再输出到我们的bert模型中,我们在构建模型时,对输出的参数进行了调整。

2023-04-27 16:14:39 123

原创 google QA 简单的文本分类尝试

tokenizer.texts_to_sequences 来形成句子向量,最后padding匹配成相同的输入维度也就是对应模型的输入维度:1000。在我们比较原始的做法里,似乎glove都是奢侈的做法里,okfine,那可能就是比onehot稍微高级一点的,keras自带的编码器了。下面将embedding层加入glove的参数 ps:感觉这么做还是不严谨的,可解释性几乎为0。很简单,统计的是词频最高的5000个词,赋予编码。gpu的速度还是比cpu快了不少的。

2023-04-26 16:17:42 357

原创 Bert的原理

4.bert的预训练的时候,对于百分之80的情况是将一些词真的mask掉,百分之10的情况是替换成词库其他词,剩下百分之十的情况是保留。3.bert的embedding是由词元的embedding、segment的embedding、还有位置向量embedding加权得到的。embedding 的输入是30k的词库输出是H维度(可理解为CV的通道),embedding的参数为30k*H。因此bert总共需要的参数量为30k*H*L*H**2*12(L为bert的层数)。

2023-04-25 15:11:50 281 1

原创 ELMO的一些点

但是ELMo对bert的影响是深远的。bert就是基于transformer的特征提取和基于ELMo的双向的信息获取。transformer拿最简单的单词翻译而言,masked-attention只能获取前文的信息,从左到右。word2vec的损失函数是负对数条件概率,但是word2vec关注的是一个词和周围的词。对于当前的隐藏态,即当前结点的输出,取决于上一时刻的输出(隐藏态)和当前时刻的输入。xij指的是Ci集合中j出现的重数 即有i且有j的情况。这里的损失指的是两词的近似度和同时出现的次数的均方差。

2023-04-24 15:59:36 66 1

原创 distilling bert

对于图五的理解:我们需要对不同的下游任务进行训练不同的学生模型,拿一种学生模型应对所有任务是不现实的,一种与之相对的想法是训练一个12layer的学生模型,再根据任务对高度进行截断,在MNLI任务中精度不及绿色,且在模型深度受到限制时,模型的精度收到很大影响。存在以下问题:1.整个流程是预训练得到的词嵌入对最后下游任务的贡献大 还是 我们训练出来的学生模型对任务的贡献大 为了证明,我们在得到学生模型的词库后,可以重新初始化学生模型,减小模型的深度。前面两步都是在预训练语言模型,试图得到语义信息。

2023-04-22 19:28:07 98 1

原创 知识蒸馏的一些知识点

值得注意的点是:logits_pre 和 t_logits_pre 都是特征,没有经过softmax,所以并不是先softmax再/T,而是先/T在进行softmax,这对最终形成的loss的方差可以大大减小,因为softmax是x的指数函数与sum的指数函数的比值。上述训练过程可以看成模型蒸馏其实就是计算学生和老师的loss,让学生向着老师loss的大方向和自己的小方向做更新。kd_loss:对应的是teachers模型输出的损失,T为温度,作用是使模型的训练困难化。

2023-04-21 23:59:14 89

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除