论文解读:MuCGEC
MuCGEC- a Multi-Reference Multi-Source Evaluation Dataset for Chinese Grammatical Error Correction
Abstract
用于中文语法纠错(CGEC)的多参考多源评估数据集,包含收录自CSL中的7063个句子。其中每个句子由三名annotator更正,他们的更正由senior annotator仔细审查,每个句子产生 2.3 条参考。
使用两个主流CGEC模型进行实验,并用一个大规模预训练模型进行提升,在数据集上达到了有竞争力的基准表现
使用基于字符的指标。
1. introduction
GEC:表示对有可能有语法错误的输入文字句子(生句子)进行检测以及纠正所有的错误并且生成正确干净的句子。
英文数据集(EGEC)有着丰富的高质量人工标注评估数据,但中文数据集(CGEC)相对欠缺。主流的CGEC是NLPCC18和CGED。
现存的CGEC缺少多参考的数据,大部分来自上述两个数据集,这可能是由于采用了不同的标注工作流。
MuCGEC:解决下述的两个问题:单参考问题和单文本源问题
多参考的 ...
seq2seq模型
seq2seqGRU
效果与LSTM相近,并且参数量比LSTM更少,计算复杂度也更小
模型思想-Attentionhttps://zhuanlan.zhihu.com/p/394166679
原始的 seq2seqEncoder 和 Decoder 都是循环神经网络实现, 可以是 RNN, LSTM, GRU, CFG 等
GRU 即 Gated Recurrent Unit。 前面说到为了克服 RNN 无法很好处理远距离依赖而提出了LSTM, 而 GRU 则是 LSTM 的一个变体, 当然 LSTM 还有有很多其他的变体。GRU 保持了LSTM的效果同时又使结构更加简单, 所以它也非常流行。
隐含状态不断的传递, 得到 s, s 作为 decoder 的初始状态, 15-16 年非常流行的做机器翻译的框架, 不好的地方前面讲了, 离 s 比较远的稀释的比较厉害
基于 attention 的 seq2seq
seq2seq是第一个提出attention机制的模型。
Encoder 每一步的输出都会参与到 decoder 每一步的计算中!
我们会拿 encoder_outp ...
GPU并行训练
GPU并行训练为什么要使用多GPU并行训练简单来说,有两种原因:第一种是模型在一块GPU上放不下,两块或多块GPU上就能运行完整的模型(如早期的AlexNet)。第二种是多块GPU并行计算可以达到加速训练的效果。想要成为“炼丹大师“,多GPU并行训练是不可或缺的技能。
常见的多GPU训练方法:1.模型并行方式:如果模型特别大,GPU显存不够,无法将一个显存放在GPU上,需要把网络的不同模块放在不同GPU上,这样可以训练比较大的网络。(下图左半部分)
2.数据并行方式:将整个模型放在一块GPU里,再复制到每一块GPU上,同时进行正向传播和反向误差传播。相当于加大了batch_size。(下图右半部分)
GPU 设置nn.DataParallel和torch.nn.parallel.DistributedDataParallel`都是 PyTorch 用来在多个 GPU 上并行训练模型的工具, 但它们在实现上有一些重要的区别。
nn.DataParallel:
单机多卡并行: nn.DataParallel适用于在单台机器的多个 GPU 上进行模型的并行训练。
模型复制: 它会在多个 ...
Word2Vec与Embedding
Word2Vec什么是 Word2vec?NLP 里面,最细粒度的是 词语,词语组成句子,句子再组成段落、篇章、文档。所以处理 NLP 的问题,首先就要拿词语开刀。
NLP 里的词语,是人类的抽象总结,是符号形式的(比如中文、英文、拉丁文等等),所以需要把他们转换成数值形式,或者说——嵌入到一个数学空间里,这种嵌入方式,就叫词嵌入(word embedding),而 Word2vec,就是词嵌入( word embedding) 的一种
在 NLP 中,把 x 看做一个句子里的一个词语,y 是这个词语的上下文词语,那么这里的 f,便是 NLP 中经常出现的『语言模型』(language model),这个模型的目的,就是判断 (x,y) 这个样本,是否符合自然语言的法则,更通俗点说就是:词语x和词语y放在一起,是不是人话。
Word2vec 正是来源于这个思想,但它的最终目的,不是要把 f 训练得多么完美,而是只关心模型训练完后的副产物——模型参数(这里特指神经网络的权重),并将这些参数,作为输入 x 的某种向量化的表示,这个向量便叫做——词向量
我们来看个例子,如何用 Word2v ...
循环神经网络
循环神经网络(RNN)为什么需要RNN合并+ padding 的缺点
信息丢失
多个 embedding 合并 (求均值)
Pad 噪音、 无主次 (padding 太多, 即便没有 padding, 一些重要的表达情感的词语, 没有主次)
无效计算太多,低效
太多的 padding
序列问题:由于普通的神经网络(比如Embedding)是将多个句子词语通过全局平均池化合并成一个向量,来表示文章的积极和消极,这就导致信息丢失,除此之外,全局平均池化也没有考虑句子的语序问题,一个词语出现的先后效果也是不同的。
图 1: 普通神经网络( Vanilla Neural Networks ) 一个样本对应一个输出(卷积神经网络,全连接神经网络)
图 2: 1 对多:图片 生成描述
图 3: 多对 1:文本分类(文本情感分析)
图 4: 多对多: encoding-decoding,机器翻译, 需要在输入最后一个结束后, 才能进行输出,是非实时的
图 5: 实时多对多:视频解说
核心: 维护一个状态作为下一步的额外输入每一步使用同样的激活函数和参数 也就是 RNN 的 w ...
长短期记忆网络LSTM
长短期记忆网络 LSTM为什么需要 LSTM (Long short-term memory)普通 RNN 的信息不能长久传播(存在于理论上)—原因是针对结尾较远的信息被稀释的比较厉害
引入选择性机制(门机制)
选择性输入
选择性遗忘
选择性输出
选择性机制实现的原理 ——> 门:Sigmoid 函数: [0,1]
LSTM(长短时记忆) 是一种循环神经网络, 具有门控结构, 用于处理序列数据。其运算过程可以概括为以下几个步骤:
输入门(Input Gate) : 计算当前输入和前一时刻的输出是否应该被记忆。
遗忘门(Forget Gate) : 决定前一时刻输出, 结合当前的输入, 哪些记忆是否被保留。
记忆单元(Memory Cell) : 根据输入门和遗忘门的结果更新记忆状态。
输出门(Output Gate) : 基于当前输入和记忆状态计算当前时刻的输出。
https://www.bilibili.com/video/BV1Z34y1k7mc/?spm_id_from=333.1387.search.video_card.click&vd_so ...
机器学习-13-——集成学习
集成学习集成学习通过建立几个模型来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测。
集成学习中boosting和Bagging
面对一个机器学习问题, 通常有两种策略。
一种是研发人员尝试各种模型, 选择其中表现最好的模型做重点调参优化。 这种策略类似于奥运会比赛, 通过强强竞争来选拔最优的运动员, 并逐步提高成绩。
另一种重要的策略是集各家之长, 如同贤明的君主广泛地听取众多谋臣的建议, 然后综合考虑, 得到最终决策。
后一种策略的核心, 是将多个分类器的结果统一成一个最终的决策。 使用这类策略的机器学习方法统称为集成学习。 其中的每个单独的分类器称为基分类器。
Boosting 方法是通过逐步聚焦于基分类器分错的样本, 减小集成分类器的偏差。
Bagging 方法则是采取分而治之的策略, 通过对训练样本多次采样, 并分别训练出多个不同模型, 然后做综合, 来减小集成分类器的方差。
Boosting(串行)Boosting 方法训练基分类器时采用串行的方式, 各个基 ...
深度学习-——卷积神经网络
为什么要使用卷积神经网络遇到的问题 1
参数过多内存装不下举例:
图像大小 1000*1000一层神经元数目为 10^6
全连接参数为 10001000*10^ 6=10^12一层就是 1 万亿个参数, 内存装不下
神经网络遇到的问题 2
参数过多容易过拟合◆计算资源不足◆容易过拟合,发生过拟合, 我们就需要更多训练数据, 但是很多时候我们没有更多的数据, 因为获取数据需要成本
为什么我们可以这么做(卷积为什么有作用)呢?
局部连接图像的区域性—爱因斯坦的嘴唇附近的色彩等是相似的
参数共享与平移不变性图像特征与位置无关—左边是脸, 右边也是脸, 这样无论脸放在什么地方都检查出来,刚好可以解决过拟合的问题(否则脸放到其他地方就检测不出来)
参数共享与平移不变性可以参考下面链接—重点看https://blog.csdn.net/weixin_44177568/article/details/102812050?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2 ...
深度学习-1-——神经网络、softmax以及交叉熵损失
深度学习的定义深度学习是机器学习 (ML) 的一个子集,指人工神经网络(由算法建模而成,能够像人的大脑一样工作)学习大量数据。
深度学习的工作原理是什么?深度学习由神经网络层驱动。神经网络由一系列算法按照人类大脑的工作方式松散建模而成,而使用大量数据进行训练,即对神经网络的神经进行配置。经过训练后,深度学习模型可以处理新数据,能够摄取并实时分析多个来源的数据,无需人为干预。在深度学习中,图形处理单元 (GPU) 可以同时处理多个计算,以优化方式训练深度学习模型。
深度学习的概念源于对人工神经网络的研究,很多深度学习算法都使用神经网络进行表示,因为神经网络的性能精度和通用效果都非常好,于是业界习惯性地把深度学习算法等同于AI。
目标函数softmax在使用深度学习来处理分类问题的时候,需要衡量目标类别与当前预测的差距,目标函数可以帮助衡量模型的好坏,softmax 就是一个目标函数: 讲结果变为一个概率值
Softmax函数,又称 归一化指数函数 。
该函数 是最流行的 分类任务目标函数,也是 Sigmoid函数 的一种 推广。可转换为交叉熵误差 (CE) 。
它将原始的实数输入(通 ...
深度学习-——深度可分离卷积
深度可分离卷积通过引入深度可分离卷积,能很好的减少参数量,但效果下降更少,用于将模型降小。
第一步 depthwise feature:一般卷积网络会在卷积后三个通道求和,但深度可分离卷积不会求和,三个通道分别继续卷积:
第二步 pointwise feature:使用一个1x1的卷积核,将多通道求和:
对比计算量模型结构◆ 普通卷积计算量 Dk. Dk.M .N . DF. DF (各项相乘)加法操作, 复杂度小, 忽略掉其中:DKxDK 是输入和卷积核相乘, DF*DF 是滑动次数, 为什么乘以 M? M 是通道数目, N 是卷积核的数目(可以理解 M 是输入通道数目, N 是输出通道数目)
◆ 深度可分离卷积计算量 ◆深度可分离 DK.DK.M.DF.DF depthwise 计算量 ◆1*1 卷积 M.N.DF.DF pointwise 计算量
1/卷积核数目+1/卷积核 size 的平方
https://www.cnblogs.com/hellcat/p/9726528.html
参数量减少比例 :Dk x Dk x ...