admin 发布的文章

FLAT主要创新点在于:
(1)基于Transformer设计了一种巧妙position encoding来融合Lattice结构,可以无损的引入词汇信息。
(2)基于Transformer融合了词汇信息的动态结构,支持并行化计算,可以大幅提升推断速度。

一、背景

ACL2020中一篇来自复旦大学邱锡鹏老师团队的 FLAT: Chinese NER Using Flat-Lattice Transformer 刷新了中文NER任务的新SOTA。
论文链接:https://arxiv.org/pdf/2004.11795.pdf

开源代码:https://github.com/LeeSureman/Flat-Lattice-Transformer

二、

一、查看通过pip库版本

1.查看已经安装的所有库版本
pip list
2.查看已经安装的某个库版本
pip show paddlenlp
3.查看将要安装的某个库版本
pip index versions [your python module name]
例如:
pip index versions paddlenlp

或者
pip install  paddlenlp==

二、pip离线安装一个包

1.离线下载
#pip download 你的包名 -d "下载的路径(windows下双引号来表示文件夹)"
pip download paddlenlp -d pipDownloadTest
2.离线安装
# 模块有依赖包的把所有包放在一个文件夹下,执行以下命令安装
pip install --no-index --find-link=./pipDownloadTest paddlenlp

三、pip离线安装多个包

1.制作requirement.txt

此处制作requirement只是为了测试,pip freeze命令可将已安装的模块列表打印出来。实际应用中只需把要安装的包及版本信息写入一个文本文件。后续用写入pip包的文本文件代替后续命令中的requirement.txt文件。

pip freeze > requirement.txt
2.离线下载
pip download -d offline_packages -r requirements.txt #批量下载
pip download -d offline_packages [package_name] #单个包下载
3.离线安装
pip install --no-index --find-links=./offline_packages/ -r requirements.txt #批量安装
pip install --no-index --find-links=./offline_packages/ [package_name] #单个包安装

四、修改源
1.临时修改

pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/

2.永久修改

r-drop本质上是一种有监督的数据增强方式
SimCse本质上是一种无监督的数据增强方式
对比学习标准流程:对比学习的标准流程是同一个样本通过不同的数据扩增手段得到的结果视为正样本对,而 batch 内的所有其他样本视为负样本,然后就是通过 loss 来缩小正样本的距离、拉大负样本的距离了。

一、相关背景

关注 NLP 新进展的读者,想必对2021年4月份发布的 SimCSE印象颇深,它通过简单的“Dropout 两次”来构造正样本进行对比学习,达到了无监督语义相似度任务的全面 SOTA。无独有偶,最近2021年6月份的论文《R-Drop: Regularized Dropout for Neural Networks》提出了 R-Drop,它将“Dropout两次”的思想用到了有监督任务中,每个实验结果几乎都取得了明显的提升。此外,笔者在自己的实验还发现,它在半监督任务上也能有不俗的表现
论文标题:R-Drop: Regularized Dropout for Neural Networks

论文链接:https://arxiv.org/abs/2106.14448

代码链接:https://github.com/dropreg/R-Drop

所以难度主要集中在数据扩增手段上。对于 NLP 来说,我们很难人工构建保证语义不变的数据扩增,所以 SimCSE 干脆不人工进行数据扩增,而是通过“Dropout 两次”的方式来得到同一个输入的不同特征向量,并将它们视为正样本对。奇怪的是,这个简单的“Dropout 两次”构造正样本,看上去是一种“无可奈何”的妥协选择,但消融实验却发现它几乎优于所有其他数据扩增方法,令人惊讶之余又让人感叹“大道至简”。

在实现上,SimCSE 也相当简单,所谓“Dropout 两次”,只需要将样本重复地输入到模型,然后计算相应的 loss 就行了,如上图所示。由于 Dropout 本身的随机性,每个样本的 Dropout 模式都是不一样的,所以只要单纯地重复样本,就可以实现“Dropout 两次”的效果。

二、算法结构

从结果上来看,SimCSE 就是希望 Dropout对模型结果不会有太大影响,也就是模型输出对 Dropout 是鲁棒的。所以很明显,“Dropout 两次”这种思想是可以推广到一般任务的,这就是 R-Drop(Regularized Dropout)。
未命名文件 (2).png

1.损失函数

损失函数由两部分组成:常规的交叉熵损失函数+KL散度约束的相对熵
cr.png
kls.png
zz.png

参考:
https://mp.weixin.qq.com/s/IvhGbFEMotpKJIUPExUklg