自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(234)
  • 资源 (5)
  • 收藏
  • 关注

原创 Master Theorem

T(n)=aT(bn​)+f(n)where a≥1,b≥1(n)Let T(n)n​f(n(n)=Θ(nc)clogb​aT(n)=Θ(f(

2022-12-01 15:43:24 566 1

原创 NLP中的对抗训练(附PyTorch实现)

这篇博客梳理了NLP对抗训练发展的来龙去脉,介绍了对抗训练的数学定义,并对于两种经典的对抗训练方法,提供了插件式的实现,做了简单的实验对照。由于笔者接触对抗训练的时间也并不长,如果文中有理解偏差的地方,希望读者不吝指出。另外还有一些对抗训练算法,读者有兴趣可以查看一文搞懂NLP中的对抗训练以及对抗训练的理解,以及FGM、PGD和FreeLB的详细介绍这两篇文章。

2022-12-01 15:43:04 1967

原创 我们真的需要把训练集的损失降到零吗?

在训练模型的时候,我们需要将损失函数一直训练到0吗?显然不用。一般来说,我们是用训练集来训练模型,但希望的是验证机的损失越小越好,而正常来说训练集的损失降到一定值后,验证集的损失就会开始上升,因此没必要把训练集的损失降低到0既然如此,在已经达到了某个阈值之后,我们可不可以做点别的事情来提升模型性能呢?ICML2020的论文回答了这个问题,不过实际上它并没有很好的描述"为什么",而只是提出了"怎么做"

2022-12-01 15:41:09 2855 1

原创 BERT-of-Theseus

最近了解到一种称为""的BERT模型压缩方法,源自论文。这是一种以"可替换性"为出发点所构建的模型压缩方案,相比常规的剪枝、蒸馏等手段,它整个流程显得更为优雅、简洁。

2022-12-01 15:39:28 1579

原创 词向量的维度大概多少才够?

词向量的维度大概多少才够?先说结论,苏剑林大佬给出的估算结果是n>8.33logN(1)更简约的话可以直接记n>8logN,其中N是词表的大小,n是词向量的维度。当n超过这个阈值时,就说明模型有足够的容量容纳这N个词(当然n越大过拟合风险也越大)。这样一来,当N=100000时,得到的n大约是96,所以对于10万个词的词向量模型来说,维度选择96就足够了;如果要容纳500万个词,那么n大概就是128。

2022-12-01 15:38:19 992

原创 一个分布在多次Softmax后,会趋于相同

其中苏剑林大佬关于第四个问题的回复,给我产生了一些思考。为什么一个分布在多次Softmax之后,每个值会趋于相同?例如[1,100]在大约10次Softmax操作后会变成[0.5,0.5];[1,2,3,4]大约5次Softmax操作后会变成[0.25,0.25,0.25,0.25]苏剑林大佬的原话是:“这其实是一个没什么实用价值的结果,因为对Softmax的结果再次进行Softmax没有什么物理意义”。不过我还是本着好奇的心态看完了他对于这个问题的证明,感兴趣的同学直接看即可。

2022-12-01 15:35:32 935

原创 SimCSE:对比学习,只需要Dropout

要说2021年上半年NLP最火的论文,想必非《SimCSE: Simple Contrastive Learning of Sentence Embeddings》莫属。SimCSE的全称是Simple Contrastive Sentence EmbeddingSentence Embedding一直是NLP领域的一个热门问题,主要是因为其应用范围比较广泛,而且作为很多任务的基石。获取句向量的方法有很多,常见的有直接将[CLS]位置的输出当做句向量,或者是对所有单词的输出求和、求平均等。但以上方法均被证明

2022-12-01 14:47:15 1624

原创 Contrastive Loss中参数τ的理解

对比损失(Contrastive Loss)中的参数τ是一个神秘的参数,大部分论文都默认采用较小的值来进行自监督对比学习(例如0.05),但是很少有文章详细讲解参数τ的作用,本文将详解对比损失中的超参数τ,并借此分析对比学习的核心机制。ττ。

2022-12-01 14:46:01 389 1

原创 CAN: 借助数据分布提升分类性能

本文将介绍一种用于分类问题的后处理技巧(Trick),出自EMNLP 2021 Findings的一篇论文《When in Doubt: Improving Classification Performance with Alternating Normalization》。经过实测,CAN(Classification with Alternating Normalization)确实多数情况下能提升多分类问题的效果(CV、NLP通用),而且几乎没有增加预测成本,因为它仅仅只是对预测结果的重新归一化操作有

2022-12-01 14:44:33 259 1

原创 Child Tuning: 反向传播版的Dropout

这篇论文刚读的时候觉得很厉害,但了解之后就觉得这其实就是一个反向传播版的Dropout,实际的创新并没有特别大,包括其中提到的Fisher信息也并不是这篇论文提出来的。再就是论文中的实验确实很多,实验结果表明,相比于Fine Tuning大约可以提升1.5~8.6个点不等。最后要说一下这篇论文的公式证明部分,我个人觉得这篇论文的证明其实没有很严谨,例如为什么一个矩阵的期望就变成一个数了。总的来说这个方法可以作为打比赛时候的一个Trick来使用。

2022-11-16 18:44:02 496

原创 Gumbel-Softmax完全解析

本文对大部分人来说可能仅仅起到科普的作用,因为Gumbel-Max仅在部分领域会用到,例如GAN、VAE等。笔者是在研究EMNLP上的一篇论文时,看到其中有用Gumbel-Softmax公式解决对一个概率分布进行采样无法求导的问题,故想到对Gumbel-Softmax做一个总结,由此写下本文整个过程相当于我们把不可导的取样过程,从z\mathbf{z}z本身转移到了求z\mathbf{z}z的公式中的一项gig_igi​中,而gig_igi​本身不依赖p1,..,p。

2022-11-16 18:42:47 3179

原创 Virtual Data Augmentation: 虚拟数据扩增技术

实际上前面已经把这篇论文讲的很清楚了,这里没有什么好总结的,但我倒是有一点个人拙见想和大家讨论一下,因为他做MLM任务时,将整个Vocabulary都作为候选集,这样无论是对计算速度还是显存占用都不是很友好,我觉得可以将其改为取出概率最大的前Top k个token,这个k可以取的稍微大一点,例如200, 300等,这样可以保证取到后面一些语义上不那么相近的token的同时,避免对整个Vocabulary进行运算,至少不会生成几万几十万那么夸张的概率分布。

2022-11-16 18:42:22 602

原创 简单到令人沮丧的替代MLM的预训练任务?

本文主要创新点是作者提出了可以替代MLM的5个新的预训练任务,因为MLM是token级别的,所以这5个任务也是token级别的。明年EMNLP会不会有人提出sentence级别的,用于替代NSP/SOP的预训练任务呢?,简单到令人沮丧的xxxx,这种标题在我印象中已经看到好几次了,有一种标题党的感觉。

2022-09-21 17:41:10 479

原创 文本数据扩增时,哪些单词(不)应该被选择?

这篇论文提出了一种有选择性的文本扩增方法。具体来说,论文设定了四种角色,并且将每个单词分配为一个角色,面对不同的扩增手段,对不同角色的单词进行操作。这样可以有效地避免信息损失,并且生成高质量的文本数据。

2022-09-21 12:01:27 225

原创 $\mathcal{Y}$-Tuning: 通过对标签表征进行微调的深度学习新范式

本文提出的Y-Tuning思路非常有意思,传统思路是对输入句子进行学习,使其输出向量靠近标签的分布;而这篇文章正好相反,对标签进行学习。让我有些意外的点是,损失函数并不是传统的CrossEntropyLoss,因为在我看来就直接将输出向量转换维度之后与真实标签进行对比就好了。但是论文使用的损失函数是Triplet Loss,不知道为什么作者为什么要这样做。

2022-09-21 12:00:40 163

原创 LLD: 内部数据指导的标签去噪方法

这篇文章本质上来讲,可以看作是多目标联合训练,除了传统的分类任务,引入了一个新的任务,这个任务的目标是希望两个句子的相似度与它们预测概率分布的相似度比较接近。反映到损失函数中来看就是在传统损失的后面添加了一项。阅读完这篇论文之后,说实话我不太确定它能否被ACL录用。

2022-09-21 11:59:56 537

原创 Flooding-X: 超参数无关的Flooding方法

ICML2020的论文《Do We Need Zero Training Loss After Achieving Zero Training Error?》提出了一种Flooding方法,用于缓解模型过拟合,详情可以看我的文章《我们真的需要把训练集的损失降到零吗?》。这里简单过一下,论文提出了一个超参数bbb,并将损失函数改写为L~(θ)=∣L(θ)−b∣+b(1)\tilde{\mathcal{L}}(\boldsymbol{\theta}) = |\mathcal{L}(\boldsymbol{\

2021-12-11 22:28:25 1536 1

原创 训练一个专门捣乱的模型

三位韩国人在EMNLP 2021 Findings上发表了一篇论文,名为Devil’s Advocate: Novel Boosting Ensemble Method from Psychological Findings for Text Classification,其中Devil’s Advocate有一部同名电影,翻译过来叫「魔鬼代言人」,他们主要挑战的是传统模型融合的方法,例如硬投票(Hard-Voting)、软投票(Soft Voting)、Bagging等。源码在HwiyeolJo/Devi

2021-11-22 13:35:58 2055 4

原创 PyTorch中的梯度累积

我们在训练神经网络的时候,超参数batch_size的大小会对模型最终效果产生很大的影响,通常的经验是,batch_size越小效果越差;batch_size越大模型越稳定。理想很丰满,现实很骨感,很多时候不是你想增大batch_size就能增大的,受限于显存大小等因素,我们的batch_size往往只能设置为2或4,否则就会出现"CUDA OUT OF MEMORY"(OOM)报错。如何在有限的计算资源下,采用更大的batch_size进行训练,或者达到和大batch_size一样的效果?这就是梯度累加(

2021-09-07 11:15:21 2239

原创 最强的数据扩增方法竟然是添加标点符号?

今天的这篇文章源自于EMNLP 2021 Findings,论文标题为《AEDA: An Easier Data Augmentation Technique for Text Classification》。实际上用一句话即可总结全文:对于文本分类任务来说,在句子中插入一些标点符号是最强的数据扩增方法AEDA Augmentation读者看到这肯定会想问:添加哪些标点符号?加多少?对于这些问题,原论文给出了非常详细的解答,同时这部分也是论文唯一有价值的地方,其他部分的文字叙述基本是在说一些基础概念,或

2021-09-07 11:14:54 421

原创 稀疏Softmax(Sparse Softmax)

本文源自于SPACES:“抽取-生成”式长文本摘要(法研杯总结),原文其实是对一个比赛的总结,里面提到了很多Trick,其中有一个叫做稀疏Softmax(Sparse Softmax)的东西吸引了我的注意,查阅了很多资料以后,汇总在此Sparse Softmax的思想源于《From Softmax to Sparsemax: A Sparse Model of Attention and Multi-Label Classification》、《Sparse Sequence-to-Sequence Mo

2021-09-03 16:28:26 2945

原创 使用分词增强Typecho的搜索功能

本博客是使用Typecho搭建的,侧边提供了搜索功能,然而Typecho内置的搜索功能仅仅只是基于字符串的全匹配查找,功能非常鸡肋,很多合理的查询都没法得到结果,比如“Transformer的文章”、“BERT的相关内容”都没有查询结果,因为文章中都不包含这些字符串之前看到过苏剑林大佬的文章增强typecho的搜索功能,一开始觉得太麻烦,于是并没有考虑采用它的方法,转而在网上找一些增强Typecho搜索功能的插件。兜兜转转找了很多,发现效果都不是太好,最后还是决定考虑采用苏剑林大佬的方法首先Typech

2021-09-03 16:27:04 511

原创 从loss的硬截断、软化到Focal Loss

对于二分类模型,我们总希望模型能够给正样本输出1,负样本输出0,但限于模型的拟合能力等问题,一般来说做不到这一点。而事实上在预测中,我们也是认为大于0.5的就是正样本了,小于0.5的就是负样本。这样就意味着,我们可以“有选择”地更新模型,比如,设定一个阈值为0.6,那么模型对某个正样本的输出大于0.6,我就不根据这个样本来更新模型了,模型对某个负样本的输出小于0.4,我也不根据这个样本来更新模型了,只有在0.4~0.6之间的,才让模型更新,这时候模型会更“集中精力”去关心那些“模凌两可”的样本,从而使得分类

2021-05-08 08:23:44 653

原创 长江雨课堂习题答案获取

事先声明本教程仅在长江雨课堂试验没问题,雨课堂应该同理,只需要把下面所有的URL由changjiang.yuketang.cn改为yuketang.cn本教程仅适用于课堂习题,不适用课后测验或考试本人仅本着学术研究的态度,请勿用于违法内容本教程并不是万能的,需要有一个人勇于牺牲获取课程ID如下图所示,进入长江雨课堂后,点击一个课程详情页,地址栏中最后面的一串数字就是该课程的ID查看课程详情具体来说,通过长江雨课堂提供的api接口https://changjiang.yuketang.c

2020-12-04 12:57:08 46355 6

原创 Longformer详解

IntroductionLongformer是一种可高效处理长文本的模型,出自AllenAI 2020年4月10日。目前已经开源,而且可以通过huggingface快速使用传统Transformer-based模型在处理长文本时存在一些问题,因为它们均采用"我全都要看"型的attention机制,即每一个token都要与其他所有token进行交互,无论是空间还是时间复杂度都高达O(n2)O(n^2)O(n2)。为了解决这个问题,之前有些工作是将长文本切分为若干个较短的Text Segment,然后逐个处

2020-11-13 15:24:00 8549 2

原创 BERT and its family

大名鼎鼎的芝麻街预训练语言模型的缩写大多是芝麻街的人物。这显然是起名艺术大师们的有意为之。他们甚至都可以抛弃用首字母缩写的原则去硬凑出芝麻街人名上图所示的模型(除了Big Bird,因为没有这个模型)他们之间都有一些共同点,就是能通过一个句子的上下文来给一个词进行Embedding,而能达到这种目的的网络架构有很多,例如LSTM,Self-attention layers,Tree-based model(注重文法,一般表现不佳,只有在文法结构非常严谨的情况下表现好)等等Smaller Model.

2020-11-13 15:22:49 527

原创 三种Cross-lingual模型 (XLM, XLM-R, mBART)详解

本文将详述三种Cross-lingual模型,按照其在Arxiv上发表论文的时间,分别是XLM(2019/1/22)、XLM-R(2019/11/5)、mBART(2020/1/22),有意思的是这三篇文章均出自FaceBook,他们是不是对跨语言模型有什么执念?XLM (Cross-lingual Language Model Pretraining)尽管原有的BERT模型可以在上百种语言上进行预训练,但是语言之间的信息并不是互通的,不同的语言模型之间没有共享知识。Facebook的XLM模型克服了信

2020-11-13 15:18:29 7408 1

原创 BART详解

一切都得从Transformer说起。Transformer左半边为Encoder,右半边为Decoder。我们将Encoder输入的句子称为source,Decoder输入的句子称为target[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RE29V0aK-1605251758733)(https://s1.ax1x.com/2020/04/25/JyCdy9.png#shadow)]Encoder负责将source进行self-attention并获得句子中每个词的r

2020-11-13 15:16:22 17717 3

原创 RoBERTa概述

RoBERTa相较于BERT最大的改进有三点:动态Masking取消NSP (Next Sentence predict) 任务扩大Batch Size静态Masking vs 动态Masking静态Maksing:在数据预处理期间Mask矩阵就已生成好,每个样本只会进行一次随机Mask,每个Epoch都是相同的修改版静态Maksing:在预处理的时候将数据拷贝10份,每一份拷贝都采用不同的Mask,也就说,同样的一句话有10种不同的mask方式,然后每份数据都训练N/10个Epoch动

2020-11-13 15:15:48 2662

原创 Tacotron2 Inference教程

目录结构本教程实验环境为Google Colab,文件目录结构如下ALL└── tacotron2 ├── audio_processing.py ├── checkpoint_269000 ├── data_utils.py ├── demo.wav ├── distributed.py ├── Dockerfile ├── filelists │ ├── ljs_audio_text_test_filelist.txt │

2020-10-24 16:37:04 1582 5

原创 StructBERT详解

StructBERTStructBERT: Incorporating Language Structures into Pre-training for Deep Language UnderstandingStructBERT是阿里对的一个BERT改进,模型取得了很好的效果,目前在GLUE排行榜上排名第二首先我们看下面一个英文和中文两句话i tinhk yuo undresatnd this sentneces.研表究明,汉字序顺并不定一影阅响读。比如当你看完这句话后,才发这现里的字全是都

2020-10-19 18:25:08 1472

原创 Sentence-Transformer的使用及fine-tune教程

简述Sentence-Transformer官方文档写的很详细,里面有各种你可能会用到的示例代码,并且都有比较详细的说明,如果有什么问题,应该先去看官方文档本文主要从两种情况来介绍如何使用Sentence-Transformer,一种是直接使用,另一种是在自己的数据集上fine-tune首先,无论何种场景,您都应该先安装以下两个库pip install -U sentence-transformerspip install -U transformers直接使用Sentence-Transf

2020-10-19 18:24:34 19106 18

原创 Sentence-BERT详解

简述BERT和RoBERTa在文本语义相似度(Semantic Textual Similarity)等句子对的回归任务上,已经达到了SOTA的结果。但是,它们都需要把两个句子同时送入网络,这样会导致巨大的计算开销:从10000个句子中找出最相似的句子对,大概需要5000万(C100002=49,995,000C_{10000}^2=49,995,000C100002​=49,995,000)个推理计算,在V100GPU上耗时约65个小时。这种结构使得BERT不适合语义相似度搜索,同样也不适合无监督任务,

2020-10-13 18:03:46 15974 12

原创 Siamese Network & Triplet NetWork

Siamese Network(孪生网络)简单来说,孪生网络就是共享参数的两个神经网络在孪生网络中,我们把一张图片X1X_1X1​作为输入,得到该图片的编码GW(X1)G_W(X_1)GW​(X1​)。然后,我们在不对网络参数进行任何更新的情况下,输入另一张图片X2X_2X2​,并得到改图片的编码GW(X2)G_W(X_2)GW​(X2​)。由于相似的图片应该具有相似的特征(编码),利用这一点,我们就可以比较并判断两张图片的相似性孪生网络的损失函数传统的Siamese Network使用Contr

2020-10-13 18:02:39 2693

原创 英文文本关系抽取(fine-tune Huggingface XLNet)

本文主要是基于英文文本关系抽取比赛,讲解如何fine-tune Huggingface的预训练模型,同时可以看作是关系抽取的一个简单案例数据预览训练数据包含两列。第一列是文本,其中<e1></e1>包起来的是第一个实体,<e2></e2>包起来的是第二个实体。第二列是关系,除了"Other"这个关系以外,其它关系都有先后顺序,比方说第一个样本:“伤害是由邀请制度造成的”,其中"harm"是因果关系中的果,而"system"是因,所以最终label是"Cau

2020-09-28 11:37:06 2664 2

原创 BERT Word Embeddings Tutorial

本文译自BERT Word Emebddings Tutorial,我将其中部分内容进行了精简。转载请注明出处1. Loading Pre-Trained BERT通过Hugging Face安装BERT的PyTorch接口,该库还包含其它预训练语言模型的接口,如OpenAI的GPT和GPT-2如果您在Google Colab上运行此代码,每次重新连接时都必须安装此库!pip install transformersBERT是由Google发布的预训练模型,该模型使用Wikipedia和Book

2020-09-28 11:36:00 791

原创 百度语音合成模型Deep Voice3

INTRODUCTIONDeep Voice3是由百度提出的一个全新的全卷积TTS架构。百度的主要工作分为如下五个方面:提出了一个全卷积的 character-to-spectrogram 架构,它能并行计算,并且比使用循环单元的架构快Deep Voice3训练非常快,并且可以扩展到LibriSpeech语音数据集,该数据集包含来自2484个说话人的820小时音频数据可以产生单调的注意力行为 (monotonic attention behavior),避免了seq2seq语音合成中常见的错误比

2020-09-28 11:31:15 5344

原创 ALBERT详解

BERT的问题BERT 发布后,在排行榜上产生了许多 NLP 任务的最新成果。但是,模型非常大,导致了一些问题。"ALBERT"论文将这些问题分为两类:内存限制考虑一个包含一个输入节点,两个隐藏节点和一个输出节点的简单神经网络。即使是这样一个简单的神经网络,由于每个节点有权重和偏差,因此总共有7个参数需要学习BERT-large是一个复杂的模型,它有24个隐藏层,在前馈网络和多头注意力机制中有很多节点,总共有3.4亿个参数,如果想要从零开始训练,需要花费大量的计算资源模型退化最近在NLP领域

2020-09-28 11:30:28 2794

原创 Tacotron2 模型详解

1 概述Tacotron2是由Google Brain在2017年提出来的一个End-to-End语音合成框架。模型从下到上可以看作由两部分组成:声谱预测网络:一个Encoder-Attention-Decoder网络,用于将输入的字符序列预测为梅尔频谱的帧序列声码器(vocoder):一个WaveNet的修订版,用于将预测的梅尔频谱帧序列产生时域波形2 编码器Encoder的输入是多个句子,每个句子的基本单位是character,例如英文"hello world"就会被拆成"h e.

2020-09-28 11:29:19 5766

原创 Tacotron2 论文阅读

论文下载ABSTRACT这篇论文描述了Tacotron 2, 一个直接从文本合成语音的神经网络架构。系统由两部分构成,一个循环seq2seq结构的特征预测网络,把字符向量映射为梅尔声谱图,后面再接一个WaveNet模型的修订版,把梅尔声谱图合成为时域波形。我们的模型得到了4.53的平均意见得分(MOS),专业录制语音的MOS得分是4.58。为了验证模型设计,我们对系统的关键组件作了剥离实验研究,并且评估了使用梅尔频谱替代语言学、音长和F0特征作为WaveNet输入带来的不同影响。我们进一步展示了使用紧

2020-09-28 11:27:27 793

Java实现算术表达式词法分析程序

Java实现算术表达式词法分析程序,更多详情可以查看博客wmathor.com

2018-11-10

Java实现编译原理DFA图转换

给定算术表达式的DFA图,利用Java语言构建Trie树,实现对输入文法的判断

2018-11-10

2017年第八届蓝桥杯决赛真题

Java,C/C++,ABC组都有,绝对全,2积分很便宜了,快下吧

2018-04-21

基于MFC的云手机销售系统

有源码,下载之后将debug文件夹里的txt文本放至D盘跟目录下即可开始运行,百分百可运行,学生课程设计,毕业设计不二之选

2017-12-18

MFC制作的计算器

使用MFC制作一个个人简易计算器,新手刚入门的都能理解,运行直接使用

2017-12-02

空空如也

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

TA关注的人

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