精华内容
下载资源
问答
  • 简介 通过精调预训练深层语言模型,很多NLP任务都取得了巨大的提升。然而,这样的顺序迁移学习通常会遇到灾难性遗忘问题。为此,我们提出了且回忆且学习的机制,通过采用多任务学习同时学习预训练任务和目标任务。...

    来自:哈工大SCIR

    论文名称:Recall and Learn: Fine-tuning Deep Pretrained Language Models with Less Forgetting

    论文作者:陈三元,侯宇泰,崔一鸣,车万翔,刘挺,余翔湛

    原创作者:陈三元

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

    本文转载自:哈工大SCIR

    1. 简介

    通过精调预训练深层语言模型,很多NLP任务都取得了巨大的提升。然而,这样的顺序迁移学习通常会遇到灾难性遗忘问题。为此,我们提出了且回忆且学习的机制,通过采用多任务学习同时学习预训练任务和目标任务。我们提出了预训练模拟机制在没有预训练数据时回忆预训练的知识,以及目标迁移机制将学习目标逐步迁移至目标任务上。实验表明我们在GLUE上达到了的最优性能。我们还将提出的机制集成到Adam优化器中,提供了开源的RecAdam优化器(https://github.com/Sanyuan-Chen/RecAdam)。

    2. 背景

    在本节中,我们介绍两种迁移学习范式:顺序迁移学习和多任务学习。它们都旨在通过在多个任务中迁移知识来提升模型的学习性能,但是适用于不同的情景。

    2.1 顺序迁移学习

    顺序迁移学习(Sequential Transfer Learning)依次学习源任务和目标任务,通过从源任务迁移知识,来提高模型在目标任务上的性能。它通常包括两个阶段:预训练和适应。在预训练阶段,我们使用损失函数 在源任务上训练模型。在适应阶段中,我们使用损失函数 在目标任务上进一步训练预训练得到的模型。适应方法通常包括精调和特征提取:精调会更新预训练模型的所有参数,而特征提取会将预训练模型视为特征提取器,并在适应阶段将预训练参数保持固定。顺序迁移学习近些年被广泛地使用,已经发布的深层预训练语言模型在众多NLP任务上都取得了巨大的成功[1, 2, 3]。虽然将深层预训练语言模型适应目标任务非常有效,但它容易发生灾难性遗忘的问题:当模型从目标任务中学习新知识时,它会忘记先前从源任务中学习到的知识。

    2.2 多任务学习

    多任务学习(Multi-task Learning)同时学习多个任务,并通过在这些任务之间共享知识来提高模型在所有任务上的性能[4, 5]。通过多任务学习的方式,我们使用以下损失函数同时在源任务和目标任务上训练模型:

    其中 是平衡这两个任务的超参数。由于源任务上的损失 始终是优化目标的一部分,多任务学习可以内在地避免灾难性遗忘问题。为了克服顺序迁移学习的灾难性的遗忘问题(如2.1节讨论),我们可以将多任务学习的思想直接应用于深层预训练语言模型的适应阶段吗?实际上,会存在以下两个挑战:

    1. 我们在适应阶段无法访问预训练数据来计算

    2. 适应阶段的优化目标是 ,而多任务学习旨在优化 ,即 的加权和。

    3. 方法

    在本节中,我们介绍了预训练模拟机制(3.1节)和目标迁移机制(3.2节),用来分别克服以上提及的两个挑战(如2.2节讨论)。预训练模拟机制使模型无需预训练数据即可学习源任务,而目标迁移机制则使模型逐渐专注于学习目标任务。我们还介绍了RecAdam优化器(3.3节),用来将这两种机制集成到常用的Adam优化器中。

    3.1 预训练模拟机制

    对于无法获得预训练数据的第一个挑战,我们提出了预训练模拟机制,将源任务的优化目标近似为二次惩罚,使得模型的参数与预训练模型的参数保持接近。

    我们借鉴弹性权重合并(Elastic Weight Consolidation)方法[6, 7],使用拉普拉斯方法和模型参数之间的独立性假设来近似源任务的优化目标。由于EWC需要预训练数据,因此我们进一步引入了更强的独立性假设,并得出了与预训练数据无关的二次惩罚。以下我们介绍详细的推导过程。

    从概率的角度,源任务的学习目标 是在给定源任务数据 的条件下优化模型参数 的负对数后验概率:

    预训练模型参数 可以被认为是参数空间上的一个局部最小收敛点,并满足以下公式:

    由于无法直接求解优化目标 ,我们使用拉普拉斯方法[8]局部近似优化目标:

    其中 是优化目标在参数为 时关于参数 的Hessian矩阵, 是关于参数 的常数项,所以我们可以在训练时将其忽略。

    由于预训练模型在源任务上已经收敛, 可以通过经验Fisher信息矩阵 进行近似求解:

    其中 是源任务数据 中的独立同分布的样本数量, 是负对数先验概率 在参数为 时关于参数 的Hessian矩阵。

    由于过高的计算复杂度,EWC方法使用 的对角线值来近似计算 ,并且忽略先验Hessian矩阵

    其中 是模型参数 所对应的对角Fisher信息矩阵值。

    由于我们无法得到预训练的数据集,我们进一步引入一个更强的假设来近似计算 :每一个对角Fisher信息矩阵值 与相应的模型参数 是相互独立的:

    最终,我们近似得到的源任务的优化目标是模型参数和预训练参数之间的二次惩罚:

    其中 是二次惩罚的系数值。

    3.2 目标迁移机制

    对于多任务学习的优化目标与适应阶段不一致的第二项挑战,我们提出了目标迁移机制,通过使用退火系数使优化目标逐步迁移至目标任务上的损失函数

    我们用退火函数 代替多任务学习优化目标中的系数 ,其中 表示精调阶段的更新时间步数。于是,我们的损失函数表示为包含退火系数的多任务学习的优化目标:

    具体地,为了更好地平衡多任务学习和精调,我们使用sigmoid退火函数[9, 10]计算

    其中 是控制退火函数的速率和时间步数的超参数。

    图1 目标迁移机制:我们用退火函数 代替多任务学习优化目标中的系数 。精调和多任务学习可以视为我们的方法的特例( )。

    如图1所示,在训练进程的开始阶段,模型通过更多地关注预训练任务来更多地学习一般性知识。随着训练的进行,模型逐渐关注于目标任务,并在回忆预训练任务的知识的同时更多地学习目标领域的特定知识。在训练进程的最后阶段,模型完全专注于目标任务的学习,最终收敛时的优化目标是

    精调和多任务学习可以视为我们的方法的特例。当 时,我们的方法可以视作为精调。模型首先使用 在源任务上进行预训练,然后使用 学习目标任务。当 时, 是一个常函数,我们的方法可以视作为多任务学习。模型使用损失函数 同时学习源任务和目标任务。

    3.3 优化器

    Adam优化器[11]通常被用于精调深层预训练语言模型。我们提出Recall Adam(RecAdam)优化器,将预训练模拟机制(3.1节)和目标平移机制(3.2节)机制的核心因子二次惩罚项和退火系数融入Adam优化器,并将它们从梯度更新算法中解耦。

    [12]观察到L2正则化和权重衰减对于诸如Adam的自适应梯度算法并不相同,通过将权重衰减从Adam梯度更新算法中解耦,得到AdamW优化器,并且从理论上和经验上证实可以有效地提高Adam的性能。

    同样地,当使用Adam优化器精调预训练语言模型时,我们有必要将二次惩罚和退火系数从梯度更新算法中解耦。否则,二次惩罚和退火系数都将通过梯度更新规则进行调整,从而导致不同的模型权重所对应二次惩罚的大小是不同的。

    算法1中显示了Adam和RecAdam之间的比较,其中SetScheduleMultiplier(t)(第11行)代指获取步长比例因子的过程(例如预热技术)。

    算法1的第6行显示了如何使用原始的Adam优化器实现二次惩罚和退火系数。目标任务的损失函数的梯度 与二次惩罚的梯度 的加权和通过梯度更新规则进行调整,从而导致模型权重之间有着不一致量级的二次惩罚。例如有着较大梯度 的权重将具有更大的二阶矩v,从而会受到相较于其他权重更小的惩罚。

    通过使用RecAdam优化器,我们在算法1的第12行中将二次惩罚的梯度 与退火系数 从梯度更新算法中解耦。这样,只有目标任务的损失函数的梯度 在优化步骤中进行调整,并且训练模型的所有权重将以相同的比率 进行更有效的惩罚。

    由于RecAdam优化器仅是基于Adam优化器的一行算法的修改,因此我们可以通过提供其他参数(预训练模型的参数以及预训练模拟机制和目标迁移机制的超参数)来很方便使用RecAdam优化器。

    4. 实验结果

    我们使用深层预训练语言模型BERT-base[13]和ALBERT-xxlarge[3] 在通用语言理解评估(GLUE)数据集[14]进行实验来评估我们的方法。

    表1显示了基于BERT-Base和ALBERT-xxlarge模型在GLUE数据集的开发集上我们提出的RecAdam精调方法与普通精调方法的单任务单模型的比较结果。表2显示了基于BERT-Base模型在GLUE数据集的测试集上我们提出的RecAdam精调方法与普通精调方法的单任务单模型的比较结果。

    表1 GLUE 数据集的开发集上的最先进的单任务单模型结果。

    表2 GLUE 数据集的测试集上的单任务单模型结果,由 GLUE 服务器进行评分。我们提交 了在每个开发集上得到的最佳模型的结果。

    4.1 基于BERT-base的结果

    基于BERT-base模型,我们在GLUE数据集8个任务中的7个任务上实现了优于基线方法的开发集结果,并且平均在每个任务上提高了1.0%的中位数结果和1.1%的最大值结果。

    尤其对于训练数据较小(<10k)的任务,与普通的精调方法相比,我们的方法可以实现显着的提升(平均+1.7%)。由于训练数据的缺乏,这些任务上进行的普通的精调会较为脆弱,并且容易出现过拟合和灾难性遗忘的问题[15, 16]。借助所提出的RecAdam方法,我们可以通过在学习目标任务时回忆预训练任务的知识从而实现更好的精调。

    值得注意的是,相较于普通精调BERT-large模型,我们可以通过使用RecAdam方法精调BERT-base模型在一半以上的任务上获得更好的结果(RTE:+ 4.0%,STS:+ 0.4%,CoLA:+ 1.8%,SST:+ 0.4%,QQP:+ 0.1%),并且在所有GLUE任务上平均能够取得更好的中位数结果(+ 0.5%)。得益于RecAdam方法可以有效地减少灾难性遗忘,我们可以使用包含更少参数的预训练模型来获得更好的实验结果。

    为了验证开发集上的最佳模型的泛化性,表2提供了在GLUE数据集的测试集上的基于BERT-base的模型的单任务单模型的结果。与开发集上的结果类似,我们在GLUE数据集8项任务中的7项任务上取得了相同或更好的结果,并且平均提高了1.0%的分数。相比于训练数据较大(>10k)的任务上的结果(平均+ 0.3%),我们在训练数据较小(<10k)的任务中获得了更大的改进(平均+ 1.7%)。这与我们在开发集的提升效果是一致的,体现了所提出的RecAdam方法的泛化性和有效性。

    4.2 基于ALBERT-xxlarge的结果

    基于最先进的ALBERT-xxlarge模型,我们在GLUE数据集的8个任务中的5个任务上实现了优于基线方法的开发集结果,并在GLUE数据集的开发集上实现了单任务单模型的最先进的平均中位数结果90.2%。

    与基于BERT-base模型的结果相似,我们发现我们的提升主要来自训练数据较少(<10k)的任务,我们可以基于ALBERT-xxlarge模型在这些任务上平均提高+ 1.5%的性能。此外,与[3]的结果相比,我们可以无需在MNLI任务上进行第二阶段的预训练,在RTE(+0.1%),STS(-0.1%)和MRPC(+ 1.0%)任务上取得相似或更好的中位数结果。

    总体而言,基于ALBERT-xxlarge模型,我们平均在每个任务上提高了0.7%中位数结果,较低于我们基于BERT-base模型所获得的提升(+ 1.0%)。借助于先进的模型设计和预训练技术,ALBERT-xxlarge在GLUE数据集上获得了显著的性能提升,从而较难取得进一步的提升。

    4.3 初始化分析

    表3 不同的模型初始化策略的比较:预训练初始化策略和随机初始化策略

    通过使用基于预训练模拟机制和目标迁移机制的RecAdam方法,我们可以使用随机值初始化模型参数,并在学习新任务的同时回顾预训练任务的知识。

    那么初始化策略的选择是否会对我们的RecAdam方法的性能产生影响呢?表2显示了基于不同初始化策略使用RecAdam方法精调BERT-base模型的结果比较。结果表明,基于随机初始化策略和预训练初始化策略,RecAdam精调方法都可以在所有的四个任务上得到优于普通精调方法的结果。对于STS任务,通过预训练初始化的模型可以得到与随机初始化相同的结果。对于其他任务(CoLA,MRPC,RTE),随机初始化模型是更优的选择。这是因为通过随机初始化策略,模型会受益于更大参数搜索空间。相比而言,如果使用预训练模型的参数进行初始化,模型的搜索空间将受限于预训练模型参数附近,从而使模型较难去逃离次优的局部最小区域从而在目标任务上取得更好的性能。

    4.4 遗忘分析

    图2 在CoLA数据集上使用有着不同的 值的RecAdam方法精调BERT-base的学习曲线。

    如3.2节所述,我们使用目标迁移机制实现了多任务精调方法,使模型的学习目标逐渐从源任务迁移到目标任务。其中超参数 用来控制目标迁移的速率。

    图2显示了在CoLA数据集上使用有着不同的 值的RecAdam方法精调BERT-base模型所得到的学习曲线。如3.2节所述,精调和多任务学习可以视为我们方法的特殊情况( )。

    如图2a所示,对于越大的目标迁移速率 ,模型可以更快地收敛于目标任务。随着 的减小,由于从预训练知识的回忆到目标任务的学习的迁移速率减慢,模型需要更长的时间收敛到目标任务。

    图2b显示了在精调过程中预训练知识的遗忘度。我们通过使用精调模型和预训练模型的权重之间的欧氏距离来度量预训练知识的遗忘度。在很早的时间步数时,由于我们使用随机初始化策略和预训练知识的回忆机制,欧几里得距离呈现出急剧地下降。接着,随着模型逐步关注于目标任务的学习,曲线以不断下降的增长率逐步地上升。随着目标迁移速率 的减小,我们发现在精调收敛时,模型可以更少地遗忘预训练的知识。

    总体而言,我们的方法在精调和多任务学习之间进行有效的桥接。当我们使用较小的 时,模型可以更少地遗忘从源任务中学习的知识,但是存在无法完全收敛于目标任务的风险。通过在预训练知识的回忆和新任务的学习之间取得良好的权衡,我们的方法不仅可以收敛于目标任务,而且可以有效地减少源任务知识的遗忘,从而稳定地实现比普通的精调方法更优的性能。

    5. 结论

    在本文中,我们通过桥接两种迁移学习范例:顺序迁移学习和多任务学习,有效缓解了适应深层预训练语言模型时的灾难性遗忘问题。为了解决联合训练预训练任务时缺少预训练数据的问题,我们提出了一种预训练模拟机制在没有数据时学习预训练任务。接着,我们提出了目标迁移机制,以更好地平衡预训练的回忆和目标任务的学习。实验证明了我们的方法在迁移深层预训练语言模型方面的优势。我们还通过将提出的机制集成到Adam优化器中提供了开源的RecAdam优化器,以促进自然语言处理社区更好地使用深层预训练语言模型。

    6. 参考文献

    [1] Rahaf Aljundi, Francesca Babiloni, Mohamed Elhoseiny, Marcus Rohrbach, and Tinne Tuytelaars. 2018. Memory aware synapses: Learning what (not) to forget. In Proceedings of the European Conference on Computer Vision, pages 139–154.

    [2] Gaurav Arora, Afshin Rahimi, and Timothy Baldwin. 2019. Does an lstm forget more than a cnn? an empirical study of catastrophic forgetting in nlp. In Proceedings of the Australasian Language Technology Association, pages 77–86.

    [3] Roy Bar Haim, Ido Dagan, Bill Dolan, Lisa Ferro, Danilo Giampiccolo, Bernardo Magnini, and Idan Szpektor. 2006. The second PASCAL recognising textual entailment challenge.

    [4] Luisa Bentivogli, Ido Dagan, Hoa Trang Dang, Danilo Giampiccolo, and Bernardo Magnini. 2009. The fifth PASCAL recognizing textual entailment challenge. In Proceedings of TAC.

    [5] Samuel Bowman, Luke Vilnis, Oriol Vinyals, Andrew Dai, Rafal Jozefowicz, and Samy Bengio. 2016. Generating sentences from a continuous space. In Proceedings of The SIGNLL Conference on Computational Natural Language Learning, pages 10–21.

    [6] Rich Caruana. 1997. Multitask learning. Machine learning, 28(1):41–75.

    [7] Daniel Cer, Mona Diab, Eneko Agirre, Inigo LopezGazpio, and Lucia Specia. 2017. Semeval-2017 task 1: Semantic textual similarity multilingual and cross-lingual focused evaluation. In Proceedings of the International Workshop on Semantic Evaluation, pages 1–14. Association for Computational Linguistics.

    [8] Xinyang Chen, Sinan Wang, Bo Fu, Mingsheng Long, and Jianmin Wang. 2019. Catastrophic forgetting meets negative transfer: Batch spectral shrinkage for safe transfer learning. In Proceedings of the Advances in Neural Information Processing Systems, pages 1906–1916.

    [9] Alexandra Chronopoulou, Christos Baziotis, and Alexandros Potamianos. 2019. An embarrassingly simple approach for transfer learning from pretrained language models. In Proceedings of NAACL, pages 2089–2095. [10] Ido Dagan, Oren Glickman, and Bernardo Magnini. 2006. The PASCAL recognizing textual entailment challenge. In Machine learning challenges. evaluating predictive uncertainty, visual object classification, and recognizing textual entailment, pages 177– 190. Springer.

    [11] Matthias De Lange, Rahaf Aljundi, Marc Masana, Sarah Parisot, Xu Jia, Ales Leonardis, Gregory Slabaugh, and Tinne Tuytelaars. 2019. Continual learning: A comparative study on how to defy forgetting in classification tasks. arXiv preprint arXiv:1909.08383.

    [12] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2019. BERT: pre-training of deep bidirectional transformers for language understanding. In Proceedings of the North American Chapter of the Association for Computational Linguistics, pages 4171–4186. Association for Computational Linguistics.

    [13] William B Dolan and Chris Brockett. 2005. Automatically constructing a corpus of sentential paraphrases. In Proceedings of the International Workshop on Paraphrasing.

    [14] Robert M. French. 1999. Catastrophic forgetting in connectionist networks. Trends in Cognitive Sciences, 3(4):128 – 135.

    [15] Danilo Giampiccolo, Bernardo Magnini, Ido Dagan, and Bill Dolan. 2007. The third PASCAL recognizing textual entailment challenge. In Proceedings of the ACL-PASCAL workshop on textual entailment and paraphrasing, pages 1–9. Association for Computational Linguistics.

    [16] Ian J Goodfellow, Mehdi Mirza, Da Xiao, Aaron Courville, and Yoshua Bengio. 2013. An empirical investigation of catastrophic forgetting in gradient-based neural networks. arXiv preprint arXiv:1312.6211.

    本期责任编辑:李忠阳

    本期编辑:彭   湃

    下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!
    
    后台回复【五件套】
    下载二:南大模式识别PPT
    
    后台回复【南大模式识别】
    

    说个正事哈

    由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

    (1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

    (2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

    感谢支持,比心

    投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

    方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

    记得备注呦

    推荐两个专辑给大家:

    专辑 | 李宏毅人类语言处理2020笔记

    专辑 | NLP论文解读

    专辑 | 情感分析

    
    整理不易,还望给个在看!
    
    展开全文
  • Backto DeepCV 拿过来一个 pre-trained mode,希望能 fine-tune 成解决当前问题的 model。又是一门手艺。...动手前要先分析燃油(new dataset)的数量和质量(与pre-used 的dataset 的相似性)...然后,精调 精调

    Backto DeepCV

    拿过来一个 pre-trained mode,希望能 fine-tune 成解决当前问题的 model。又是一门手艺。

    首先,定策略

    动手前要先分析燃油(new dataset)的数量和质量(与pre-used 的dataset 的相似性)。

    xvery similar datasetvery different dataset
    very little datatrain a linear classifier on the features extracted from the top layers of pre-trained models.Trouble Warning. Since the data is limited, it seems better to only train a linear classifier.
    quite a lot of datafine-tune a few top layers of pre-trained models with a small learning ratea large number of layers should be fine-tuned on your data also with a small learning rate for improving performance

    然后,精调

    精调

    展开全文
  • 目前预训练模型在自然语言处理领域取得了广泛的成功。本报告的内容主要涵盖以下4部分内容:1...2)预训练模型的迁移方法:包括如何通过任务转换、多步迁移、改进精调等方法来进一步提高预训练模型在下游任务上的性能。
  • 预训练语言模型

    2020-05-12 13:09:36
    ELMo以来的预训练语言模型发展的概况 一、不同视角下的预训练语言模型对比 从不同维度对比【预训练语言模型】 从特征抽取、预训练语言模型目标、BERT系列模型的改进方向、特征表示4个视角,对比预训练语言模型: ...

    ELMo以来的预训练语言模型发展的概况

    在这里插入图片描述

    一、不同视角下的预训练语言模型对比

    从不同维度对比【预训练语言模型】

    从特征抽取、预训练语言模型目标、BERT系列模型的改进方向、特征表示4个视角,对比预训练语言模型:
    在这里插入图片描述

    不同的特征抽取机制

    RNNs:ELMO/ULMFiT/SiATL;

    Transformer:GPT1.0/GPT2.0/BERT系列模型;

    Transformer-XL:XLNet;

    不同的预训练语言目标

    自编码(AutoEncode):BERT系列模型;

    自回归(AutoRegression):单向模型(ELMO / ULMFiT / SiATL / GPT1.0 / GPT2.0)和XLNet;

    BERT系列模型的改进

    引入常识:ERNIE1.0 / ERNIE(THU) / ERNIE2.0(简称为“ERNIE系列”);

    引入多任务学习:MTDNN/ERNIE2.0;

    基于生成任务的改进:MASS/UNILM;

    不同的mask策略:WWM/ERNIE系列/SpanBERT;

    精细调参:RoBERTa;

    特征表示(是否能表示上下文)

    单向特征表示:单向模型(ELMO/ULMFiT/SiATL/GPT1.0/GPT2.0);

    双向特征表示:BERT系列模型+XLNet;

    二、预训练语言模型的基础:特征抽取机制+语言模型的分类

    基于深度学习的NLP特征抽取机制有哪些?各有哪些优缺点?

    1)能否处理长距离依赖问题

    长距离依赖建模能力:Transformer-XL > Transformer > RNNs > CNNs

    MLP:不考虑序列(位置)信息,不能处理变长序列,如NNLM和word2vec;

    CNNs:考虑序列(位置)信息,不能处理长距离依赖,聚焦于n-gram提取,pooling操作会导致序列(位置)信息丢失;

    RNNs:天然适合处理序列(位置)信息,但仍不能处理长距离依赖(由于BPTT导致的梯度消失等问题),故又称之为“较长的短期记忆单元(LSTM)”;

    Transformer/Transformer-XL:self-attention解决长距离依赖,无位置偏差;

    2)前馈/循环网络 or 串行/并行计算

    MLP/CNNs/Transformer:前馈/并行

    RNNs/ Transformer-XL:循环/串行:

    3)计算时间复杂度(序列长度n,embedding size为d,filter大小k)

    CNNs:在这里插入图片描述

    RNNs:在这里插入图片描述

    Self Attention:在这里插入图片描述

    自回归和自编码语言模型各有什么优缺点?

    1)自回归语言模型

    在这里插入图片描述
    优点:

    文本序列联合概率的密度估计,即为传统的语言模型,天然适合处理自然生成任务;

    缺点:

    联合概率按照文本序列从左至右分解(顺序拆解),无法通过上下文信息进行双向特征表征;

    代表模型: ELMO/GPT1.0/GPT2.0;

    改进: XLNet将传统的自回归语言模型进行推广,将顺序拆解变为随机拆解(排列语言模型),产生上下文相关的双向特征表示;

    2)自编码语言模型

    在这里插入图片描述
    优点: 本质为降噪自编码特征表示,通过引入噪声[MASK]构建MLM,获取上下文相关的双向特征表示;

    缺点:

    不适合直接处理生成任务,MLM预训练目标的设置造成预训练过程和生成过程不一致;
    引入独立性假设,为联合概率的有偏估计,没有考虑预测[MASK]之间的相关性
    预训练时的[MASK]噪声在finetune阶段不会出现,造成两阶段不匹配问题;
    

    代表模型:BERT系列模型;

    三、单向模型回顾+内核机制探究

    在这里插入图片描述

    单向模型的内核机制是怎样的?有哪些缺点?

    1)ELMo (Allen Institute)[6]

    要点:

    引入双向语言模型,其实是2个单向语言模型(前向和后向)的集成;
    
    通过保存预训练好的2层biLSTM,通过特征集成或finetune应用于下游任务;
    

    缺点:

    本质上为自回归语言模型,只能获取单向的特征表示,不能同时获取上下文表示;
    
    LSTM不能解决长距离依赖。
    

    为什么不能用biLSTM构建双向语言模型?

    不能采取2层biLSTM同时进行特征抽取构建双向语言模型,否则会出现标签泄漏的问题;因此ELMO前向和后向的LSTM参数独立,共享词向量,独立构建语言模型
    

    在这里插入图片描述

    2)ULMFiT (fast.ai) / SiATL

    2.1)ULMFiT[7]要点:

    三阶段训练:LM预训练+精调特定任务LM+精调特定分类任务;

    特征抽取:3层AWD-LSTM;

    精调特定分类任务:逐层解冻;

    2.2) SiATL[8]要点:

    二阶段训练:LM预训练+特定任务精调分类任务(引入LM作为辅助目标,辅助目标对于小数据有用,与GPT相反);

    • 特征抽取:LSTM+self-attention;

    精调特定分类任务:逐层解冻;

    都通过一些技巧解决finetune过程中的灾难性遗忘问题:如果预训练用的无监督数据和任务数据所在领域不同,逐层解冻带来的效果更明显[9];

    3)GPT1.0 / GPT2.0 (OpenAI)

    GPT1.0[10]要点:

    采用Transformer进行特征抽取,首次将Transformer应用于预训练语言模型;
    GPT里主要用的是decoder层,不过做了一点改变,就是去掉了中间的Encoder-Decoder Attention层(因为没有encoder层,所以也就不需要Encoder-Decoder Attention这一层啦~)。
    在这里插入图片描述
    整个过程如上图所示,词向量(token embedding)和位置向量(position embedding)的和作为输入,经过12层的Masked Multi-Head Attention和Feed Forward(当然中间也包括Layer Norm),得到预测的向量和最后一个词的向量,最后一个词的词向量会作为后续fine-tuning的输入。
    finetune阶段引入语言模型辅助目标(辅助目标对于大数据集有用,小数据反而有所下降,与SiATL相反),解决finetune过程中的灾难性遗忘;

    预训练和finetune一致,统一二阶段框架;
    finetune时,先将大部分的参数通过无监督预训练训练好,然后通过微调确定最后一个参数w的值,以适应不同的任务。利用无监督最后一个词的向量作为微调的输入(个人认为其实可以整句话的词向量作为输入,但是没必要)。
    在这里插入图片描述
    上图展示了对于不同NLP任务的微调过程:

    分类任务:输入就是文本,最后一个词的向量直接作为微调的输入,得到最后的分类结果(可以多分类)

    推理任务:输入是 先验+分隔符+假设,最后一个词的向量直接作为微调的输入,得到最后的分类结果,即:是否成立

    句子相似性:输入是 两个句子相互颠倒,得到的最后一个词的向量再相加,然后进行Linear,得到最后分类结果,即:是否相似

    问答任务:输入是上下文和问题放在一起与多个回答,中间也是分隔符分隔,对于每个回答构成的句子的最后一个词的向量作为微调的输入,然后进行Linear,将多个Linear的结果进行softmax,得到最后概率最大的

    GPT2.0[11]要点:

    没有针对特定模型的精调流程:GPT2.0认为预训练中已包含很多特定任务所需的信息。
    GPT-2依然沿用GPT单向transformer的模式,只不过做了一些改进与改变。那GPT-2相对于GPT有哪些不同呢?看看下面几方面:

    1. GPT-2去掉了fine-tuning层:不再针对不同任务分别进行微调建模,而是不定义这个模型应该做什么任务,模型会自动识别出来需要做什么任务。这就好比一个人博览群书,你问他什么类型的问题,他都可以顺手拈来,GPT-2就是这样一个博览群书的模型。

    2. 增加数据集:既然要博览群书,当然得先有书,所以GPT-2收集了更加广泛、数量更多的语料组成数据集。该数据集包含800万个网页,大小为40G。当然这些数据集是过滤后得到的高质量文本,这样效果才能更好的哦~

    3. 增加网络参数:GPT-2将Transformer堆叠的层数增加到48层,隐层的维度为1600,参数量更是达到了15亿。15亿什么概念呢,Bert的参数量也才只有3亿哦当然,这样的参数量也不是说谁都能达到的,这也得取决于money的多少啊

    4. 调整transformer:将layer normalization放到每个sub-block之前,并在最后一个Self-attention后再增加一个layer normalization。论文中这块感觉说的模棱两可,如果给个图就好了。不过可以通过代码了解这一细节

    5. 在这里插入图片描述
      其他: GPT-2将词汇表数量增加到50257个;最大的上下文大小 (context size) 从GPT的512提升到了1024 tokens;batchsize增加到512。
      生成任务取得很好效果,使用覆盖更广、质量更高的数据;

    GPT-2的输入是完全的文本,什么提示都不加吗?

    当然不是,它也会加入提示词,比如:“TL;DR:”,GPT-2模型就会知道是做摘要工作了。输入的格式就是 文本+TL;DR:,然后就等待输出就行了
    缺点:

    依然为单向自回归语言模型,无法获取上下文相关的特征表示;

    BERT内核机制探究

    这一部分对BERT的内核机制进行介绍,在回答“BERT为什么如此有效?”之前,首先介绍Transformer的内核机制。

    Transformer[12]内部机制的深入理解

    在这里插入图片描述

    1)Multi-Head Attention和Scaled Dot-Product Attention

    本质是self attention通过attention mask动态编码变长序列,解决长距离依赖、无位置偏差、可并行计算

    为什么是缩放点积,而不是点积模型?

    当输入信息的维度 d 比较高,点积模型的值通常有比较大方差,从而导致 softmax 函数的梯度会比较小。因此,缩放点积模型可以较好地解决这一问题。

    为什么是双线性点积模型(经过线性变换Q K)?

    双线性点积模型,引入非对称性,更具健壮性(Attention mask对角元素值不一定是最大的,也就是说当前位置对自身的注意力得分不一定最高)。

    相较于加性模型,点积模型具备哪些优点?

    常用的Attention机制为加性模型和点积模型,理论上加性模型和点积模型的复杂度差不多,但是点积模型在实现上可以更好地利用矩阵乘积,从而计算效率更高(实际上,随着维度d的增大,加性模型会明显好于点积模型)。

    多头机制为什么有效?

    类似于CNN中通过多通道机制进行特征选择;

    Transformer中先通过切头(spilt)再分别进行Scaled Dot-Product Attention,可以使进行点积计算的维度d不大(防止梯度消失),同时缩小attention mask矩阵。

    2)Position-wise Feed-Forward Networks

    FFN 将每个位置的Multi-Head Attention结果映射到一个更大维度的特征空间,然后使用ReLU引入非线性进行筛选,最后恢复回原始维度。

    Transformer在抛弃了 LSTM 结构后,FFN 中的 ReLU成为了一个主要的提供非线性变换的单元。

    3)Positional Encoding

    将Positional Embedding改为Positional Encoding,主要的区别在于Positional Encoding是用公式表达的、不可学习的,而Positional Embedding是可学习的(如BERT),两种方案的训练速度和模型精度差异不大;但是Positional Embedding位置编码范围是固定的,而Positional Encoding编码范围是不受限制的。

    为什么引入 sin和 cos 建模Positional Encoding?

    在这里插入图片描述
    引入 sin和cos 是为了使模型实现对相对位置的学习,两个位置 pos 和 pos+k 的位置编码是固定间距k的线性变化:
    在这里插入图片描述
    可以证明:间隔为k的任意两个位置编码的欧式空间距离是恒等的,只与k有关。
    在这里插入图片描述

    BERT[13]为什么如此有效?在这里插入图片描述

    引入Masked Language Model(MLM)预训练目标,能够获取上下文相关的双向特征表示;

    引入Next Sentence Prediction(NSP)预训练目标,擅长处理句子或段落的匹配任务;

    引入强大的特征抽取机制Transformer(多种机制并存):

    Multi-Head self attention:多头机制类似于“多通道”特征抽取,self attention通过attention mask动态编码变长序列,解决长距离依赖(无位置偏差)、可并行计算;
    
    Feed-forward :在位置维度计算非线性层级特征;
    
    Layer Norm & Residuals:加速训练,使“深度”网络更加健壮;
    

    引入大规模、高质量的文本数据;

    BERT存在哪些优缺点?

    优点: 能够获取上下文相关的双向特征表示;

    缺点:

    生成任务表现不佳:预训练过程和生成过程的不一致,导致在生成任务上效果不佳;

    采取独立性假设:没有考虑预测[MASK]之间的相关性,是对语言模型联合概率的有偏估计(不是密度估计);

    输入噪声[MASK],造成预训练-精调两阶段之间的差异;

    无法文档级别的NLP任务,只适合于句子和段落级别的任务;

    BERT擅长处理哪些下游NLP任务[14]?

    1. 适合句子和段落级别的任务,不适用于文档级别的任务;

    2. 适合处理高层语义信息提取的任务,对浅层语义信息提取的任务的提升效果不大(如一些简单的文本分类任务);

    3. 适合处理句子/段落的匹配任务;因此,在一些任务中可以构造辅助句(类似匹配任务)实现效果提升(如关系抽取/情感挖掘等任务);

    4. 不适合处理NLG任务;

    BERT基于“字输入”还是“词输入”好?(对于中文任务)

    1. 如果基于“词输入”,会加剧OOV问题,会增大输入空间,需要利用大得多的语料去学习输入空间到标签空间的函数映射。

    2. 随着Transfomer特征抽取能力,分词不再成为必要,词级别的特征学习可以纳入为内部特征进行表示学习。

    BERT为什么不适用于自然语言生成任务(NLG)?

    1. 由于BERT本身在预训练过程和生成过程的不一致,并没有做生成任务的相应机制,导致在生成任务上效果不佳,不能直接应用于生成任务。

    2. 如果将BERT或者GPT用于Seq2Seq的自然语言生成任务,可以分别进行预训练编码器和解码器,但是编码器-注意力-解码器结构没有被联合训练,BERT和GPT在条件生成任务中只是次优效果。

    BERT系列模型进展介绍

    这一部分介绍一些模型,它们均是对BERT原生模型在一些方向的改进。

    针对BERT原生模型,后续的BERT系列模型是如何改进【生成任务】的?

    MASS(微软)[15]

    在这里插入图片描述
    统一预训练框架:通过类似的Seq2Seq框架,在预训练阶段统一了BERT和LM模型;

    Encoder中理解unmasked tokens;Decoder中需要预测连续的[mask]tokens,获取更多的语言信息;Decoder从Encoder中抽取更多信息;

    当k=1或者n时,MASS的概率形式分别和BERT中的MLM以及GPT中标准的LM一致(k为mask的连续片段长度))

    2)UNILM (微软)[16]

    在这里插入图片描述
    统一预训练框架:和直接从mask矩阵的角度统一BERT和LM;

    3个Attention Mask矩阵:LM、MLM、Seq2Seq LM;

    注意:UNILM中的LM并不是传统的LM模型,仍然是通过引入[MASK]实现的;

    针对BERT原生模型,后续的BERT系列模型是如何引入【知识】的?

    ERNIE 1.0 (百度)[17]

    在预训练阶段引入知识(实际是预先识别出的实体),引入3种[MASK]策略预测:

    Basic-Level Masking:跟BERT一样,对subword进行mask,无法获取高层次语义;
    
    Phrase-Level Masking:mask连续短语;
    
    Entity-Level Masking:mask实体;
    

    ERNIE (THU)[18]

    在这里插入图片描述
    基于BERT预训练原生模型,将文本中的实体对齐到外部的知识图谱,并通过知识嵌入得到实体向量作为ERNIE的输入;

    由于语言表征的预训练过程和知识表征过程有很大的不同,会产生两个独立的向量空间。为解决上述问题,在有实体输入的位置,将实体向量和文本表示通过非线性变换进行融合,以融合词汇、句法和知识信息;

    引入改进的预训练目标 Denoising entity auto-encoder (DEA):要求模型能够根据给定的实体序列和文本序列来预测对应的实体;

    针对BERT原生模型,后续的BERT系列模型是如何引入【多任务学习机制】的?

    多任务学习(Multi-task Learning)[19]是指同时学习多个相关任务,让这些任务在学习过程中共享知识,利用多个任务之间的相关性来改进模型在每个任务的性能和泛化能力。多任务学习可以看作是一种归纳迁移学习,即通过利用包含在相关任务中的信息作为归纳偏置(Inductive Bias)来提高泛化能力。多任务学习的训练机制分为同时训练和交替训练。

    1)MTDNN(微软)[20]:在下游任务中引入多任务学习机制

    在这里插入图片描述
    MTDNN是在下游任务引入多任务机制的,

    ERNIE 2.0 (百度)[21]:在预训练阶段引入多任务学习

    在这里插入图片描述
    而ERNIE 2.0 是在预训练引入多任务学习(与先验知识库进行交互),使模型能够从不同的任务中学到更多的语言知识。

    主要包含3个方面的任务:

    word-aware 任务:捕捉词汇层面的信息;

    structure-aware 任务:捕捉句法层面的信息;

    semantic-aware 任务:捕捉语义方面的信息;

    主要的方式是构建增量学习(后续可以不断引入更多的任务)模型,通过多任务学习持续更新预训练模型,这种连续交替的学习范式不会使模型忘记之前学到的语言知识。

    将3大类任务的若干个子任务一起用于训练,引入新的任务时会将继续引入之前的任务,防止忘记之前已经学到的知识,具体是一个逐渐增加任务数量的过程[22]:
    (task1)->(task1,task2)->(task1,task2,task3)->…->(task1,task2,…,taskN),

    针对BERT原生模型,后续的BERT系列模型是如何改进【mask策略】的?

    原生BERT模型:按照subword维度进行mask,然后进行预测;

    BERT WWM(Google):按照whole word维度进行mask,然后进行预测;

    ERNIE等系列:引入外部知识,按照entity维度进行mask,然后进行预测;

    SpanBert:不需要按照先验的词/实体/短语等边界信息进行mask,而是采取随机mask:

    采用Span Masking:根据几何分布,随机选择一段空间长度,之后再根据均匀分布随机选择起始位置,最后按照长度mask;通过采样,平均被遮盖长度是3.8 个词的长度;

    引入Span Boundary Objective:新的预训练目标旨在使被mask的Span 边界的词向量能学习到 Span中被mask的部分;新的预训练目标和MLM一起使用;

    注意:BERT WWM、ERNIE等系列、SpanBERT旨在隐式地学习预测词(mask部分本身的强相关性)之间的关系[23],而在 XLNet 中,是通过 PLM 加上自回归方式来显式地学习预测词之间关系;

    针对BERT原生模型,后续的BERT系列模型是如何进行【精细调参】的?

    RoBERTa(FaceBook)[24]

    丢弃NSP,效果更好;

    动态改变mask策略,把数据复制10份,然后统一进行随机mask;

    对学习率的峰值和warm-up更新步数作出调整;

    在更长的序列上训练:不对序列进行截短,使用全长度序列;

    六、XLNet的内核机制探究

    在BERT系列模型后,Google发布的XLNet在问答、文本分类、自然语言理解等任务上都大幅超越BERT;XLNet的提出是对标准语言模型(自回归)的一个复兴[25],提出一个框架来连接语言建模方法和预训练方法。

    XLNet[26]提出的背景是怎样的?

    对于ELMO、GPT等预训练模型都是基于传统的语言模型(自回归语言模型AR),自回归语言模型天然适合处理生成任务,但是无法对双向上下文进行表征,因此人们反而转向自编码思想的研究(如BERT系列模型);

    自编码语言模型(AE)虽然可以实现双向上下文进行表征,但是:

    BERT系列模型引入独立性假设,没有考虑预测[MASK]之间的相关性;
    
    MLM预训练目标的设置造成预训练过程和生成过程不一致;
    
    预训练时的[MASK]噪声在finetune阶段不会出现,造成两阶段不匹配问题;
    

    有什么办法能构建一个模型使得同时具有AR和AE的优点并且没有它们缺点呢?

    XLNet为何如此有效:内核机制分析

    XLNet的创新点(为何如此有效? ) :
    1.仍使用自回归语言模型,为解决双向上下文的问题,引入了排列语言模型;
    2.排列语言模型在预测时需要target的位置信息,为此引入Two-Stream:Content流编码到当前时刻的所有内容,而Query流只能参考之前的历史信息以及当前要预测的位置信息;
    3.为了解决计算量过大的问题, 采取:随机采样语言排列+只预测1个句子新面的K的词:
    4.融合Transformer-XL 的优点处理过长文本。

    1)排列语言模型(Permutation LM,PLM)

    如果衡量序列中被建模的依赖关系的数量,标准的LM可以达到上界,不像MLM一样,LM不依赖于任何独立假设。借鉴 NADE[27]的思想,XLNet将标准的LM推广到PLM。
    为什么PLM可以实现双向上下文的建模?

    PLM的本质就是LM联合概率的多种分解机制的体现;

    将LM的顺序拆解推广到随机拆解,但是需要保留每个词的原始位置信息(PLM只是语言模型建模方式的因式分解/排列,并不是词的位置信息的重新排列!)

    如果遍历 𝑇! 种分解方法,并且模型参数是共享的,PLM就一定可以学习到各种双向上下文;换句话说,当我们把所有可能的𝑇! 排列都考虑到的时候,对于预测词的所有上下文就都可以学习到了!

    由于遍历 𝑇! 种路径计算量非常大(对于10个词的句子,10!=3628800)。因此实际只能随机的采样𝑇!里的部分排列,并求期望;
    在这里插入图片描述

    2)Two-Stream Self-Attention

    如果采取标准的Transformer来建模PLM,会出现没有目标(target)位置信息的问题。问题的关键是模型并不知道要预测的到底是哪个位置的词,从而导致具有部分排列下的PLM在预测不同目标词时的概率是相同的。
    在这里插入图片描述

    怎么解决没有目标(target)位置信息的问题?

    对于没有目标位置信息的问题,XLNet 引入了Two-Stream Self-Attention:
    在这里插入图片描述
    Query 流就为了预测当前词,只包含位置信息,不包含词的内容信息;

    Content 流主要为 Query 流提供其它词的内容向量,包含位置信息和内容信息;
    融入Transformer-XL的优点

    Transformer-XL[28]怎么实现对长文本建模?

    BERT(Transformer)的最大输入长度为512,那么怎么对文档级别的文本建模?

    vanilla model进行Segment,但是会存在上下文碎片化的问题(无法对连续文档的语义信息进行建模),同时推断时需要重复计算,因此推断速度会很慢;
    

    Transformer-XL改进

    对于每一个segment都应该具有不同的位置编码,因此Transformer-XL采取了相对位置编码;
    

    在这里插入图片描述
    前一个segment计算的representation被修复并缓存,以便在模型处理下一个新的segment时作为扩展上下文resume;

    最大可能依赖关系长度增加了N倍,其中N表示网络的深度;

    解决了上下文碎片问题,为新段前面的token提供了必要的上下文;

    由于不需要重复计算,Transformer-XL在语言建模任务的评估期间比vanilla Transformer快1800+倍;

    引入recurrence mechanism(不采用BPTT方式求导):

    引入相对位置编码方案

    七、预训练语言模型的未来

    上述的【预训练语言模型】主要从2大方面进行介绍:一是总的对比;二是分别介绍单向语言模型、BERT系列模型、XLNet模型。

    可以看出,未来【预训练语言模型】更多的探索方向主要为[25]:

    复兴语言模型:进一步改进语言模型目标,不断突破模型的上界;

    大数据、大算力:将大数据、大算力推到极致;

    更快的推断:轻量级模型是否有可能达到SOTA效果?

    引入更丰富的知识信息,更精细的调参,更有价值的MASK策略;

    统一条件生成任务框架,如基于XLNet统一编码和解码任务,同时可考虑更快的解码方式;

    参考文献

    [1] NLP将迎来黄金十年 https://www.msra.cn/zh-cn/news/executivebylines/tech-bylines-nlp
    [2] a review of the recent history of nlp
    [3] AIS:ACL2019进展报告
    [4] ACL 主席周明:一起拥抱 ACL 和 NLP 的光明未来
    [5] 自然语言处理中的语言模型预训练方法 https://www.jiqizhixin.com/articles/2018-10-22-3
    [6] ELMO:Deep contextualized word representations
    [7] ULMFiT:Universal Language Model Fine-tuning)
    [8] SiATL:An Embarrassingly Simple Approach for Transfer Learning from Pretrained Language Models
    [9] BERT时代与后时代的NLP https://zhuanlan.zhihu.com/p/66676144
    [10] GPT:Improving Language Understanding by Generative Pre-Training
    [11] GPT2.0:Language Models are Unsupervised Multitask Learners
    [12] Transformer:Attention is all you need
    [13] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
    [14] Bert时代的创新(应用篇):Bert在NLP各领域的应用进展 https://zhuanlan.zhihu.com/p/68446772
    [15] MASS: Masked Sequence to Sequence Pre-training for Language Generation
    [16] UNILM:Unified Language Model Pre-training for Natural Language Understanding and Generation
    [17] ERNIE: Enhanced Representation through Knowledge Integration
    [18] ERNIE: Enhanced Language Representation with Information Entities
    [19] nndl:神经网络与深度学习
    [20] MT-DNN:Multi-Task Deep Neural Net for NLU
    [21] ERNIE 2.0: A CONTINUAL PRE-TRAINING FRAMEWORK FOR LANGUAGE UNDERSTANDING
    [22] 陈凯:https://www.zhihu.com/question/337827682/answer/768908184
    [23] SpanBert:对 Bert 预训练的一次深度探索
    [24] RoBERTa: A Robustly Optimized BERT Pretraining Approach
    [25] ab他们创造了横扫NLP的XLNet:专访CMU博士杨植麟
    [26] XLnet: Generalized Autoregressive Pretraining for Language Understanding
    [27] Neural autoregressive distribution estimation
    [28] Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context

    展开全文
  • 3. 贪心监督预训练 4. 贪心逐层无监督预训练 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十八)迁移学习和多任务学习 花书+吴恩达深度学习(十九)构建...

    目录

    0. 前言

    1. 学习率衰减

    2. 调参策略

    3. 贪心监督预训练

    4. 贪心逐层无监督预训练


    如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~

    花书+吴恩达深度学习(十八)迁移学习和多任务学习

    花书+吴恩达深度学习(十九)构建模型策略(训练模型顺序、偏差方差、数据集划分、数据不匹配)

    花书+吴恩达深度学习(二十)构建模型策略(超参数调试、监督预训练)

    0. 前言

    构建模型的策略

    1. 观察损失函数,不断在此模型上调整参数,或增加优化算法
    2. 同时训练多个不同的模型,选择模型中较好的一个

    有时先训练一个较简单的模型,然后使模型更复杂会更有效。

    超参数是指在开始学习的时候设置的参数,而不是通过训练得到的参数。

    调参的重要性,通常可以按照下面排列:

    1. 学习率 \alpha
    2. 优化算法的 \beta ,隐藏单元数量,mini-batch 大小
    3. 神经网络层数

    1. 学习率衰减

    因为 MBGD 和 SGD 的波动特性,即使接近最小值,也在一个范围内波动,不会收敛。

    如果随着迭代次数而减小学习率 \alpha ,就可使得梯度下降更接近最小值。

    学习率 \alpha 可以每个 epoch 衰减一次,有多种衰减的方式:

    \alpha=\frac{1}{1+rate\times num_{epoch}}

    \alpha=0.95^{num_{epoch}}

    \alpha=\frac{k}{\sqrt{num_{epoch}}}\alpha_0

    ...

    2. 调参策略

    如果只有时间调节一个超参数,那么就调节学习率。

    各种超参数对模型的影响,如下图所示(图源:深度学习):

    调参有多种策略。

    坐标下降:固定一个或几个参数,调整另一个参数,处于最佳值后再交替的固定别的参数调整不同的参数。这种方法的问题是无法提前知道哪个参数比较重要,可能会导致很多无用的搜索。如果一个参数值很大程度影响另一个参数,那么就不是一个很好的方法。

    网格搜索:当有 3 个或更少的超参数时,宜采用网格搜索,但是计算代价会随着超参数的数量呈指数型增长。

    随机搜索:在参数的多维空间中,随机的搜索参数。当几个超参数对性能度量没有显著影响时,随机搜索指数级高效于网格搜索。

    在参数的多维空间中,发现某一子空间的普遍效果比较好,则重点搜索这片子空间。

    有时候搜索需要使用 \log ,例如对于一个参数的取值是 0.1,0.01,0.001,如果线性搜索,则大部分值都会较大。

    3. 贪心监督预训练

    贪心算法将问题分解成许多部分,然后独立的在每个部分求解最优值。

    贪心监督预训练是指,将监督学习问题分解成简化的监督学习问题,提高寻找到最优解的质量。

    例如,先预训练一个浅层的神经网络,然后使用该网络的某一层,初始化为更深的网络,再继续训练。

    其有助于更好的指导深层结构的中间层的学习,预训练对于优化和泛化都有帮助。

    FitNets(Romero et al, 2015)方法,通过训练一个足够低足够宽的,容易训练的网络,作为教师网络。然后训练一个更深更窄的学生网络,更深更窄导致很难用 SGD 训练。学生网络不仅需要预测原任务的输出,还需要预测教师网络中间层的值,这样使得训练学生网络更加容易。

    尽管一个窄而深的网络似乎比宽而浅的网络更难训练,但是窄而深的网络的泛化能力可能更好。

    4. 贪心逐层无监督预训练

    贪心逐层无监督预训练依赖于单层表示学习算法,每一层使用无监督学习预训练,将前一层的输出作为输入,输出数据的新的表示。

    算法流程如下图所示(图源:深度学习):

    被称为逐层的,是因为独立的解决方案是网络层。

    被称为无监督的,是因为每一层用无监督表示学习算法训练。

    被称为预训练的,是因为它只是在联合训练算法精调所有层之前的第一步。 

    贪心逐层无监督预训练结合了两种想法:

    1. 深度神经网络初始化参数的选择对其性能具有很强的正则化效果
    2. 学习算法可以使用无监督阶段学习的信息,在监督学习的阶段表现的更好

    贪心逐层无监督预训练的优点是:预训练的网络越深,测试误差的均值和方差下降的越多

    贪心逐层无监督预训练的缺点是:有许多超参数,但其效果只能之后度量,难以提前预测。且两个单独的阶段都有各自的超参数,第二阶段的性能通常不能在第一阶段期间预测


    如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~

     

     

     

    展开全文
  • NLP这两年:15个预训练模型对比分析与剖析 https://www.toutiao.com/i6742415474396496387/ 前言 在之前写过的《NLP的游戏规则从此改写?从word2vec, ELMo到BERT》一文中,介绍了从word2vec到ELMo再到BERT...
  • 自然语言处理(NLP)-预训练模型:Electra【Pre-training Text Encoders as Discriminators Rather Than Generators】2020
  • NLP预训练模型1 -- 综述

    万次阅读 多人点赞 2020-06-27 22:16:35
    复旦大学邱锡鹏教授发表了一篇NLP预训练模型综述,“Pre-trained Models for Natural Language Processing: A Survey”,从多个角度分析了当前预训练语言模型。本文基于这篇文章来分析 1 为什么需要预训练模型 邱...
  • TensorFlow 使用预训练模型 ResNet-50

    千次阅读 2019-03-28 16:48:06
    前面的文章已经说明了怎么使用 TensorFlow 来构建、训练、保存、导出模型等,现在来说明怎么使用 TensorFlow 调用预训练模型来精调神经网络。为了简单起见,以调用预训练的 ResNet-50 用于图像分类为例,使用的模块...
  • NLP预训练模型综述

    千次阅读 2020-10-30 22:16:41
    文章目录文章介绍背景2.1语言表示学习非上下文词嵌2.2 神经上下文编码器2.2.1 序列模型s2.2.2 非序列模型2.2.3 分析2.3 为什么预训练?2.4 NLP的PTMs的历史2.4.1 第一代PTM:预先训练的词嵌入将单词表示为密集的矢量...
  • Tiny-yolo 预训练模型darknet.conv.weights做初始化,进行后期精调
  • 预训练的方法在自然语言处理与计算机视觉领域,都被证明拥有更好的效果。 ICLR 专题 原文:Strategies for Pre-training Graph neural networks 预训练是通过大量无标注的数据进行模型的训练,得到一...
  • BERT的通俗理解 预训练模型 微调

    千次阅读 2019-07-17 16:51:00
    1、预训练模型 BERT是一个预训练的模型,那么什么是预训练呢?举例子进行简单的介绍 假设已有A训练集,先用A对网络进行预训练,在A任务上学会网络参数,然后保存以备后用,当来一个新的任务B,采取相同的网络结构,...
  • 预训练模型(6)---- MASS

    千次阅读 2019-10-10 12:27:49
    MASS: Masked Sequence to Sequence Pre-training for Language Generation摘要引言模型结构统一的预训练框架(包含GPT和Bert)实验结果 这是微软亚洲研究院在ICML2019的一篇文章,在NLP任务上超越了Bert、XLNet、...
  • 上文 NLP预训练模型3 – 预训练任务优化(ERNIE、SpanBERT)我们从预训练任务的角度讲解了如何对BERT进行优化,本文我们从训练方法的角度来讲解BERT优化。 训练方法包括数据语料、文本预处理、超参调整等。 BERT...
  • XLNet代码详解之预训练

    千次阅读 2019-09-02 19:12:01
    XLNet源码地址:https://github.com/zihangdai/xlnet XLNET原理详解:... XLNET中文预训练:https://github.com/ymcui/Chinese-PreTrained-XLNet 原作地址:http://fancye...
  • NLP领域中的预训练模型杂谈

    千次阅读 2019-04-25 20:01:53
    这个就很像图像里面的ImageNet那堆预训练网络所干的事情了,也是最近论文比较多的趋势,都是先在一个大语料上面进行预训练,然后后面接上各个下游任务的特定网络,再用下游任务的数据进行微调,就能得到很好的效果。...
  • 前BERT时代的NLP预训练模型迁移学习多任务学习(MTL)ULMFitELMo原理参考文献 本节仍然是为了系列笔记的完整性而做,主要介绍迁移学习的概念,以及BERT出现之前NLP领域两个重要的预训练模型ULMFit和ELMo 迁移学习 ...
  • RoBERTa:一种鲁棒地优化BERT预训练的方法 文章目录RoBERTa:一种鲁棒地优化BERT预训练的方法前言背景实验静态 VS 动态 Masking输入形式与NSP任务更大的batch_size更大的BPE词汇表总结使用最后 前言 本文提出了一种...
  • NLP史上最全预训练模型汇总

    千次阅读 2020-04-11 21:41:02
    一、不同视角下的预训练语言模型对比 二、预训练语言模型的基础:特征抽取机制+语言模型的分类 三、单向模型回顾+内核机制探究 四、BERT内核机制探究 五、BERT系列模型进展介绍 六、XLNet的内核机制探究 参考...
  • 点击下面卡片,关注我呀,每天给你送来AI技术干货!来自:哈工大讯飞联合实验室本期导读:自从BERT出现以来,预训练技术逐渐发展成为了 NLP 领域不可或缺的主流技术。这给我们处理NLP任务...
  • 文章目录2018年及之前NLP领域常采用的预训练模型典型做法Word Embedding到Bert自动编码器:encoder和decoder2018年之后NLP领域常采用的预训练模型典型做法参考资料 2018年及之前NLP领域常采用的预训练模型典型做法 ...
  • 《自然语言处理-基于预训练模型的方法》笔记 文章目录《自然语言处理-基于预训练模型的方法》笔记@[toc]〇.写在前面一、绪论(一) NLP 任务体系I.任务层级II.任务类别III.研究层次(二) 预训练的时代二、NLP 基础(一) ...
  • 来自:哈工大讯飞联合实验室本期推送介绍了哈工大讯飞联合实验室在自然语言处理重要国际会议COLING 2020上发表的工作,提出了一种字符感知预训练模型CharBERT,在多个自然语言处理...
  • 近年来,深度学习技术已广泛应用于NLP领域,但实际应用效果往往受限于缺乏大规模高质量监督样本。2018年底,预训练语言模型横空出世,极大缓解了这个问题,通过“超大规模无监督语料上的预训练语...
  • Hugging Face transformers课程 文章目录Hugging Face transformers课程1. IntroductionTransformers的历史Architectures和checkpointsThe Inference API用pipeline处理... 构建Trainer API微调预训练模型从Hub上下载d
  • 所以,这种预训练 + 精调的模式,已经成为了自然语言处理的新范式。 所谓模型预训练(Pre-train),即首先在一个原任务上预先训练一个初始模型,然后在下游任务(也称目标任务)上继续对该模型进行精调(Fine-tune...
  • 近年来,深度学习技术已广泛应用于NLP领域,但实际应用效果往往受限于缺乏大规模高质量监督样本。2018年底,预训练语言模型横空出世,极大缓解了这个问题,通过“超大规模无监督语料上的预训练语...
  • 前几天FAIR发了一个新的图像预训练模型 SEER,看完论文之后我不禁感叹,不仅我企图往多模态卷,Facebook自己也卷起来了。为什么说卷呢?因为这篇文章的方法概括来说就是用更好的模型、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 906
精华内容 362
关键字:

精调预训练