Introduction
本篇文章主要介绍如何使用 Tensorbay 和 Tensorflow 进行简单的文本分类。
我们首先介绍 Tensorbay 相关使用,然后简单介绍 NLP 领域常用的分类模型:TextCNN,最后将所有的串起来完成一个简单的文本分类任务。
本篇文章主要介绍如何使用 Tensorbay 和 Tensorflow 进行简单的文本分类。
我们首先介绍 Tensorbay 相关使用,然后简单介绍 NLP 领域常用的分类模型:TextCNN,最后将所有的串起来完成一个简单的文本分类任务。
一句话概述:即使在简单模型上,使用 SimCSE 和 R-Drop 也能够起到一定效果,但太简单的模型(类似 TextCNN)效果可能不太明显。如果嫌麻烦也可以不用,但 Dropout 最好使用,主要用在稠密连接,比如 Embedding、Concat、Attention、FC 等层的后面。
如果只想看结论,到这里就可以结束啦。
论文:[2106.14448] R-Drop: Regularized Dropout for Neural Networks
Code:dropreg/R-Drop
一句话概述:用 KL 散度作为损失的 SimCSE。
摘要:Dropout 是深度学习训练时广泛使用的正则化工具,本文提出 R-Drop,强迫不同 Dropout 模型(就是带 Dropout 的模型跑两次数据)的输出分布彼此保持一致。具体通过最小化两个输出的双向 KL 散度,R-Drop 降低了模型参数的自由度并补充了 Dropout,从而降低了模型的空间复杂度,增强了泛化能力。效果那自然也是非常不错的。
最近在写深度学习开源库时,遇到了读取语料并预处理的 API,于是趁此机会整理一下之前积累的关于高性能的内容。全文包括两个部分:第一部分主要聚焦在常用工具 Pandas 处理数据时不同操作方法的性能;第二部分主要介绍一些加速数值计算的工具;第三部分主要介绍一些能够辅助增加性能的工具。
如果懒得看过程,可以直接看结论:
numba 或 Cython 加速;使用 .values 计算df.itertuples 或 df.apply 方法所有测试代码在:Note_DS/Performance.ipynb
Git 相关备忘。
Docker 备忘。
论文:[1905.03197] Unified Language Model Pre-training for Natural Language Understanding and Generation
一句话概述:一个通过参数共享训练多种语言模型以同时适应下游 NLU 和 NLG 微调的统一框架。
摘要:UniLM,统一的预训练语言模型,可以同时微调 NLU 和 NLG 任务。做法是使用三个不同类型的语言模型任务:单向、双向、Seq2Seq 预测。具体是使用一个共享的 Transformer 网络,并利用不同的 Self-Attention Mask 来控制预测基于哪些上下文。结果自然是很好(不,极好)的。
论文:[2012.15671] Vocabulary Learning via Optimal Transport for Machine Translation
一句话概述:借鉴边际效用通过最优转移学习词表。
摘要:机器翻译词表影响性能,本文旨在弄清楚什么是好的词表,以及是否可以在不尝试训练的情况下找到最佳词表。为此,作者首先从信息论的视角提供对词表作用的另一种理解。受此启发,将词汇化的探索 —— 找到具有适当大小的最佳词表—— 作为最优转移问题。提出了 VOLT,一个简单有效的无须尝试训练的解决方案。实验结果表明,VOLT 在各种场景中优于广泛使用的词表。此外,与 BPE-search 相比,VOLT 将搜索时间从 384 GPU 小时减少到 30 GPU 小时。
论文:[2104.08821] SimCSE: Simple Contrastive Learning of Sentence Embeddings
Code:princeton-nlp/SimCSE: SimCSE: Simple Contrastive Learning of Sentence Embeddings
一句话概述:Dropout 增益句子 Embedding。
摘要:本文提出一个简单的对比学习框架,极大地提高了句子的表征能力。首先是无监督的方法,使用一个输入句子,在对比目标中预测自己,这里仅使用标准的 dropout 作为噪声。接下来将 NLI 数据集中的标注对合并到对比学习中,“蕴涵”对作为正例,“矛盾”对作为负例。最后,论文还发现对比学习在理论上能够将预训练 Embedding 的各向异性空间正则化,使其更加均匀,而且有监督信号可用时,可以更好地对齐正例对。
