Bert详解
Bert含义BERT模型的全称是:BidirectionalEncoder Representations from Transformer。双向Transformer编码表达,其中双向指的是attention矩阵中,每个字都包含前后所有字的信息。 BERT模型的目标是利用大规模无标注语料训练、获得文本的包含丰富语义信息的Representation,即:文本的语义表示,然后将文本的语义表示在特定NLP任务中作微调,最终应用于该NLP任务。 模型结构Bert依然是依赖Transformer模型结构,我们知道GPT采用的是Transformer中的Decoder部分的模型结构,当前位置只能attend到之前的位置。而Bert中则没有这样的限制,因此它是用的Transformer的Encoder部分。 而Transformer是由一个一个的block组成的,其主要参数如下: L: 多少个blockH: 隐含状态尺寸,不同block上的隐含状态尺寸一般相等,这个尺寸单指多头注意力层的尺寸,有一个惯例就是在Transformer Block中全连接层的尺寸是多头注意力层的4倍。所以指定了H相当 ...
Transformer详解
左边处理源语言,称之为Encoder,右边处理目标语言,被称为Decoder,分别由N个Block组成。然后每个block都有这么几个模块: Multi-Head Attention Masked Multi-Head Attention Add & Norm Feed Forward Positional Encoding Linear 其中, Feed Forward和Linear是神经网络的基本操作全连接层,Add & Norm以及延伸出来的一条侧边也是一个常见的神经网络结构残差连接 Attentionattention说白了就是权重计算和加权求和。图上的循环神经网络中的每一步都会输出一个向量,在预测目标语言到某一步时,用当前步的向量去和源语言中的每一步的向量去做内积,然后经过softmax得到归一化后的权重,再用权重去把源语言上的每一步的向量去做加权平均。然后做预测的时候也作为输入进入全连接层 Multi-Head Attention Multi-Head Attention是由多个Scaled Dot-Product Attention的函数组合而成的。 ...
决策树详解
决策树是一种以树状结构表示的分类和回归模型,从根节点开始,根据最优属性从上往下层层划分,最终输出叶子节点为分类结果值。 决策树代表对象属性和对象值之间的一种映射关系。它由节点(node)和有向边(directed edge)组成,其节点有两种类型:内节点(internal node)和叶节点(leaf node),内部节点表示一个特征或属性,叶节点表示一个类。根节点是决策树最开始的结点,内部结点是可以继续分类的结点。 决策树的学习本质上是从训练集中归纳出一组分类规则,得到与数据集矛盾较小的决策树,同时具有很好的泛化能力。决策树学习的损失函数通常是正则化的极大似然函数,通常采用启发式方法,近似求解这一最优化问题。决策树学习算法包含特征选择、决策树生成与决策树的剪枝。决策树表示的是一个条件概率分布,所以深浅不同的决策树对应着不同复杂程度的概率模型。决策树的生成对应着模型的局部选择(局部最优),决策树的剪枝对应着全局选择(全局最优)。决策树常用的算法有ID3,C4.5,CART,下面通过一个简单的例子来分别介绍这几种算法。 特征选择宗旨是在每一个决策点,选择能够使得样本的熵降低得最快,样本纯 ...
逻辑回归详解
什么是逻辑回归?逻辑回归(Logistic Regression)主要解决二分类问题,用来表示某件事情发生的可能性。 比如: 一封邮件是垃圾邮件的肯能性(是、不是) 你购买一件商品的可能性(买、不买) 广告被点击的可能性(点、不点) 一句话总结,逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。 逻辑回归公式 Sigmoid函数 图像是Sigmoid函数之所以叫Sigmoid,是因为函数的图像很想一个字母S。这个函数是一个很有意思的函数,从图像上我们可以观察到一些直观的特性:函数的取值在0-1之间,且在0.5处为中心对称,并且越靠近x=0的取值斜率越大。 逻辑回归的假设数据服从伯努利分布 伯努利分布:是一个离散型概率分布,若成功,则随机变量取值1;若失败,随机变量取值为0。成功概率记为p,失败为q = 1-p。 在逻辑回归中,既然假设了数据分布服从伯努利分布,那就存在一个成功和失败,对应二分类问题就是正类和负类,那么就应该有一个样本为正类的概率,和样本为负类的概率。 正类的概率由sigmoid的函数计算 ...
TextCNN详解
什么是卷积?最好理解的方式就是,一个小框在矩阵上滑动,并通过一定的计算来得到一个新的矩阵。看图吧,这样更好理解! 卷积神经网络的核心思想是捕捉局部特征,对于文本来说,局部特征就是由若干单词组成的滑动窗口,类似于N-gram。卷积神经网络的优势在于能够自动地对N-gram特征进行组合和筛选,获得不同抽象层次的语义信息。 TextCNN原理Yoon Kim在论文(2014 EMNLP) Convolutional Neural Networks for Sentence Classification提出TextCNN。将卷积神经网络CNN应用到文本分类任务,利用多个不同size的kernel来提取句子中的关键信息(类似于多窗口大小的ngram),从而能够更好地捕捉局部相关性。 每一个单词的embedding固定,所以kernel size的宽度不变,只能改变高度。kernel的通道可以理解为用不同的词向量表示。 输入句子的长度不一样,但卷积核的个数一样。每个卷积核抽取单词的个数不一样,高度低的形成feature maps长度就较长,高度高的形成feature maps的长度就较短,但fe ...
LSTM详解
长期依赖(Long Term Dependencies)传统的RNN节点输出仅由权值,偏置以及激活函数决定(图3)。RNN是一个链式结构,每个时间片使用的是相同的参数。 在深度学习领域中(尤其是RNN),“长期依赖“问题是普遍存在的。长期依赖产生的原因是当神经网络的节点经过许多阶段的计算后,之前比较长的时间片的特征已经被覆盖,例如下面例子 123456eg1: The cat, which already ate a bunch of food, was full. | | | | | | | | | | | t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10eg2: The cats, which already ate a bunch of food, were full. | | | | | | | | | | | t0 t1 t2 t3 t4 t5 t ...
TinyBert详解
BERT 等大模型性能强大,但很难部署到算力、内存有限的设备中。为此,来自华中科技大学、华为诺亚方舟实验室的研究者提出了 TinyBert,这是为基于 transformer 的模型专门设计的知识蒸馏(knowledge distillation,KD)方法。通过这种新的 KD 方法,大型 teacherBERT 模型中编码的大量知识可以很好地迁移到小型 student TinyBert模型中。模型大小还不到 BERT 的 1/7,但速度是 BERT 的 9 倍还要多,而且性能没有出现明显下降。 TinyBert 的结构如下图:在TinyBert中,student 和 teacher 网络都是通过 Transformer 层构建的。此外,研究者还提出了一种专门用于 TinyBERT 的两段式学习框架,从而分别在预训练和针对特定任务的学习阶段执行 transformer 蒸馏。这一框架确保 TinyBert 可以获取 teacherBERT 的通用知识和针对特定任务的知识。 除了提出新的 transformer 蒸馏法之外,研究者还提出了一种专门用于 TinyBERT 的两段式 ...
Normalization方法总结
归一化(Normalization)描述: 将数据映射到指定的范围,如:把数据映射到0~1或-1~1的范围之内处理。 作用: 数据映射到指定的范围内进行处理,更加便捷快速。 把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。经过归一化后,将有量纲的数据集变成纯量,还可以达到简化计算的作用。 常见做法:Min-Max归一化 标准化(Normalization)注:在英文翻译中,归一化和标准化的翻译是一致的,而在实际使用中,我们需要根据实际的公式(或用途)去理解~ 数据标准化方法有多种,如:直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响。其中,最常用的是Z-Score 标准化。 Z-Score 标准化其中,$\mu$为数据均值(mean),$\sigma$为标准差(std)。 描述:将原数据转换为符合均值为0,标准差为1的标准正态分布的新数据。 作用: 提升模型的收敛速度(加快梯度下降的求解速度) 提升模型的精度(消除量级和量纲的影响) 简化计算(与归一化的简化原 ...
Markdown数学公式语法
行内与独行 行内公式:将公式插入到本行内,符号:$公式内容$,如:$xyz$ 独行公式:将公式插入到新的一行内,并且居中,符号:$$公式内容$$,如: $$xyz$$ 上标、下标与组合 上标符号,符号:^,如:$x^4$ 下标符号,符号:_,如:$x_1$ 组合符号,符号:{},如:${16}{8}O{2+}{2}$ 汉字、字体与格式 汉字形式,符号:\mbox{},如:$V_{\mbox{初始}}$ 字体控制,符号:\displaystyle,如:$\displaystyle \frac{x+y}{y+z}$ 下划线符号,符号:\underline,如:$\underline{x+y}$ 标签,符号\tag{数字},如:$\tag{11}$ 上大括号,符号:\overbrace{算式},如:$\overbrace{a+b+c+d}^{2.0}$ 下大括号,符号:\underbrace{算式},如:$a+\underbrace{b+c}_{1.0}+d$ 上位符号,符号:\sta ...
Roberta详解
roberta三个训练改进: 去掉下一句预测(NSP)任务 动态掩码。BERT 依赖随机掩码和预测 token。原版的 BERT 实现在数据预处理期间执行一次掩码,得到一个静态掩码。 而 RoBERTa使用了动态掩码:每次向模型输入一个序列时都会生成新的掩码模式。这样,在大量数据不断输入的过程中,模型会逐渐适应不同的掩码策略,学习不同的语言表征。 文本编码。不管是GPT还是Bert,都是用的BPE的编码方式,BPE是Byte-Pair Encoding的简称,是介于字符和词语之间的一个表达方式,比如hello,可能会被拆成“he”, “ll”, “o”, 其中BPE的字典是从语料中统计学习到的。是用以解决OOV(out of vocab)问题的算法。原始Bert中,采用的BPE字典是30k, Roberta中增大到了50K,相对于Bertbase和Bertlarge会增加15M/20M的参数。 大语料与更长的训练步数 Large-Batch:现在越来越多的实验表明增大batch_size会使得收敛更快,最后的效果更好。原始的Bert中,batch_size= ...