Skip to content

研读顶会论文,复现论文相关代码

Notifications You must be signed in to change notification settings

cheesebeer/nlp_paper_study

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

【关于 NLP】 那些你不知道的事

作者:杨夕

项目地址:https://github.com/km1994/nlp_paper_study

个人介绍:大佬们好,我叫杨夕,该项目主要是本人在研读顶会论文和复现经典论文过程中,所见、所思、所想、所闻,可能存在一些理解错误,希望大佬们多多指正。

目录

介绍

会议收集篇

NLP 学习篇

经典会议论文研读篇
  • ACL2020
    • 【关于 CHECKLIST】 那些你不知道的事
      • 阅读理由:ACL2020 best paper ,利用 软件工程 的 思想 思考 深度学习
      • 动机:针对 train-val-test 分割方法 评估 模型性能容易出现 不全面、偏向性、可解性差问题;
      • 方法:提出了一种模型无关和任务无关的测试方法checklist,它使用三种不同的测试类型来测试模型的独立性。
      • 效果:checklist揭示了大型软件公司开发的商业系统中的关键缺陷,表明它是对当前实践的补充好吧。测试使用 checklist 创建的模型可以应用于任何模型,这样就可以很容易地将其纳入当前的基准测试或评估中管道。

理论学习篇

经典论文研读篇
transformer 学习篇
预训练模型篇
  • Bert_study:Bert论文研读
  • 【关于 Bert 模型压缩】 那些你不知道的事
    • 【关于 Bert 模型压缩】 那些你不知道的事
      • 阅读理由:Bert 在工程上问题上的改进
      • 动机:
        • 内存占用;
        • 功耗过高;
        • 带来很高的延迟;
        • 限制了 Bert 系列模型在移动和物联网等嵌入式设备上的部署;
      • 介绍:BERT 瘦身来提升速度
      • 模型压缩思路:
        • 低秩因式分解:在输入层和输出层使用嵌入大小远小于原生Bert的嵌入大小,再使用简单的映射矩阵使得输入层的输出或者最后一层隐藏层的输出可以通过映射矩阵输入到第一层的隐藏层或者输出层;
        • 跨层参数共享:隐藏层中的每一层都使用相同的参数,用多种方式共享参数,例如只共享每层的前馈网络参数或者只共享每层的注意力子层参数。默认情况是共享每层的所有参数;
        • 剪枝:剪掉多余的连接、多余的注意力头、甚至LayerDrop[1]直接砍掉一半Transformer层
        • 量化:把FP32改成FP16或者INT8;
        • 蒸馏:用一个学生模型来学习大模型的知识,不仅要学logits,还要学attention score;
      • 优点:BERT 瘦身来提升速度
      • 缺点:
        • 精度的下降
        • 低秩因式分解 and 跨层参数共享 计算量并没有下降;
        • 剪枝会直接降低模型的拟合能力;
        • 量化虽然有提升但也有瓶颈;
        • 蒸馏的不确定性最大,很难预知你的BERT教出来怎样的学生;
    • 【关于 AlBert 】 那些你不知道的事
      • 模型压缩方法:低秩因式分解 + 跨层参数共享
      • 模型压缩方法介绍:
        • 低秩因式分解:
          • 动机:Bert的参数量大部分集中于模型的隐藏层架构上,在嵌入层中只有30,000词块,其所占据的参数量只占据整个模型参数量的小部分;
          • 方法:将输入层和输出层的权重矩阵分解为两个更小的参数矩阵;
          • 思路:在输入层和输出层使用嵌入大小远小于原生Bert的嵌入大小,再使用简单的映射矩阵使得输入层的输出或者最后一层隐藏层的输出可以通过映射矩阵输入到第一层的隐藏层或者输出层;
          • 优点:在不显著增加词嵌入大小的情况下能够更容易增加隐藏层大小;
        • 参数共享【跨层参数共享】:
          • 动机:隐藏层 参数 大小 一致;
          • 方法:隐藏层中的每一层都使用相同的参数,用多种方式共享参数,例如只共享每层的前馈网络参数或者只共享每层的注意力子层参数。默认情况是共享每层的所有参数;
          • 优点:防止参数随着网络深度的增加而增大;
      • 其他改进策略:
        • 句子顺序预测损失(SOP)代替Bert中的下一句预测损失(NSP)
          • 动机:通过实验证明,Bert中的下一句预测损失(NSP) 作用不大;
          • 介绍:用预测两个句子是否连续出现在原文中替换为两个连续的句子是正序或是逆序,用于进一步提高下游任务的表现
      • 优点:参数量上有所降低;
      • 缺点:其加速指标仅展示了训练过程,由于ALBERT的隐藏层架构采用跨层参数共享策略并未减少训练过程的计算量,加速效果更多来源于低维的嵌入层;
    • 【关于 FastBERT】 那些你不知道的事
      • 模型压缩方法:知识蒸馏
      • 模型压缩方法介绍:
        • 样本自适应机制(Sample-wise adaptive mechanism)
          • 思路:
            • 在每层Transformer后都去预测样本标签,如果某样本预测结果的置信度很高,就不用继续计算了,就是自适应调整每个样本的计算量,容易的样本通过一两层就可以预测出来,较难的样本则需要走完全程。
          • 操作:
            • 给每层后面接一个分类器,毕竟分类器比Transformer需要的成本小多了
        • 自蒸馏(Self-distillation)
          • 思路:
            • 在预训练和精调阶段都只更新主干参数;
            • 精调完后freeze主干参数,用分支分类器(图中的student)蒸馏主干分类器(图中的teacher)的概率分布
          • 优点:
            • 非蒸馏的结果没有蒸馏要好
            • 不再依赖于标注数据。蒸馏的效果可以通过源源不断的无标签数据来提升
    • 【关于 distilbert】 那些你不知道的事
    • 【关于 TinyBert】 那些你不知道的事
      • 模型压缩方法:知识蒸馏
      • tinybert的创新点:学习了teacher Bert中更多的层数的特征表示;
      • 模型压缩方法介绍:
        • 基于transformer的知识蒸馏模型压缩
          • 学习了teacher Bert中更多的层数的特征表示;
          • 特征表示:
            • 词向量层的输出;
            • Transformer layer的输出以及注意力矩阵;
            • 预测层输出(仅在微调阶段使用);
        • bert知识蒸馏的过程
          • 左图:整体概括了知识蒸馏的过程
            • 左边:Teacher BERT;
            • 右边:Student TinyBERT
            • 目标:将Teacher BERT学习到的知识迁移到TinyBERT中
          • 右图:描述了知识迁移的细节;
            • 在训练过程中选用Teacher BERT中每一层transformer layer的attention矩阵和输出作为监督信息
  • LCF: A Local Context Focus Mechanism for Aspect-Based Sentiment Classification
  1. 【关于 Domain/Intent Classification 】那些你不知道的事
  2. 【关于 槽位填充 (Slot Filling)】那些你不知道的事
  3. 【关于 上下文LU】那些你不知道的事
  4. 【关于 自然语言生成NLG 】那些你不知道的事
  5. 【关于 DSTC 】那些你不知道的事
  6. 【关于 E2E 】那些你不知道的事
    1. 【关于 TC_Bot(End-to-End Task-Completion Neural Dialogue Systems) 】那些你不知道的事
  1. 【关于 rasa 安装 】那些你不知道的事
  2. 【关于 rasa 基本架构 】那些你不知道的事
  3. 【关于 rasa中文对话系统】那些你不知道的事
  4. 【关于 rasa中文对话系统构建】那些你不知道的事
  5. 【关于 rasa->NLU 】那些你不知道的事
  6. 【关于 rasa -> Core -> FormAction 】那些你不知道的事
  7. 【关于 rasa -> Core -> Stories 】那些你不知道的事
  8. 【关于 rasa -> Core -> Action 】那些你不知道的事

视频学习篇

实战篇

Elastrsearch 学习篇

推荐系统 学习篇

竞赛篇

  • 项目目标
    • 实现一个 基于 百度百科 的 ES 全文检索平台
  • 项目流程
    • step 1: 编写 网络爬虫 爬取 百度百科 数据;
    • step 2: 爬取数据之后,需要进行预处理操作,清洗掉 文本中噪声数据;
    • step 3: 将输入 导入 ES ;
    • step 4: 利用 python 编写 后台,并 对 ES 进行查询,返回接口数据;
    • step 5: ES 数据前端展示;
    • step 6: 百度百科 知识图谱构建
    • step 7:百度百科 知识图谱检索与展示
  • 数据介绍:
    • 本项目通过编写爬虫爬取 百度百科 数据,总共爬取 名称、链接、简介、中文名、外文名、国籍、出生地、出生日期、职业、类型、中文名称、代表作品、民族、主要成就、别名、毕业院校、导演、制片地区、主演、编剧、上映时间 等400多个 指标,共爬取数据 98000 条。
  • 数据预处理模块

爬取的数据根据名称可以分为 人物、地点、书籍、作品、综艺节目等。

类别 指标量 数量 筛选方式
人物 109 27319 国籍、职业、出生日期、出生地有一个不为空
地点 124 9361 地理位置、所属地区有一个不为空
书籍 45 3336 作者 不为空
作品 45 8850 主演为空,中文名称不为空
综艺节目 108 5600 主演、导演都不为空
  • 1、wordCount

  • 2、RDDStudy

    • 内容:RDD编程,熟悉算子,读写文件
    • 第3章 Spark编程基础
      • 3.1 Spark入门:RDD编程
      • 3.2 Spark入门:键值对RDD
      • 3.3 Spark入门:共享变量(提升-分布式必备)
      • 3.4 数据读写
        • 3.4.1 Spark入门:文件数据读写
  • 3、sparkSQLStudy

    • 内容:DataFrame,SparkSQL
    • 第4章
      • 4.1 Spark SQL简介
      • 4.2 DataFrame与RDD的区别
      • 4.3 DataFrame的创建
      • 4.4 从RDD转换得到DataFrame
  • 4、Parquet_JDBC_IO_Study

  • 5、MLlibStudy

    • 内容:MLlib流设计,特征工程
    • 第6章 Spark MLlib
      • 6.1 Spark MLlib简介
      • 6.2 机器学习工作流
        • 6.2.1 机器学习工作流(ML Pipelines)
        • 6.2.2 构建一个机器学习工作流
      • 6.3 特征抽取、转化和选择
        • 6.3.1 特征抽取:TF-IDF
        • 6.3.4 特征变换:标签和索引的转化
        • 6.3.5 特征选取:卡方选择器

About

研读顶会论文,复现论文相关代码

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 100.0%