<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[爱度博客]]></title><description><![CDATA[爱度博客]]></description><link>http://blog.idea2du.com/</link><image><url>http://blog.idea2du.com/favicon.png</url><title>爱度博客</title><link>http://blog.idea2du.com/</link></image><generator>Ghost 2.19</generator><lastBuildDate>Wed, 08 Apr 2026 01:38:19 GMT</lastBuildDate><atom:link href="http://blog.idea2du.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[综合评价理论与方法研究]]></title><description><![CDATA[<p>		</p><p>		综合评价工作在社会各领域应用普遍，是科学合理做出管理决策的重要依据。随着各界研究领域的不断扩大，面对的评价目标及其对象日趋复杂，当针对某一评价目标围绕某些对象进行评价时，如果仅从单一指标出发进行考量，会显得不是很全面也不科学。比如企业员工评级，除了岗位绩效，也要综合员工品行、个人技能、工作主动性、与同事之间的协调合作能力等等因素。因此，通常情况下，对象/问题评价往往需要设计多个维度、多个层次的指标，进行多指标综合评价，从而得到更加全面科学的结论，以辅助管理决策。</p><p>		目前，围绕评价目的、指标体系的构建、指标权重的确定、数据来源与处理、评价信息的集成和结果的分析应用等方面，国内外已经形成了较为系统成熟的理论和方法体系，本文特对有关综合评价的基础理论和方法进行如下梳理总结，以供相关研究参考。</p><h1 id="1-">1.简述</h1><p>		</p><p>		关于综合评价（Comprehensive Evaluation，CE）的定义，一般是指基于评价目的，确定评价对象，通过全面测定或衡量评价对象的特征属性，采用合理的评价方法/模型融合多个属性特征信息，来综合反映研究对象总体特征，以供横向或纵向比较等应用。<sup>[1][2]</sup></p><h2 id="1-1-"><strong>1.1 综合评价的主要目标</strong></h2><p>		</p><p>		进行综合评价分析，</p>]]></description><link>http://blog.idea2du.com/comprehensive-evaluation/</link><guid isPermaLink="false">6131865aebc48f000116d19a</guid><category><![CDATA[舆情分析]]></category><dc:creator><![CDATA[GuiYing]]></dc:creator><pubDate>Fri, 03 Sep 2021 03:12:48 GMT</pubDate><content:encoded><![CDATA[<p>		</p><p>		综合评价工作在社会各领域应用普遍，是科学合理做出管理决策的重要依据。随着各界研究领域的不断扩大，面对的评价目标及其对象日趋复杂，当针对某一评价目标围绕某些对象进行评价时，如果仅从单一指标出发进行考量，会显得不是很全面也不科学。比如企业员工评级，除了岗位绩效，也要综合员工品行、个人技能、工作主动性、与同事之间的协调合作能力等等因素。因此，通常情况下，对象/问题评价往往需要设计多个维度、多个层次的指标，进行多指标综合评价，从而得到更加全面科学的结论，以辅助管理决策。</p><p>		目前，围绕评价目的、指标体系的构建、指标权重的确定、数据来源与处理、评价信息的集成和结果的分析应用等方面，国内外已经形成了较为系统成熟的理论和方法体系，本文特对有关综合评价的基础理论和方法进行如下梳理总结，以供相关研究参考。</p><h1 id="1-">1.简述</h1><p>		</p><p>		关于综合评价（Comprehensive Evaluation，CE）的定义，一般是指基于评价目的，确定评价对象，通过全面测定或衡量评价对象的特征属性，采用合理的评价方法/模型融合多个属性特征信息，来综合反映研究对象总体特征，以供横向或纵向比较等应用。<sup>[1][2]</sup></p><h2 id="1-1-"><strong>1.1 综合评价的主要目标</strong></h2><p>		</p><p>		进行综合评价分析，必须先明确其评价目标，通常情况下，综合评价目标可大概分为以下几类：</p><p>		其一，分类问题，对所研究对象的全部单位进行分类；</p><p>		其二，比较排序问题，比较所研究对象的全部单位、进行综合排序，或在分类基础上对各小类单位评估优劣进行排序；</p><p>		其三，某一综合目标的整体实现程度评价（对某一事物作出整体评价）问题，如小康目标的实现程度、社会现代化实现程度，当然必须有参考系。</p><h2 id="1-2-"><strong>1.2 综合评价的构成要素</strong></h2><p>		</p><p>		能形成综合评价问题的主要构成要素包括：评价对象、评价指标、权重系数、综合评价模型和评价者。</p><p><strong><strong>（1）评价对象</strong></strong></p><p>		评价对象是综合评价问题中的研究对象，或称为系统。一般而言，针对综合评价目的，评价对象是属于同一类的，且个数要大于1。</p><p><strong><strong>（2）评价指标</strong></strong></p><p>		评价指标是用来测度评价对象（或系统）运行（或发展）状况的基本要素。通常情况下，综合评价问题是由多项评价指标构成的指标体系来衡量，体系中的各项指标从不同维度度量评价对象的关键特征。</p><p><strong><strong>（3）权重系数</strong></strong></p><p>		每一综合评价问题都有相应的评价目的，评价目的的不同往往各评价指标之间的相对重要程度是不同的，评价指标之间这种相对重要程度的大小就是用指标权重系数来表示。</p><p><strong><strong>（4）综合评价算法/模型</strong></strong></p><p>		针对多指标（或多因素）的综合评价问题，基于评价指标体系的构建、权重系统的分配之后，需要设计合适的综合评价算法或建立科学的综合评价模型，将多个评价指标综合成一个评价值，作为综合分析的依据，从而得到相应的评价结果。</p><p><strong><strong>（5）评价者</strong></strong></p><p>		评价者是针对评价目标，直接进行综合评价的参与人，可以是某个人，也可以是某一个团队。对于评价目标的确定、指标体系的构建、权重系数的计算、评价算法/模型的建立，都由评价者决定。</p><h2 id="1-3-"><strong>1.3 综合评价的一般流程</strong></h2><p>		</p><p>		基于国内外相关研究，结合以往分析实践经验来看，综合评价问题研究的主要流程包括：</p><p><strong>		（1）<strong>确定综合评价的目标：</strong></strong>如上文所述的主要几类目标，明确实际问题的评价目的；</p><p><strong>		（2）<strong>构建评价指标体系：</strong></strong>基于评价目的，针对评价对象，参考相关研究文献，并遵循指标体系构建的目标性、系统全面性、科学合理性、可比可操作性等原则，构建评价指标体系，一般包括定性分析法和定量分析法；其中，常用的定性分析方法有（专家）综合法和因素分析法，定量分析方法有系统聚类、极大不相关法、条件广义方差极小法、选取典型指标法以及试算法等；</p><p><strong>		（3）<strong>指标数据的获取与处理：</strong></strong>按评价指标体系，全面搜集各渠道数据，依次提取指标数据，并进行指标数据预处理，指标数据预处理通常包括指标同向化、无量纲化两个主要处理步骤，相关方法较多，特在下文进行详细介绍；</p><p><strong>		（4）<strong>评价指标权重的确定：</strong></strong>在对综合评价问题进行实际测算时，当评价对象、评价指标及其数值确定以后，指标权重系数合理与否直接关系到综合评价结果的可信度，甚至影响到最终决策的优劣，因此，下文会对权重系数的计算方法进行详细介绍；</p><p><strong>		（5）<strong>综合评价算法设计/模型构建：</strong></strong>基于指标数值、指标权重系数，需设计合适的综合评价算法/构建合适的综合评价模型，下文对经典的综合评价算法/模型进行了详细介绍，可结合实际情况进行相应的改进；</p><p><strong>		（6）<strong>综合评价结果的分析及应用：</strong></strong>基于综合评价结果，围绕评价目标开展多维度的分析及应用。</p><h1 id="2-">2. 评价指标数据预处理</h1><p>		</p><p>		评价指标数据的预处理操作一般包括指标属性同向化处理和数据无量纲化处理，其中，指标同向化处理（若一些指标的数据越大越好，另一些指标的数据越小越好，会造成尺度混乱），是使所有指标都是从同一方向评价总体；指标无量纲化处理，是为消除指标之间不同计量单位（不同度量）对指标数值大小的影响和指标数值不能对比综合而进行的一种预处理方式。这两种预处理方法通常包括：（数据冗余、异常值及缺失值等数据处理方法在此不展开，如有需要可根据实际情况进行相应处理。）</p><h2 id="2-1-"><strong>2.1 评价指标属性同向化</strong></h2><p><strong>		</strong></p><p><strong>		<strong>据以往经验总结，评价指标属性可能为“极大型”、“极小型”、“中间型”或“区间型”，</strong></strong>其中，极大型指标又称正向指标，通常指与评价目标呈正相关关系的指标，期望指标的取值越大越好。针对各属性指标，为了可以进行综合评价，需要解决同方向性，往往需要将其他类型的指标进行正向化处理，使其和极大型指标一样和评价目标同向化变动。</p><p><strong>		<strong>（1）极小型指标：</strong></strong>又称逆向指标，通常与评价目标呈负相关关系，期望指标的取值越小越好，其处理方法包括：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong>		（2）<strong>中间型指标：</strong></strong>期望指标的取值既不要太大，也不要太小，即取适当的中间值为最好，其处理方式为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-1.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong>		（3）<strong>区间型指标：</strong></strong>期望指标的取值最好是落在某一个确定的区间内为最好，其处理方式为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-2.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="2-2-"><strong>2.2 评价指标数值无量纲化</strong></h2><p>		</p><p>		通常情况下，由于各评价指标性质不同，而具有不同量纲和数量级。当各指标间的数值水平相差很大时，指标之间往往不能直接进行数值比较和综合评价，若用原始数值进行分析，就会突出数值较大的指标在综合评价中的作用，相对削弱数值水平较低指标的作用，则可能出现“大数吃小数”情况，导致错误的评价结果。因此，为保证结果的可靠性，一般需要对评价指标原始数值进行无量纲化处理，无量纲化处理又称指标数据的标准化、归一化或规范化处理，常用的方法包括：（以下公式是，假定针对有n个评价对象、m个评价指标的综合评价体系，对于第i个对象的第j个指标数值的处理。）</p><p><strong><strong>（1）Min-Max标准化</strong></strong></p><p>		也叫离差标准化、极值差法，通过对原始数据进行线性变换，使其映射在[0,1]区间，转换函数如下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-3.png" class="kg-image"></figure><!--kg-card-end: image--><p>		Min-Max标准化方法处理简单易理解，且不改变指标原始数据分布，适用于指标数据的最大值和最小值是明确不变的情况，若最大最小值易变，则会导致后续测算的结果不稳定，实际应用中往往用常量来代替。</p><p><strong><strong>（2）Z-Score标准化</strong></strong></p><p>		Z-Score标准化也称标准差标准化，是基于指标原始数据的均值和标准差进行数据标准化处理的方法，是SPSS统计软件中默认的标准化方法。这种方法会改变指标原始数据分布，对离群点的规范化效果好，适用于指标数值最大值和最小值未知的情况，或原始数据接近正态分布的情况，或有超过取值范围的离群数据的情况。</p><p>		处理后的数据符合标准正态分布，即均值为0，标准差为1，其转化函数为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-4.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（3）归一化方法</strong></strong></p><p>		指标数据归一化至(0,1]区间，得到的指标归一化值求和为1，常见的处理方式为：</p><p><strong>		<strong>A.数值归一化</strong></strong></p><p>		若指标数值全是正数，只想直接对数值归一化至(0,1]区间，可通过指标原始数据中的每个值除以指标数据之和进行标准化，公式为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-5.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong>		<strong>B.排序归一化</strong></strong></p><p>		若并不关注指标数值归一化的具体值，更关注指标数值的相对排序，可采用指标排序归一化处理方式，公式为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-7.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong>		<strong>C.分段归一化</strong></strong></p><p>		这种方法是较为复杂的归一化处理方式，但更能贴近业务、能整合多个方法的优点，适用于数据分布有明显分段特征的指标，处理方法为：先根据业务经验对数据分段，在不同分段内使用相应方法。</p><p><strong><strong>（4）指数转换</strong></strong></p><p>		通过对指标原始数据进行相应的指数函数变换来进行数据的标准化，常见的处理方法为：</p><p><strong>		<strong>A.log函数转换</strong></strong></p><p>		又称对数标准化，通过以10为底的log函数转换的方法进行数据标准化，较多处理公式是：x=log10(x)，但这处理后的结果并非一定落在(0,1]区间，要使处理后的数值落到此区间，处理公式为：ln(指标原数据)/ln(指标数据最大值)</p><p>		这种处理方法适用于长尾分布的原始数据，需要对样本做分段操作的情况。</p><p><strong>		<strong>B.atan函数转换</strong></strong></p><p>		用反正切函数也可以实现数据的归一化，使用这个方法需要注意的是如果想映射的区间为[0,1]，则数据都应该大于等于0，小于0的数据将被映射到[-1,0]区间上。</p><p><strong>		<strong>C.softmax函数转换</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-8.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong>		</strong><a href="http://blog.idea2du.com/comprehensive-evaluation/D.sigmoid函数转换"><strong>D.sigmoid函数转换</strong></a></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-9.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（5）小数定标标准化</strong></strong></p><p>		小数定标标准化是指，通过移动原始数据小数点的位置来进行标准化。小数点移动的位数取决于原始数据中的最大绝对值。计算公式为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-10.png" class="kg-image"></figure><!--kg-card-end: image--><h1 id="3-">3. 评价指标权重计算</h1><p>		</p><p>		在综合评价体系中，指标权重系数的确定是非常关键的环节，诸多学者就此方向展开了广泛研究。通过相关文献梳理，下文将指标权重确定的经典方法总结如下。在实际测算分析中 ，可综合研究目标、数据特征以及专业知识选择相应的权重计算方法。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-11.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="3-1-"><strong>3.1 主观赋权法</strong></h2><p><strong>		</strong></p><p><strong>		<strong>主观赋权法</strong></strong>是指评价者基于评价目，通过哲学思辨、逻辑分析和经验判断，对评价对象的特征信息进行综合分析，从而得到指标权重的方法。常用的主观赋权方法有专家会议法、直接评分法、德尔菲法、层次分析法等。主观赋权的方法能充分利用评价者（专家）的专业知识、经验或价值判断，在战略决策类问题、或难以量化的评价系统、或评价精度要求不是很高的综合评价系统中应用普遍。本文对这类方法中的经典方法具体介绍如下：</p><p><strong>		<strong>层次分析法</strong></strong>（Analytic Hierarchy Process，简称“AHP”）是美国运筹学家Saaty等人在20世纪70年代提出的一种综合定性与定量的决策分析法，针对评价对象分解成目标、准则、方案等层次，通过判断各层次指标的相对重要程度，综合评价者的主观判断和客观推理，从而计算得到决策方案中每个评价指标的权重，在一定程度避免了单纯因为主观经验造成的逻辑错误等问题，是应用较为普遍的一种基于经验定权方法。<strong><strong>此方法的主要计算步骤为：</strong></strong><em><em>（注意：AHP计算中提到的特征向量、特征值并不是矩阵中的概念，是重新定义的。）</em></em><sup>[3][4]</sup></p><p><strong><strong>（1）构建梯阶层次结构模型</strong></strong></p><p>		采用AHP进行综合评价问题分析时，首先需构建一个有层次的结构模型，这些层次一般可分为：最高层（目标层）、中间层（准则层）、最底层（方案层），梯阶层次结构中的层次数与问题复杂程度有关，层次数通常不受限制；</p><p><strong><strong>（2）构造各层次指标的两两比较判断矩阵</strong></strong></p><p>		针对评价目标设计的准则层及方案层等各层次指标，在综合评价时所占比重往往不同，因此，可先通过评价者对各层次指标进行相对重要程度的判别，从而构建各层次指标的判断矩阵，一般判断矩阵的构建常引用数字1-9及其倒数作为标度，整理相关文献对判断矩阵标度的定义如表1所示。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-12.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-13.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（3）计算判断矩阵的特征向量、指标权重向量和特征值</strong></strong></p><p>		对判断矩阵各列进行归一化，即每个元素都除以当前列元素之和，公式为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-14.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（4）判断矩阵的一致性检验</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-15.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="3-2-"><strong>3.2 客观赋权法</strong></h2><p>		</p><p>		由于主观赋权法较为依赖评价者的专业知识和经验判断能力，常使评价结果波动性较大、可比性较差，因此，基于指标数据进行更为科学合理的客观赋权法应运而生。客观赋权法是评价者基于评价目的构建的综合评价体系，抛开经验判断，主要充分利用评价对象属性及其数据信息，对评价指标进行权重系数计算的方法。这类方法在综合评价问题中应用相对较为广泛，包括熵权法、变异系数法、灰色关联度分析法、神经网络分析法等，本文具体介绍如下方法：</p><h3 id="3-2-1-"><strong>3.2.1 熵权法</strong></h3><p><strong>		</strong></p><p><strong>		<strong>熵权法</strong></strong>（the Entropy Weight Method，简称“EWM”）是基于信息论的基本原理，利用各指标熵值所反映的信息量大小来计算指标权重的一种客观赋权方法。<sup>[5]</sup><strong><strong>此方法的主要计算步骤为：</strong></strong></p><p><strong><strong>（1）对原始数据矩阵进行归一化处理</strong></strong></p><p>		熵权法计算评价指标权重，只需要对指标原始数据进行归一化处理，不需要进行同向化处理（同向化会损失原始数据信息，不利于信息熵计算），归一化处理方法按需选用上文介绍的其中一种方法即可，下方为一般方法：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-16.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（2）各指标熵值计算</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-17.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（3）各指标熵权系数计算</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-18.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="3-2-2-"><strong>3.2.2 变异系数法</strong></h3><p>		</p><p>		<strong>变异系数法（Coefficient of Variation Method）</strong>是一种基于统计学方法计算各评价指标变化程度的客观赋权法，不需要依靠专家经验，而是直接利用各指标数据信息计算得到各指标的权重系数。这一方法的基本假设是：在综合评价体系中，变化差异越大的指标越重要，因为它更能反映出参加评价的各对象之间的差距，所以其权重系数应越大。该方法通过计算变异系数来衡量各项评价指标取值的差异程度，从而计算其权重系数。<sup>[2]</sup></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-19.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="3-2-3-"><strong>3.2.3 灰色关联度分析法</strong></h3><p><strong>		</strong></p><p><strong>		<strong>灰色关联度分析（Grey Relational Analysis，简称“GRA”）</strong></strong>是一种利用灰色系统理论进行多因素统计分析的方法，主要方式是关联分析，分析各个因素对结果的影响程度，计算其关联程度，从而决定重要因素，一般适用于评价信息少、数据不明确的综合评价问题。<sup>[6]</sup><strong><strong>采用GRA方法进行综合评价的主要计算步骤为：</strong></strong></p><p><strong><strong>（1）对原始数据集中进行指标属性同向化处理、无量纲化处理</strong></strong></p><p>		评价指标同向化及无量纲化处理方法按需选用一种上文介绍的方法即可，将评价指标原始数据矩阵依次进行同向化、无量纲化处理后，得到标准化矩阵Z：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-20.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（2）确定母序列、子序列</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-21.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（3）计算各指标子序列元素与母序列对应元素间的灰色关联度</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-22.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（4）计算各评价指标的权重</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-23.png" class="kg-image"></figure><!--kg-card-end: image--><h1 id="4-">4.综合评价方法/模型选择</h1><p>		</p><p>		确定指标权重系数之后，就是选取合适的综合评价方法/模型进行测算和分析了，下文同样详细介绍几种经典的算法/模型，其他方法因篇幅有限，本文不做详细介绍，可按需参考相关文献选择或改进相应方法即可。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-24.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="4-1-"><strong>4.1 优劣解距离法</strong></h2><p><strong>		</strong></p><p><strong>		<strong>优劣解距离法</strong></strong>（Technique for Order Preference by Similarity to an Ideal Solution，简称“TOPSIS”）是一种应用较为普遍的综合评价方法，该方法对指标原始数据分布及样本量没有严格限制，方法简单易行的同时，能充分利用原始数据的信息，其结果能精确反映各评价方案之间的差距。<sup>[7][8][9][10]</sup><strong><strong>此方法的主要计算步骤为：</strong></strong></p><p><strong><strong>（1）对原始数据集中进行指标属性同向化处理、无量纲化处理</strong></strong></p><p>		评价指标同向化及无量纲化处理方法按需选用一种上文介绍的方法即可，将评价指标原始数据矩阵依次进行同向化、无量纲化处理后，得到标准化矩阵Z：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-25.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（2）确定最优值向量</strong><em><em><strong>Z</strong></em><sup><em><strong>+</strong></em></sup></em><strong>和最劣值向量</strong><em><em><strong>Z</strong></em><sup><em><strong>-</strong></em></sup></em></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-26.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（3）计算各评价对象属性值与最优值、最劣值的距离</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-27.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（4）计算各评价对象属性与最优值向量的相对接近度</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-28.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（5）按照</strong><em><em><strong>C</strong></em><sub><em><strong>i</strong></em></sub></em><strong>大小进行排序，即可给出综合评价结果，进行综合分析。</strong></strong></p><h2 id="4-2-"><strong>4.2 秩和比法</strong></h2><p>		</p><p>		由上文可支，TOPSIS算法简单易操作，能充分利用原始数据信息，但由于它完全依赖现有数值情况，不适用模糊性指标的处理，而<strong><strong>秩和比法</strong></strong>（Rank-Sum Ratio，简称“RSR”）恰好弥补了它的不足。RSR法由我国著名卫生统计学家田风调先生创立，是一种综合古典参数统计和近代非参数统计各自优点于一体的一种统计分析方法，适用于各种评价对象，对评价指标的选择无特殊要求，且计算时利用的是秩次信息，可以消除异常数值的干扰。<sup>[11]</sup><strong><strong>采用RSR方法进行综合评价的主要计算步骤为：</strong></strong></p><p><strong><strong>（1）对原始数据表进行编秩</strong></strong></p><p>		对n个评价对象m个评价指标排列成的n行m列原始数据表，按每个评价指标分别对各评价对象进行编秩，通常情况下编秩方法一般包括两种，可根据实际情况选一种即可，得到秩矩阵，记为R=(R<sub>ij</sub>)<sub>n×m</sub>：</p><p><strong>		<strong>A.整次秩和比法</strong></strong></p><p>		按各评价对象指标的原始数据，对每个指标中各评价对象的属性值进行排序编秩，其中，极大型指标从小到大编秩（值越大，秩数值越大），极小型指标从大到小编秩（值越小，秩数值越大），同一指标数据相同者编平均秩。如某极大型指标各评价对象属性值分别为20,5,9,10，则秩数值可分别为4,1,2,3。</p><p><strong>		<strong>B非整次秩和比法</strong></strong></p><p>		为改进整次秩和比法中易损失指标原始数值定量信息的缺点，非整次秩和比法采用类似线性插值的方式，对指标原始数值进行编秩，使得所编秩次与原始数值之间存在线性对应关系，减少定量信息的缺失，计算公式如下：（<em><em>注：线性模型可基于实际情况进行扩展，如指数、对数等其他方法。</em></em>）</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-30.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>（2）计算秩和比并排序</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-31.png" class="kg-image"></figure><!--kg-card-end: image--><p>		如果只考虑评价对象的排序问题、不考虑具体值的话，此时，已基本完成了综合评价的基本分析，但如果希望从正态分布角度对数据进行分层，完成更为具体的分析，请查阅参考文献<sup>[11]</sup>。</p><h2 id="4-3-"><strong>4.3 模糊综合评价法</strong></h2><p><strong>		</strong></p><p><strong>		<strong>模糊综合评价法</strong></strong>（Fuzzy Comprehensive Evaluation，简称“FCE”）基于模糊数学理论，通过将边界不清、不易定量的评价指标因素定量化，从而进行综合评判。FCE法适用于指标较少的综合评价问题，<strong><strong>主要计算步骤为：</strong></strong><sup>[12]</sup></p><p><strong><strong>（1）构建评价对象的因素集</strong></strong></p><p>		因素（指标）集是指对评价对象进行综合评价的各因素指标构成的集合，通常用U表示，U=（u<sub>1</sub>,u<sub>2</sub>,...,u<sub>m</sub>），其中<em><em>u</em><sub><em>i</em></sub></em>表示影响评价对象的第<em><em>i</em></em>个评价指标，这些因素一般具有不同程度的模糊性。</p><p><strong><strong>（2）构建综合评价的评价集</strong></strong></p><p>		评价集是指将评价者对评价对象可能打出的各种结果所构成的集合，通常用V表示，V=（v<sub>1</sub>,v<sub>2</sub>,..,v<sub>n</sub>），其中<em><em>v</em><sub><em>j</em></sub></em>表示对某个评价指标的第<em><em>j</em></em>种评价等级，一般可分为五个等级：V={优，良，中等，较差，差}。</p><p><strong><strong>（3）进行单因素模糊评价，获得评价矩阵</strong></strong></p><p>		如果在因素集U中第<em><em>i</em></em>个因素的评价集<em><em>V</em></em>中，其第1个元素的隶属度为<em><em>r</em><sub><em>i1</em></sub></em>，则对第<em><em>i</em></em>个元素进行单因素评价的结果可以用模糊集合表示为：R<sub>i</sub>=（r<sub>i1</sub>,r<sub>i2</sub>,...,r<sub>in</sub>），以<em><em>m</em></em>个单因素评价集R<sub>1</sub>,R<sub>2</sub>,...,R<sub>m</sub>为行组成矩阵R<sub>m×n</sub>，称为模糊综合评价矩阵。</p><p><strong>（4）<strong>构建综合评价模型</strong></strong></p><p>		基于上文所述的权重系数计算方法，按需选取计算得到各评价指标的权重集，用A表示：A=（a<sub>1</sub>,a<sub>2</sub>,...,a<sub>m</sub>）；基于单因素判断矩阵R和因素权重向量A，通过模糊变化将U上的模糊向量A变为V上的模糊向量B，即B=A<sub>1*m</sub>⭕R<sub>m*n</sub>=（b<sub>1</sub>,b<sub>2</sub>,...,b<sub>n</sub>），其中⭕为综合评价合成算子，一般取矩阵乘法即可。</p><p><strong>（5）<strong>计算系统总得分</strong></strong></p><p>		构建综合评价模型之后，即可计算系统总得分，即F=B<sub>1*n</sub>*S<sup>T</sup><sub>1*n</sub>，其中F为系统总得分，S为V中相应因素的级分。(详细示例参考：参考：https://zhuanlan.zhihu.com/p/32666445)</p><h2 id="4-4-"><strong>4.4 主成分分析法</strong></h2><p>		</p><p>		在诸多综合评价的实际问题中，往往涉及多个变量，而且不同指标之间具有一定相关性，这无疑增加了问题分析的复杂性。此时，若盲目地减少评价指标，则会损失很多重要特征，可能导致错误的评价结果；若分别分析各评价指标，结果又过于独立，并没有对评价对象进行综合评价。因此，需要从大量原始指标中提取少许综合评价指标，使其大体上反映评价对象全部指标的变化，而不丧失或只丧失很小一部分原始指标所提供的信息，这种将多个指标组合成少许相互无关的综合指标的统计方法叫<strong><strong>主成分分析（Principal Components Analysis，简称“PCA”）。</strong></strong></p><p>		PCA通过分析原始评价指标相关矩阵或协方差矩阵的内部结构关系，对原始变量进行线性组合形成几个主成分，使得在保留原始变量主要信息的前提下起到评价指标降维与问题简化的作用。其基本原理为：（如下步骤主要介绍基本思想，未展开介绍，具体可见参考文献。）<sup>[13]</sup></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-33.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-34.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-36.png" class="kg-image"></figure><!--kg-card-end: image--><p>		一般而言，采用PCA得到的主成分指标与原始评价指标之间存在如下基本关系：</p><p>		每一个主成分都是各原始评价指标的线性组合；</p><p>		主成分保留了原始评价指标的绝大部分信息；</p><p>		主成分的数量大大少于原始评价指标的数量；</p><p>		主成分之间互不相关。</p><h2 id="4-5-">4.5 因子分析法</h2><p><strong>		</strong></p><p><strong>		因子分析法（Factor Analysis）</strong>是主成分分析的推广，也是采用降维思想，基于原始评价指标相关矩阵内部的依赖关系，把一些具有错综复杂关系的变量组合成少数几个综合因子的一种多变量统计分析方法。相比主成分分析，因子分析更倾向于描述原始变量之间的相关关系，其基本思想是利用原始变量的相关矩阵，根据相关性大小将原始变量分组，使得同组变量之间相关性较高，而不同组之间的相关性较低。基本步骤如下：（如下步骤主要介绍基本思想，未展开介绍，具体可见参考文献。）[13]</p><p>		（1）基于研究目标选取原始评价指标，分析并确认是否适合做因子分析；</p><p>		（2）将原始评价指标数据进行标准化，以消除变量之间属性和量纲之间的差异性；</p><p>		（3）计算标准化数据的相关矩阵，分析变量之间的相关性；</p><p>		（4）计算初始公因子及因子载荷矩阵。通过分析原始变量之间的相关性，基于研究目标提取主要公因子，提取方法是利用因子载荷矩阵，求解因子载荷矩阵的方法主要有主成分分析法、主轴因子法、极大似然法等；</p><p>		（5）因子旋转。若旋转前的公因子具有可解释性，则可跳过这一步；反之，则需要通过因子旋转，使得公因子具有可解释性；</p><p>		（6）利用原始变量之间的线性组合，计算因子得分；</p><p>		（7）综合得分。基于因子得分，以各因子的方差贡献率为权重，计算综合评价函数，综合评价模型为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-37.png" class="kg-image"></figure><!--kg-card-end: image--><p>		（8）利用综合得分对评价对象进行比较分析。</p><p>		综上，因子分析和主成分分析都是利用降维思想的一种多元统计分析方法，两者既有联系又有区别：</p><p>		（1）因子分析是从数据中探查能对变量起解释作用的公因子和特殊因子，以及公因子和特殊因子组合系数；而主成分只是从空间生成的角度寻找能解释多变量变异绝大部分的几组彼此不相关的新变量（主成分）；</p><p>		（2）因子分析是把变量表示成各因子的线性组合，而主成分分析中则把主成分表示各变量的线性组合；</p><p>		（3）因子分析需要一些假设，而主成分分析不需要假设。因子分析的假设包括：各公共因子之间不相关，特殊因子之间不相关，公共因子和特殊因子之间也不相关；</p><p>		（4）因子分析抽取主因子的方法不仅有主成分分析法，还有极大似然法等；而主成分只能用主成分法抽取；</p><p>		（5）因子分析法中因子不是固定的，可以旋转得到不同的因子；而主成分分析中，当给定的协方差矩阵或者相关矩阵的特征值是唯一的，主成分一般是固定的；</p><p>		（6）在因子分析中，因子个数需要评价者指定，因子数不同、评价结果不同；而主成分分析中，成分个数是一定的，一般有几个变量就有几个主成分。</p><h2 id="4-6-">4.6 其他简易综合评价模型</h2><p>		</p><p>		除了上述经典的综合评价方法，可综合评价指标权重信息和数据信息，对评价对象进行分析，此外，通过选择合适的数学关系构造综合评价函数（即综合评价模型），也是应用较为普遍的方法，下文主要介绍线性加权和非线性加权这两种常用的模型，其他如代换模型、加乘混合模型等，本文不做具体介绍。</p><p><strong>（1）线性加权综合模型</strong></p><p>		是指利用线性加权函数作为综合评价模型，分别对n个评价对象进行综合评价。公式为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-40.png" class="kg-image"></figure><!--kg-card-end: image--><p>		线性加权综合法具有如下特点：</p><p>		适用于各评价指标之间相互独立的情况，对于评价指标之间不完全独立的情况，综合评价结果可能存在评价指标间信息重复的问题、不能客观反映实际水平；</p><p>		该方法可使各评价指标间得到线性补偿，保证综合评价结果的公平性；</p><p>		该方法中评价指标的权重系数作用明显，即权重较大的评价指标对综合评价结果影响更明显；由于各评价指标数值之间可以线性补偿，因此，当权重系数预先指定时，该方法对区分各备选方案之间的差异表现不敏感；</p><p>		该方法对于（无量纲）指标数据没有特定要求；</p><p>		该方法计算简单、可操作性强，应用普遍。</p><p><strong>（2）非线性加权综合模型</strong></p><p>		非线性加权综合法又称“乘法合成法”或“加权几何算子”，是指利用非线性加权函数作为综合评价模型，分别对n个评价对象进行综合评价的一种方法。公式为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2021/09/image-41.png" class="kg-image"></figure><!--kg-card-end: image--><p>		非线性加权综合法具有如下特点：</p><p>		适用于各评价指标之间有较强关联的情况；</p><p>		该方法对评价指标数据要求较高，指标预处理后的数值要求大于或等于1；</p><p>		该方法强调的是各备选方案（无量纲）指标值大小的一致性；</p><p>		同线性加权综合法相比，该方法计算较为复杂，各评价指标权重系数对综合评价结果产生的作用没那么明显，此外，该方法对评价指标数值变动的反映比线性加权综合法更为敏感。</p><h2 id="5-">5.总结</h2><p>		</p><p>		国内外有关综合评价体系的理论与方法诸多，本文已将经典常用的方法进行了详细梳理，足够支持解决大部分的综合评价问题。鉴于所选择的方法不同，形成的综合评价结果往往不同，因此，在实际进行综合评价分析时，应基于评价目标，结合评价对象本身属性特征的分析，并遵循科学合理性、可操作性、可比性和有效性等原则，选择构建合适的综合评价算法/模型，以得到客观的综合评价分析结果，从而辅助决策。</p><p>		综合评价体系理论和方法的未来发展趋势主要包括三点：</p><p>		（1）综合评价体系逐渐从个体评价发展为群体评价、从单目标评价发展为多目标评价、从静态评价发展为动态评价、从单一评价发展为组合评价、从结果评价发展为过程评价等；</p><p>		（2）基于互联网与大数据等新兴信息技术进行创新优化，综合评价流程和方法更加智能化；</p><p>		（3）综合评价数据质量和规模大幅度提升，算法和模型设计需求逐渐复杂，评价结果更加科学全面。</p><p></p><h2 id="-">参考文献</h2><p></p><p>[1]彭张林,张强,杨善林.综合评价理论与方法研究综述[J].中国管理科学,2015,23(S1):245-256.</p><p>[2]曾五一, 肖红叶. 统计学导论（第二版）[M]. 科学出版社, 2013.</p><p>[3]Saaty T.L.,Vargas L.G.. Estimating technological coefficients by the analytic hierarchy process[J]. Pergamon,1979,13(6).</p><p>[4]邓雪,李家铭,曾浩健,陈俊羊,赵俊峰.层次分析法权重计算方法分析及其应用研究[J].数学的实践与认识,2012,42(07):93-100.</p><p>[5]章穗,张梅,迟国泰.基于熵权法的科学技术评价模型及其实证研究[J].管理学报,2010,7(01):34-42.</p><p>[6]黄小艳.运筹学和数学综合评价方法研究综述[J].企业改革与管理,2015(09):145-146.</p><p>[7]Yoon K, Hwang C L. TOPSIS (technique for order preference by similarity to ideal solution)–a multiple attribute decision making, w: Multiple attribute decision making–methods and applications, a state-of-the-at survey[J]. Berlin: Springer Verlag, 1981.</p><p>[8]胡永宏.对TOPSIS法用于综合评价的改进[J].数学的实践与认识,2002(04):572-575.</p><p>[9]夏勇其,吴祈宗.一种混合型多属性决策问题的TOPSIS方法[J].系统工程学报,2004(06):630-634.</p><p>[10]周亚. 多属性决策中的TOPSIS法研究[D].武汉理工大学,2009.</p><p>[11]樊宏,吉华萍,杜宪明,尤华,陆慧.应用综合指数法及秩和比法综合评价某市2008年～2010年的医疗服务质量[J].卫生软科学,2012,26(03):201-203.</p><p>[12]虞晓芬,傅玳.多指标综合评价方法综述[J].统计与决策,2004(11):119-121.</p><p>[13]何晓群. 多元统计分析（第四版）[M]. 中国人民大学出版社, 2015.</p><p></p><p> 注：部分文字、图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p>]]></content:encoded></item><item><title><![CDATA[联邦学习（Federated Learning）]]></title><description><![CDATA[<h2 id="-">一、应用场景</h2><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-28.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-29.png" class="kg-image"></figure><!--kg-card-end: image--><p>        从以上两个场景可以看出当前机器学习领域对于知识共享、隐私保护两大需求所面临的挑战：数据量越大、越全面，训练出的模型效果越佳，但单个用户设备数据量小，训练出来的模型效果不佳，故服务器需集合大量用户数据来训练模型；服务器要集合用户数据，需每个设备进行数据共享，服务器需和用户设备频繁通信，这样易造成数据泄露，想要保护隐私，本地数据不能离开设备。</p><p>        要意识到这样一个现状：欧美国家的法律对用户隐私保护非常严格，但我国的个人信息获取渠道泛滥，网站/app均需获取个人信息，但人们不以为然。因此，面对以上两个场景，更智能or更隐私之间怎么选择呢？能否两者兼得呢？这时联邦学习来了，他的学习目的便是训练出好模型的同时能保护隐私。在介绍联邦学习前，首先得了解下分布式机器学习，因为联邦学习的工作思路就是基于分布式机器学习拓展开来的。</p><h2 id="--1">二、分布式机器学习</h2><p>        分布式机器学习是搭建在多设备、多节点的分布式集群上的，底层支持CPU、GPU等多种设备，并提供自适应的任务调度能力，合理地利用计算资源，来完成深度学习模型的训练并获取好的收敛，以达到训练速度与精度的平衡。分布式机器学习涉及到训练数据的分布式存储、计算任务的分布式操作、模型结果的分布式分布等多个方面。传统的分布式机器学习在服务器上训练模型，客户端对服务器发起请求，进行预测，因此，所有模型都会保存在服务器上。</p><p>         分布式机器学习的主要思路是将每台用户设备当作一个worker节点，</p>]]></description><link>http://blog.idea2du.com/lian-bang-xue-xi-federated-learning/</link><guid isPermaLink="false">5e4c863b07ebdd000122e381</guid><dc:creator><![CDATA[wujunyang]]></dc:creator><pubDate>Wed, 19 Feb 2020 01:11:25 GMT</pubDate><content:encoded><![CDATA[<h2 id="-">一、应用场景</h2><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-28.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-29.png" class="kg-image"></figure><!--kg-card-end: image--><p>        从以上两个场景可以看出当前机器学习领域对于知识共享、隐私保护两大需求所面临的挑战：数据量越大、越全面，训练出的模型效果越佳，但单个用户设备数据量小，训练出来的模型效果不佳，故服务器需集合大量用户数据来训练模型；服务器要集合用户数据，需每个设备进行数据共享，服务器需和用户设备频繁通信，这样易造成数据泄露，想要保护隐私，本地数据不能离开设备。</p><p>        要意识到这样一个现状：欧美国家的法律对用户隐私保护非常严格，但我国的个人信息获取渠道泛滥，网站/app均需获取个人信息，但人们不以为然。因此，面对以上两个场景，更智能or更隐私之间怎么选择呢？能否两者兼得呢？这时联邦学习来了，他的学习目的便是训练出好模型的同时能保护隐私。在介绍联邦学习前，首先得了解下分布式机器学习，因为联邦学习的工作思路就是基于分布式机器学习拓展开来的。</p><h2 id="--1">二、分布式机器学习</h2><p>        分布式机器学习是搭建在多设备、多节点的分布式集群上的，底层支持CPU、GPU等多种设备，并提供自适应的任务调度能力，合理地利用计算资源，来完成深度学习模型的训练并获取好的收敛，以达到训练速度与精度的平衡。分布式机器学习涉及到训练数据的分布式存储、计算任务的分布式操作、模型结果的分布式分布等多个方面。传统的分布式机器学习在服务器上训练模型，客户端对服务器发起请求，进行预测，因此，所有模型都会保存在服务器上。</p><p>         分布式机器学习的主要思路是将每台用户设备当作一个worker节点，每个worker各自计算出梯度，各自把梯度发给server，server由此可学出来一个模型，且数据没有离开worker，控制权还在用户手上，server看不到用户数据，没有违反隐私限制。要注意，worker与server间的通信复杂度就是模型参数的数量。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-30.png" class="kg-image"></figure><!--kg-card-end: image--><p>如上图，可概括分布式机器学习的迭代流程如下：</p><p>step1：worker向server索要参数</p><p>step2：server将最新的参数发给worker</p><p>step3：worker使用本地的数据进行本地计算，算出梯度（计算量大）</p><p>step4：worker将梯度发给server</p><p>step5：server用梯度来更新模型参数（计算量很小）</p><p><strong><strong>三、联邦学习</strong></strong></p><p>       联邦学习是谷歌2016年提出的一种分布式机器学习框架，其主要思路是建立基于多个设备上数据集的机器学习模型，同时防止数据泄露。联邦学习是一个学习过程，在这个过程中，各个数据所有者协作地训练一个模型m；在这个过程中，任何数据所有者都不向其他人公开自身的数据，同时也使训练出来的模型的精度、性能接近传统的模型m。传统的模型训练方法是将所有数据放在一起，训练一个模型，而联邦学习无需将数据集中在服务器中，这样保护了隐私。下图是联邦学习的基本工作机制。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-31.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-32.png" class="kg-image"></figure><!--kg-card-end: image--><p>        联邦是由很多州组成，每个州拥有高度自治权，组成的联邦是个比较松散的政府，联邦学习就是将用户设备比作州，将中心服务器比作联邦政府，每个用户设备都有高度自治权，自己掌控着自身的数据信息。联邦学习是一种特殊的分布式机器学习，两者没有什么本质区别，主要是应用场景的不同，分布式机器学习主要是应用在机房服务器设备上，而联邦学习主要是应用在手机、平板这样的移动端。联邦学习的应用很新，但方法上相对于分布式机器学习而言没有太多改变。下面是联邦学习和分布式机器学习主要的区别：</p><h3 id="-1-">（1）用户对自己的设备和数据有绝对的控制权</h3><p>        用户可以随时让自己的设备（比如手机）停止参与计算和通信。诸如mapreduce等传统的分布式系统中，worker受server的控制，接受server的指令。</p><h3 id="-2-worker-">（2）参与联邦学习的worker节点不稳定</h3><p>        联邦学习worker节点大多都是手机、平板、智能家居等设备，这些设备不稳定，计算性能差别也大（比如iphone11和iphone5同时开始计算）；传统分布式机器学习的worker大多都是机房中连着高速宽带24小时开机的机器，有专人维护，非常稳定，计算性能也几乎是一样的。</p><h3 id="-3-">（3）联邦学习的通信代价非常大</h3><p>        联邦学习的通信代价远大于计算的代价，因为手机等移动端都基本都是远程连接服务器（甚至设备和服务器不在一个国家），所以带宽低，网络延迟高。而分布式机器学习基本都是网线连接着高速宽带进行通信的。</p><h3 id="-4-">（4）联邦学习的数据并非独立同分布</h3><p>        数据并发，每个worker都有一部分数据，由于用户使用习惯不一样（比如拍风景和自拍），每个手机用户的数据统计性质是不一样的。由于数据不是独立同分布，很多已有的减少通信次数的算法不适用了。而传统的分布式机器学习中，数据的划分是均匀的，随机打乱的。</p><h3 id="-5-">（5）联邦学习的节点负载不平衡</h3><p>        节点上的数据有些大有些小（比如有些人一天拍几十张照片，有些人几十天拍一张照片），建模和计算容易出问题：若给每个用户不同的权重，所建模型对拍照多的用户有用，而拍照少的用户几乎被忽略掉了；若给每个用户相同的权重，这样学出来的模型对拍照多的用户不太好。传统分布式计算都会做负载平衡，但联邦学习无法做负载平衡（不能把一个用户的数据转移到另一个用户的设备上）。</p><p><strong>注：其中（2）至（5）即为联邦学习技术上的难点。</strong></p><h2 id="--2">四、联邦学习的实现</h2><h3 id="1-">1.算法实现</h3><p>        在介绍联邦学习的算法前需要明确一个点，也就是第三章中联邦学习与分布式学习的第（3）点区别：联邦学习的通信代价非常大。选择联邦学习的实现算法，要以减少通信次数为最主要的方向，哪怕不惜加大计算量，毕竟计算的代价远远低于通信的代价（这也会在第七章说明）。整个联邦学习的迭代考虑两个算法：并行梯度下降和Federated Averaging。</p><h3 id="-1--1">（1）并行梯度下降</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-33.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-34.png" class="kg-image"></figure><!--kg-card-end: image--><p>         如上图所示，w是参数，g<sub>i</sub>是梯度，m为节点个数，α是学习率（步长），使用梯度下降更新参数w，具体迭代流程大致可归纳为以下几步：</p><p>step1：server把最新的参数w发给worker</p><p>step2：worker计算梯度，使用加密技术屏蔽梯度选择，把屏蔽后的梯度传回server</p><p>step3：server执行安全聚合，再更新参数，不需要了解任何分区信息</p><p>step4：迭代，直至算法收敛</p><p>step5：server将汇总的结果（加密）返回给worker</p><p>step6：worker使用解密的梯度更新自身的模型参数，得到最终模型</p><h3 id="-2-federated-averaging-">（2）Federated Averaging算法</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-35.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-36.png" class="kg-image"></figure><!--kg-card-end: image--><p>       如上图所示，此算法能用更少的通信次数就能达到收敛，这样做的好处是可在两次通信之间可以把参数做很大的改进，而不仅仅是一次梯度下降。具体迭代流程大致可归纳为以下几步：</p><p>step1：server把最新的参数w发给worker</p><p>step2：worker使用参数w和本地数据去计算梯度g，在本地做梯度下降</p><p>step3：本地更新参数，重复这个步骤几个epoch（1~5个）</p><p>step4：把最终本地得到的参数w<sub>i</sub>发给server</p><p>step5：server将所有worker发过来的参数做平均，最后平均出来的参数作为新参数。</p><p>        这里有一个Federated Averaging算法应用的实例：我们有一群客户端，他们有温度传感器，我们这里想计算客户端中的温度有多少比例超过阈值，这种计算中有两个输入——一个是客户端中的温度读数，另一个是服务器中的阈值，具体步骤如下：</p><p>step1：服务器向所有客户端广播阈值</p><p>step2：客户端接收到阈值后，通过自身温度读数和阈值进行tensorflow计算，超过阈值为1，不超过为0</p><p>step3：拥有很多1和0后，通过Federated Averaging算法，执行分布式聚合计算，求这些1和0的平均值，并将结果发给服务器。</p><h3 id="-3--1">（3）算法对比</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-37.png" class="kg-image"></figure><!--kg-card-end: image--><p>        如上图所示。横坐标为通信次数，纵坐标为损失函数，对比两个算法可发现，在相同通信次数的情况下，FedAvg算法收敛更快。因此在达到相同收敛下，FedAvg所需的通信次数更少，达到了降低通信次数的目的。FedAvg以更大的计算量为代价，换取更少的通信次数。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-38.png" class="kg-image"></figure><!--kg-card-end: image--><p>        如上图所示，换个角度对比，横坐标为epochs，纵坐标为损失函数，可见在经历相同epochs计算的情况下，梯度下降收敛更快。因此要达到收敛，FedAvg所需的计算量大于梯度下降。</p><p>       由于联邦学习中的计算代价小，通信代价大，因此FedAvg是更优的算法。</p><h3 id="2-">2.隐私保护</h3><p>        联邦学习可以看作是一种保护隐私的分散协作机器学习。隐私保护是联邦学习的重点之一，目前所用到的隐私保护方法主要有以下4种：</p><p>a）安全多方计算：提供安全证明，加密通信过程</p><p>b）差分隐私法：即向参数中添加一些随机噪声</p><p>c）同态加密：参数交换</p><p>d）区块链联邦学习架构：设备的本地模型更新通过区块链进行交换和验证</p><h2 id="--3">五、联邦学习的分类</h2><p>        构建一个联邦学习矩阵，矩阵的每一行表示一个样本，每一列表示一个特征。构成该矩阵的三要素分别为：样本空间I（用户），特征空间X（业务、属性），标签空间Y（指标，例如学位）。依据联邦学习矩阵结构及应用场景的特点，大致可将联邦学习分为三个类别：水平联邦学习、垂直联邦学习、联邦迁移学习。</p><h3 id="-a-">（a）水平联邦学习</h3><p>        水平联邦学习适用于数据集共享的特征空间相同但在样本空间不同的场景。例如两个区域（如长沙和拉萨）的银行有来自各自区域不同的用户，并且他们的用户交集非常小，但他们的业务非常相似（如相似的信贷业务、理财产品），所以他们的特征空间是相同的。用户独立训练，只共享参数更新的子集。图（a）是水平联邦学习的矩阵结构。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-39.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="-b-">（b）垂直联邦学习</h3><p>       垂直联邦学习适用于两个数据集共享的样本空间相同但特征空间不同的场景。例如，同一个城市的两个不同的公司，一个是银行，一个是电商公司，处在同一个城市的他们用户交集很大，故可看作有相同的样本空间。银行记录了收支行为和信用评级，电商公司保留了用户的浏览及购买历史，故他们的特征空间有很大的不同。将这些不同的特征聚集起来，以隐私保护的方式计算损失函数和梯度，从而用双方的数据协作构建一个模型。图（b）是垂直联邦学习的矩阵结构。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-40.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="-c-">（c）联邦迁移学习</h3><p>        联邦迁移学习适用于两个数据集在样本空间和特征空间上均不同的场景。例如，一家是位于中国的银行，另一家是位于美国的电商公司，一方面，他们的用户群只有一个小的交集，另一方面，双方的特征空间只有很小部分重叠。面对这种情况，需运用联邦迁移学习——利用有限的公共样本集来学习两个特征空间之间的公共表示，然后用它来获得只有单边特征的样本预测。图（c）是联邦迁移学习的矩阵结构。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-41.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="--4">六、联邦学习应用领域</h2><h3 id="1--1">1.智能零售</h3><p>        目的是利用机器学习技术为客户提供个性化服务。智能零售业务涉及的数据特征主要包括用户购买力、用户个人偏好和产品特征，这三个特征可能分散在三个不同的部门或企业中，例如一个用户的购买力可从银行存款中推断，她的个人偏好可从她的社交网络中分析出来，而产品的特征则通过电子商店记录下来。这种情况面临两个问题：为了保护数据隐私和数据安全，银行、社交网络和电商网站之间的数据壁垒难以打破，故不能直接聚合他们的数据在一起进行训练；三方存储的数据通常是异构的，传统的机器学习模型不能直接处理异构数据。</p><p>        联邦学习和迁移学习是解决这两个问题的一个好方法。联邦学习能够让各自数据不离开企业的前提下建立一个好的机器学习模型，这样保护了数据隐私。此外，迁移学习能够解决数据异构问题。因此联邦学习为我们构建跨企业、跨数据、跨领域的大数据和人工智能生态圈提供了良好的技术支持。</p><h3 id="2--1">2.智能金融</h3><p>        一些用户从一家银行借款来还另一家银行的贷款，要找到这样的用户，即要找到两家银行的样本交集，但银行间的用户列表数据肯定是不能共享的，这时可通过联邦学习框架的加密机制，对各方的用户列表进行加密，然后通过诸如政府机构这样的第三方，聚合加密列表取其交集，最后通过解密得到需要的交集用户。</p><h3 id="3-">3.智能医疗</h3><p>        比如各大医院面对某种病毒的病情，需要尽可能多的相关数据（症状、基因序列、医疗报告），从而训练出更好的模型，但很多私密医疗数据难以收集，也不宜共享。联邦学习解决了这个问题，中心服务器可以通过收集各个医院的加密梯度来更新模型参数。</p><h2 id="--5">七、研究方向</h2><h3 id="1--2">1、降低通信次数</h3><p>        联邦学习最重要的研究方向，哪怕计算量会大很多，但减少通信次数是值得的。降低通信次数的算法理念基本可概括为“多做计算，少做通信”：获得相比于梯度更好的下降方向，迭代次数也远少于梯度的迭代，迭代次数少了则通信次数也少了。目前，降低联邦学习通信次数最常用的算法便是Federated Averaging算法（详情可参考第四章）。</p><h3 id="2--2">2.隐私保护</h3><p>        虽然整个联邦学习流程中数据没有离开过worker，但并不是绝对的隐私保护。用户的数据发生了间接泄露：随机梯度的计算就是把用户本地的数据做了个函数变换，把数据映射到了梯度。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-42.png" class="kg-image"></figure><!--kg-card-end: image--><p>         如上图所示，l为损失函数，w为模型参数，x<sub>i</sub>为数据，y<sub>i</sub>为标签，g<sub>i</sub>为梯度（向量），可见随机梯度就是把数据x<sub>i</sub>做了个放缩，等于梯度就是把数据做了个变换，梯度几乎携带了数据所有的信息，另外也可以通过模型参数反推出数据。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-43.png" class="kg-image"></figure><!--kg-card-end: image--><p>       如上图所示，对于梯度，使用适当的分类器，是可以反向推断出用户属性的。随机矩阵变换能在一定程度上抵制数据的反推，是个值得研究的方法。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-44.png" class="kg-image"></figure><!--kg-card-end: image--><p>        如上图所示，联邦学习以往的方法是加噪声，但噪声加少了隐私保护效果不好，加多了模型学习的不好。因此，在保证模型效果的情况下，联邦学习隐私泄露比较容易，而目前没有特别好的方法，这是个研究方向。</p><h3 id="3--1">3.鲁棒性</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-45.png" class="kg-image"></figure><!--kg-card-end: image--><p>       如上图所示。拜占庭将军问题是针对分布式系统中出现异常节点的情况，这个异常节点会给其他节点发送错误的信息，故需解决拜占庭将军问题和恶意攻击。目前大部分防御方法都是假设数据是独立同分布的，所以用在联邦学习上效果不怎么好，因为联邦学习应用场景的数据不是独立同分布的。目前还没有特别有效的防御，故其鲁棒性是个研究方向。</p><h2 id="--6">八、总结</h2><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-46.png" class="kg-image"></figure><!--kg-card-end: image--><p>       如上图所示，联邦学习的特点可以归纳为以下三点：</p><p>1）联邦学习的目标是让多个用户一起协同训练出一个模型，但这些用户不共享数据，用户数据不离开本地，不会去到第三方。</p><p>2）联邦学习是一种特殊的分布式机器学习，其主要思路是使用梯度进行交流而不是数据本身。</p><p>3）联邦学习的比普通的分布式机器学习困难，因为联邦学习的数据不是独立同分布的，同时还面临着一些其他挑战，比如节点的负载不均衡等。</p><p>联邦学习主要有三个研究方向，如下图。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-47.png" class="kg-image"></figure><!--kg-card-end: image--><p>         从企业层面上来看，联邦学习可以在保护本地数据的同时，为多个企业建立统一的模型，使企业以数据安全为前提，共同取胜。相信在不久的将来，联邦学习能打破行业间的壁垒，建立一个数据和知识可以安全共享的社区。</p><h2 id="--7">参考文献</h2><p>[1]《Federated Machine Learning: Concept and Applications》</p><p>[2]https://www.bilibili.com/video/av82029976?from=search&amp;seid=12742299253974066406</p><p>[3]https://www.bilibili.com/video/av54176168?from=search&amp;seid=676454166257594864</p><p>      注：部分文字、图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p>]]></content:encoded></item><item><title><![CDATA[经典算法ELMo、GPT、Bert、GPT-2]]></title><description><![CDATA[<p>      在自然语言处理（NLP）领域中，使用语言模型预训练方法在多项NLP任务上都获得了很好的提升，也十分吸引大家的眼球。就此，我将最近看的一些相关论文和博文进行总结，选取了几个代表性模型（包括ELMo ，OpenAI GPT 和BERT）和大家一起学习分享。</p><p>         一个对文本有效的抽象方法可以减轻NLP对监督学习的依赖。大多数深度学习方法需要大量的人工标注信息，这限制了在很多领域的应用。在这些情况下，利用来未标记数据的语言信息的模型来产生更多的注释，这可能既耗时又昂贵。此外，即使在可获得相当大的监督的情况下，以无人监督的方式学习良好的表示也可以提供显著的性能提升。到目前为止，最引人注目的证据是广泛使用预训练词嵌入来提高一系列NLP任务的性能。</p><h2 id="-elmo">一、ELMo</h2><h3 id="1-1-elmo-">1.1 ELMo的优势</h3><p>（1）ELMo能够学习到词汇用法的复杂性，比如语法、语义。</p><p>（2）ELMo能够学习不同上下文情况下的词汇多义性。</p><h3 id="-word2vec-">相比word2vec：</h3><p>        ELMo的假设前提一个词的词向量不应该是固定的，所以在一词多意方面ELMo的效果一定比word2vec要好。</p><p>        word2vec的学习词向量的过程是通过中心词的上下窗口去学习，学习的范围太小了，而ELMo在学习语言模型的时候是从整个语料库去学习的，而后再通过语言模型生成的词向量就相当于基于整个语料库学习的词向量，更加准确代表一个词的意思。</p><p>         ELMo还有一个优势，就是它建立语言模型的时候，可以运用非任务的超大语料库去学习，一旦学习好了，可以平行的运用到相似问题。</p><h3 id="1-2-elmo-">1.2</h3>]]></description><link>http://blog.idea2du.com/jing-dian-suan-fa-elmo-gpt-bert/</link><guid isPermaLink="false">5e4667f507ebdd000122e2b1</guid><category><![CDATA[NLP]]></category><dc:creator><![CDATA[yuting]]></dc:creator><pubDate>Fri, 14 Feb 2020 09:47:47 GMT</pubDate><content:encoded><![CDATA[<p>      在自然语言处理（NLP）领域中，使用语言模型预训练方法在多项NLP任务上都获得了很好的提升，也十分吸引大家的眼球。就此，我将最近看的一些相关论文和博文进行总结，选取了几个代表性模型（包括ELMo ，OpenAI GPT 和BERT）和大家一起学习分享。</p><p>         一个对文本有效的抽象方法可以减轻NLP对监督学习的依赖。大多数深度学习方法需要大量的人工标注信息，这限制了在很多领域的应用。在这些情况下，利用来未标记数据的语言信息的模型来产生更多的注释，这可能既耗时又昂贵。此外，即使在可获得相当大的监督的情况下，以无人监督的方式学习良好的表示也可以提供显著的性能提升。到目前为止，最引人注目的证据是广泛使用预训练词嵌入来提高一系列NLP任务的性能。</p><h2 id="-elmo">一、ELMo</h2><h3 id="1-1-elmo-">1.1 ELMo的优势</h3><p>（1）ELMo能够学习到词汇用法的复杂性，比如语法、语义。</p><p>（2）ELMo能够学习不同上下文情况下的词汇多义性。</p><h3 id="-word2vec-">相比word2vec：</h3><p>        ELMo的假设前提一个词的词向量不应该是固定的，所以在一词多意方面ELMo的效果一定比word2vec要好。</p><p>        word2vec的学习词向量的过程是通过中心词的上下窗口去学习，学习的范围太小了，而ELMo在学习语言模型的时候是从整个语料库去学习的，而后再通过语言模型生成的词向量就相当于基于整个语料库学习的词向量，更加准确代表一个词的意思。</p><p>         ELMo还有一个优势，就是它建立语言模型的时候，可以运用非任务的超大语料库去学习，一旦学习好了，可以平行的运用到相似问题。</p><h3 id="1-2-elmo-">1.2 ELMo的模型简介</h3><p>         2018年3月份出现了ELMo。在之前2013年的word2vec及2014年的GloVe的工作中，每个词对应一个vector，对于多义词无能为力。ELMo的工作对于此，提出了一个较好的解决方案。<strong><strong>不同于以往的一个词对应一个向量，是固定的</strong></strong>。在ELMo世界里，预训练好的模型不再只是向量对应关系，而是一个训练好的模型。使用时，将一句话或一段话输入模型，模型会根据上下文来推断每个词对应的词向量。这样做之后明显的好处之一就是对于多义词，可以结合前后语境对多义词进行理解。比如apple，可以根据前后文语境理解为公司或水果。</p><p>        说到词向量，我们一定会联想到word2vec，因为在它提出的词向量概念给NLP的发展带来了巨大的提升。而ELMo的主要做法是先训练一个完整的语言模型，再用这个语言模型去处理需要训练的文本，生成相应的词向量，所以在文中一直强调ELMo的模型对同一个字在不同句子中能生成不同的词向量。</p><p><strong><strong>原理：</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image.png" class="kg-image"><figcaption>图1.1 ELMo模型结构</figcaption></figure><!--kg-card-end: image--><p>        他们使用的是一个双向的LSTM语言模型，由一个前向和一个后向语言模型构成，目标函数就是取这两个方向语言模型的最大似然。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-1.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-2.png" class="kg-image"><figcaption>图1.2 ELMo模型结构</figcaption></figure><!--kg-card-end: image--><p>        上图中的结构使用字符级卷积神经网络（convolutional neural network, CNN）来将文本中的词转换成原始词向量（raw word vector）</p><p>①　将这些原始词向量输入双向语言模型中第一层</p><p>②　前向迭代中包含了该词以及该词之前的一些词汇或语境的信息</p><p>③　后向迭代中包含了该词之后的信息</p><p>④　这两种迭代的信息组成了<strong><strong>中间词向量</strong></strong>（intermediate word vector）,这些中间词向量被输入到模型的下一层</p><p>⑤　最终表示（ELMo）就是原始词向量和两个中间词向量的加权和</p><p>        因为双向语言模型的输入度量是字符而不是词汇，该模型能捕捉词的内部结构信息。比如beauty和beautiful，即使不了解这两个词的上下文，双向语言模型也能够识别出它们的一定程度上的相关性。</p><p>     所谓ELMo不过是一些网络层的组合。都有哪些网络层呢？对于每个单词（token）tk，对于L层的双向lstm语言模型，一共有2L+1个表征（representations），如下所示：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-3.png" class="kg-image"></figure><!--kg-card-end: image--><p>       ELMo 的方法不局限于sequence labeling, 而是作为一个一般性的词向量表示方法; 其次, ELMo 不仅仅使用了neural language model 的最后一层的输出, 而是对所有层的输出做了加权平均来构造最后的向量 (如下所示).</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-4.png" class="kg-image"></figure><!--kg-card-end: image--><p>        其中s 是由softmax 算出来的，可以看成是对特定任务学习到的三个词向量的权重进行的softmax归一化, 每一个特定任务的归一化因子是相同的。gamma 是一个需要学习的变量,缩放因子，在具体的任务模型中学习到，调整的是elmo学习到的词向量占特定任务中词向量的权重。 加不加这个变量对performance 的影响是比较大的。</p><p>        以上两个参数在elmo模型训练好之后还需要在下游模型进行训练，相当于在下游模型中增加了两个参数。</p><p>        在实验中还发现不同层的biLM输出的token表示对于不同任务效果不同。<br>        <strong><strong>ELMo采用典型的两阶段过程</strong></strong>，第一个阶段是利用语言模型进行预训练，第二个阶段是在做下游任务时，从预训练网络中提取对应单词的网络各层的Word Embedding作为新特征补充到下游任务中。</p><p>将emlo用于下游的任务，论文中提到了三种方式：<br>（1）中间层和输入词向量x进行concat<br>（2）中间层和最后一层的隐藏状态concat<br>（3）同时使用（1）和（2）</p><p><strong><strong>缺点：不适合特定任务</strong></strong></p><h2 id="-gpt">二、GPT</h2><h3 id="2-1-gpt-">2.1 GPT基本原理</h3><p>        GPT提出一种半监督的方式来处理语言理解的任务。使用非监督的预训练和监督方式的微调。我们的目标是学习一个通用的语言模型，可以经过很小的调整就应用在各种任务中。</p><p>GPT模型图：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-5.png" class="kg-image"><figcaption>图2.1 GPT模型结构</figcaption></figure><!--kg-card-end: image--><p><strong>       <strong>这个模型的设置不需要目标任务和非标注的数据集在同一个领域</strong></strong>。模型的构建可以看成以下两个过程。</p><p>1.对大量非标记数据集使用语言模型学习一个深度模型（非监督预训练）</p><p>2.随后，使用相应的监督目标将这些参数调整到目标任务（监督微调fine-tuning)</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-6.png" class="kg-image"><figcaption>图2.2 GPT结构图</figcaption></figure><!--kg-card-end: image--><p>第一步，输入：输入词向量和每个词的位置编码。</p><p>第二步，Masked Attention：</p><p>在这里我们先介绍一下：self-attention</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-7.png" class="kg-image"><figcaption>图2.3 self-attention计算</figcaption></figure><!--kg-card-end: image--><p>         首先，每个词都要通过三个矩阵Wq, Wk, Wv进行一次线性变化，一分为三，生成每个词自己的query, key, vector三个向量。以一个词为中心进行Self Attention时，都是用这个词的key向量与每个词的query向量做点积，再通过Softmax归一化出权重。然后通过这些权重算出所有词的vector的加权和，作为这个词的输出。归一化之前需要通过除以向量的维度dk来进行标准化，所以最终Self Attention用矩阵变换的方式可以表示为</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-8.png" class="kg-image"></figure><!--kg-card-end: image--><p>最终每个Self Attention接受n个词向量的输入，输出n个加权向量。</p><p><strong><strong>Masked Attention</strong></strong></p><p>         从上图中，我们发现先经过一个Masked Attention层。那么Masked的与普通版本的Attention有什么区别呢？</p><p>         在transformer中，Encoder因为要编码整个句子，所以每个词都需要考虑上下文的关系。所以每个词在计算的过程中都是可以看到句子中所有的词的。但是Decoder与Seq2Seq中的解码器类似，每个词都只能看到前面词的状态，所以是一个单向的Self-Attention结构。</p><p>        Masked Attention的实现也非常简单，只要在普通的Self Attention的Softmax步骤之前，与按位乘上一个下三角矩阵M就好了</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-9.png" class="kg-image"></figure><!--kg-card-end: image--><p>       第三步：残差网络：残差网络，将一层的输入与其标准化后的输出进行相加即可。Transformer中每一个（）Attention层与FFN层后面都会连一个Add &amp; Norm层。下图展示的是encoder模块中的残差网络，在我们GPT中的残差网络原理是一样的。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-10.png" class="kg-image"><figcaption>图2.4 encoder结构</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-11.png" class="kg-image"><figcaption>图2.5层标准化</figcaption></figure><!--kg-card-end: image--><p>第四步：神经网络</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-12.png" class="kg-image"></figure><!--kg-card-end: image--><p>第五步：残差网络</p><p>第六步：预测与下游任务</p><h3 id="2-1-1-">2.1.1非监督预训练</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-13.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-14.png" class="kg-image"></figure><!--kg-card-end: image--><p>        文章中使用的是多层Transformer的decoder块的语言模型。这个多层的结构应用multi-headed self-attention在处理输入的文本加上位置信息的前馈网络，输出是词的概率分布。训练的过程其实非常的简单，就是将句子n个词的词向量(第一个为&lt;SOS&gt;)加上Positional Encoding后输入到前面提到的模型中，n个输出分别预测该位置的下一个词（&lt;SOS&gt;预测句子中的第一个词，最后一个词的预测结果不用于语言模型的训练，因为是一个结束符)。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-15.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="2-1-2-fine-tuning">2.1.2监督微调fine-tuning</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-16.png" class="kg-image"></figure><!--kg-card-end: image--><p>        我们增加了语言模型去辅助微调，提高了监督模型的结果。为避免Fine-Tuning使得模型陷入过拟合，文中还提到了辅助训练目标的方法，类似于一个多任务模型或者半监督学习。具体方法就是在使用最后一个词的预测结果进行监督学习的同时，前面的词继续上一步的无监督训练，使得最终的损失函数成为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-17.png" class="kg-image"></figure><!--kg-card-end: image--><p>模型结构如下:</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-18.png" class="kg-image"><figcaption>图2.5下游任务输入表示</figcaption></figure><!--kg-card-end: image--><p>1) Classification：对于分类问题，不需要做什么修改</p><p>2) Entailment：对于推理问题，可以将先验与假设使用一个分隔符分开</p><p>3) Similarity：对于相似度问题，由于模型是单向的，但相似度与顺序无关。所以需要将两个句子顺序颠倒后两次输入的结果相加来做最后的推测</p><p>4）Multiple Choice：对于问答问题，则是将上下文、问题放在一起与答案分隔开，然后进行预测。</p><p><strong><strong>适用场景：分类、推理、问答、相似度等应用的场景。</strong></strong></p><h2 id="-bert">三、Bert</h2><h3 id="3-1-bert-">3.1.bert简介</h3><p>        Bert是谷歌于2018年发布的NLP领域的预训练模型，BERT等经过预处理的语言模型在问答、命名实体识别、自然语言推理、文本分类等自然语言处理任务中发挥着重要作用。bert模型是使用双向Transformer模型的EncoderLayer进行特征提取（bert中没有Decoder模块）。前面一章我们介绍了Transformer的工作原理，这里就不加赘述啦。</p><p>        在bert中的Encoder block的结构如下图：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-19.png" class="kg-image"><figcaption>图3.1 bert结构图</figcaption></figure><!--kg-card-end: image--><p>        BERT模型如下图中左边第一个所示，它与OpenAI GPT的区别就在于采用了Transformer Encoder，也就是每个时刻的Attention计算都能够得到全部时刻的输入，而OpenAI GPT采用了Transformer Decoder，每个时刻的Attention计算只能依赖于该时刻前的所有时刻的输入，因为OpenAI GPT是采用了单向语言模型。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-20.png" class="kg-image"><figcaption>图3.2三个模型结构</figcaption></figure><!--kg-card-end: image--><p>从图中可以看出BERT、GPT和ELMO三个模型的区别：</p><p>         BERT VS GPT ：BERT 模型使用多层双向Transformer作为特征提取器，同时提取上下文信息，GPT模型使用多层单向Transformer作为特征提取器，用于提取上文信息 。相较于GPT，BERT 多使用了下文信息 ；</p><p>         BERT VS ELMO：BERT 模型使用多层双向Transformer作为特征提取器，同时提取 上下文信息，ELMO模型使用两对双层双向LSTM分别提取上文信息和下文信息 ，然后将提取的信息进行拼接后使用。相较于ELMO，BERT使用了更强大的Transformer作为特征提取器，且BERT是同时提取上下文信息，相较于ELMO分别提取上文信息和下文信息，更加的“浑然天成”。</p><p><strong><strong>3.2 Bert模型的构建</strong></strong></p><p>其实bert也是由两个阶段构成：</p><p>1. pre-train：用大量的无监督文本通过自监督训练的方式进行训练，bert是一个多任务模型，它的任务就是由两个自监督任务组成，即MLM和NSP。</p><p>2. fine-tune阶段：使用预训练的模型，在特定的任务中进行微调，得到用于解决该任务的定制模型。</p><p>第一部分：输入表示</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-21.png" class="kg-image"><figcaption>图3.3 Bert输入表示</figcaption></figure><!--kg-card-end: image--><p>         如上图所示，BERT模型有两个特殊的token：CLS（用于分类任务）、 SEP（用于断句），以及三个embedding：</p><p>（1）token embedding：输入的文本经过tokenization之后，将 CLS插入tokenization结果的开头， SEP 插入到tokenization结果的结尾。然后进行 token embedding look up 。shape为：[seq_length, embedding_dims]’。流程如下图所示：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-22.png" class="kg-image"><figcaption>图3.4 token embedding</figcaption></figure><!--kg-card-end: image--><p>（2）segment embedding：在NSP任务中，用于区分第一句和第二句。segment embedding中只有0和1两个值，第一句所有的token（包括 cls 和紧随第一句的sep）的segment embedding的值为0，第二句所有的token（包括紧随第二句的sep）的segment embdding的值为1。shape为：[seq_length, embedding_dims]。流程如下图所示：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-23.png" class="kg-image"><figcaption>图3.5 segment embedding</figcaption></figure><!--kg-card-end: image--><p>（3）position embedding：因Transformer-encoderlayer无法捕获文本的位置信息，而文本的位置信息又非常重要（“你欠我500万”和“我欠你500万”的感觉肯定不一样），因此需要额外把位置信息输入到模型中。 BERT的位置信息是通过 sin函数和cos函数算出来的，shape为：[seq_length, embedding_dims]。该部分参数在训练时不参与更新。</p><p>     备注：BERT的输入为：token_embedding + segment_embedding + position_embedding。</p><h3 id="3-2-1-">3.2.1预训练</h3><p>下面我们开始讲讲预训练部分</p><p>预训练任务1：</p><p>        遮掩语言模型（Masked Language Modeling）。标准的语言模型（LM）是从左到右或者从右到左进行训练，因为双向的训练会让每个词都可以通过多层的上下文看到他自己。故BERT模型为了多层双向进行训练，就简单的使用了随机遮盖住一定比例的输入标记，然后仅仅预测这些遮住的输入标记。我们把这种方式称为"masked LM"(MLM)。在这种情况下，被遮盖的标记对应的最终的隐藏向量与其他标准语言模型所得的最终隐藏向量一样被进行softmax到词汇表上。在我们所有的实验中，我们在每一个序列中随机的遮盖了15%的WordPiece标记，并且我们只预测被遮盖的词语，而不是重构整个输入。<br>       虽然这允许我们做双向的与训练模型，但是这种方法仍然有<strong><strong>两个弊端</strong></strong>。第一个是这种方法会让预训练和微调不能相互匹配，因为[MASK]标记在微调中是不存在的。为了减轻这种弊端，我们并不总是把15%随机产生的tokens都用[MASK]表示，而是，比如，在句子"my dog is hairy"中选择"hairy"，然后通过以下的方式产生标记：<br>* 并不总是用[MASK]替换选择的词，数据通过如下方式产生：<br>      * 80%的情况下：把选择的词替换成[MASK]，比如："my dog is hairy" → "my dog is [MASK]"<br>     * 10%的情况下替换选中的词为随机词，比如："my dog is hairy" → "my dog is apple"<br>    * 10% 的情况下保持原词不变，比如："my dog is hairy" → "my dog is hairy"。</p><p>       这么做的原因是如果句子中的某个token100%都会被mask掉，那么在fine-tuning的时候模型就会有一些没有见过的单词。加入随机token的原因是因为Transformer要保持对每个输入token的分布式表征，否则模型就会记住这个[mask]是token ‘hairy’。至于单词带来的负面影响，因为一个单词被随机替换掉的概率只有15%*10% =1.5%，这个负面影响其实是可以忽略不计的。</p><p>        第二个弊端是使用一个MLM意味着每个batch中只有15%的标记会被预测，所以在预训练的时候收敛需要更多步。在5.3中我们会阐述MLM的收敛速度比从左至右的模型（预测每一个标记）慢，但是和MLM带来的巨大提升相比，这么做是值得的。</p><p><strong><strong>预训练任务二：</strong></strong></p><p>         Next Sentence Prediction（NSP）的任务是判断句子B是否是句子A的下文。如果是的话输出‘IsNext’，否则输出‘NotNext’。训练数据的生成方式是从平行语料中随机抽取的连续两句话，其中50%保留抽取的两句话，它们符合IsNext关系，另外50%的第二句话是随机从预料中提取的，它们的关系是NotNext的。这个关系保存在[CLS]符号中。</p><p>        我们要求模型除了做上述的Masked语言模型任务外，附带再做个句子关系预测，判断第二个句子是不是真的是第一个句子的后续句子。之所以这么做，是考虑到很多NLP任务是句子关系判断任务时，单词预测粒度的训练到不了句子关系这个层级，故增加这个任务有助于下游句子关系判断任务。所以可以看到，bert的预训练是个多任务过程。这也是Bert的一个创新。其实这个下一句的预测就变成了二分类问题了，如下：</p><p>Input: the man went to the store [SEP] he bought a gallon of milk</p><p>Label: IsNext</p><p>Input: the man went to the store [SEP] penguins are flightless birds</p><p>Label: NotNext</p><p>       Bert预训练所使用的语料是：BooksCorpus(800M words)和EnglishWikipedia（2500M words）加在一起使用。对于维基的数据我们仅仅提取了文章部分，忽略了列表，表格和头部信息。</p><h3 id="3-2-2-fine-tuning">3.2.2 fine-tuning</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-24.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-25.png" class="kg-image"><figcaption>图3.6 11项任务结构</figcaption></figure><!--kg-card-end: image--><p>微调的主要任务可以分为下面几个部分：</p><h3 id="-a-">（a）基于句子对的分类任务：</h3><p>  MNLI：给定一个前提 (Premise) ，根据这个前提去推断假设 (Hypothesis) 与前提的关系。该任务的关系分为三种，蕴含关系 (Entailment)、矛盾关系 (Contradiction) 以及中立关系 (Neutral)。所以这个问题本质上是一个分类问题，我们需要做的是去发掘前提和假设这两个句子对之间的交互信息。</p><p> QQP：基于Quora，判断 Quora 上的两个问题句是否表示的是一样的意思。</p><p>QNLI：用于判断文本是否包含问题的答案，类似于我们做阅读理解定位问题所在的段落。</p><p>STS-B：预测两个句子的相似性，包括5个级别。</p><p>MRPC：也是判断两个句子是否是等价的。</p><p>RTE：类似于MNLI，但是只是对蕴含关系的二分类判断，而且数据集更小。</p><p>SWAG：从四个句子中选择最可能为前句下文的那个。</p><h3 id="-b-">（b）基于单个句子的分类任务</h3><p>SST-2：电影评价的情感分析。</p><p>CoLA：句子语义判断，是否是可接受的（Acceptable）。</p><p>      对于GLUE数据集的分类任务（MNLI，QQP，QNLI，SST-B，MRPC，RTE，SST-2，CoLA），BERT的微调方法是根据[CLS]标志生成一组特征向量，并通过一层全连接进行微调。损失函数根据任务类型自行设计，例如多分类的softmax或者二分类的sigmoid。</p><p>SWAG的微调方法与GLUE数据集类似，只不过其输出是四个可能选项的softmax：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-26.png" class="kg-image"></figure><!--kg-card-end: image--><p>（c）问答任务</p><p>       SQuAD v1.1：给定一个句子（通常是一个问题）和一段描述文本，输出这个问题的答案，类似于做阅读理解的简答题。如图(c)表示的，SQuAD的输入是问题和描述文本的句子对。输出是特征向量，通过在描述文本上接一层激活函数为softmax的全连接来获得输出文本的条件概率，全连接的输出节点个数是语料中Token的个数。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-27.png" class="kg-image"></figure><!--kg-card-end: image--><p>（d）命名实体识别</p><p>      CoNLL-2003 NER：判断一个句子中的单词是不是Person，Organization，Location，Miscellaneous或者other（无命名实体）。微调CoNLL-2003 NER时将整个句子作为输入，在每个时间片输出一个概率，并通过softmax得到这个Token的实体类别。</p><p><strong><strong>3.3总结</strong></strong></p><p>Bert优点：<br>（1）使用双向语言模型，能够获取上下文特征（相比GPT)。使用transformer框架实现并行(相比ELMo)。<br>（2）效果好及普适性强。<br>（3）适合处理自然语义理解类任务(NLU)<br>BERT的缺点：<br>        (1)BERT的预训练任务MLM使得其预训练过程与中的数据与微调的数据不匹配，难以适应生成式任务<br>       (2)由于最大输入长度的限制，适合句子和段落级别的任务，不适用于文档级别的任务（如长文本分类）；</p><h2 id="-gpt-2">四、GPT-2</h2><p>        前面我们有学习ELMo、GPT-1、bert模型，知道ELMo模型是以LSTM模型为基础，GPT-1是以transformer的decoder为基础，bert是以transformer的encoder为基础，那接下来要讲的GPT-2又是如何工作的呢，它与其他三个模型有什么区别呢？下面我会尽我所能详细的讲解。</p><p>         GPT-2的大框架其实还是GPT 1.0，但是把第二阶段的Finetuning做有监督地下游NLP任务，换成了无监督地做下游任务，为啥这么做？后面会讲。我相信如果你理解GPT 1.0或者Bert，那么是非常容易理解GPT 2.0的创新点在哪里的。</p><h2 id="1-gpt-2-">1. GPT-2的原理</h2><h3 id="1-1-gpt-2-">1.1 GPT-2的预训练</h3><p>        刚刚也说了，GPT-2的大框架其实还是GPT 1.0，那我们就来说说它们的区别。</p><p>      （1）GPT2.0强化GPT 1.0的第一个预训练阶段：把Transformer模型参数扩容，常规的Transformer Big包含24个叠加的decoder，而GPT 2.0的decoder层叠加到了48层，高了一倍，参数规模15亿。为什么要扩容呢？这个只是手段，不是目的。真正的目的是：GPT 2.0准备用更多的训练数据来做预训练，更大的模型，更多的参数，意味着更高的模型容量，所以先扩容，免得Transformer 由于decoder层的模型容量不够多，容纳不下过多的参数（就是NLP知识）。</p><p>         既然模型容量已经足够大啦，那接下来就是找更大数量的无监督训练数据，这个其实好办，反正是无监督的，网上有的是，GPT2.0找了800万互联网网页作为语言模型的训练数据，它们被称为WebText。当然，光量大还不够，互联网网页还有个好处，覆盖的主题范围非常广，800万网页，主题估计五花八门，你能想到的内容，除了国家禁止传播的黄赌毒，估计在里面都能找到。这带来另外一个好处：这样训练出来的语言模型，通用性好，覆盖几乎任何领域的内容，这意味着它可以用于任意领域的下游任务。GPT 2.0论文其实更强调训练数据的通用性强这点。当然，除了量大通用性强外，数据质量也很重要，高质量的数据必然包含更好的语言及人类知识，所以GPT 2.0还做了数据质量筛选，过滤出高质量的网页内容来。</p><p>         GPT-2该模型的细节基本遵循OpenAI GPT模型 (Radford et al., 2018) ，仅进行了少量的修改。 层标准化(normalization) 被移动到每层的输入，类似于预激活残差网络，并且在最终自注意块之后添加了额外的层标准化。 使用了修改的初始化方案，该方案考虑了具有模型深度的残差路径上的累积。 我们在初始化时将残差层的权重缩放根号N分之一倍，其中N是残差层的数量。 词汇量扩大到50,257。 我们还将上下文大小从512个token增加到1024，并使用更大的批量尺寸512。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/02/image-48.png" class="kg-image"><figcaption>图4.1 GPT2.0结构图</figcaption></figure><!--kg-card-end: image--><h3 id="1-2-gpt-2-fine-tuning">1.2 GPT-2的fine-tuning</h3><p>          GPT-2继续沿用了原来在GPT种使用的单向Transformer模型，而这篇文章的目的就是尽可能利用单向Transformer的优势，做一些BERT使用的双向Transformer所做不到的事。那就是通过上文生成下文文本。</p><p><strong>        <strong>GPT-2的想法就是完全舍弃Fine-Tuning过程</strong></strong>，转而使用一个容量更大、无监督训练、更加通用的语言模型来完成各种各样的任务。我们完全不需要去定义这个模型应该做什么任务，因为很多标签所蕴含的信息，就存在于语料当中。就像一个人如果博览群书，自然可以根据看过的内容轻松的做到自动摘要、问答、续写文章这些事。</p><p>         严格来说GPT-2可能不算是一个多任务模型，但是它确实使用相同的模型、相同的参数完成了不同的任务。那么GPT-2是怎么使用语言模型完成多种任务的呢？</p><p>        通常我们针对特定任务训练的专用模型，给定输入，就可以返回这个任务相应的输出，也就是</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-49.png" class="kg-image"></figure><!--kg-card-end: image--><p>        那么如果我们希望设计一个通用的模型，这个模型在给定输入的同时还需要给定任务类型，然后根据给定输入与任务来做出相应的输出，那么模型就可以表示成下面这个样子</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/02/image-50.png" class="kg-image"></figure><!--kg-card-end: image--><p>         就好像原来我需要翻译一个句子，需要专门设计一个翻译模型，想要问答系统需要专门设计一个问答模型。但是如果一个模型足够聪明，并且能够根据你的上文生成下文，那我们就可以通过在输入中加入一些标识符就可以区分各种问题。比如可以直接问他：(‘自然语言处理', 中文翻译)来得到我们需要的结果Nature Language Processing。在我的理解中GPT-2更像是一个无所不知的问答系统，通过告知一个给定任务的标识符，就可以对多种领域的问答、多种任务做出合适的回答。GPT-2满足零样本设置 (zero-shot setting)， 在训练的过程中不需要告诉他应该完成什么样的任务，预测是也能给出较为合理的回答。</p><h2 id="2-gpt-2-">2.GPT-2总结</h2><h3 id="2-1-">2.1优势</h3><p>     （1）没有针对特定模型的精调流程：GPT2.0认为预训练中已包含很多特定任务所需的信息。</p><p>     （2）生成任务取得很好效果，使用覆盖更广、质量更高的数据；</p><h3 id="2-2-">2.2缺点</h3><p>        依然为单向自回归语言模型，无法获取上下文相关的特征表示</p><h2 id="-">五、大总结</h2><p><strong><strong>现如今深度学习的发展趋势：</strong></strong></p><p>1.有监督模型向半监督甚至无监督方向发展</p><p>2.从少量数据复杂模型到大量数据简单模型</p><p>3.从专用模型向通用模型发展</p><p>4.对数据的规模和质量提高</p><h2 id="--1">参考文献</h2><p>[1] <a href="https://blog.csdn.net/cpluss/article/details/81451264"><u>https://blog.csdn.net/cpluss/article/details/81451264</u></a></p><p>[2] <a href="https://blog.csdn.net/s1434088958/article/details/93360013"><u>https://blog.csdn.net/s1434088958/article/details/93360013</u></a></p><p>[3] <a href="https://blog.csdn.net/triplemeng/article/details/82380202"><u>https://blog.csdn.net/triplemeng/article/details/82380202</u></a></p><p>[4] <a href="https://blog.csdn.net/nht1996/article/details/93777237"><u>https://blog.csdn.net/nht1996/article/details/93777237</u></a></p><p>[5] <a href="https://blog.csdn.net/zyq11223/article/details/93595905"><u>https://blog.csdn.net/zyq11223/article/details/93595905</u></a></p><p>[6] <a href="https://zhuanlan.zhihu.com/p/69290203"><u>https://zhuanlan.zhihu.com/p/69290203</u></a></p><p>[7] <a href="http://www.sohu.com/a/332894905_680233"><u>http://www.sohu.com/a/332894905_680233</u></a></p><p>[8] <a href="https://zhuanlan.zhihu.com/p/46833276"><u>https://zhuanlan.zhihu.com/p/46833276</u></a></p><p>[9] <a href="https://zhuanlan.zhihu.com/p/48612853"><u>https://zhuanlan.zhihu.com/p/48612853</u></a></p><p>[10] <a href="https://www.jianshu.com/p/2045dbe7ff9d"><u>https://www.jianshu.com/p/2045dbe7ff9d</u></a></p><p>[11] <a href="https://www.tuicool.com/articles/iaANfqV"><u>https://www.tuicool.com/articles/iaANfqV</u></a></p><p><u>[12]</u><a href="http://www.sohu.com/a/364205688_717210?scm=1019.e000a.v1.0&amp;spm=smpc.csrpage.news-list.3.1581240042452qum2wST"><u>http://www.sohu.com/a/364205688_717210?scm=1019.e000a.v1.0&amp;spm=smpc.csrpage.news-list.3.1581240042452qum2wST</u></a></p><p>[13] <a href="https://zhuanlan.zhihu.com/p/69290203">https://zhuanlan.zhihu.com/p/69290203</a></p><p>[14] <u><a href="https://blog.csdn.net/qq_29695701/article/details/88953888?depth_1-utm_source=distribute.pc_relevant.none-task&amp;utm_source=distribute.pc_relevant.none-task">https://blog.csdn.net/qq_29695701/article/details/88953888?depth_1-utm_source=distribute.pc_relevant.none-task&amp;utm_source=distribute.pc_relevant.none-task</a></u></p><p>[15] <u><a href="https://www.jiqizhixin.com/articles/2019-08-26-16">https://www.jiqizhixin.com/articles/2019-08-26-16</a></u></p><p>[16] <u><a href="https://zhuanlan.zhihu.com/p/49271699">https://zhuanlan.zhihu.com/p/49271699</a></u></p><p>[17] <a href="https://www.jiqizhixin.com/articles/2019-08-26-12"><u>https://www.jiqizhixin.com/articles/2019-08-26-12</u></a></p><p>    注：部分文字、图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p>]]></content:encoded></item><item><title><![CDATA[Transformer详解]]></title><description><![CDATA[<p>         感谢各位大佬的博客分享，我在你们这里学到了许多，下面我就将结合大佬们的分享来总结一下我的学习内容。下面我们先介绍seq2seq，attention，然后进入正题，transformer。</p><h2 id="-seq2seq-">一、seq2seq模型</h2><h3 id="1-1-seq2seq-">1. 1 seq2seq模型简介</h3><p>        所谓Seq2Seq(Sequence to Sequence), 就是一种能够根据给定的序列，通过特定的方法生成另一个序列的方法。</p><p>        举个简单的例子，当我们使用机器翻译时：输入(Hello) ---&gt;输出(你好)。再比如在人机对话中，我们问机器：“你是谁？”，机器会返回答案“我是某某某”。机器翻译、人机对话、聊天机器人等等，这些都是应用在当今社会都或多或少的运用到了我们这里所说的Seq2Seq。</p><p>        如图1，这是一个简单的邮件对话场景。图中的Encoder和Decoder都只展示一层普通的LSTMCell（这个cell不局限于LSTM）。从下面结构上来看，整个模型结构还是非常简单的，EncoderCell最后一个时刻的状态就是中间语义向量C，它将作为DecoderCell的初始状态。然后在DecoderCell中，每个时刻的输出将会作为下一个时刻的输入，以此类推，直到DecoderCell某个时刻预测输出特殊符号&lt;END&gt;</p>]]></description><link>http://blog.idea2du.com/transformerxiang-jie/</link><guid isPermaLink="false">5e19359107ebdd000122e243</guid><category><![CDATA[NLP]]></category><dc:creator><![CDATA[yuting]]></dc:creator><pubDate>Sat, 11 Jan 2020 02:48:38 GMT</pubDate><content:encoded><![CDATA[<p>         感谢各位大佬的博客分享，我在你们这里学到了许多，下面我就将结合大佬们的分享来总结一下我的学习内容。下面我们先介绍seq2seq，attention，然后进入正题，transformer。</p><h2 id="-seq2seq-">一、seq2seq模型</h2><h3 id="1-1-seq2seq-">1. 1 seq2seq模型简介</h3><p>        所谓Seq2Seq(Sequence to Sequence), 就是一种能够根据给定的序列，通过特定的方法生成另一个序列的方法。</p><p>        举个简单的例子，当我们使用机器翻译时：输入(Hello) ---&gt;输出(你好)。再比如在人机对话中，我们问机器：“你是谁？”，机器会返回答案“我是某某某”。机器翻译、人机对话、聊天机器人等等，这些都是应用在当今社会都或多或少的运用到了我们这里所说的Seq2Seq。</p><p>        如图1，这是一个简单的邮件对话场景。图中的Encoder和Decoder都只展示一层普通的LSTMCell（这个cell不局限于LSTM）。从下面结构上来看，整个模型结构还是非常简单的，EncoderCell最后一个时刻的状态就是中间语义向量C，它将作为DecoderCell的初始状态。然后在DecoderCell中，每个时刻的输出将会作为下一个时刻的输入，以此类推，直到DecoderCell某个时刻预测输出特殊符号&lt;END&gt;结束。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image.png" class="kg-image"><figcaption>图1.1 邮件对话</figcaption></figure><!--kg-card-end: image--><p>         这里我们将Encoder阶段叫做编码阶段。对应的Decoder阶段叫做解码阶段。中间语义向量C可以看做是所有的输入内容的一个集合，所有的输入内容都包括在C里面。详细内容会在后面继续讲解。</p><h3 id="1-2-seq2seq-">1.2 seq2seq原理解析</h3><p>         首先，我们要明确Seq2Seq解决问题的主要思路是通过深度神经网络模型（常用的是LSTM）将一个作为输入的序列映射为一个作为输出的序列，这一过程由编码输入（encoder）与解码输出(decoder)两个环节组成，如图2。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-1.png" class="kg-image"><figcaption>图1.2 简单的Seq2Seq模型</figcaption></figure><!--kg-card-end: image--><p>          常见的encoder-decoder结构，其基本思想就是利用两个RNN，一个RNN作为encoder，另一个RNN作为decoder。</p><p>         Encoder负责将输入序列压缩成<strong><strong>指定长度</strong></strong>的向量，这个向量就可以看成是这个序列的语义，这个过程称为编码，如图1.2，获取语义向量最简单的方式就是直接将最后一个输入的隐状态作为语义向量C。也可以对最后一个隐含状态做一个变换得到语义向量，还可以将输入序列的所有隐含状态做一个变换得到语义变量。</p><p>         而decoder则负责根据语义向量生成指定的序列，这个过程也称为解码，如下图，最简单的方式是将encoder得到的语义变量作为初始状态输入到decoder的RNN中，得到输出序列。可以看到上一时刻的输出会作为当前时刻的输入，而且其中语义向量C只作为初始状态参与运算，后面的运算都与语义向量C无关，如图1.3。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-2.png" class="kg-image"><figcaption>图1.3 语义向量只作为初始化参数参与运算</figcaption></figure><!--kg-card-end: image--><p>       decoder处理方式还有另外一种，就是语义向量C参与序列所有时刻的运算，如下图1.4，上一时刻的输出仍然作为当前时刻的输入，但语义向量C会参与所有时刻的运算。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-3.png" class="kg-image"><figcaption>图1.4 语义向量参与解码的每个过程</figcaption></figure><!--kg-card-end: image--><p>        这里我们必须强调一点，Seq2Seq的实现程序设计好之后的输入序列和输出序列长度是不可变的。</p><p>如何训练seq2seq模型呢？下面详细讲解seq2seq的原理</p><p>         RNN是可以学习概率分布，然后进行预测，比如我们输入t时刻的数据后，预测t+1时刻的数据，比较常见的是字符预测例子或者时间序列预测。为了得到概率分布，一般会在RNN的输出层使用softmax激活函数，就可以得到每个分类的概率。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-4.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-5.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-6.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-7.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-8.png" class="kg-image"><figcaption>图1.5 encoder-decoder模型</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-9.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="1-3-seq2seq-">1.3 seq2seq的应用场景</h3><p>         下面我们具体看看，我们学习的Seq2Seq技术到底有什么应用场景呢？</p><p>         Seq2Seq的应用随着计算机技术、人工智能技术、算法研究等方面的发展以及社会发展的需求，它在许多领域产生了一些运用。目前，它主要的应用场景有（如果你感兴趣可以看看这里）：</p><p>① 机器翻译（当前最为著名的Google翻译，就是完全基于Seq2Seq+Attention机制开发出来的）</p><p>② 聊天机器人</p><p>③ 文本摘要自动生成（今日头条等使用了该技术）</p><p>④ 图片描述自动生成</p><h2 id="-attention-">二、Attention注意力机制</h2><p>        前面一章，我们有讲过它的基本原理。具体它是如何作用于Encoder-Decoder的呢？</p><p>         Encoder-Decoder 作为一种通用框架，在具体的自然语言处理任务上还不够精细化。换句话说，单纯的Encoder-Decoder 框架并不能有效的聚焦到输入目标上，这使得像 seq2seq 的模型在独自使用时并不能发挥最大功效。比如说在上图3中，编码器将输入编码成上下文变量 C，<strong><strong>在解码时每一个输出 Y 都会不加区分的使用这个 C 进行解码</strong></strong>。而注意力模型要做的事就是根据序列的每个时间步将编码器编码为不同 C，在解码时，结合每个不同的 C 进行解码输出，这样得到的结果会更加准确，如下所示：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-10.png" class="kg-image"><figcaption>图2.1基于attention的seq2seq</figcaption></figure><!--kg-card-end: image--><h3 id="-">具体原理如下：</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-11.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-12.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>若从公式上难以理解，下面我们图上来进一步理解。</strong></strong></p><p>如：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-13.png" class="kg-image"><figcaption>图2.2 seq2seq Attention详解图</figcaption></figure><!--kg-card-end: image--><p>注：左侧为Encoder+输入，右侧为Decoder+输出。中间为Attention。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-14.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-15.png" class="kg-image"><figcaption>图2.3 seq2seq Attention第一步</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-16.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-17.png" class="kg-image"><figcaption>图2.4 seq2seq Attention第二步</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-18.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-19.png" class="kg-image"><figcaption>图2.5 seq2seq Attention第三步</figcaption></figure><!--kg-card-end: image--><p><strong><strong>下一个时间点：</strong></strong></p><p>        来到时间点2，之前的context vector可以作为输入和目标的单词串起来作为lstm的输入。之后又回到一个hiddn state。以此循环。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-20.png" class="kg-image"><figcaption>图2.6 seq2seq Attention第四步</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-21.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-22.png" class="kg-image"><figcaption>图2.7 seq2seq Attention第五步</figcaption></figure><!--kg-card-end: image--><p>         另一方面，context vector和decoder的hidden state合起来通过一系列非线性转换以及softmax最后计算出概率。</p><h3 id="2-2-attention-">2.2 Attention计算方法</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-23.png" class="kg-image"></figure><!--kg-card-end: image--><p>我们先讲解一下第一种：<strong><strong>Attention score function: dot</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-24.png" class="kg-image"><figcaption>图2.8 Attention点乘计算法</figcaption></figure><!--kg-card-end: image--><p>          输入是encoder的所有hidden states H: 大小为(hidden dim, sequence length)。decoder在一个时间点上的hidden state，s：大小为（hidden dim, 1）。</p><p>第一步：H转置为（sequence length, hidden dim) 与s做点乘得到一个大小为(sequence length, 1)的向量。</p><p>第二步：对向量做softmax得到一个合为1的权重。</p><p>第三步：将H与第二步得到的权重做点乘得到一个大小为(hidden dim, 1)的context vector。</p><p><strong><strong>第二个 ：Attention score function: general</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-25.png" class="kg-image"><figcaption>图2.9 Attention点乘计算法</figcaption></figure><!--kg-card-end: image--><p>         输入是encoder的所有hidden states H: 大小为(hidden dim1, sequence length)。decoder在一个时间点上的hidden state , s：大小为（hidden dim2, 1）。此处两个hidden state的纬度并不一样。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-26.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>第三个 ：Attention score function:  concat</strong></strong></p><p>        这里就不在用图讲述啦！就简单说明一下。</p><p>        输入是encoder的所有hidden states H: 大小为(hidden dim, sequence length)。decoder在一个时间点上的hidden state , s：大小为（hidden dim, 1）。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-27.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="-transformer">三、Transformer</h2><p>          这是google于2017年发表的大作，论文提出了一种序列见面的新方法：transformer，其模型依然是沿用了经典的Encoder-Decoder结构，不同的是不再使用RNN或是CNN作为序列建模机制了，而是使用self-attention机制（一种完全摈弃RNN单元的机制），一步到位获得全局信息，并获得并行训练。简单来说，可以将Transformer看成和RNN类似的特征提取器。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-28.png" class="kg-image"><figcaption>图3.1 Encoder-Decoder结构</figcaption></figure><!--kg-card-end: image--><p>         Transformer所使用的注意力机制的核心思想是：计算一句话中的每个词对于这句话中所有词的相互关系，然后认为这些词与词之间的相互关系在一定程度上反应了这句话中不同词之间的关联性以及重要程度。因此再利用这些相互关系来调整每个词的重要性（权重）就可以获得每个词新的表达。这个新的表征不但蕴含了该词本身，还蕴含了其他词与这个词的关系，因此和单纯的词向量相比是一个更加全局的表达。</p><p>         Transformer通过对输入的文本不断进行这样的注意力机制层得到最终的文本表达。</p><p><strong><strong>RNN/CNN/TRansformer比较：</strong></strong></p><p>        深度学习做NLP的方法，基本上都是先将句子分词，然后每个词转化为对应的词向量序列。这样一来，每个句子都对应的是一个矩阵X=(x1,x2,…,xt)，其中xi都代表着第i个词的词向量（行向量），维度为d维，故X∈Rn×d。这样的话，问题就变成了编码这些序列了。</p><p>第一个基本的思路是RNN层，RNN的方案很简单，递归式进行：yt=f(yt−1,xt)</p><p>        不管是已经被广泛使用的LSTM还是GRU，都并未脱离这个递归框架。RNN结构本身比较简单，也很适合序列建模，但RNN的明显缺点之一就是无法并行，因此速度较慢，这是递归的天然缺陷。</p><p>第二个思路是CNN层，其实CNN的方案也是很自然的，窗口式遍历，比如尺寸为3的卷积，就是：yt=f(xt−1,xt,xt+1)</p><p>         Google的大作提供了第三个思路：纯Attention！单靠注意力就可以！RNN要逐步递归才能获得全局信息，因此一般要双向RNN才比较好；CNN事实上只能获取局部信息，是通过层叠来增大感受野；Attention的思路最为粗暴，它一步到位获取了全局信息！它的解决方案是：yt=f(xt,A,B)</p><p>      其中A,B是另外一个序列（矩阵）。如果都取A=B=X，那么就称为Self Attention，它的意思是直接将xt与原来的每个词进行比较，最后算出yt！</p><p><strong><strong>#Transformer</strong></strong></p><p>        1.先把Transformer想象成一个黑匣子，在机器翻译的领域中，这个黑匣子的功能就是输入一种语言然后将它翻译成其他语言。如图：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-29.png" class="kg-image"><figcaption>图3.2 黑匣子图</figcaption></figure><!--kg-card-end: image--><p>       2.打开The Transformer，我们可以看到一个编码组件、一个解码组件，和它俩之间的链接。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-30.png" class="kg-image"><figcaption>图3.3 Encoder-Decoder结构</figcaption></figure><!--kg-card-end: image--><p>        3.再对这个黑匣子进一步剖析，每个Encoders中分别由6个Encoder组成，每个Decoders中同样也是由6个Decoder组成。（论文中是这样配置的）</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-31.png" class="kg-image"><figcaption>图3.4 Encoder-Decoder结构</figcaption></figure><!--kg-card-end: image--><p>        4.对于Encoders中的每一个Encoder，他们结构都是相同的，但是并不会共享权值。每层Encoder有2个部分组成，如下图：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-32.png" class="kg-image"><figcaption>图3.5 Encoder结构</figcaption></figure><!--kg-card-end: image--><p>          每个Encoder的输入首先会通过一个self-Attention层，通过self-Attention层帮助Endcoder在编码单词的过程中查看输入序列中的其他单词。Self-Attention的输出会被传入一个全连接的前馈神经网络，每个encoder的前馈神经网络参数个数都是相同的，但是他们的作用是独立的。</p><p>        一个decoder是在自注意力层和前馈网络层中间再加一个attention layer。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-33.png" class="kg-image"><figcaption>图3.6 Encoder-Decoder结构</figcaption></figure><!--kg-card-end: image--><p><strong><strong>#Self-Attention</strong></strong></p><p><strong><strong>1.Self-Attention的作用：</strong></strong></p><p>        假设下面的句子就是我们需要翻译的输入句：</p><p>”The animal didn't cross the street because it was too tired”</p><p>        这句话中的"it"指的是什么？它指的是“animal”还是“street”？对于人来说，这其实是一个很简单的问题，但是对于一个算法来说，处理这个问题其实并不容易。self attention的出现就是为了解决这个问题，通过self attention，我们将“it”与“animal”联系起来。</p><p>        当模型处理单词的时候，self attention层可以通过当前单词去查看其输入序列中的其他单词，以此来寻找编码这个单词更好的线索。即：self-attention是在计算每个单词对当前单词的贡献，也就是对每个单词对当前单词的贡献进行打分。</p><p><strong><strong>2.Self-Attention的结构：</strong></strong></p><p>Self-Attention结构如下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-34.png" class="kg-image"><figcaption>图3.7 Scaled dot-product Attention</figcaption></figure><!--kg-card-end: image--><p><strong><strong>3.Self-Attention的定义：</strong></strong></p><p>         对于如何计算Self-Attention,论文作出了具体的定义：Attention函数的本质可以被描述为一个查询（query）到一系列（键key-值value）对的映射。google对attention的定义如下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-35.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>4.Self-Attention的向量计算：</strong></strong></p><p><strong>         <strong>计算self attention的第一步：</strong></strong>创造三个encoder的输入向量Q,K,V。这3个向量是通过词嵌入乘以我们训练过程中创建的3个训练矩阵而产生的。</p><p>          如下图，假设embedding向量的维度为4，我们希望得到一个维度为3的query、key和value向量，只需将每个embedding乘上一个维度为4*3的矩阵即可。这些矩阵就是训练过程中要学习的。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-36.png" class="kg-image"><figcaption>图3.8 Self-Attention的向量计算</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-37.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-38.png" class="kg-image"><figcaption>图3.9 Self-Attention的向量计算</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-39.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-40.png" class="kg-image"><figcaption>图3.10 Self-Attention的向量计算</figcaption></figure><!--kg-card-end: image--><p><strong>       <strong>第五步</strong></strong>是将每个Value向量乘以softmax后的得分（注意是对应位置相乘）。这里实际上的意义在于保存对当前词的关注度不变的情况下，降低对不相关词的关注。</p><p><strong>        <strong>第六步</strong></strong>是累加加权值的向量。 就得到了self-attention层对当前位置单词的输出（对于第一个单词）。对每个单词进行如上操作，就能得到整个句子的attention输出了。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-41.png" class="kg-image"><figcaption>图3.11 Self-Attention的向量计算</figcaption></figure><!--kg-card-end: image--><p>总结一下上面的步骤：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-42.png" class="kg-image"></figure><!--kg-card-end: image--><p>         注意：上面阐述的过程实际上是Attention机制的计算流程，对于self-Attention，Query=Value。</p><p>        总结self-attention的计算过程，（单词级别）得到一个可以放到前馈神经网络的矢量。，在实际操作中是直接将每个文字同时处理，因此会变成一个矩阵，而非单一词向量。下面来看看Self-Attention的矩阵计算方式。</p><h3 id="5-self-attention-">5. Self-Attention的矩阵计算：</h3><p>         计算Query，Key和Value矩阵：将embedding向量转化成矩阵X（假设有一句话有长度为2，embedding维度为4，那么X的维度为（2 × 4）），然后把通过训练得到的权重矩阵(W^Q, W^K, W^V)和X相乘。</p><p>       假定query、key、value的维度为3，构造一个维度为（4×3）的权值矩阵。将其与X做矩阵乘法，得到一个2×3的矩阵，即为Query，类似可以得到Key，Value。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-43.png" class="kg-image"><figcaption>图3.12 Self-Attention的矩阵计算</figcaption></figure><!--kg-card-end: image--><p>将Query和Key相乘，得到打分，然后经过softmax，接着乘上V的到最终的输出。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-44.png" class="kg-image"><figcaption>图3.13 Self-Attention的矩阵计算</figcaption></figure><!--kg-card-end: image--><p>这个过程可以看成是并行的。</p><p><strong><strong>#</strong></strong><a href="#Position Embedding"><strong><strong>Multi-Head </strong></strong></a><strong><strong>Self-Attention</strong></strong></p><p>         按照上面的矩阵计算，Query，Key，Value的维度是词向量的维度，215维，计算耗时多，所以google使用“Multi-Head”机制改善Attention层，实现并行计算。</p><p>Multi-Head Attention结构如下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-45.png" class="kg-image"><figcaption>图3.14 Multi-Head Attention</figcaption></figure><!--kg-card-end: image--><p>         所谓“Multi-Head”，即：将词嵌入（或者来自较低层的Encoder/Decoder的矢量）投影到不同的“representation subspaces（表示子空间）”中，便于模型学习不同子空间位置的特征表示。其做法是：通过h个不同的线性变换（随机初始化生成h个矩阵）对Q，K，V进行投影，生成h套Q/K/V权重矩阵，然后还是如之前单词级别的计算过程一样处理这些数据，得到h个不同的attention结果。这样，通过multi-headed attention，为每个“head”都独立维护一套Q/K/V的权值矩阵。</p><p>      公式如下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-46.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-47.png" class="kg-image"><figcaption>图3.15 Multi-Head Attention</figcaption></figure><!--kg-card-end: image--><p><strong><strong>论文具体做法如下：</strong></strong></p><p>        设置h=8，通过不同的8个矩阵W_i（随机初始生成，维度：512x64）对Q,K,V（维度512x64）矩阵进行投影，得到8个head，所以会在8个时间点去计算这些不同的权值矩阵，但最后结束时，会得到8个不同的Z矩阵。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-48.png" class="kg-image"><figcaption>图3.16 Multi-Head Attention</figcaption></figure><!--kg-card-end: image--><p>         最后，把这8个矩阵压缩成一个矩阵，将这8个矩阵拼接在一起，再与一个矩阵W^O相乘即可。</p><p>整个Self-Attention计算过程总结如下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-49.png" class="kg-image"><figcaption>图3.17 Multi-Head Attention</figcaption></figure><!--kg-card-end: image--><p>X：是第一个encoder，输入是embedding向量。</p><p>R：是2-6个encoder，输入是前一个encoder的输出。</p><p><strong><strong>#Positional Embedding</strong></strong></p><p>         截止目前为止，我们介绍的Transformer模型并没有捕捉顺序序列的能力，也就是说无论句子的结构怎么打乱，Transformer都会得到类似的结果。换句话说，Transformer只是一个功能更强大的词袋模型而已。</p><p>         Transformer抛弃了RNN，而RNN最大的优点就是在时间序列上对数据的抽象，所以文章中作者提出两种Positional Encoding的方法，将Positional Encoding后的数据与输入embedding数据求和，加入了相对位置信息。</p><p>论文提到两种Positional Encoding方法：</p><p>1.不需要训练，用不同频率的sin和cos函数直接计算</p><p>2.学习出一份positional embedding（参考文献）。学习时注意，每个batch的pos emb都一样，即在batch维度进行broadcast。</p><p>        经过实验发现两者的结果一样，所以最后选择了第一种方法，公式如下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-50.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2020/01/image-51.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-52.png" class="kg-image"><figcaption>图3.18 embedding</figcaption></figure><!--kg-card-end: image--><p>如果嵌入维度为4，那么实际上的位置编码就如下图所示：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-53.png" class="kg-image"><figcaption>图3.19 embedding</figcaption></figure><!--kg-card-end: image--><p><strong><strong>#The Residuals</strong></strong></p><p>         encoder过程中，每个self-attention层都有个左右连接子层，采用了残差网络中的layer-normalization步骤。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-55.png" class="kg-image"><figcaption>图3.20 encoder过程</figcaption></figure><!--kg-card-end: image--><p><strong><strong>#Decoder</strong></strong></p><p>         最后一层encoder的输出会被转化为一组attention vector：K和V，然后这一组attention vector会在每个decoder层的encoder-decoder attention层被用到，目的是帮助decoder专注在输入序列中合适的位置：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2020/01/image-54.png" class="kg-image"><figcaption>图3.21 decoder过程</figcaption></figure><!--kg-card-end: image--><p>          decoder中的self-attention layer和encoder中的有一点区别：在decoder中，自注意力层只能处理输出序列中当前词之前的序列，即对真实label y像encoder层的x一样做self-attention，但每个位置的y只与它之前的y有关（mask）。做法是在计算softmax之前把后面的词都设成 -inf。</p><p>        得到encoder层的key和value以及decoder层的query后，在encoder-decoder Attention层利用key和value以及query再做最后一个attention。“Encoder-Decoder Attention”层就和multiheaded self-attention的运作方式一样。得到每个位置的输出。</p><h2 id="--1">参考文献</h2><p>[1] <a href="https://www.jianshu.com/p/b2b95f945a98"><u>https://www.jianshu.com/p/b2b95f945a98</u></a></p><p>[2] <a href="https://blog.csdn.net/qq_32241189/article/details/81591456"><u>https://blog.csdn.net/qq_32241189/article/details/81591456</u></a></p><p>[3] <a href="https://zhuanlan.zhihu.com/p/40920384"><u>https://zhuanlan.zhihu.com/p/40920384</u></a></p><p>[4] <a href="https://blog.csdn.net/qq_42208267/article/details/84967446"><u>https://blog.csdn.net/qq_42208267/article/details/84967446</u></a></p><p>[5] <a href="https://blog.csdn.net/Flying_sfeng/article/details/100996524"><u>https://blog.csdn.net/Flying_sfeng/article/details/100996524</u></a></p><p>注：部分文字、图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p>]]></content:encoded></item><item><title><![CDATA[自然场景文本识别]]></title><description><![CDATA[<p>         这次分享的是场景更丰富、情形更复杂的自然场景ocr。核心算法将分为两部分介绍——文本检测和文本识别。不同于传统ocr，自然场景ocr的特点在于“场景”，我们需将文本从复杂的图片场景中独立出来，剔除场景的干扰，才能更快、更准地实现文本识别。故文本检测和文本识别是自然场景ocr端到端系统中两个必不可少的步骤。下面将由近期的ocr学习成果展开介绍。</p><h2 id="-">一、文本检测算法</h2><h3 id="1-1-psenet-">1.1 PSENet简介</h3><p>         现阶段的文本检测算法主要分为两大类：基于矩形边界盒与基于像素实例分割。但这两类算法面临着两大挑战：</p><p>（1）基于矩形边界盒的文本检测方法，很难将文本完全封闭在矩形中，即很难处理任意形状的文本。</p><p>（2）大多数基于像素实例分割的算法很难将彼此接近的文本实例分开。</p><p>         为了解决上述问题，南京大学与南京理工大学提出了PSENet（渐进尺度扩展网络），是一种改良版的实例分割的算法。下面对三个典型的文本检测算法进行对比分析，这三个算法分别是：ctpn，一种基于矩形边界盒的算法；pixel_link，一种基于像素实例分割的算法；PSENet。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-40.png" class="kg-image"><figcaption>图1.1 三种文本检测算法检测效果对比</figcaption></figure><!--kg-card-end: image--><p>          如图1.1，(a)为原图，(b)、(c)、(d)依次为ctpn、</p>]]></description><link>http://blog.idea2du.com/zi-ran-chang-jing-wen-ben-shi-bie/</link><guid isPermaLink="false">5ddc8b0f07ebdd000122e193</guid><category><![CDATA[NLP]]></category><dc:creator><![CDATA[wujunyang]]></dc:creator><pubDate>Tue, 26 Nov 2019 02:39:54 GMT</pubDate><content:encoded><![CDATA[<p>         这次分享的是场景更丰富、情形更复杂的自然场景ocr。核心算法将分为两部分介绍——文本检测和文本识别。不同于传统ocr，自然场景ocr的特点在于“场景”，我们需将文本从复杂的图片场景中独立出来，剔除场景的干扰，才能更快、更准地实现文本识别。故文本检测和文本识别是自然场景ocr端到端系统中两个必不可少的步骤。下面将由近期的ocr学习成果展开介绍。</p><h2 id="-">一、文本检测算法</h2><h3 id="1-1-psenet-">1.1 PSENet简介</h3><p>         现阶段的文本检测算法主要分为两大类：基于矩形边界盒与基于像素实例分割。但这两类算法面临着两大挑战：</p><p>（1）基于矩形边界盒的文本检测方法，很难将文本完全封闭在矩形中，即很难处理任意形状的文本。</p><p>（2）大多数基于像素实例分割的算法很难将彼此接近的文本实例分开。</p><p>         为了解决上述问题，南京大学与南京理工大学提出了PSENet（渐进尺度扩展网络），是一种改良版的实例分割的算法。下面对三个典型的文本检测算法进行对比分析，这三个算法分别是：ctpn，一种基于矩形边界盒的算法；pixel_link，一种基于像素实例分割的算法；PSENet。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-40.png" class="kg-image"><figcaption>图1.1 三种文本检测算法检测效果对比</figcaption></figure><!--kg-card-end: image--><p>          如图1.1，(a)为原图，(b)、(c)、(d)依次为ctpn、pixel_link、PSENet的识别效果。由图可见，ctpn的检测框为矩形，处理矩形文本尚可，但很难将弯曲变形文本框进来，容易丢失信息；pixel_link的检测框可以将弯曲文本框进来，但相邻文本并没有区分开，从而影响了识别效果；PSENet既能处理弯曲文本，又能很好地将相邻文本区分开。可见PSENet的优势。</p><p>注：PSENet论文地址：<a href="https://arxiv.org/pdf/1806.02559.pdf">https://arxiv.org/pdf/1806.02559.pdf</a></p><h3 id="1-2-psenet-">1.2 PSENet算法整体流程</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-41.png" class="kg-image"><figcaption>图1.2 算法流程图示。左边是基于FPN实现的，右边是特征融合和渐进式尺度扩展算法</figcaption></figure><!--kg-card-end: image--><p>         在FPN的启发下，将低层特征映射与高级特征映射连接起来，从而有四个级联的特征映射。这些映射在F中进一步融合以编码各种视图的信息。然后将特征映射F投影到n个分支中，以产生多个分割结果S<sub>1 </sub>,S<sub>2 </sub>,…,S<sub>n</sub>。每个S<sub>i</sub>是所有文本实例在一定范围内的一个分割掩码。不同分割掩码的尺度由超参数来决定。这些掩码中，S<sub>1 </sub>给出了具有最小标度(即最小内核)的文本实例分割结果，而S<sub>n</sub>表示原始分割掩码(即最大内核)。在获得这些分段掩码后，使用渐进扩展算法将S<sub>1 </sub>中的所有实例“内核”逐渐扩展到S<sub>n</sub>中的完整形状，并获得最终的结果R。</p><p>        算法流程简要概括，便是：原图——&gt;下采样——&gt;ResNet进行特征提取——&gt;上采样——&gt;特征融合成——&gt;卷积网络，分割成n个特征图——&gt;逐级拓展，得到最终检测结果。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-42.png" class="kg-image"><figcaption>图1.3 渐进式规模扩展算法的过程。CC表示查找连接组件。EX表示规模扩展算法。（a），（e）和（f）分别表示S1，S2和S3。（b）为初始结果。（c）和（d）是扩展的结果。（g）为EX工作流程展开图示。</figcaption></figure><!--kg-card-end: image--><h3 id="1-3-">1.3 渐进式规模扩展算法工作过程</h3><p>          渐进扩展算法的过程，用到了广度优先搜索(BFS)算法的思想。例如，我们有3个分割结果S=S<sub>1 </sub>,S<sub>2 </sub>,S<sub>3</sub>（即图1.3的(a),(e),(f)）。首先，基于最小内核特征图S<sub>1 </sub>（图1.3(a)），4个不同的连接组件c=c1,c2,c3,c4（即4个检测框）可以作为初始化分割。图1.3(b)中不同颜色的区域分别表示这些不同的连接部件。到目前为止，已经检测到了所有文本实例的中心部分(即最小内核)。然后，我们通过合并S<sub>2 </sub>中的像素，然后在S<sub>3</sub>中逐步扩展检测到的内核。最后，我们在图中提取标有不同颜色的已连接组件作为文本实例的最终预测（即图1.3(d)）。<br>         图1.3(g)中展示了尺度扩展的过程。扩展基于广度优先搜索算法，该算法从多个核的像素开始，然后迭代地合并相邻的文本像素。注意，在展开过程中可能存在冲突的像素，如图1.3(g)中的红色框所示。在实践中处理冲突的原则是，混淆的像素只能在先到先得的基础上由一个单一内核合并。由于“渐进的”扩展过程，这些边界冲突不会影响最终检测和处理速度。</p><h3 id="1-4-">1.4 标签生成</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-43.png" class="kg-image"><figcaption>图1.4 标签生成。（b）是原始文本实例。（c）显示了具有不同内核比例的分割掩码</figcaption></figure><!--kg-card-end: image--><p>        生成不同尺度的内核，就需有标签的图像来进行训练。为了生成不同尺寸内核所对应的基本实例，作者采用Vatti裁剪算法将原始多边形p<sub>n</sub>缩放d<sub>i</sub>个像素来得到p<sub>i</sub>，其中每个缩放的p<sub>i</sub>都是使用0/1的二进制掩码来表示分割后的标签。</p><h3 id="1-5-">1.5 损失函数</h3><p>         PSENet的损失函数见式(3)。Lc、Ls分别表示完整文本实例和收缩实例的损失，λ平衡Lc和Ls之间的重要性。在自然场景中，文本实例通常只占据极小的区域，若使用二值交叉熵，网络偏向于非文本区域，故采用dice coefficient。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-44.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="--1">二、文本识别算法</h2><h3 id="2-1-aster-">2.1 aster算法简介</h3><p>         通过文本检测“抠出”文本域后，便可以通过文本识别算法对文本域中的文本进行识别了。常见的文本识别算法面临两大挑战：</p><p>（1）大多数是基于水平文本行进行处理的，而处理弯曲文本行效果较差。</p><p>（2）大多数易受场景的干扰，场景文字识别效果较差。</p><p>         为了解决上述问题，华中科技大学白翔老师团队提出了aster——一种具有柔性矫正功能的注意力机制场景文本识别方法。下面对两个典型的文本识别算法进行对比分析，这两个算法分别是densenet和aster。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-45.png" class="kg-image"><figcaption>图2.1 两种文本识别算法识别结果对比</figcaption></figure><!--kg-card-end: image--><p>        如图2.1，(a)为原图（一张倾斜文本，一张完全文本），(b)为densenet的文本识别结果，(c)为aster-矫正网络的文本矫正结果，(d)为aster-识别网络的文本识别结果。由图2.1可见，densenet处理规则的倾斜文本效果尚可（倾斜文本旋转任意角度后便是水平文本），但处理弯曲文本的效果很差；相比之下，aster分为两步，它先通过矫正网络把弯曲文本矫正为规则文本，再进行识别，这样确实取得了很好的识别效果。可见aster的优势。</p><p>        矫正网络自适应地将输入图像中的文本进行矫正并转换成一个新的图像。它以柔性薄板样条插值变换方法作为核心，该方法负责处理各种不规则文本，预测出TPS变换的参数后，并在无人为标注的情况下进行训练。</p><p>        识别网络是一个基于注意力机制的Seq2Seq模型，它直接从矫正后的图像预测文本序列。整个模型进行端到端训练，只需要图像和它们的gt文本。通过大量的实验，验证了矫正网络的有效性，展现了aster识别规则与不规则的识别能力。此外，还证明了aster在端到端网络中的强大作用，它能够很好地增强文本识别的效果，使得水平方向文本识别器得以识别多方向文字。</p><h3 id="2-2-">2.2 矫正网络</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-46.png" class="kg-image"><figcaption>图2.2.1 矫正网络流程图</figcaption></figure><!--kg-card-end: image--><p>         矫正网络的核心是将图片空间矫正过程构建成可学习模型，流程如图2.2.1所示。先将输入图片下采样到I<sub>d</sub>，定位网络与格点生成器生成TPS变换的参数，再通过采样器生成矫正后的图片I<sub>r</sub>。TPS(Thin Plate Spline)可对图片进行柔性变换，对于透视和弯曲这两种典型的不规则文字的矫正效果很好。</p><p>         TPS插值法是指在对薄板中的N个点An形变到对应的N个点Bn时，采用的使得薄板弯曲能量最小的插值方法。弯曲变形能量小，意味着薄板整体的变形较为平滑，凹凸的部分被抹平了很多。此原理有点像物理学中的能量守恒定理，将空间的所有点移动到势能最低的面。对于二维的图片来说，采用弯曲能量最小的原则，意味着变形后的图像更加平滑，不易出现文字的扭曲变形。</p><p>        如图2.2.2所示，定位网络分别由２个含有K个基准点的坐标集合组成。K个基准点的坐标用C表示，预测出的坐标用C'表示。定位网络由一个CNN网络预测出控制点坐标，并且在训练过程中无需任何坐标标注，只依赖识别网络的文本gt，完全由反向传播的梯度监督。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-47.png" class="kg-image"><figcaption>图2.2.2 定位网络工作原理</figcaption></figure><!--kg-card-end: image--><h3 id="2-3-">2.3 识别网络</h3><p>        弯曲文本通过aster矫正转换成了规则文本，实际上就能作为大部分识别网络的输入了。白翔老师团队使用了双向解码器扩展的seq2seq模型来解决识别问题。由于seq2seq模型的输出是由RNN生成的，因此它获取了字符依赖关系，从而将语言建模融入识别过程。此外，双向解码器可以在两个方向上捕获字符依赖关系，从而利用更丰富的上下文并提高处理速度。图2.3描述了单向版本的结构。根据经典的Seq2Seq模型，识别网络的模型由编码器和解码器组成。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-48.png" class="kg-image"><figcaption>图2.3 aster识别网络的工作流程</figcaption></figure><!--kg-card-end: image--><p>（1）编码器结构为卷积循环神经网络，通过CNN提取特征图后，可以得到输入图像中比较鲁棒的，比较高级的特征图。这里会将这些特征图转化成一个序列，序列的长度就是特征图的宽度，并通过B-LSTM在两个方向上分析一个序列的独立性，并输出另一个同样长度的序列。这样一来，我们就得到了按照从左到右的顺序排列的特征向量。</p><p>（2）解码器部分中，seq2seq模型使用注意力机制计算权重，将特征序列转换为字符序列，并通过LSTM联系上下文，将字符序列按顺序依次输出。seq2seq模型能够输入和输出任意长度的序列。这种模型的序列建模能力强，并且能够获取输出依赖关系。要注意的是seq2seq模型是一个单向递归网络。</p><h2 id="--2">三、实验分析</h2><h3 id="3-1-">3.1 实验分析</h3><p>         针对上文介绍的几种算法，这里通过实验来直观地进行分析。一方面，由于本次实验用到的数据集基本为规则文本图片，另一方面，我这缺少大量的中文弯曲文本图片来训练矫正网络，即暂时没有处理中文弯曲文本的预训练模型，故将aster中的矫正网络拿掉，仅用aster的识别网络（基于attention的seq2seq模型）进行实验，从而减少处理时间。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-49.png" class="kg-image"></figure><!--kg-card-end: image--><p>（1）如表3.1测试集1的处理速度及结果所示，由于syn测试集是几乎没什么背景的单行文本图片，故在处理syn时基本上是跳过了文本检测步骤，直接使用识别网络进行识别。从表中可以发现densenet和基于attention的seq2seq模型的处理速度相近，densenet稍微快一点点；识别效果方面，seq2seq模型略优于densenet。综合比较两种识别算法效果相差不大。</p><p>（2）如表3.1测试集2的处理速度及结果所示，测试集2用到的是我自己收集200张复杂场景图片，数据来源于新浪微博配图，图片具有多行、场景复杂等特点，故检测网络起到了重要的作用。可见ctpn+densenet组合的处理速度要比PSENet的两个组合慢不少，故ctpn的检测性能要低于PSENet。此外，由于测试集2中的图片我目前没有打标记，故无法计算准确率，凭视觉来看三种组合算法的识别结果相近，均良好。</p><p>        综上所述，PSENet检测算法+aster识别算法这个端到端组合，在性能和识别结果上达到了较好的折中，更适合投入到实际业务中去。</p><h3 id="3-2-psenet-">3.2 PSENet检测结果展示</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-50.png" class="kg-image"><figcaption>图3.2.1 常规文本检测结果</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-51.png" class="kg-image"><figcaption>图3.2.2 场景文本检测结果</figcaption></figure><!--kg-card-end: image--><h3 id="3-3-">3.3 端到端文本识别结果展示</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-52.png" class="kg-image"><figcaption>图3.3.1 常规文本识别结果</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-53.png" class="kg-image"><figcaption>图3.3.2 场景文本识别结果</figcaption></figure><!--kg-card-end: image--><h2 id="--3">参考文献</h2><p>[1] https://github.com/whai362/PSENet</p><p>[2] https://github.com/bgshih/aster</p><p>[3] https://github.com/YCG09/chinese_ocr</p><p>[4] https://blog.csdn.net/weixin_43624538/article/details/88630494</p><p>[5] https://cloud.tencent.com/developer/article/1484463</p><p>注：部分文字、图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p>]]></content:encoded></item><item><title><![CDATA[舆情事件发展趋势预测]]></title><description><![CDATA[<p>          事情发展趋势预测，简单来讲，就是对正在发生的事件，根据它现已产生的数据（即历史数据）来预测它接下来可能会产生的数据（即未来发展趋势）。在互联网科技高速发展的今天，社交网络上的热门话题可在短时间内大范围扩散，甚至形成重大的舆情事件，需政府部门或相关责任人及时应对解决。因此尽早预测社交网络舆情事件的发展趋势具有很重要的现实意义。</p><p>我们对此研究的主要内容包括：</p><p><strong>1）<strong>与应用系统（鹰击、鹰眼、鹰领）相结合</strong></strong></p><p><strong>2）<strong>预测模型研究：ARIMA模型、ceemdan+lstm模型</strong></strong></p><p><strong>3）<strong>上线效果测试</strong></strong></p><p><strong>4）<strong>下一步计划</strong></strong></p><h2 id="1-">1. 问题与系统结合</h2><p>        社交网络中事件的传播热度影响因素众多，很难预测其最终的传播热度。然而，通过分析研究者发现社交网络事件的历史热度和未来热度存在很强的相关性。</p><p>         一段时间内事件的热度：对于鹰眼系统，热度为该段时间内各个媒体关于该事件的网页的总数，如图1.1；对于鹰击系统，热度为该段时间内关于该事件的博文的原创、转发和评论数的总数，如图1.2.</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-3.png" class="kg-image"><figcaption>图1.1 鹰眼系统 事件热度趋势数据</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-4.png" class="kg-image"><figcaption>图1.2</figcaption></figure>]]></description><link>http://blog.idea2du.com/yu-qing-shi-jian-fa-zhan-qu-shi-yu-ce/</link><guid isPermaLink="false">5ddb794207ebdd000122e161</guid><category><![CDATA[舆情分析]]></category><dc:creator><![CDATA[gengxueqin]]></dc:creator><pubDate>Mon, 25 Nov 2019 07:04:09 GMT</pubDate><content:encoded><![CDATA[<p>          事情发展趋势预测，简单来讲，就是对正在发生的事件，根据它现已产生的数据（即历史数据）来预测它接下来可能会产生的数据（即未来发展趋势）。在互联网科技高速发展的今天，社交网络上的热门话题可在短时间内大范围扩散，甚至形成重大的舆情事件，需政府部门或相关责任人及时应对解决。因此尽早预测社交网络舆情事件的发展趋势具有很重要的现实意义。</p><p>我们对此研究的主要内容包括：</p><p><strong>1）<strong>与应用系统（鹰击、鹰眼、鹰领）相结合</strong></strong></p><p><strong>2）<strong>预测模型研究：ARIMA模型、ceemdan+lstm模型</strong></strong></p><p><strong>3）<strong>上线效果测试</strong></strong></p><p><strong>4）<strong>下一步计划</strong></strong></p><h2 id="1-">1. 问题与系统结合</h2><p>        社交网络中事件的传播热度影响因素众多，很难预测其最终的传播热度。然而，通过分析研究者发现社交网络事件的历史热度和未来热度存在很强的相关性。</p><p>         一段时间内事件的热度：对于鹰眼系统，热度为该段时间内各个媒体关于该事件的网页的总数，如图1.1；对于鹰击系统，热度为该段时间内关于该事件的博文的原创、转发和评论数的总数，如图1.2.</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-3.png" class="kg-image"><figcaption>图1.1 鹰眼系统 事件热度趋势数据</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-4.png" class="kg-image"><figcaption>图1.2 鹰击系统 事件热度趋势数据</figcaption></figure><!--kg-card-end: image--><h2 id="2-">2.预测模型研究</h2><h3 id="2-1-">2.1前期准备工作</h3><p><strong><strong>1.系统需求：</strong></strong></p><p>输入：某事件的若干历史时间点的热度</p><p>输出：未来若干时间点的热度</p><p>其中，历史时间点：预测时间点 = 80% ：20%</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-5.png" class="kg-image"><figcaption>图2.1系统发展趋势图</figcaption></figure><!--kg-card-end: image--><h3 id="2-2-arima-">2.2 ARIMA模型</h3><p>        舆情事件发展趋势实际就是一个时间序列趋势。对于时间序列的研究，一般情况下，拿到一个观察值序列之后，首先要对它的平稳性和纯随机性进行检验。根据检验的结果可以将序列分为不同的类型，对不同类型的序列我们会采用不同的分析方法。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-6.png" class="kg-image"><figcaption>图2.2 时间序列分类</figcaption></figure><!--kg-card-end: image--><p><strong><strong>平稳序列</strong></strong>：基本上不存在趋势的序列，序列中的各观察值基本上在某个固定的水平上波动，在不同时间段波动程度不同，但不存在某种规律，随机波动。</p><p><strong><strong>非平稳序列</strong></strong>：是包含趋势、季节性或周期性的序列，只含有其中一种成分，也可能是几种成分的组合。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-7.png" class="kg-image"><figcaption>图2.3 时间序列图</figcaption></figure><!--kg-card-end: image--><p>通用的时间序列模型解析法，如下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-8.png" class="kg-image"></figure><!--kg-card-end: image--><p>        四种分析方法的共同特点：跳出成分分解的角度，从时间序列本身出发，力求得出前期数据与后期数据的量化关系，从而建立前期数据为自变量，后期数据为因变量的模型，达到预测的目的。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-9.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-10.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="arma-">ARMA 模型</h3><p>        ARMA(p,q) ：综合AR和MA的优势，自回归过程负责量化当前数据与前期数据之间的关系，移动平均过程负责解决随机变动项的求解问题。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-11.png" class="kg-image"></figure><!--kg-card-end: image--><p>         注意：AR/MA/ARMA模型适用于平稳时间序列的分析，当时间序列存在上升或下降趋势时，这些模型的分析效果就大打折扣，这时ARIAM模型也就应运而生。</p><h3 id="ariam-">ARIAM模型</h3><p>         ARIMA(p,d,q)：在ARMA(p,q)的基础上，增加了差分处理，将数据转为平稳序列。差分可将非平稳时间序列转化为平稳时间序列，故差分可多阶，直到序列平稳。使用当前数据减去前一期数据即为一阶差分，在一阶差分的基础上，使用当前数据减去前一期数据即为二阶差分，依次类推，即可得到多阶差分。</p><p>例如：(1,2,3,4,5,6,7,8)通过一阶差分转化为(1,1,1,1,1,1,1)，可消除序列趋势.</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-12.png" class="kg-image"><figcaption>图2.4一阶和二阶差分</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-13.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="2-2-1-arima-">2.2.1 ARIMA模型实验</h3><p>1.数据准备：取时间间隔相同的时间点对应的热度值，即图1.1和图1.2。</p><p>2.描绘事件发展趋势图：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-19.png" class="kg-image"><figcaption>图2.5发展趋势图</figcaption></figure><!--kg-card-end: image--><p>3.平稳化处理：如一阶差分</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-20.png" class="kg-image"><figcaption>图2.6序列平稳转换图</figcaption></figure><!--kg-card-end: image--><p>4. AIC/BIC/HQIC定价（参数p,q）</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-21.png" class="kg-image"></figure><!--kg-card-end: image--><p>        在建模过程中，会有一些备选解释变量，选择不同的变量组合会得到不同的模型，而信息准则就是刻画这些模型相对于“ 真实模型 ”的信息损失。</p><p>        常用的信息准则有：AIC、 BIC、HQIC 等，是衡量统计模型拟合优良性的一种标准，可以权衡所估计模型的复杂度和此模型拟合数据的优良性。</p><p>        在应用中，我们选择AIC值作为选择模型的标准来估算p,q值。其中，AIC越小，则模型对数据的拟合越好。</p><p>5.模型构建</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-22.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-23.png" class="kg-image"><figcaption>图2.7 ARIMA模型预测图</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-24.png" class="kg-image"><figcaption>图2.8 ARIMA模型预测图</figcaption></figure><!--kg-card-end: image--><h3 id="2-3-ceemdan_lstm">2.3 CEEMDAN_LSTM</h3><h3 id="2-3-1-ceemdan-">2.3.1 CEEMDAN原理</h3><p>          EMD具有良好的时频分析能力，对非线性、非平稳信号处理具备自适应性与正交性，然而它无法解决模态混叠的问题，针对这一问题，Huang等人提出添加高斯白噪声的总体经验模态分解（Ensemble Empirical Mode Decomposition，EEMD）它利用高斯白噪声具有频谱均分的统计特性，使信号在加入不同白噪声时呈现出不同尺度上的连续性。但它不具完备性并增加了计算量。为解决EEMD存在的问题，Torres等提出完备总体经验模态分解(Complete Ensemble Empirical Mode Decomposition, CEEMD)，它是在分解后每个尺度剩余分量添加特定高斯白噪声，通过求取唯一残差得出IMF。该方法降低了计算量并进一步消除模态混叠和虛假分量。近年来，CEEMDAN被提出，通过对EEMD分解后的各分量自适应地添加白噪声进行叠加和抵消，这样由于添噪产生的重构误差就会在分解迭代中消除。不但保证了分解精度，还大大减轻了模态混叠。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-25.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-26.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-27.png" class="kg-image"></figure><!--kg-card-end: image--><p>         通过上述步骤，大大降低了因添加白噪声后每阶层模态分解后的残差信号所产生误差，可见CEEMDAN分解结果更加精确。</p><p>         简单来说CEEMDAN可实现对信号的分解处理，对非线性、非平稳信号处理具备自适应性与正交性。它可以将时间序列数据按频域分解，将一个序列分解成多个平稳序列，剩余的构成一个单调的残差序列。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-28.png" class="kg-image"><figcaption>图2.9 ceemdan分解序列图</figcaption></figure><!--kg-card-end: image--><h3 id="2-3-2-ceemdan-lstm-">2.3.2 CEEMDAN-LSTM模型原理</h3><p>简单的可以使用一张图来表示，</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-29.png" class="kg-image"><figcaption>图2.10 CEEMDAN-LSTM模型结构</figcaption></figure><!--kg-card-end: image--><p>         即原始序列通过ceemdan处理成多个平稳序列和一个单调残差序列，各自送入lstm模型中训练，得到不同的lstm模型，然后加和即可。</p><p>只使用lstm和加入CEEMDAN的效果对比</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-30.png" class="kg-image"><figcaption>图2.11 模型对比图</figcaption></figure><!--kg-card-end: image--><h2 id="3-">3上线效果测试</h2><p>1.时间间隔设置</p><p>事件的热度是一个动态的过程，关于时间间隔的间隔，也应动态地随着变化。</p><p>2. 事件发生时间</p><p>（1）5分钟= &lt; time &lt;= 1天，时间间隔为5分钟, 数据量：[1,288]</p><p>（2）1天 &lt; time &lt; =7天，时间间隔为30分钟，数据量：[48,336]</p><p>（3）7天&lt; time &lt; =30天，时间间隔为1个小时，数据量：[168,720]</p><p>（4）time  &gt; 30天，时间间隔为1天,数据量：&gt;30</p><p>3.测试解决问题：</p><p>问题1:</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-31.png" class="kg-image"><figcaption>图3.1 数据比例分析图</figcaption></figure><!--kg-card-end: image--><p>从图可看出，在训练数据和预测数据的比例为4：1时，预测效果较好。</p><p><strong><strong>问题2</strong></strong>：预测值为直线的问题</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-32.png" class="kg-image"><figcaption>图3.2情感分析趋势图</figcaption></figure><!--kg-card-end: image--><p>原因在于：数据量少，参数p，q范围设置过小</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-33.png" class="kg-image"><figcaption>图3.3 参数调整图</figcaption></figure><!--kg-card-end: image--><p>经调整，可得：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-34.png" class="kg-image"><figcaption>图3.4系统趋势图</figcaption></figure><!--kg-card-end: image--><p>问题3：情感预测问题：负面情感总数为负值</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-35.png" class="kg-image"><figcaption>图3.5 情感分析图</figcaption></figure><!--kg-card-end: image--><p>解决方法：将负值设置为0。</p><p>问题4：每次刷新，预测曲线都会变化</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-36.png" class="kg-image"></figure><!--kg-card-end: image--><p>解决方法：设置固定种子</p><p><strong><strong>4.下一步计划</strong></strong></p><p>1.在对历史数据统计时，也将对事件热度等级进行划分</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-37.png" class="kg-image"><figcaption>图4.1事件等级特征图</figcaption></figure><!--kg-card-end: image--><p>2.量化外部因素：考虑博主影响力，用户习惯（如作息等）等等。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image-38.png" class="kg-image"><figcaption>图4.2博主影响力特征</figcaption></figure><!--kg-card-end: image--><h2 id="5-">5.总结</h2><p>         舆情事件趋势预测，我们主要使用常用模型ARIMA模型和深度模型LSTM进行研究，由于我们只使用单变量来考虑事件发展趋势，这太过于片面化，故后续将考虑多个相关性强的变量来继续研究事件发展趋势。</p>]]></content:encoded></item><item><title><![CDATA[第三章 注意力机制(Attention)]]></title><description><![CDATA[<p>         注意力机制最早是在视觉图像领域提出，但真正得到广大关注是从Google mind团队发表的论文开始，使用attention机制在RNN模型上来进行图像分类。随后，Bahdanau等人使用attention机制在机器翻译任务上将翻译和对齐同时进行，注意力机制开始应用到自然语言处理领域。</p><h2 id="0-">0 注意力机制的主要学习内容</h2><p>1）注意力机制的基本理论</p><p>2）注意力机制的运用</p><h2 id="1-">1 基本理论</h2><p>         注意力机制模型的构建是受到人类视觉的启发，当在看一样物体时，其实并不是一次性就把该物体的各个方面都看到，大多是根据自身需求，对该物体各个位置的注意力分布是不一样的。在CNN和RNN中，提取出的特征都是赋予相同的权重，因此重要特征没有得到重视，而Attention这种思想可以对特征进行加权处理，加强重要特征对分类的作用，具体结构如下图1所示。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image.png" class="kg-image"><figcaption>图1 attention机制结构</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-1.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-2.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="2-">2 注意力机制的总结与应用</h2><p>         Attention的出现就是为了两个目的：1. 减小处理高维输入数据的计算负担，通过结构化的选取输入的子集，降低数据维度。2. “去伪存真”，让任务处理系统更专注于找到输入数据中显著的与当前输出相关的有用信息，从而提高输出的质量。Attention模型的最终目的是帮助类似编解码器这样的框架，更好的学到多种内容模态之间的相互关系，从而更好的表示这些信息，克服其无法解释从而很难设计的缺陷。</p><p>Attention常用于</p><p>       1）计算机视觉</p><p>       2）自然语言处理（文本分类、文本生成等）</p>]]></description><link>http://blog.idea2du.com/di-san-zhang-zhu-yi-li-ji-zhi-attention/</link><guid isPermaLink="false">5dc4db5907ebdd000122e138</guid><category><![CDATA[深度学习]]></category><dc:creator><![CDATA[yuting]]></dc:creator><pubDate>Fri, 08 Nov 2019 03:09:13 GMT</pubDate><content:encoded><![CDATA[<p>         注意力机制最早是在视觉图像领域提出，但真正得到广大关注是从Google mind团队发表的论文开始，使用attention机制在RNN模型上来进行图像分类。随后，Bahdanau等人使用attention机制在机器翻译任务上将翻译和对齐同时进行，注意力机制开始应用到自然语言处理领域。</p><h2 id="0-">0 注意力机制的主要学习内容</h2><p>1）注意力机制的基本理论</p><p>2）注意力机制的运用</p><h2 id="1-">1 基本理论</h2><p>         注意力机制模型的构建是受到人类视觉的启发，当在看一样物体时，其实并不是一次性就把该物体的各个方面都看到，大多是根据自身需求，对该物体各个位置的注意力分布是不一样的。在CNN和RNN中，提取出的特征都是赋予相同的权重，因此重要特征没有得到重视，而Attention这种思想可以对特征进行加权处理，加强重要特征对分类的作用，具体结构如下图1所示。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/11/image.png" class="kg-image"><figcaption>图1 attention机制结构</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-1.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/11/image-2.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="2-">2 注意力机制的总结与应用</h2><p>         Attention的出现就是为了两个目的：1. 减小处理高维输入数据的计算负担，通过结构化的选取输入的子集，降低数据维度。2. “去伪存真”，让任务处理系统更专注于找到输入数据中显著的与当前输出相关的有用信息，从而提高输出的质量。Attention模型的最终目的是帮助类似编解码器这样的框架，更好的学到多种内容模态之间的相互关系，从而更好的表示这些信息，克服其无法解释从而很难设计的缺陷。</p><p>Attention常用于</p><p>       1）计算机视觉</p><p>       2）自然语言处理（文本分类、文本生成等）</p><p>       3）语音识别</p><h2 id="-">参考文献</h2><p>[1] <a href="https://mp.weixin.qq.com/s?spm=a2c4e.10696291.0.0.225919a4ecmq3J&amp;__biz=MzIwMTc4ODE0Mw==&amp;mid=2247486960&amp;idx=1&amp;sn=1b4b9d7ec7a9f40fa8a9df6b6f53bbfb&amp;chksm=96e9d270a19e5b668875392da1d1aaa28ffd0af17d44f7ee81c2754c78cc35edf2e35be2c6a1&amp;scene=21#wechat_redirect"><u>https://mp.weixin.qq.com/s?spm=a2c4e.10696291.0.0.225919a4ecmq3J&amp;__biz=MzIwMTc4ODE0Mw==&amp;mid=2247486960&amp;idx=1&amp;sn=1b4b9d7ec7a9f40fa8a9df6b6f53bbfb&amp;chksm=96e9d270a19e5b668875392da1d1aaa28ffd0af17d44f7ee81c2754c78cc35edf2e35be2c6a1&amp;scene=21#wechat_redirect</u></a></p><p>[2] <a href="https://blog.csdn.net/zzc15806/article/details/80766229"><u>https://blog.csdn.net/zzc15806/article/details/80766229</u></a></p><p>[3] <a href="https://www.jianshu.com/p/4868162a679b"><u>https://www.jianshu.com/p/4868162a679b</u></a></p><p><u>[4] </u><a href="https://blog.csdn.net/u010960155/article/details/82853632"><u>https://blog.csdn.net/u010960155/article/details/82853632</u></a></p>]]></content:encoded></item><item><title><![CDATA[第二章 循环神经网络]]></title><description><![CDATA[<p>        循环神经网络（RNN）是一种特殊的网络结构，特殊在于同一隐藏层的节点之间是有连接的。还有个最大的特点是在于将时间序列思想引入到神经网络构建中，通过时间关系不断加强数据间的影响关系。结合过去的经验记忆和现正在学习的知识，融合贯通得到现在的认知。也就是说RNN模型不仅考虑到当前的输入，还赋予网络对过去的记忆，并且隐藏层的输入不仅包括当前时刻的输入，还需要加入上一时刻隐藏层的输出。</p><h2 id="0-">0 循环神经网络的主要学习内容</h2><p>1）循环神经网络的基本结构</p><p>2）循环神经网络的改进结构</p><p>3）循环神经网络的应用</p><h2 id="1-">1循环神经网络的基本结构</h2><p>         RNN可有多个隐藏层，隐藏层可不断的循环和递归信息。例如，在双层循环神经网络中，数据进入第一隐藏层得到的输出以一定的权重进入第二隐藏层，然后最后一层的输出反过来通过损失函数，反向调整各层的连接权重，利用梯度下降方法寻找最优化参数。</p><p>        RNN网络结构大致是由输入层、隐藏层、输出层构成。如图1.1所示：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-13.png" class="kg-image"><figcaption>图1.1 RNN网络结构</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-14.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-15.png" class="kg-image"></figure><!--kg-card-end: image--><p>        虽然RNN可以处理序列信息，但比较偏向最后输入的信息，这使得较早留下的信息越来越少，甚至丢失。同时在网络训练过程中，梯度也会随着时序(链式法则求导)逐渐消失，也就是我们常说的梯度消失或爆炸。</p><p><strong>对于这一问题，目前主要采用的解决方案有：</strong></p><p>1)避免使用极大或极小值来初始化权重。</p>]]></description><link>http://blog.idea2du.com/untitled/</link><guid isPermaLink="false">5daebb0a07ebdd000122e0aa</guid><category><![CDATA[深度学习]]></category><dc:creator><![CDATA[yuting]]></dc:creator><pubDate>Tue, 22 Oct 2019 08:58:51 GMT</pubDate><content:encoded><![CDATA[<p>        循环神经网络（RNN）是一种特殊的网络结构，特殊在于同一隐藏层的节点之间是有连接的。还有个最大的特点是在于将时间序列思想引入到神经网络构建中，通过时间关系不断加强数据间的影响关系。结合过去的经验记忆和现正在学习的知识，融合贯通得到现在的认知。也就是说RNN模型不仅考虑到当前的输入，还赋予网络对过去的记忆，并且隐藏层的输入不仅包括当前时刻的输入，还需要加入上一时刻隐藏层的输出。</p><h2 id="0-">0 循环神经网络的主要学习内容</h2><p>1）循环神经网络的基本结构</p><p>2）循环神经网络的改进结构</p><p>3）循环神经网络的应用</p><h2 id="1-">1循环神经网络的基本结构</h2><p>         RNN可有多个隐藏层，隐藏层可不断的循环和递归信息。例如，在双层循环神经网络中，数据进入第一隐藏层得到的输出以一定的权重进入第二隐藏层，然后最后一层的输出反过来通过损失函数，反向调整各层的连接权重，利用梯度下降方法寻找最优化参数。</p><p>        RNN网络结构大致是由输入层、隐藏层、输出层构成。如图1.1所示：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-13.png" class="kg-image"><figcaption>图1.1 RNN网络结构</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-14.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-15.png" class="kg-image"></figure><!--kg-card-end: image--><p>        虽然RNN可以处理序列信息，但比较偏向最后输入的信息，这使得较早留下的信息越来越少，甚至丢失。同时在网络训练过程中，梯度也会随着时序(链式法则求导)逐渐消失，也就是我们常说的梯度消失或爆炸。</p><p><strong>对于这一问题，目前主要采用的解决方案有：</strong></p><p>1)避免使用极大或极小值来初始化权重。</p><p>2)改进RNN结构，使得它能够很好的处理长时间的记忆问题，如今对此处理效果好的结构有LSTM(长短期记忆网络)和GRU(门控循环单元)。</p><h3 id="1-1-lstm-">1.1 LSTM网络结构</h3><p>          LSTM是RNN的改进。在传统的RNN结构中，隐藏层每个神经元(也称记忆细胞)只包含一个简单激活函数，而LSTM在细胞中构建了四层网络结构，5个激活函数。如图1.2所示，它克服了原始RNN的不足，可通过门控机制回忆过去，并且有选择性的忘记一些不重要的信息来解决学习长期依赖关系。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-16.png" class="kg-image"><figcaption>图1.2 LSTM网络结构</figcaption></figure><!--kg-card-end: image--><p>         LSTM主要是通过遗忘门、输入门、输出门和细胞状态来控制信息的传递。遗忘门可以理解为一种选择性忘记策略，它控制了上一时刻有多少信息流入当前时刻。输入门决定了当前的输入有多少进入细胞单元，输出门控制当前细胞单元流向下一时刻的内容有多少。细胞状态类似一个传送带，在整个链上运行，存在一些线性关系，信息容易流传。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-17.png" class="kg-image"><figcaption>图1.3 LSTM cell部分结构图</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-18.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-19.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-20.png" class="kg-image"><figcaption>图1.4 LSTM cell部分结构图</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-21.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-22.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="1-2-gru-">1.2 GRU网络结构</h3><p>           LSTM内部结构比较复杂，因此就衍生了简化版GRU。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-23.png" class="kg-image"><figcaption>图1.5 GRU网络结构</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-24.png" class="kg-image"></figure><!--kg-card-end: image--><p>          GRU可看成是LSTM的改进，将遗忘门和输入门合并成为一个单一的更新门，同时合并了LSTM中原有的细胞更新状态和输出状态，结构比LSTM更简单，运行速度要更快。在实际运用方面，效果能够与LSTM媲美，甚至更好。</p><h3 id="1-3-bi-lstm-">1.3 Bi-LSTM网络结构</h3><p>         Bi-LSTM又称双向长短期记忆网络，是结合正反两个方向的LSTM网络。LSTM擅长处理连续数据，若是单向的LSTM，就只能学习一个方向的规律，而Bi-LSTM不仅可以学习它的正向规律，还可以学习反向规律<sup>[50]</sup>。文本、语句等包含博大精深的信息，正向理解与反向理解也许是不同的句意，故使用正反两向相结合的LSTM网络会比单向LSTM网络有更高的拟合度。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-25.png" class="kg-image"><figcaption>图1.6 Bi-LSTM网络结构</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-26.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="2-rnn-">2 RNN参数更新</h2><p>         RNN模型有比较多的变种，这里介绍最主流的RNN模型结构如下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-27.png" class="kg-image"><figcaption>图1.7 最主流的RNN模型结构</figcaption></figure><!--kg-card-end: image--><p>         上图中左边是RNN模型没有按时间展开的图，如果按时间序列展开，则是上图中的右边部分。我们重点观察右边部分的图。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-28.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="2-1-">2.1 前向传播算法</h3><p>      有了上面的模型，RNN的前向传播算法就很容易得到了。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-29.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="2-2-">2.2 反向传播算法</h3><p>         有了RNN前向传播算法的基础，就容易推导出RNN反向传播算法的流程了。RNN反向传播算法的思路和DNN是一样的，即通过梯度下降法一轮轮的迭代，得到合适的RNN模型参数U,W,V,b,c。由于我们是基于时间反向传播，所以RNN的反向传播有时也叫做BPTT。当然这里的BPTT和DNN也有很大的不同点，即这里所有的U,W,V,b,c在序列的各个位置是共享的，反向传播时我们更新的是相同的参数。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-30.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-31.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-32.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="3-">3 循环神经网络的优缺点</h2><p>        单纯的循环神经网络具有梯度消失或爆炸问题，当序列很长的时候问题尤其严重，故一般不能直接用于应用领域。LSTM和GRU是RNN的改进版，能够较大的改善梯度消失等问题，能够很好地训练序列数据。但由于序列数据是逐步加入，不能并行运算，故训练速度相比CNN要慢很多，要求运行环境的配置较高。</p><h2 id="4-">4 循环神经网络的应用</h2><p>       注意这里所说的循环神经网络是长短期记忆网络LSTM和门控单元网络GRU，它们常用于：</p><p>1）文本分类</p><p>2）语言识别</p><p>3）时间序列</p><p>4）文本生成</p><h2 id="-">参考文献</h2><p>[1] <a href="https://www.cnblogs.com/pinard/p/6509630.html"><u>https://www.cnblogs.com/pinard/p/6509630.html</u></a></p><p>[2] <a href="https://blog.csdn.net/qq_23348071/article/details/89073519"><u>https://blog.csdn.net/qq_23348071/article/details/89073519</u></a></p><p>[3] <a href="https://www.cnblogs.com/arachis/p/RNN.html"><u>https://www.cnblogs.com/arachis/p/RNN.html</u></a></p><p>[4] <a href="https://www.cnblogs.com/pinard/p/6519110.html"><u>https://www.cnblogs.com/pinard/p/6519110.html</u></a></p><p>[5] <a href="https://www.jianshu.com/p/87aa03352eb9"><u>https://www.jianshu.com/p/87aa03352eb9</u></a></p><p>注：部分文字、图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p>]]></content:encoded></item><item><title><![CDATA[第一章 卷积神经网络]]></title><description><![CDATA[<p>        卷积神经网络是源于人工神经网络的深度学习方法，在深度学习中是极具代表性的网络结构。CNN相较于传统的算法避免了繁琐的前期处理(人工提取训练样本特征等)，可以直接作用于原始的训练样本上(如图片、语音、文本等)。</p><h2 id="0-">0 卷积神经网络的主要学习内容</h2><p>1）卷积神经网络的基本结构</p><p>2）卷积神经网络的特点</p><p>3）卷积神经网络参数更新</p><p>4）卷积神经网络的应用</p><h2 id="1-">1 卷积神经网络的基本结构</h2><p>        卷积神经网络的基本结构包含输入层、卷积层、池化层、全连接层和输出层。卷积层和池化层都能实现将特征映射降维，即特征提取。为了提取较多的特征，我们将会自行设置卷积层中卷积核的个数，因此，特征映射的数量往往会比较多。卷积得到的特征进入池化降维，然后展开并排列成为一个向量，这就是自动提取的特征向量，再进入分类器。分类器通常由一个全连接前馈神经网络构成，特征向量作为该分类器的输入，输出为分类器以最大概率判定该特征样本的类别。</p><p>卷积神经网络的结构，如图3.1所示：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image.png" class="kg-image"><figcaption>图1 卷积神经网络结构</figcaption></figure><!--kg-card-end: image--><p><strong>1）输入层</strong></p><p>        该层是将输入的图片、文本或者语音等进行预处理，转化为计算机能够理解的数值型数据。例如，当输入数据为文本类型时，输入层的工作应该会包括分词、</p>]]></description><link>http://blog.idea2du.com/di-yi-zhang-juan-ji-shen-jing-wang-luo/</link><guid isPermaLink="false">5da40e2607ebdd000122e01d</guid><category><![CDATA[深度学习]]></category><dc:creator><![CDATA[yuting]]></dc:creator><pubDate>Mon, 14 Oct 2019 06:17:36 GMT</pubDate><content:encoded><![CDATA[<p>        卷积神经网络是源于人工神经网络的深度学习方法，在深度学习中是极具代表性的网络结构。CNN相较于传统的算法避免了繁琐的前期处理(人工提取训练样本特征等)，可以直接作用于原始的训练样本上(如图片、语音、文本等)。</p><h2 id="0-">0 卷积神经网络的主要学习内容</h2><p>1）卷积神经网络的基本结构</p><p>2）卷积神经网络的特点</p><p>3）卷积神经网络参数更新</p><p>4）卷积神经网络的应用</p><h2 id="1-">1 卷积神经网络的基本结构</h2><p>        卷积神经网络的基本结构包含输入层、卷积层、池化层、全连接层和输出层。卷积层和池化层都能实现将特征映射降维，即特征提取。为了提取较多的特征，我们将会自行设置卷积层中卷积核的个数，因此，特征映射的数量往往会比较多。卷积得到的特征进入池化降维，然后展开并排列成为一个向量，这就是自动提取的特征向量，再进入分类器。分类器通常由一个全连接前馈神经网络构成，特征向量作为该分类器的输入，输出为分类器以最大概率判定该特征样本的类别。</p><p>卷积神经网络的结构，如图3.1所示：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image.png" class="kg-image"><figcaption>图1 卷积神经网络结构</figcaption></figure><!--kg-card-end: image--><p><strong>1）输入层</strong></p><p>        该层是将输入的图片、文本或者语音等进行预处理，转化为计算机能够理解的数值型数据。例如，当输入数据为文本类型时，输入层的工作应该会包括分词、去停用词、文本表示等。</p><p><strong>2）卷积层</strong></p><p>       卷积层是由多个卷积过程组成，而同一个卷积过程是通过同一个卷积核在输入数据矩阵上按照步长移动，两者对应数值相乘再求和，得到一个降维新矩阵，当步长为1时，这个新矩阵的维度=输入矩阵维度-卷积核矩阵维度+1。降低噪声，使原始特征中某些特征增强。此外，多个卷积过程得到多个降维新矩阵，这也相当于增加了训练集，对模型进行数据增量训练，使模型更稳健。</p><p>         如图3.2，图中输入矩阵大小为5*5，卷积核大小为3*3，从左往右以步长为1的大小移动，从上往下也以同样的步长移动，然后与之对应所覆盖的输入矩阵相乘再求和。得到的降维新矩阵大小为3*3。图上所用到的输入矩阵为[1,1,1;0,1,1;0,0,1]，卷积核为[1,0,1;0,1,0;1,0,1]，第一个卷积，相乘求和为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-1.png" class="kg-image"></figure><!--kg-card-end: image--><p>以此类推，该卷积所得卷积特征层为：[4,3,4;2,4,3;2,3,4]</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-2.png" class="kg-image"><figcaption>图2 卷积过程</figcaption></figure><!--kg-card-end: image--><p>        若有多个卷积核，则每个卷积核都在输入矩阵上进行卷积，也就得到多个卷积特征矩阵。</p><p><strong><strong>3）激活层</strong></strong></p><p>        在进入池化层前，需要通过一个激活函数判断卷积后的特征输出是否到达阈值，是则保留特征，反之则去除，这也是一种特征选择的体现。同时加入非线性因素，使得模型更具有泛化能力。常用的激活函数有：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-3.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>4）池化层</strong></strong></p><p>        池化是作用于卷积激活所得的特征矩阵上，其主要作用是去除该特征矩阵中不重要的特征信息，进而减少网络参数的量，减少过拟合。池化过程也可看成一个特殊的卷积过程，常用的方法有最大池化和均值池化。如图，在步长为2的最大池化中，选取最大的特征值保留，其余就忽略掉。在步长为2的平均池化中，对每个池化窗口里的特征值进行平均，取平均值保留。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-4.png" class="kg-image"><figcaption>图3 最大池化过程</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-5.png" class="kg-image"><figcaption>图4 平均池化过程</figcaption></figure><!--kg-card-end: image--><p><strong><strong>5）扁平化</strong></strong></p><p>        扁平化又称拉直，是将池化后的特征结果压缩并拉直为一维向量，作为全连接层的输入。如图，以最大池化结果为例：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-6.png" class="kg-image"><figcaption>图5 扁平化</figcaption></figure><!--kg-card-end: image--><p><strong>6）全连接层</strong></p><p>        在进入全连接层之前，可设定一个Dropout值，将扁平化的一维特征向量随机去除一部分特征值，这是为防止训练模型的过拟合。即如图：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/10/image-7.png" class="kg-image"><figcaption>图6 dropout过程</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-8.png" class="kg-image"></figure><!--kg-card-end: image--><p>7）softmax层</p><p>        softmax层是用于分类的，它将全连接的输出映射在区间为(0,1)内，可看成概率来理解，概率大所对应的位置就是输入矩阵的类别。计算方法为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-9.png" class="kg-image"></figure><!--kg-card-end: image--><p>         以上就是卷积神经网络的前向过程，当然卷积层和池化层也可以有多个，如VGG16和VGG19，它们的卷积层和池化层都是多层，可以一层卷积层后紧接一层池化层，也可以多个卷积激活层后接多个池化层。结构越复杂，虽然在训练集上拟合效果较好，但运行速度会减慢。</p><h2 id="2-">2 卷积神经网络参数优化</h2><p>         卷积神经网络是一个有监督的学习网络结构，通过标签与网络输出值间所使用损失函数衡量的损失反馈回去进行参数更新。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-10.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="2-1-">2.1梯度下降</h3><p>        大数据的时代，需要训练的样本非常大，传统的参数优化计算速度跟不上，且难以找到最优解，故在深度学习中常用的是梯度下降法。</p><p>         为评估模型拟合效果，通常先使用损失函数来度量拟合程度，损失函数越小，就意味着拟合程度就越好，对应的模型参数也就是最优参数。通过最小化损失函数对各参数求导更新参数，可一步一步迭代求最优解，得到最小损失函数和其对应的模型参数值。梯度下降法根据采用不同样本量的方法可分为：全量梯度下降法、随机梯度下降法、小批量梯度下降法。</p><h3 id="2-1-1-">2.1.1 全量梯度下降方法</h3><p>        每次都需要使用整个训练集进行学习，其优点在于每次更新都会朝着全局最优的方向前进。最后能够保证，若是凸函数，则收敛于全局最优点，若是非凸函数，则可能会收敛于局部最优点。全量梯度下降的缺点在于每次学习时间太长，如果训练集很大，就会需要消耗大量的内存，影响运行速度，并且不能进行在线模型参数更新。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-11.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/10/image-12.png" class="kg-image"></figure><!--kg-card-end: image--><p>         这三种梯度下降法，各有千秋，从训练速度来说，随机梯度下降最快，小批量梯度下降次之，全量梯度下降最慢。原因在于：全量梯度下降采用全部训练样本，训练速度慢，但可以收敛到全局最优解。随机梯度下降法每次只随机采用一个样本来进行迭代，虽然训练速度很快，但由于仅仅用一个样本决定梯度方向，导致解很有可能不是全局最优解，而是局部最优解，并且随机性过强，不能很快收敛。小批量梯度下降综合前两者的优点，速度比全量梯度下降快，收敛速度也比随机梯度下降快，不容易陷入局部最优。</p><h2 id="3-">3 卷积神经网络的特点</h2><p>卷积神经网络的总结，主要有以下几个特点：</p><p>a)局部感知。利用神经网络的分层结构与局部连接的特点，赋予一组相同的网络权重，作用于上层网络不同位置的输入，映射得到一个维度较低点的神经网络结构。这一结构降低了网络参数量，同时对局部空间输入产生了很强的响应，可将这些局部特征堆叠起来，更能反映其输入值的本质特征和局部特征。</p><p>b)权值共享。卷积核的大小远小于输入矩阵的大小，它在同一输入结构中以相同步长反复移动使用的，使得输入特征具有相同的权重和偏置，形成对应的特征映射。这样的设置大大减少了学习参数的数量，提高学习效率，有很好的泛化能力。</p><h2 id="3--1">3.卷积神经网络的优缺点</h2><p><strong><strong>3.1优点</strong></strong></p><p>1.共享卷积核，对高维数据处理无压力；</p><p>2.无需手动选取特征，训练好权重，即得特征；</p><p>3.分类效果好</p><p><strong><strong>3.2缺点</strong></strong></p><p>1、需要调参，需要大量样本量，训练最好要GPU；</p><p>2、物理含义不明确</p><h2 id="4-">4.卷积神经网络的应用</h2><p>1）自然语言处理</p><p>2）计算机视觉</p><p>3）语音识别</p><h2 id="-">参考文献</h2><p>[1] <a href="https://www.cnblogs.com/xingkongyihao/p/9489635.html"><u>https://www.cnblogs.com/xingkongyihao/p/9489635.html</u></a></p><p>[2] <a href="https://blog.csdn.net/chansonzhang/article/details/84674179"><u>https://blog.csdn.net/chansonzhang/article/details/84674179</u></a></p><p>[3] <a href="https://blog.csdn.net/yunpiao123456/article/details/52437794"><u>https://blog.csdn.net/yunpiao123456/article/details/52437794</u></a></p><p>[4] <a href="https://blog.csdn.net/jiaoyangwm/article/details/80011656"><u>https://blog.csdn.net/jiaoyangwm/article/details/80011656</u></a></p><p>    注：部分文字、图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p>]]></content:encoded></item><item><title><![CDATA[十六 关联规则]]></title><description><![CDATA[<p>          关联规则是一种基于规则的机器学习算法，利用一些度量指标来分辨数据中存在的强规则，也就是说，关联规则挖掘是用于知识发现而非预测，所以是属于无监督学习。</p><h2 id="0-">0 关联规则的主要学习内容</h2><p>1）关联规则的基本思想</p><p>2）关联规则的度量指标</p><p>3）关联规则的应用场景</p><h2 id="1-">1关联规则定义</h2><p>         “啤酒与尿布”的例子相信很多人都听说过吧，故事是这样的：在一家超市中，人们发现了一个特别有趣的现象，尿布与啤酒这两种风马牛不相及的东西居然摆在一起，但这一奇怪的举措居然使尿布和啤酒的销量大幅增加，为什么有这么奇怪现象呢？看了资料后发现是因为美国丈夫回家前买尿布时顺手买了自己喜欢的啤酒，所以发生了这么有趣的事情。</p><p>这就存在一种关联性，而我们今天就来分析数据集间的有趣的关联。下面我们根据表来解释关于关联分析中的一些定义:</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-98.png" class="kg-image"></figure><!--kg-card-end: image--><p>1. 事务：每一条交易称为一个事务，如表，有十个交易号，代表有10条交易，即十条事务。</p><p>2. 项：交易的每一个物品称为一个项，例如交易号T1中有bread,cream,milk,tea，四样物品，即有四个项。</p><p>3. 项集：包含零个或多个项的集合叫做项集，例如交易号T1中有bread,cream,milk,tea，</p>]]></description><link>http://blog.idea2du.com/shi-liu-guan-lian-gui-ze/</link><guid isPermaLink="false">5d8c562907ebdd000122dfae</guid><category><![CDATA[机器学习]]></category><dc:creator><![CDATA[yuting]]></dc:creator><pubDate>Thu, 26 Sep 2019 06:25:17 GMT</pubDate><content:encoded><![CDATA[<p>          关联规则是一种基于规则的机器学习算法，利用一些度量指标来分辨数据中存在的强规则，也就是说，关联规则挖掘是用于知识发现而非预测，所以是属于无监督学习。</p><h2 id="0-">0 关联规则的主要学习内容</h2><p>1）关联规则的基本思想</p><p>2）关联规则的度量指标</p><p>3）关联规则的应用场景</p><h2 id="1-">1关联规则定义</h2><p>         “啤酒与尿布”的例子相信很多人都听说过吧，故事是这样的：在一家超市中，人们发现了一个特别有趣的现象，尿布与啤酒这两种风马牛不相及的东西居然摆在一起，但这一奇怪的举措居然使尿布和啤酒的销量大幅增加，为什么有这么奇怪现象呢？看了资料后发现是因为美国丈夫回家前买尿布时顺手买了自己喜欢的啤酒，所以发生了这么有趣的事情。</p><p>这就存在一种关联性，而我们今天就来分析数据集间的有趣的关联。下面我们根据表来解释关于关联分析中的一些定义:</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-98.png" class="kg-image"></figure><!--kg-card-end: image--><p>1. 事务：每一条交易称为一个事务，如表，有十个交易号，代表有10条交易，即十条事务。</p><p>2. 项：交易的每一个物品称为一个项，例如交易号T1中有bread,cream,milk,tea，四样物品，即有四个项。</p><p>3. 项集：包含零个或多个项的集合叫做项集，例如交易号T1中有bread,cream,milk,tea，四样物品，即为一个项集</p><p>4. k-项集：包含k个项的项集叫做k-项集，例如交易号T1中有bread,cream,milk,tea四样物品，即加做4-项集</p><p>5. 支持度计数：一个项集出现在几个事务当中，它的支持度计数就是几。表1中，有十个事务，项集bread,cream,milk,tea出现了2次，即支持度计数为2.</p><p>6. 支持度：支持度计数除以总的事务数。表1中，有十个事务，项集bread,cream出现了4次，即支持度为4/10。</p><p>7. 频繁项集：支持度大于或等于某个阈值的项集就叫做频繁项集。例如，阈值设为30%时，因为项集bread,cream的支持度是40%，所以它就是频繁项集。</p><p>8. 前件和后件：对于规则bread到cream，bread叫做前件，cream叫做后件</p><p>9. 置信度：对于规则bread到cream，bread，cream的支持度计数除以bread的支持度计数，为这个规则的置信度</p><p>10. 强关联规则：大于或等于最小支持度阈值和最小置信度阈值的规则叫做强关联规则。</p><p>           关联分析的最终目标就是要找出强关联规则。下面我们主要介绍关联分析中的Apriori算法算法。</p><h2 id="2-apriori-">2 Apriori算法</h2><p>          在电子商务中常用一种数据挖掘方法就是用户交易数据集中寻找商品之间的关联规则。关联规则中常用的一种算法是Apriori算法。该算法主要包含两个步骤：首先找到数据集中所有的频繁项集，这些项集出现的频繁性要大于或等于最小支持度；然后根据频繁项集产生关联规则，这些规则必须满足最小支持度和最小置信度。</p><p><strong><strong>支持度</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-99.png" class="kg-image"></figure><!--kg-card-end: image--><p>         支持度揭示了A与B同时出现的概率。如果A与B同时出现的概率小，说明A与B的关系不大，如果A与B同时出现的非常频繁，则说明A与B总是相关的。</p><p><strong><strong>置信度</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-100.png" class="kg-image"></figure><!--kg-card-end: image--><p>        置信度揭示了A出现时，B是否也会出现或有多大概率出现。如果置信度为100%，则A和B可以捆绑销售，如果置信度太低，则说明A的出现与B是否出现关系不大。</p><h3 id="-">算法步骤：</h3><p>1. 找出出现频率最大的项L1。</p><p>2. 根据L1找频繁“2-项集”的集合C2。</p><p>3. 剪掉不满足支持度阈值的项，得到L2。</p><p>4. 根据L2找频繁“3-项集”的集合C3。</p><p>5. 根据性质和支持度阈值进行剪枝。</p><p>6. 循环上述过程，直到得到空集C，即直到不能发现更大的频集L。</p><p>7. 计算最大频集L的非空子集，两两计算置信度，得到大于置信度阈值的强关联规则。</p><h3 id="--1">举例说明：</h3><p>        假设给定电子网站的用户交易数据集，其中，定义最小支持度为3/10，即支持度计数为3，最小置信度为70%，现在要计算该数据集的关联规则，如下表1所示。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-101.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="-apriori-">步骤一：根据Apriori算法计算频繁项集</h3><p>1）计算频繁1项集，扫描交易数据集，统计每种商品出现次数，选取大于或等于最小支持度的商品，得到候选项集。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-103.png" class="kg-image"></figure><!--kg-card-end: image--><p>        由于我们定的支持度为3/10，即支持度计数至少为3，故cake和beer不满足支持度的阈值。则候选项集为bread，cream，milk，tea。</p><p>2）根据频繁1项集，计算频繁2项集，首先将频繁1项集和频繁1项集进行连接运算，得到2项集，如下所示</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/09/image-104.png" class="kg-image"><figcaption>图1 2项集</figcaption></figure><!--kg-card-end: image--><p>扫描用户交易数据集，计算包含每个候选2项集的记录数</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-105.png" class="kg-image"></figure><!--kg-card-end: image--><p>根据最小支持度，得到频繁2项集为</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-106.png" class="kg-image"></figure><!--kg-card-end: image--><p>3）根据频繁2项集，计算频繁3项集，首先将频繁2项集进行连接，得到{bread,cream,milk}，{bread,cream,tea}，{bread,milk,tea}，{cream,milk,tea}，然后根据频繁项集性质进行剪枝，即频繁项集的非空子集必须事频繁的。</p><p>（1）{bread,cream,milk}的2项子集{bread,cream}，{bread,milk}，{cream,milk}，都在频繁2项集中，则保留；</p><p>（2）{bread,cream,tea}的2项子集{bread,cream}，{bread,tea}，{cream,tea}，由于{cream,tea}不是频繁2项集，移除该候选集；</p><p>（3）{bread,milk,tea}的2项子集{bread,milk}，{bread,tea}，{milk,tea}，都在频繁2项集中，则保留；</p><p>（4）{cream,milk,tea}的2项子集{cream,milk}，{cream,tea}，{milk,tea}，由于{cream,tea}不是频繁2项集，移除该候选集；</p><p>通过该剪枝，得到候选集{bread,cream,milk}，{bread,milk,tea}，扫描交易数据库，计算包含候选3项集的记录数，得</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-107.png" class="kg-image"></figure><!--kg-card-end: image--><p>4）根据频繁3项集，计算频繁4项集，重复上述思路，得到{bread,cream,milk，tea},根据频繁项集定理，它的子集{bread,cream,tea}为非频繁项集，所以移除该候选集，从而频繁4项集为空，至此，计算频繁项集的步骤结束。</p><h2 id="--2">步骤二：根据频繁项集，计算关联规则。</h2><p>这里以频繁3项集{bread,cream,milk}为例，计算关联规则。</p><p>{bread,cream,milk}的非空子集为{bread}，{cream}，{milk}，{bread,cream}，{bread,milk}和{cream,milk}</p><p>规则1，{bread,cream}=&gt;{milk}，置信度为{bread,cream,milk}的支持度除以{bread,cream}的支持度，即4/4=1，置信度大于70%，则该规则为强关联规则。</p><p>同理，计算，</p><p>{bread,milk}=&gt;{cream}，置信度为4/5=80%，大于70%，则为强关联规则。</p><p>{cream,milk}=&gt;{bread}，置信度为4/4=1，为强关联规则</p><p>{milk}=&gt;{cream}，置信度为4/8=50%，小于70%，故删除该规则。</p><p>这样的计算还有几个，这里就不一一计算了。</p><h2 id="3-apriori-">3 Apriori算法总结</h2><p>Apriori算法的优点：简单，易理解，数据要求低，使用先验性质，大大提高了频繁项集逐层产生的效率。是一种无监督学习方法。</p><p>Apriori算法的缺点：1）在验证候选频繁k项集时需要对整个数据库进行扫描，非常耗时；2）在每一步产生候选项目集时循环产生的组合过多，没有排除不应该参与组合的元素；3）每次计算项集的支持度时，都对数据库中的全部记录进行了一遍扫描比较，需要很大的I/O负载，4）商品并不是全部平等销售的，仅使用支持度衡量，容易导致出现假性关联。</p><h2 id="4-apriori-">4 Apriori算法的应用场景</h2><p>1）优化货架商品摆放，或优化邮寄商品目录的内容</p><p>2）交叉销售和捆绑销售</p><p>3）推荐系统</p><h2 id="--3">参考文献</h2><p>[1] <a href="https://www.jianshu.com/p/469dff109fae"><u>https://www.jianshu.com/p/469dff109fae</u></a></p><p>[2] <a href="https://blog.csdn.net/cdknight_happy/article/details/83539457"><u>https://blog.csdn.net/cdknight_happy/article/details/83539457</u></a></p><p>[3] <a href="https://www.cnblogs.com/Allen-win/articles/7638557.html"><u>https://www.cnblogs.com/Allen-win/articles/7638557.html</u></a></p><p>[4] <a href="https://blog.csdn.net/guoguo_dreamfly/article/details/50707364"><u>https://blog.csdn.net/guoguo_dreamfly/article/details/50707364</u></a></p><p>[5] https://blog.csdn.net/wsp_1138886114/article/details/80921905</p><p>注：部分文字、图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p>]]></content:encoded></item><item><title><![CDATA[十五、主成分分析]]></title><description><![CDATA[<p>        主成分分析（PCA）是利用降维的思想，在损失很小信息的前提下，把多个指标转化为几个综合指标的多元统计方法。通常把转化生成的综合指标称为主成分，其中每个主成分都是原始变量的线性组合，且各个主成分之间互不相关，使得主成分比原始变量具有某些更优越的性能，也提高了分析的效率。</p><h2 id="0-">0主成分分析的主要学习内容</h2><p>1）主成分分析的基本思想</p><p>2）主成分分析的基本理论</p><p>3）主成分分析步骤</p><p>4）主成分分析的应用场景</p><h2 id="1-">1主成分分析的基本思想</h2><p>        在对某一事物进行实证研究时，为了更全面、准确地反映事物的特征及其发展规律，人们往往要考虑与其有关系的多个指标，这些指标在多元统计中也称为变量，这也就产生了下面这些问题：</p><p>（1）为了避免遗漏重要的信息而考虑尽可能多的指标；</p><p>（2）指标太多增加问题的复杂性，同时由于各指标均是对同一个事物的反映，不可避免地造成信息的大量重叠，这种信息的重叠有时甚至会抹杀事物的真正特征与内在规律。</p><p>        基于上述问题，人们就希望在定量研究中涉及的变量较少，而得到的信息量又较多。由于研究某个问题涉及的众多变量之间有一定的相关性，就必然存在着起支配作用的共同因素，根据这一点，通过对原始变量相关矩阵或协方差矩阵内部结构关系的研究，利用原始变量的线性组合形成几个综合指标（主成分）。</p><p><strong><strong>它们之间的关系如下：</strong></strong></p><p>1. 每一个主成分都是各原始变量的线性组合；</p><p>2. 主成分的数目大大少于原始变量的数目；</p><p>3. 主成分保留了原始变量的绝大多数信息；</p><p>4.</p>]]></description><link>http://blog.idea2du.com/shi-wu-zhu-cheng-fen-fen-xi/</link><guid isPermaLink="false">5d7f59ef07ebdd000122df69</guid><category><![CDATA[机器学习]]></category><dc:creator><![CDATA[yuting]]></dc:creator><pubDate>Mon, 16 Sep 2019 09:53:30 GMT</pubDate><content:encoded><![CDATA[<p>        主成分分析（PCA）是利用降维的思想，在损失很小信息的前提下，把多个指标转化为几个综合指标的多元统计方法。通常把转化生成的综合指标称为主成分，其中每个主成分都是原始变量的线性组合，且各个主成分之间互不相关，使得主成分比原始变量具有某些更优越的性能，也提高了分析的效率。</p><h2 id="0-">0主成分分析的主要学习内容</h2><p>1）主成分分析的基本思想</p><p>2）主成分分析的基本理论</p><p>3）主成分分析步骤</p><p>4）主成分分析的应用场景</p><h2 id="1-">1主成分分析的基本思想</h2><p>        在对某一事物进行实证研究时，为了更全面、准确地反映事物的特征及其发展规律，人们往往要考虑与其有关系的多个指标，这些指标在多元统计中也称为变量，这也就产生了下面这些问题：</p><p>（1）为了避免遗漏重要的信息而考虑尽可能多的指标；</p><p>（2）指标太多增加问题的复杂性，同时由于各指标均是对同一个事物的反映，不可避免地造成信息的大量重叠，这种信息的重叠有时甚至会抹杀事物的真正特征与内在规律。</p><p>        基于上述问题，人们就希望在定量研究中涉及的变量较少，而得到的信息量又较多。由于研究某个问题涉及的众多变量之间有一定的相关性，就必然存在着起支配作用的共同因素，根据这一点，通过对原始变量相关矩阵或协方差矩阵内部结构关系的研究，利用原始变量的线性组合形成几个综合指标（主成分）。</p><p><strong><strong>它们之间的关系如下：</strong></strong></p><p>1. 每一个主成分都是各原始变量的线性组合；</p><p>2. 主成分的数目大大少于原始变量的数目；</p><p>3. 主成分保留了原始变量的绝大多数信息；</p><p>4. 各主成分之间互不相关。</p><p>        在保留原始变量主要信息的前提下起到降维与简化问题的作用，使得在研究复杂问题时更加容易抓住主要信息。</p><p><strong><strong>2主成分分析的基本理论</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-87.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-88.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-89.png" class="kg-image"></figure><!--kg-card-end: image--><p>        协方差矩阵或相关矩阵正是对各变量离散程度与变量之间相关程度的信息的反映，而相关矩阵不过是将原始变量标准化后的协方差矩阵。我们所说的保留接近原始变量方差的总和。因此在实际求解主成分的时候，总是从原始变量的协方差矩阵或相关矩阵的结构分析入手。一般来说从原始变量的协方差矩阵出发求得的主成分与原始变量的相关矩阵出发求得的主成分是不同的。</p><h3 id="-">主成分分析步骤：</h3><p>1. 根据研究问题选取初始分析变量</p><p>2. 根据初始变量特性判断由协方差阵还是相关矩阵来求主成分</p><p>3. 求协方差阵或相关阵的特征值与相应标准特征向量</p><p>4. 判断是否存在明显的多重共线性，若存在，则返回第1步</p><p>5. 得到主成分的表达式并确定主成分个数，选取主成分</p><p>6. 结合主成分对研究问题进行分析并深入研究</p><h3 id="2-1-">2.1从协方差矩阵出发求解主成分</h3><p>下面我们举例来说明</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-90.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-91.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-92.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-93.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-94.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="2-2-">2.2从相关矩阵出发求解主成分</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-95.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-96.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-97.png" class="kg-image"></figure><!--kg-card-end: image--><p>      然后根据相关矩阵R求解特征值和特征向量，然后求解主成分与累积贡献率。与上一个例题求解步骤相同。</p><p><strong><strong>关于由协方差矩阵或相关矩阵出发求解主成分的选取问题</strong></strong></p><p>        一般而言，对于度量单位不同指标或取值范围彼此差异非常大的指标，不直接由其协方差矩阵出发进行主成分分析，而应该考虑将数据标准化。</p><p>        对于取值范围相差不大或度量相同的指标进行标准化处理后，其主成分分析的结果与由协方差出发求得的结果有较大区别。其原因是由于对数据进行标准化的过程实际上也就是抹杀原始变量离散程度差异的过程，标准化后的各变量方差相等，均为1，而实际上方差也是对数据信息的重要概括，也就是说，对原始数据进行标准化后抹杀了一部分重要信息，因此才使得标准化后变量在对主成分构成中的作用趋于相等。由此看来，对同度量或取值范围在同量级的数据，还是直接从协方差矩阵求解主成分为宜。</p><p>        在实际工作中，总体协方差阵和相关阵是未知的，需通过样本数据来估计，研究中，可从不同角度出发求解主成分并分析其结果的差别，看看是否发生明显差异且这种差异产生的原因在何处，以确定用哪种结果更为可信。</p><p><strong><strong>3主成分分析的总结</strong></strong></p><p><strong><strong>3.1主成分分析的优点</strong></strong></p><p>1）利用降维技术用少数综合变量来代替原始多个变量，综合了原始变量大量有用信息。</p><p>2）通过计算综合主成分函数得分，对客观经济现象进行科学评价，再次它在应用上侧重于信息贡献影响力综合评价。</p><p>3）主成分分析不要求数据来源于正态分布</p><p><strong><strong>3.2主成分分析的缺点</strong></strong></p><p>1）当主成分的因子负荷的符号有正有负时，综合评价函数意义就不明确。命名清晰性低。</p><p><strong><strong>4主成分分析的应用场景</strong></strong></p><p>1）在遥感影像数据中的应用</p><p>2）鸢尾花数据集</p><p>3）数据降维</p><p>4）淘宝顾客偏好分析</p><p><strong><strong>参考文献</strong></strong></p><p>1）<a href="https://my.oschina.net/u/3888421/blog/2249132">https://my.oschina.net/u/3888421/blog/2249132</a></p><p>2）<a href="https://www.doc88.com/p-998318379695.html">https://www.doc88.com/p-998318379695.html</a></p><p>3）<a href="https://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html">https://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.htm</a>l</p><p>4）http://blog.sina.com.cn/s/blog_67fcf49e0101g1lt.html</p><p>5）https://www.jianshu.com/p/b2260bba5e0e</p><p>注：部分文字、图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p>]]></content:encoded></item><item><title><![CDATA[十四、EM算法]]></title><description><![CDATA[<p>         EM算法是一种迭代算法，用于含有隐变量的概率模型参数的极大似然估计，或极大后验概率估计。EM算法的每次迭代由两步组成：E步，求期望；M步，求极大，所以这一算法称为期望极大算法，简称EM算法。</p><h2 id="0-em-">0 EM算法主要学习内容</h2><p>1) EM算法的作用</p><p>2) EM算法理论</p><p>3) EM算法应用</p><h2 id="1-em-">1 EM算法的作用</h2><p>         在概率模型中，若都是观察变量，也就是给定数据，可以直接用极大似然估计方法，或贝叶斯估计模型参数。但当模型含有隐变量呢？这些方法还适用吗？这时是不能简单地使用这些估计方法了，而EM算法就是我们今天要讲的解决含有隐变量的概率模型参数的极大似然估计法。</p><p>例子<sup>[1]</sup>:</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-72.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-73.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-74.png" class="kg-image"></figure><!--kg-card-end: image--><p>     这个问题不能直接求解，只能通过迭代的方法求解，而EM算法就是可以用于求解这个问题的一种迭代算法，下面针对以上问题给出EM算法<sup>[1]</sup>。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-75.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-76.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-77.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-78.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="2-em-1-">2 EM算法[1]</h2><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-79.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-80.png" class="kg-image"></figure><!--kg-card-end: image--><p>下面关于EM算法作几点说明：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-81.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="3-em-">3 EM算法的作用</h2><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-82.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-83.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-84.png" class="kg-image"></figure><!--kg-card-end: image--><p>       这等价于EM算法的一次迭代，即求Q函数及其极大化，EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-85.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/09/image-86.png" class="kg-image"><figcaption>图3.1 EM算法的解释图</figcaption></figure><!--kg-card-end: image--><h2 id="4-em-">4 EM算法的总结</h2>]]></description><link>http://blog.idea2du.com/shi-si-emsuan-fa/</link><guid isPermaLink="false">5d760d7907ebdd000122df26</guid><category><![CDATA[机器学习]]></category><dc:creator><![CDATA[yuting]]></dc:creator><pubDate>Mon, 09 Sep 2019 08:48:30 GMT</pubDate><content:encoded><![CDATA[<p>         EM算法是一种迭代算法，用于含有隐变量的概率模型参数的极大似然估计，或极大后验概率估计。EM算法的每次迭代由两步组成：E步，求期望；M步，求极大，所以这一算法称为期望极大算法，简称EM算法。</p><h2 id="0-em-">0 EM算法主要学习内容</h2><p>1) EM算法的作用</p><p>2) EM算法理论</p><p>3) EM算法应用</p><h2 id="1-em-">1 EM算法的作用</h2><p>         在概率模型中，若都是观察变量，也就是给定数据，可以直接用极大似然估计方法，或贝叶斯估计模型参数。但当模型含有隐变量呢？这些方法还适用吗？这时是不能简单地使用这些估计方法了，而EM算法就是我们今天要讲的解决含有隐变量的概率模型参数的极大似然估计法。</p><p>例子<sup>[1]</sup>:</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-72.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-73.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-74.png" class="kg-image"></figure><!--kg-card-end: image--><p>     这个问题不能直接求解，只能通过迭代的方法求解，而EM算法就是可以用于求解这个问题的一种迭代算法，下面针对以上问题给出EM算法<sup>[1]</sup>。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-75.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-76.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-77.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-78.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="2-em-1-">2 EM算法[1]</h2><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-79.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-80.png" class="kg-image"></figure><!--kg-card-end: image--><p>下面关于EM算法作几点说明：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-81.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="3-em-">3 EM算法的作用</h2><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-82.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-83.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-84.png" class="kg-image"></figure><!--kg-card-end: image--><p>       这等价于EM算法的一次迭代，即求Q函数及其极大化，EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-85.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/09/image-86.png" class="kg-image"><figcaption>图3.1 EM算法的解释图</figcaption></figure><!--kg-card-end: image--><h2 id="4-em-">4 EM算法的总结</h2><h3 id="4-1-em-">4.1 EM算法的优点</h3><p>        EM算法是自收敛的分类算法，既不需要事先设定类别也不需要数据间的两两比较合并等操作。比K-means算法计算结果稳定、准确。</p><h3 id="4-2-em-">4.2 EM算法的缺点</h3><p>1）对初始值敏感：EM算法需要初始化参数θ，而参数θ的选择直接影响收敛效率以及能否得到全局最优解。</p><p>2）当所要优化的函数不是凸函数时，EM算法容易给出局部最佳解，而不是全局最优解。EM算法比K-means算法计算复杂，收敛也较慢，不适于大规模数据集和高维数据。</p><h2 id="5-em-">5 EM算法的应用场景</h2><p>1）高斯混合模型</p><p>2）K-means算法</p><p>3）混合朴素贝叶斯算法</p><h2 id="-">参考文献</h2><p>[1] 李航，《统计学习方法》</p><p>[2] <a href="https://blog.csdn.net/zhihua_oba/article/details/73776553"><u>https://blog.csdn.net/zhihua_oba/article/details/73776553</u></a></p><p>[3] <a href="https://www.cnblogs.com/massquantity/p/9248482.html"><u>https://www.cnblogs.com/massquantity/p/9248482.html</u></a></p><p>[4] <a href="https://blog.csdn.net/weixin_42446330/article/details/84324851"><u>https://blog.csdn.net/weixin_42446330/article/details/84324851</u></a></p><p>[5] <a href="https://www.jianshu.com/p/6303a96dea88"><u>https://www.jianshu.com/p/6303a96dea88</u></a></p>]]></content:encoded></item><item><title><![CDATA[十三、K均值聚类]]></title><description><![CDATA[<p>         k均值聚类算法，是一种无监督算法，该算法的主要作用是将相似的样本自动归到一个类别中。所谓的无监督算法，就是输入样本没有对应的输出或标签，而聚类试图将数据集中的样本划分为若干个通常是不相交的子集，每个子集称为一个簇。k均值聚类简单易懂而且非常有效，但是确定合理的k值和k个初始类簇中心点对于聚类效果的好坏有很大的影响。</p><h2 id="0-k-">0 k均值聚类算法的主要学习内容</h2><p>1）基本原理</p><p>2）k的选择及初始质心</p><p>3）k均值的优缺点</p><h2 id="1-k-">1  k均值聚类的基本原理</h2><h3 id="1-1-k-">1.1  k均值聚类算法描述</h3><p><strong>        </strong>k均值聚类算法中的一种，其中k表示类别数，是一种通过均值对数据点进行聚类的算法。适用于大样本，但需要事先指定分为k个类。</p><p><strong>     <strong>原理：</strong></strong>从n个数据对象任意选择k个对象作为初始聚类中心，对剩余的其他对象，则根据它们与k个聚类中心的相似度（距离），分别将它们分配给与其最相似的（聚类中心所代表的）聚类；再计算每个所获的新的聚类中心（该聚类中所有对象的均值）；不断重复这一过程，知道标准测度函数开始收敛为止。</p><p><strong>         <strong>k均值聚类的特点</strong></strong>：各聚类本身尽可能的紧凑，而各聚类之间尽可能的分开。</p><h3 id="1-2-k-">1.2 k均值算法步骤</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-61.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="2-k-">2 k值和初始质心的选取</h2><h3 id="2-1-k-">2.1 k值的选取</h3>]]></description><link>http://blog.idea2du.com/shi-san-kjun-zhi-ju-lei/</link><guid isPermaLink="false">5d6ceb4407ebdd000122de98</guid><category><![CDATA[机器学习]]></category><dc:creator><![CDATA[yuting]]></dc:creator><pubDate>Tue, 03 Sep 2019 00:53:44 GMT</pubDate><content:encoded><![CDATA[<p>         k均值聚类算法，是一种无监督算法，该算法的主要作用是将相似的样本自动归到一个类别中。所谓的无监督算法，就是输入样本没有对应的输出或标签，而聚类试图将数据集中的样本划分为若干个通常是不相交的子集，每个子集称为一个簇。k均值聚类简单易懂而且非常有效，但是确定合理的k值和k个初始类簇中心点对于聚类效果的好坏有很大的影响。</p><h2 id="0-k-">0 k均值聚类算法的主要学习内容</h2><p>1）基本原理</p><p>2）k的选择及初始质心</p><p>3）k均值的优缺点</p><h2 id="1-k-">1  k均值聚类的基本原理</h2><h3 id="1-1-k-">1.1  k均值聚类算法描述</h3><p><strong>        </strong>k均值聚类算法中的一种，其中k表示类别数，是一种通过均值对数据点进行聚类的算法。适用于大样本，但需要事先指定分为k个类。</p><p><strong>     <strong>原理：</strong></strong>从n个数据对象任意选择k个对象作为初始聚类中心，对剩余的其他对象，则根据它们与k个聚类中心的相似度（距离），分别将它们分配给与其最相似的（聚类中心所代表的）聚类；再计算每个所获的新的聚类中心（该聚类中所有对象的均值）；不断重复这一过程，知道标准测度函数开始收敛为止。</p><p><strong>         <strong>k均值聚类的特点</strong></strong>：各聚类本身尽可能的紧凑，而各聚类之间尽可能的分开。</p><h3 id="1-2-k-">1.2 k均值算法步骤</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-61.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="2-k-">2 k值和初始质心的选取</h2><h3 id="2-1-k-">2.1 k值的选取</h3><p>         对于一个给定没有分类的数据集，最后具体应该分为多少类，这确实时一个让人头痛的问题。要使k均值最后分类结果最好，也就是要使k均值最小化，是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和，因此，我们可以设计k均值的代价函数为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-62.png" class="kg-image"></figure><!--kg-card-end: image--><p>        而k值在这里取到了重要作用。据统计发现k值的增加，其数据的代价损失是不断变小，如图，我们发现在k=3时，代价函数随着k值变化的幅度显著降低，在k&gt;3之后所带来的作用也没有特别明显，所以我们可以选择k=3作为我们的聚类数目。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/09/image-63.png" class="kg-image"><figcaption>图2.1.1 不同k值的代价函数图</figcaption></figure><!--kg-card-end: image--><p>        但实际应用中，k值的变换规律都不是和上图一样存在突变点，即拐点。那么这时，k值的选择主要还是根据经验以及利用k均值聚类的目的来决定。</p><h3 id="2-2-">2.2聚类中心的初始化</h3><p>        一般，在实际应用中，我们都是采取随机产生k个点作为初始的聚类中心，其原因是，简单快捷。</p><p>       但k个初始化的质心的位置选择对最后的聚类结果和运行时间都有很大的影响，因此需要选择合适的k个质心。如果仅仅是完全随机的选择，有可能导致算法收敛很慢。k-means++算法就是对k均值随机初始化质心方法的优化。</p><p>k-means++算法对于初始化质心的优化策略也很简单，如下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-64.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="k-">k均值聚类算法举例说明：</h3><p>以下是一组用户的年龄数据</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-65.png" class="kg-image"></figure><!--kg-card-end: image--><p>    我们将K值定义为2对用户进行聚类，并随机选择16和22作为两个类别的初始质心。</p><p><strong><strong>计算距离并划分数据</strong></strong></p><p>        我们以图的形式展示聚类的过程，在这组年龄数据中，我们选择16和22作为两个类别的初始质心，并通过计算所有用户的年龄值与初始质心的距离对用户进行第一次分类。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-66.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-67.png" class="kg-image"></figure><!--kg-card-end: image--><p>        通过计算每个用户年龄分别与两个初始质心的距离，这里我们以黑色实心圆点表示两者距离较大，如表2.2.3，第一个数据15，到初始初始质心点16的距离为1，到第二个初始质心22的距离为7，相比之下，15与16的距离更近，近的距离以空心圆点标记。因此15这个年龄被划分到质心点为16的一组中，如果年龄数据点到两个初始质心的距离相等时，可任意划分到这两组中，例如，数据19到16和22的距离都为3，在这里，我们将它划分到了22中。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-68.png" class="kg-image"></figure><!--kg-card-end: image--><p>        上表，我们按欧式距离最小，即相似程度最高对数据分为组后，分别计算分组中数据的均值，得分别为15.33和36.25，并以这两个均值作为新的质心。用新的质心代替原有的初始质心，迭代计算每个年龄数据点到新质心的距离，直到新的质心和上一次的质心相同为止。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-69.png" class="kg-image"></figure><!--kg-card-end: image--><p>        表2.2.4，以年龄数据点到新质心的距离值完成分组后，计算两组的均值，为18.56和45.9，年龄数据点22到18.56的距离为3.44，到45.9的距离为23.9。因此年龄数据点22分配到质心为18.56的分组中。</p><p>        这两个均值与上一次的质心结果不一样，故又用新得到的均值代替原来的质心。在新的质心下，计算数据点到新质心的距离，并对比数据点到两个新质心的距离，选择较小的距离值来确定数据点的分组。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-70.png" class="kg-image"></figure><!--kg-card-end: image--><p>       表2.2.5，计算出的新的均值为19.50和47.89，与原来的均值不同，故将新均值代替原有均值作为现在的质心。</p><p><strong><strong>算法停止条件</strong></strong></p><p>        开始计算的第一步，我们就说迭代计算每个数据到新质心的距离，直到新质心和原质心相同，算法就结束。使用上一步分组得到的均值19.5和47.89作为新质心，并计算年龄数据点到新质心的距离，以下计算结果。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-71.png" class="kg-image"></figure><!--kg-card-end: image--><p>       使用质心为19.50和47.89进行数据分组，并计算每组的均值作为新的质心，从表2.2.6可知，这里的均值和原质心相等，也就是说新质心与原质心相同，都是19.50和47.89。这时算法停止计算，年龄数据点被划分为两类，对应取值区间为15-28和35-65.这就是k均值聚类的一个全过程。</p><h2 id="3-k-">3 k均值聚类的总结</h2><h3 id="3-1-k-">3.1 k均值聚类的优点</h3><p>1）原理简单，容易实现</p><p>2）可解释性较强</p><p>3）聚类效果较优</p><h3 id="3-2-k-">3.2 k均值聚类的缺点：</h3><p>1）K值很难确定</p><p>2）对噪音和异常点敏感</p><p>3）需样本存在均值（限定数据种类）</p><p>4）采用迭代方法，得到的结果很有可能是局部最优</p><p>5）对于非凸数据集或类别规模差异太大的数据效果不好</p><h2 id="4-k-">4 k均值聚类的应用场景</h2><p>1）股票k线聚类</p><p>2）商业银行客户分类</p><p>3）葡萄酒分级</p><p>4）高新技术信用评级</p><h2 id="-">参考文献</h2><p>[1] <a href="https://www.cnblogs.com/zhzhang/p/5437778.html"><u>https://www.cnblogs.com/zhzhang/p/5437778.html</u></a></p><p>[2] <a href="https://blog.csdn.net/stayfoolish_fan/article/details/51888717"><u>https://blog.csdn.net/stayfoolish_fan/article/details/51888717</u></a></p><p>[3] <a href="https://blog.51cto.com/janwool/2058124"><u>https://blog.51cto.com/janwool/2058124</u></a></p><p>[4] <a href="https://blog.csdn.net/qq_42828404/article/details/81906809"><u>https://blog.csdn.net/qq_42828404/article/details/81906809</u></a></p><p>[5] <a href="https://blog.csdn.net/Dhane/article/details/86661208"><u>https://blog.csdn.net/Dhane/article/details/86661208</u></a></p><p>[6] <a href="https://www.cnblogs.com/bourneli/p/3645049.html"><u>https://www.cnblogs.com/bourneli/p/3645049.html</u></a></p><p> 注：部分文字、图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p><h2></h2>]]></content:encoded></item><item><title><![CDATA[十二、条件随机场]]></title><description><![CDATA[<p>        条件随机场（CRF）是给定一组输入随机变量条件下，另一组输出随机变量的条件概率分布概率，其特点是假设输出随机变量构成马尔可夫随机场。条件随机场可以用于不同的预测问题。在这里，我们研究的是线性链条件随机场在标注问题的应用。</p><h2 id="0-">0条件随机场的主要学习内容</h2><p>1）概率无向图模型</p><p>2）条件随机场的定义与形式</p><p>3）条件随机场的概率计算问题</p><p>4）条件随机场的学习算法</p><p>5）条件随机场的预测算法</p><h2 id="1-">1前期准备工作</h2><p>        首先，我们来看看<strong><strong>什么是随机场</strong></strong>。随机场是由若干个位置组成的整体，当给每一个位置中按照某种分布随机赋予一个值之后，其全体就叫做随机场。举例说明一下：假如我们有一句话，共十个词需要进行词性标注，这十个词每个词的词性我们可以在已知的词性集合（名词，动词，...）中去选择。当我们为每个词选好词性后，这就形成了一个随机场。</p><p>        马尔可夫随机场：简单的说，就是假设随机场中某个位置的赋值仅仅与和它相邻的位置的赋值有关，和与其不相邻的位置的赋值不相关。比如第三个词的词性除与自己本身的位置有关外，只与第二个词和第四个词的词性有关。下面我们从图论来详细介绍马尔可夫随机场。</p><p><strong><strong>1.1概率无向图模型</strong><sup><strong>[1]</strong></sup></strong></p><p>         概率无向图模型，又称为马尔可夫随机场<sup>[1]</sup>，是一个可以由无向图表示的联合概率分布。图是由结点及连接结点的边组成的集合，</p>]]></description><link>http://blog.idea2du.com/shi-er-tiao-jian-sui-ji-chang/</link><guid isPermaLink="false">5d6c773107ebdd000122dd93</guid><category><![CDATA[机器学习]]></category><dc:creator><![CDATA[yuting]]></dc:creator><pubDate>Mon, 02 Sep 2019 02:24:11 GMT</pubDate><content:encoded><![CDATA[<p>        条件随机场（CRF）是给定一组输入随机变量条件下，另一组输出随机变量的条件概率分布概率，其特点是假设输出随机变量构成马尔可夫随机场。条件随机场可以用于不同的预测问题。在这里，我们研究的是线性链条件随机场在标注问题的应用。</p><h2 id="0-">0条件随机场的主要学习内容</h2><p>1）概率无向图模型</p><p>2）条件随机场的定义与形式</p><p>3）条件随机场的概率计算问题</p><p>4）条件随机场的学习算法</p><p>5）条件随机场的预测算法</p><h2 id="1-">1前期准备工作</h2><p>        首先，我们来看看<strong><strong>什么是随机场</strong></strong>。随机场是由若干个位置组成的整体，当给每一个位置中按照某种分布随机赋予一个值之后，其全体就叫做随机场。举例说明一下：假如我们有一句话，共十个词需要进行词性标注，这十个词每个词的词性我们可以在已知的词性集合（名词，动词，...）中去选择。当我们为每个词选好词性后，这就形成了一个随机场。</p><p>        马尔可夫随机场：简单的说，就是假设随机场中某个位置的赋值仅仅与和它相邻的位置的赋值有关，和与其不相邻的位置的赋值不相关。比如第三个词的词性除与自己本身的位置有关外，只与第二个词和第四个词的词性有关。下面我们从图论来详细介绍马尔可夫随机场。</p><p><strong><strong>1.1概率无向图模型</strong><sup><strong>[1]</strong></sup></strong></p><p>         概率无向图模型，又称为马尔可夫随机场<sup>[1]</sup>，是一个可以由无向图表示的联合概率分布。图是由结点及连接结点的边组成的集合，结点和边分别记作v和e，结点和边的集合分别记作V和E，图记作G=(V,E)。无向图是指边没有方向的图。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-1.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/09/image-2.png" class="kg-image"><figcaption>图1.1.1 成对马尔可夫性</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-3.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/09/image-4.png" class="kg-image"><figcaption>图1.1.2 局部马尔可夫性</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-5.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/09/image-6.png" class="kg-image"><figcaption>图1.1.3全局马尔可夫性</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-7.png" class="kg-image"></figure><!--kg-card-end: image--><p>        我们希望将整体的联合概率写成若干子联合概率的乘积的形式，也就是将联合概率进行因子分解，这样便于模型的学习与计算。而概率无向图模型的最大特点就是易于因子分解。</p><p><strong><strong>1.2概率无向图模型的因子分解</strong><sup><strong>[1]</strong></sup></strong></p><p>        在讲概率无向图模型的因子分解之前，我们需要先知道无向图中的团与最大团是什么？  其实无向图G中任何两个结点均有边连接的结点子集称为团，若C是无向图G的一个团，并且不能加进任何一个G中的结点使其成为更大的团，则称此C为最大团。</p><p>举例说明：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/09/image-8.png" class="kg-image"><figcaption>图1.2.1 无向图的团和最大团</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-9.png" class="kg-image"></figure><!--kg-card-end: image--><p>        将概率无向图模型的联合概率分布表示为其最大团上的随机变量的函数的乘积形式的操作，称为概率无向图模型的因子分解<sup>[1]</sup>。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-10.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-11.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="2-">2条件随机场的定义与形式</h2><p><strong><strong>2.1条件随机场的定义</strong><sup><strong>[1]</strong></sup></strong></p><p>        条件随机场是给定随机变量X条件下，随机变量Y的马尔可夫随机场，这里主要介绍定义在线性链上的特殊的条件随机场，称为线性链条件随机场<sup>[1]</sup>。线性链条件随机场可以用于标注等问题。在条件概率模型P(y|x)中，Y是输出变量，表示标记序列，X是输出变量，表示需要标注的观测序列，也把标记序列称为状态序列（参见隐马尔可夫模型）。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-12.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-13.png" class="kg-image"></figure><!--kg-card-end: image--><p>      在定义中并没有要求X和Y具有相同的结构，现实中，一般假设X和Y有相同的图结构。在线性链中，如图：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/09/image-14.png" class="kg-image"><figcaption>图2.1.1 线性链条件随机场</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/09/image-15.png" class="kg-image"><figcaption>图2.1.2 X和Y有相同图结构的线性链条件随机场</figcaption></figure><!--kg-card-end: image--><p>从图中我们发现，在线性链条件随机场中，最大团是相邻两个结点的集合。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-16.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>2.2条件随机场的参数化形式</strong><sup><strong>[1]</strong></sup></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-17.png" class="kg-image"></figure><!--kg-card-end: image--><p>线性链条件随机场也是对数线性模型。</p><p><strong><strong>举例说明</strong><sup><strong>[1]</strong></sup></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-18.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-19.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-20.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>2.3 条件随机场的简化形式</strong><sup><strong>[1] </strong></sup><strong>   </strong></strong></p><p>条件随机场还可以由简化形式表示，注意到条件随机场的参数式表示中同一特征在各个位置都有定义，可以对同一个特征在各个位置求和，将局部特征函数转化为一个全局特征函数，这样就可以将条件随机场写成权值向量和特征向量的内积形式，即条件随机场的简化形式。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-21.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-22.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>2.4条件随机场的矩阵形式</strong><sup><strong>[1]</strong></sup></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-23.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-24.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>举例说明</strong><sup><strong>[1]</strong></sup><strong>：</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-25.png" class="kg-image"></figure><!--kg-card-end: image--><p>试求状态序列y以start为起点，stop为终点所有路径的非规范化概率及规范化因子。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.idea2du.com/content/images/2019/09/image-26.png" class="kg-image"><figcaption>图2.4.1状态路径</figcaption></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-27.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="3-">3 条件随机场的概率计算问题</h2><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-28.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>3.1前向—后向算法</strong><sup><strong>[1]</strong></sup></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-29.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-30.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>3.2概率计算</strong><sup><strong>[1]</strong></sup></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-31.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>3.3期望值的计算</strong><sup><strong>[1]</strong></sup></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-32.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-33.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-34.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="4-">4 条件随机场的学习算法</h2><p>        现在我们来讨论一下训练数据集估计随机场模型参数的问题，即条件随机场的学习问题，条件随机场模型实际上是定义在时序数据上的对数线形模型，其学习方法包括极大似然估计和正则化的极大似然估计，具体的优化实现算法有改进的迭代尺度法IIS、梯度下降法以及拟牛顿法。我们现在主要介绍迭代尺度法</p><p><strong><strong>4.1迭代尺度法IIS</strong><sup><strong>[1]</strong></sup></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-35.png" class="kg-image"></figure><!--kg-card-end: image--><p>下面，我来解释一下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-36.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-37.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-38.png" class="kg-image"></figure><!--kg-card-end: image--><p>改进的迭代尺度法通过迭代的方法不断优化对数似然函数改变量的下界，达到极大化对数似然函数的目的。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-39.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-40.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-41.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>条件随机场模型学习改进迭代尺度法的算法步骤</strong><sup><strong>[1]</strong></sup><strong>：</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-42.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-43.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-44.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-45.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-46.png" class="kg-image"></figure><!--kg-card-end: image--><p>       以上算法称为算法S，在算法S中需要使常数S	取足够大，这样一来，每步迭代的增量向量会变大，算法收敛会变慢，算法T试图解决这一问题，算法T对每个观测序列x计算其特征总数最大值T(x)：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-47.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-48.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-49.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>4.2拟牛顿法</strong><sup><strong>[1]</strong></sup></strong></p><p>条件随机场模型学习还可以应用牛顿法或拟牛顿法，对于条件随机场模型</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-50.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-51.png" class="kg-image"></figure><!--kg-card-end: image--><p>条件随机场模型学习的拟牛顿法算法具体如下：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-52.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-53.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="5-1-">5 条件随机场的预测算法[1]</h2><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-54.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-55.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-56.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>条件随机场预测的维特比算法步骤</strong><sup><strong>[1]</strong></sup><strong>：</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-57.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>举例说明：</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-58.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>解：</strong></strong>特征函数及对应的权值均在上例中给出。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-59.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/09/image-60.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="6-">6 条件随机场模型的总结</h2><p><strong><strong>6.1条件随机场模型的优点</strong><sup><strong>[2]</strong></sup></strong></p><p>条件随机场既具有判别式模型的优点，又具有生成式模型考虑到上下文标记之间的转移概率，以序列化形式进行全局参数优化和解码的特点，解决了其他判别式模型（如最大熵马尔可夫模型）难以避免的标记偏见问题。</p><p><strong><strong>6.2条件随机场模型的缺点</strong></strong></p><p>模型训练时收敛速度比较慢</p><h2 id="7-">7 条件随机场模型的应用</h2><p>1）中文词性标注</p><p>2）命名实体识别</p><p>3）中文分词</p><p>4）序列标注</p><h2 id="-">参考文献</h2><p>[1] 李航，《统计学习方法》</p><p>[2] <a href="https://blog.csdn.net/QFire/article/details/86156664"><u>https://blog.csdn.net/QFire/article/details/86156664</u></a></p><p>[3] <a href="https://blog.csdn.net/weixin_42398658/article/details/84964103"><u>https://blog.csdn.net/weixin_42398658/article/details/84964103</u></a></p><p>[4] <a href="https://blog.csdn.net/spring_willow/article/details/79902352"><u>https://blog.csdn.net/spring_willow/article/details/79902352</u></a></p><p>[5] <a href="https://blog.csdn.net/weixin_42039090/article/details/80658188"><u>https://blog.csdn.net/weixin_42039090/article/details/80658188</u></a></p><p>[6] <a href="https://blog.csdn.net/YZXnuaa/article/details/79626265"><u>https://blog.csdn.net/YZXnuaa/article/details/79626265</u></a></p><p>[7] <a href="https://blog.csdn.net/qq_29828623/article/details/51457895"><u>https://blog.csdn.net/qq_29828623/article/details/51457895</u></a></p><p>[8] <a href="https://www.cnblogs.com/pinking/p/9194865.html"><u>https://www.cnblogs.com/pinking/p/9194865.html</u></a></p><p>注：部分文字、图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p>]]></content:encoded></item><item><title><![CDATA[十一、隐马尔可夫模型]]></title><description><![CDATA[<p>        隐马尔可夫模型（HMM）是可用于标注问题的统计学习模型，描述由隐藏的马尔可夫链随机生成观测序列的过程，属于生成模型<sup>[1]</sup>。它的状态不能直接观察到，但能通过观测向量序列观察到，每个观察向量都是通过某些概率密度分布表现为各种状态，每一个观测向量是由一个具有相应概率密度分布的状态序列产生。故隐马尔可夫模型是一个双重随机过程-------具有一定状态数的隐马尔可夫链和显示随机函数集。</p><h2 id="0-">0隐马尔可夫模型的主要学习内容</h2><p>1）隐马尔可夫模型的定义</p><p>2）隐马尔可夫模型的3个基本问题：概率计算问题，学习问题，预测问题</p><p>3）概率计算算法：前向算法，后向算法</p><p>4）学习算法：监督学习，非监督学习（的Baum-韦尔奇算法）</p><p>5）预测算法：近似算法，维特比算法</p><h3 id="-hmm-">什么问题需要用HMM模型解决呢？</h3><p>使用HMM模型我们的问题一般有这两个特征：</p><p>1）问题是基于序列的，比如一句话，时间序列或者状态序列。</p><p>2）问题中有两类数据，一类列数据是可以观测到的，即观测序列;而另一类数据是不能观测到的，即隐藏状态序列，简称状态序列。</p><p>       例如：使用键盘写出来的是一系列字符，这是我们可观测到的序列，而我们实际想要得到的一句话就是隐藏序列，输入法的任务就是从敲入的一系列字符尽可能的猜测我要写的句子，</p>]]></description><link>http://blog.idea2du.com/shi-yi-yin-ma-er-ke-fu-mo-xing/</link><guid isPermaLink="false">5d5dfe3a07ebdd000122dc67</guid><category><![CDATA[机器学习]]></category><dc:creator><![CDATA[GuiYing]]></dc:creator><pubDate>Thu, 22 Aug 2019 02:49:59 GMT</pubDate><content:encoded><![CDATA[<p>        隐马尔可夫模型（HMM）是可用于标注问题的统计学习模型，描述由隐藏的马尔可夫链随机生成观测序列的过程，属于生成模型<sup>[1]</sup>。它的状态不能直接观察到，但能通过观测向量序列观察到，每个观察向量都是通过某些概率密度分布表现为各种状态，每一个观测向量是由一个具有相应概率密度分布的状态序列产生。故隐马尔可夫模型是一个双重随机过程-------具有一定状态数的隐马尔可夫链和显示随机函数集。</p><h2 id="0-">0隐马尔可夫模型的主要学习内容</h2><p>1）隐马尔可夫模型的定义</p><p>2）隐马尔可夫模型的3个基本问题：概率计算问题，学习问题，预测问题</p><p>3）概率计算算法：前向算法，后向算法</p><p>4）学习算法：监督学习，非监督学习（的Baum-韦尔奇算法）</p><p>5）预测算法：近似算法，维特比算法</p><h3 id="-hmm-">什么问题需要用HMM模型解决呢？</h3><p>使用HMM模型我们的问题一般有这两个特征：</p><p>1）问题是基于序列的，比如一句话，时间序列或者状态序列。</p><p>2）问题中有两类数据，一类列数据是可以观测到的，即观测序列;而另一类数据是不能观测到的，即隐藏状态序列，简称状态序列。</p><p>       例如：使用键盘写出来的是一系列字符，这是我们可观测到的序列，而我们实际想要得到的一句话就是隐藏序列，输入法的任务就是从敲入的一系列字符尽可能的猜测我要写的句子，并将最有可能的词语放在最前面让我选择，这就可以看作一个隐马尔可夫模型。</p><h2 id="1-">1隐马尔可夫模型的定义</h2><p>         隐马尔可夫模型是关于时序的概率模型，描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列，再由各个状态生成一个观测而产生观测随机序列的过程。其中，隐藏的马尔可夫链随机生成的状态的序列称为状态序列;每个状态生成一个观测，而由此生成的观测的随机序列称为观测序列，序列的每个位置又可以看作一个时刻。</p><p><strong>       隐马尔可夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定，具体的形式定义如下<sup>[1]</sup></strong>：设Q是所有可能的状态的集合，V是所有可能的观测的集合。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-177.png" class="kg-image"></figure><!--kg-card-end: image--><p>其中，N为可能的状态数，M为可能的观测数。I是长度为T的状态序列，O是对应观测序列。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-178.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-179.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-180.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-181.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-182.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong>隐马尔可夫模型需要作如下两个基本假设<sup>[1]</sup>：</strong></p><p>（1）齐次马尔可夫性假设，即假设隐藏的马尔可夫链在任意时刻t的状态只依赖于前一个时刻的状态，与其他时刻的状态及观测无关，也与时刻t无关。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-183.png" class="kg-image"></figure><!--kg-card-end: image--><p>（2）观测独立性假设，即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态，与其他观测及状态无关。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-184.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>例子</strong><sup><strong>[1]</strong></sup><strong>：</strong></strong></p><p>假设有4个盒子，每个都装有红白两种颜色的球，盒子里的红白球数如表：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-185.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>按照下面方法抽球，产生一个球的颜色的观测序列：</strong></strong></p><p>       开始，从4个盒子里以等概率随机选取一个盒子，从盒子里随机抽出一个1个球，记录其颜色后，放回。然后，从当前盒子随机转移到下一个盒子。</p><p><strong><strong>规则：</strong></strong></p><p>如果当前盒子是盒子1，那么转移到的下一个盒子一定是盒子2；</p><p>如果当前是盒子2或3，那么各以概率0.4和0.6转移到左边或右边的盒子；</p><p>如果当前是盒子4，那么各以0.5的概率停留在盒子4或转移到盒子3；</p><p>确定转移的盒子后，再从这个盒子里随机抽出1个球，记录其颜色，放回；如此下去，重复进行5次，得到一个球的颜色的观测序列：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-186.png" class="kg-image"></figure><!--kg-card-end: image--><p>在这个过程中，观察者只能<strong><strong>观测到球的颜色的序列</strong></strong>，观测不到球是从哪个盒子取出的，即<strong><strong>观测不到盒子的序列</strong></strong>。</p><p>在这个例子中有两个随机序列，一个<strong><strong>盒子的序列（状态序列）</strong></strong>，一个是<strong><strong>球颜色的观测序列（观测序列）</strong></strong>，前者是隐藏的，只有后者是可观测的，这就是一个HMM模型的例子。根据这个例子，我们来明确一下，例子中的状态集合、观测集合、序列长度以及模型三要素。</p><p>抽取的<strong>盒子顺序对应状态序列</strong>，状态的集合为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-187.png" class="kg-image"></figure><!--kg-card-end: image--><p>抽取球颜色的顺序对应观测序列，观测的集合为：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-188.png" class="kg-image"></figure><!--kg-card-end: image--><p>状态序列和观测序列长度T=5。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-189.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="1-1-">1.1观测序列的生成过程</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-190.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="2-hmm-1-">2  HMM的三个基本问题[1]</h2><h3 id="2-1-">2.1问题一：概率计算问题</h3><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-191.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong>2.1.1直接计算法[1]</strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-192.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-193.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>2.1.2 前向算法</strong></strong></p><p>首先介绍前向概率。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-194.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-195.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-196.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-197.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-198.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong>例子：</strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-199.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-200.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-201.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>2.1.3后向算法</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-202.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-203.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-204.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-205.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="2-2-">2.2 学习算法</h3><p>       隐马尔可夫模型的学习，根据训练数据是包括观测序列和对应的状态序列还是只有观测序列，可以分为监督学习和非监督学习来实现。</p><p><strong><strong>2.2.1监督学习</strong></strong></p><p>假设已给训练数据包含S个长度相同的观测序列和对应的状态序列</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-206.png" class="kg-image"></figure><!--kg-card-end: image--><p>我们可以利用极大似然估计法来估计隐马尔可夫模型的参数，具体方法如下。</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-207.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-208.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-209.png" class="kg-image"></figure><!--kg-card-end: image--><p>由于监督学习需要使用训练数据，而人工标注训练数据往往代价很高，故使用非监督学习。</p><p><strong><strong>2.2.2非监督学习（Baum-Welch算法）</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-210.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-211.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-212.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-213.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-214.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-215.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-216.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-217.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-218.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-219.png" class="kg-image"></figure><!--kg-card-end: image--><h3 id="2-3-">2.3预测算法</h3><p><strong><strong>2.3.1近似算法</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-220.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong><strong>2.3.2维特比算法</strong></strong></p><p>        维特比算法是动态规划的解决隐马尔可夫模型预测问题，即用动态规划求概率最大路径（最优路径）。这时一条路径对应一条状态序列。</p><p><strong><strong>原理</strong></strong><sup>[1]</sup><strong><strong>：</strong></strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-221.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-222.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-223.png" class="kg-image"></figure><!--kg-card-end: image--><p><strong>举例说明</strong></p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-224.png" class="kg-image"></figure><!--kg-card-end: image--><p>解：要在所有可能的路径中选择一条最优路径，按照以下步骤处理：</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-225.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-226.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-227.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-228.png" class="kg-image"></figure><!--kg-card-end: image--><!--kg-card-begin: image--><figure class="kg-card kg-image-card"><img src="http://blog.idea2du.com/content/images/2019/08/image-229.png" class="kg-image"></figure><!--kg-card-end: image--><h2 id="3-">3隐马尔可夫模型的总结</h2><h3 id="3-1-3-">3.1隐马尔科夫模型的优点[3]：</h3><p>1）<strong><strong>HMM是一种生成模型</strong></strong>，定义了联合概率分布，其中x和y分别表示观察序列和相对应的标注序列的随机变量。为了能够定义这种联合概率分布，生成模型需要枚举出所有可能的观察序列，这在实际运算过程中很困难，因为我们需要将观察序列的元素看做是彼此孤立的个体即假设每个元素彼此独立，任何时刻的观察结果只依赖于该时刻的状态。</p><p>2）<strong><strong>从可观察的参数中确定该过程的隐含参数</strong></strong>，然后使用隐含变量生成可观测状态。</p><p>3）不确定中间状态的情况最适合用隐马尔可夫模型来解释。</p><h3 id="3-2-4-">3.2隐马尔科夫模型的缺点[4]：</h3><p>1）<strong><strong>HMM只依赖于每一个状态和它对应的观察对象：</strong></strong>例如像序列标注问题不仅和单个词相关，而且和观察序列的长度，单词的上下文，等等相关，故使用HMM会使用较多重要信息。</p><p>2）<strong><strong>目标函数和预测目标函数不匹配：</strong></strong>HMM学到的是状态和观察序列的联合分布P(Y,X)，而预测问题中，我们需要的是条件概率P(Y|X)。</p><p>3）<strong><strong>HMM模型的这个假设前提在比较小的数据集上是合适的，</strong></strong>但实际上在大量真实语料中观察序列更多的是以一种多重的交互特征形式表现，观察元素之间广泛存在长程相关性。在命名实体识别的任务中，由于实体本身结构所具有的复杂性，利用简单的特征函数往往无法涵盖所有的特性，这时HMM的假设前提使得它无法使用复杂特征（它无法使用多于一个标记的特征）。</p><h2 id="4-">4 隐马尔可夫模型的应用</h2><p>1）语音识别</p><p>2）自然语言处理（词性标注、命名实体识等）</p><p>3）生物信息</p><p>4）模式识别</p><h2 id="-">参考文献</h2><p>[1] 李航，《统计学习方法》</p><p>[2] <a href="https://www.cnblogs.com/pinard/p/6912636.html"><u>https://www.cnblogs.com/pinard/p/6912636.html</u></a></p><p>[3] <u><a href="https://www.cnblogs.com/pinard/p/6955871.html">https://www.cnblogs.com/pinard/p/6955871.html</a></u></p><p>[4] <u><a href="https://www.cnblogs.com/pinard/p/6991852.html">https://www.cnblogs.com/pinard/p/6991852.html</a></u></p><p>[5] <u><a href="https://www.cnblogs.com/pinard/p/6972299.html">https://www.cnblogs.com/pinard/p/6972299.html</a></u></p><p>[6] <u><a href="https://blog.csdn.net/Losteng/article/details/51037927">https://blog.csdn.net/Losteng/article/details/51037927</a></u></p><p>注：部分文字，图片来自网络，如涉及侵权，请及时与我们联系，我们会在第一时间删除或处理侵权内容，电话：4006770986。</p>]]></content:encoded></item></channel></rss>