精华内容
下载资源
问答
  • 机器学习和数据挖掘是紧密相关的,要进行数据挖掘需要掌握一些机器学习所用的方法模型知识,通过模型的训练可以得到处理数据的最优的模型。数据挖掘常用的模型如下: 3.1 监督学习模型 就是人们常说的分类,通过已...

    机器学习和数据挖掘是紧密相关的,要进行数据挖掘需要掌握一些机器学习所用的方法和模型知识,通过模型的训练可以得到处理数据的最优的模型。数据挖掘常用的模型如下:

    3.1 监督学习模型

    就是人们常说的分类,通过已有的训练样本(即已知数据以及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优则表示在某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的,也就具有了对未知数据进行分类的能力。

    3.1.1决策树:

    决策树是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序、无规则的实例中推理出以决策树表示的分类规则。构造决策树的目的是找出属性和类别间的关系,用它来预测将来未知类别的记录的类别。它采用自顶向下的递归方式,在决策树的内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论。

    主要的决策树算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它们在选择测试属性采用的技术、生成的决策树的结构、剪枝的方法以及时刻,能否处理大数据集等方面都有各自的不同之处。

    3.1.2 贝叶斯方法:

    贝叶斯(Bayes)分类算法是一类利用概率统计知识进行分类的算法,如朴素贝叶斯(Naive Bayes)算法。这些算法主要利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。由于贝叶斯定理的成立本身需要一个很强的条件独立性假设前提,而此假设在实际情况中经常是不成立的,因而其分类准确性就会下降。为此就出现了许多降低独立性假设的贝叶斯分类算法,如TAN(Tree Augmented Native Bayes)算法,它是在贝叶斯网络结构的基础上增加属性对之间的关联来实现的。

    3.1.3 神经网络

    神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在这种模型中,大量的节点(称”神经元”)之间相互联接构成网络,即”神经网络”,以达到处理信息的目的。神经网络通常需要进行训练,训练的过程就是网络进行学习的过程。训练改变了网络节点的连接权的值使其具有分类的功能,经过训练的网络就可用于对象的识别。目前,神经网络已有上百种不同的模型,常见的有BP神经网络、径向基RBF网络、Hopfield网络、随机神经网络(Boltzmann机)、竞争神经网络(Hamming网络,自组织映射网络)等。但是当前的神经网络仍普遍存在收敛速度慢、计算量大、训练时间长和不可解释等缺点。

    3.1.4 支持向量机(SVM)

    支持向量机(SVM,Support Vector Machine)是根据统计学习理论提出的一种新的学习方法,它的最大特点是根据结构风险最小化准则,以最大化分类间隔构造最优分类超平面来提高学习机的泛化能力,较好地解决了非线性、高维数、局部极小点等问题。对于分类问题,支持向量机算法根据区域中的样本计算该区域的决策曲面,由此确定该区域中未知样本的类别。

    3.1.5 集成学习分类模型

    集成学习是一种机器学习范式,它试图通过连续调用单个的学习算法,获得不同的基学习器,然后根据规则组合这些学习器来解决同一个问题,可以显著的提高学习系统的泛化能力。主要采用(加权)投票的方法组合多个基学习器,常见的算法有装袋(Bagging)、提升/推进(Boosting)、随机森林等。集成学习由于采用了投票平均的方法组合多个分类器,所以有可能减少单个分类器的误差,获得对问题空间模型更加准确的表示,从而提高分类器的分类准确度。

    3.1.6 其他分类学习模型

    此外还有logistics回归模型、隐马尔科夫分类模型(HMM)、基于规则的分类模型等众多的分类模型,对于处理不同的数据、分析不同的问题,各种模型都有自己的特性和优势。

    3.2 无监督学习模型

    在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构,应用场景包括关联规则的学习以及聚类等。常见的聚类算法如下所示:

    3.2.1 K-means聚类

    K-means算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心,从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。

    3.2.2 基于密度的聚类

    根据密度完成对象的聚类。它根据对象周围的密度(如DBSCAN)不断增长聚类。典型的基于密度方法包括:DBSCAN(Densit-based Spatial Clustering of Application with Noise):该算法通过不断生长足够高密度区域来进行聚类;它能从含有噪声的空间数据库中发现任意形状的聚类。此方法将一个聚类定义为一组“密度连接”的点集。OPTICS(Ordering Points To Identify the Clustering Structure):并不明确产生一个聚类,而是为自动交互的聚类分析计算出一个增强聚类顺序。

    3.2.3 层次聚类方法

    层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。层次凝聚的代表是AGNES算法,层次分裂的代表是DIANA算法。具体又可分为凝聚的,分裂的两种方案。

    凝聚的层次聚类是一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有的对象都在一个簇中,或者某个终结条件被满足,绝大多数层次聚类方法属于这一类,它们只是在簇间相似度的定义上有所不同。

    分裂的层次聚类与凝聚的层次聚类相反,采用自顶向下的策略,它首先将所有对象置于同一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一簇,或者达到了某个终止条件。

    3.2.4 谱聚类

    谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的。其中的最优是指最优目标函数不同,可以是割边最小分割, 也可以是分割规模差不多且割边最小的分割。谱聚类能够识别任意形状的样本空间且收敛于全局最优解,其基本思想是利用样本数据的相似矩阵(拉普拉斯矩阵)进行特征分解后得到的特征向量进行聚类。

    此外常用的聚类方法还有基于网格的聚类、模糊聚类算法、自组织神经网络SOM、基于统计学的聚类算法(COBWeb、AutoClass)等。

    3.3 半监督学习

    3.3.1 半监督学习概述

    半监督学习算法要求输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。

    3.3.2 Multi-view algorithm(多视角算法)

    一般多用于可以进行自然特征分裂的数据集中.考虑特殊情况(每个数据点表征两个特征):每一个数据点看成是两个特征的集合,然后利用协同训练(Co-training algorithm)进行处理.协同训练(co-training)算法,此类算法隐含地利用了聚类假设或流形假设,它们使用两个或多个学习器,在学习过程中,这些学习器挑选若干个置信度高的未标记示例进行相互标记,从而使得模型得以更新。

    3.3.3 Graph-Based Algorithms(基于图的算法)

    基于图的算法是基于图正则化框架的半监督学习算法,此类算法直接或间接地利用了流形假设,它们通常先根据训练例及某种相似度度量建立一个图,图中结点对应了(有标记或未标记)示例,边为示例间的相似度,然后,定义所需优化的目标函数并使用决策函数在图上的光滑性作为正则化项来求取最优模型参数。

    3.4 文本处理模型

    3.4.1 分词模型

    分词模型主要在处理文本过程中使用,在此特指中文分词模型。中文分词算法现在一般分为三类:基于字符串匹配,基于理解,基于统计的分词。

    基于字符串匹配分词:

    机械分词算法。将待分的字符串与一个充分大的机器词典中的词条进行匹配。分为正向匹配和逆向匹配;最大长度匹配和最小长度匹配;单纯分词和分词与标注过程相结合的一体化方法。所以常用的有:正向最大匹配,逆向最大匹配,最少切分法。实际应用中,将机械分词作为初分手段,利用语言信息提高切分准确率。优先识别具有明显特征的词,以这些词为断点,将原字符串分为较小字符串再机械匹配,以减少匹配错误率;或将分词与词类标注结合。

    基于理解分词:

    分词同时进行句法语义分析等模拟人对句子的理解,包括分词子系统,句法语义系统,总控部分。总控部分协调下,分词字系统可以获得有关词,句子等的句法和语义信息对分词歧义进行判断。需要大量的语言知识信息。

    基于统计分词:

    相邻的字同时出现的次数越多,越有可能构成一个词语,对语料中的字组频度进行统计,不需要切词字典,但错误率很高。可以考虑:使用基本词典进行关键词分词,使用统计方法识别新词组,两者结合。

    3.4.2 TF-IDF模型

    TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜寻引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜寻引擎还会使用基于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。

    TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频(Term Frequency),IDF反文档频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率(另一说:TF词频(Term Frequency)指的是某一个给定的词语在该文件中出现的次数)。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。(另一说:IDF反文档频率(Inverse Document Frequency)是指果包含词条的文档越少,IDF越大,则说明词条具有很好的类别区分能力。)但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处.

    3.4.3 LDA模型

    LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。文档到主题服从多项式分布,主题到词服从多项式分布。

    LDA是一种非监督机器学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bag of words)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。但是词袋方法没有考虑词与词之间的顺序,这简化了问题的复杂性,同时也为模型的改进提供了契机。每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。

    4 模型评价指标

    4.1 模型评价概述

    建模构建过程中会得出一系列的分析结果、模式或模型。同一个采样数据可以利用多种数据分析方法和模型进行分析,模型评价的目的之一就是从这些模型中自动找出一个最好的模型出来,另外就是要针对业务对模型进行解释和应用。

    模型效果评价通常分两步,第一步是直接使用原来建立模型的样本数据来进行检验。假如这一步都通不过,那么所建立的决策支持信息价值就不太大了。一般来说,在这一步应得到较好的评价。这说明你确实从这批数据样本中挖掘出了符合实际的规律性。第一步通过后,第二步是另外找一批数据,已知这些数据是反映客观实际的、规律性的。这次的检验效果可能会比前一种差,差多少是要注意的,若是差到所不能容忍程度,那就要考虑第一步构建的样本数据是否具有充分的代表性,或是模型本身是否够完善。这时候可能要对前面的工作进行反思了。若这一步也得到了肯定的结果时,那所建立的数据挖掘模型应得到很好的评价了。

    人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
    1.一分钟了解互联网数据挖掘流程
    2.数据挖掘、人工智能、模式识别等学科的公共数学基础有哪些?
    3.模式识别和机器学习、数据挖掘的区别与联系

    展开全文
  • 神经网络各优化方法

    千次阅读 2017-12-14 10:44:49
    什么是优化方法  优化方法,是通过某种训练模式最小化误差(损失)函数的算法。   损失函数度量基于模型参数的模型预测值与真实值之间的偏差程度,在神经网络中是基于w(权重)和b(偏置)的函数。我们通过优化方法...

    什么是优化方法

      优化方法,是通过某种训练模式最小化误差(损失)函数的算法。
      损失函数度量基于模型参数的模型预测值与真实值之间的偏差程度,在神经网络中是基于w(权重)和b(偏置)的函数。我们通过优化方法更新模型参数,从而让模型预测值更符合预期;
      权重更新的快慢由学习率 lr 决定,当 lr 过大时,会导致 loss 提高; 当 lr 较大时, loss 无法收敛; 当 lr 较小时,loss 收敛慢;故一般使用较大的 lr 开始训练,随着迭代次数的增加,减小学习率 lr。下面使用 α 表示学习率 lr 。
      优化的目的当然最好是可以使 loss 达到全局最小点,但由于模型可能是非凸的,所以达到较好的局部最小点也是我们的选择。

    优化方法可以分为两类:

    1. 一阶优化方法
        这种优化方法通过计算导数dE/dw(误差函数对权重的导数)得到该权重最佳减小方向,从而优化模型;在多变量的情况下,该方法被扩展为梯度,所以优化方法也是基于梯度下降的方法,最基础的方法也是梯度下降。
    2. 二阶优化方法
        二阶优化方法使用二阶导数(Hessian方法)来最小化误差函数。由于二阶导数的计算代价太高,所以一般不会使用二阶优化方法。

    固定学习率的优化方法

    梯度下降

      最原始的梯度下降是一次训练所有数据集样本,得到其平均损失函数,然后计算其梯度。其权重的更新方式为:

    wi=wiαE(W,B,X,Y)wi

      一次训练所有训练集样本带来的问题是训练速度很慢,且可能导致内存溢出。

    SGD

      SGD(Stochastic gradient descent),随机梯度下降。最简单的随机梯度下降是每次对一个训练样本进行训练,其效果和梯度下降差不多,但训练的速度更快。随机梯度下降的参数更新的很频繁,所以其参数之间会具有高方差,损失函数会波动,可能不会收敛到最小值(但也在最小值附近)。其权重更新方式为:

    wi=wiαE(W,B,x,y)wi

    Mini Batch

      现在一般称批梯度下降(Mini Batch Gradient Descent)为SGD,其使用一小批数据集(m个独立同分布的数据样本)作为一次训练的对象,该处理初步解决了频繁的参数更新问题。Mini Batch 是后面几个改进方法的基础。
      在我们选择批量 m 的大小时,我们一般使用 2 的某个幂作为m的选择(一般为16~256),这样会运行得更快。其权重更新方式为

    g=1mimE(W,B,x,y)wi
    wi=wiαg

      SGD算法在遇到鞍点(大概就是每个参数想走的地方不一样)时,存在难以逃脱的问题。这种问题称为 Hessian 矩阵病态条件问题。

    Momentum(动量)

      动量方法可以用来解决 Hessian 矩阵病态条件问题,其方法是在梯度更新时参考上一次梯度的方向,表现形式为:

    g=1mimE(W,B,x,y)wi
    vt=βvt1αg
    wi=wi+vt

      直观来说,就是当目前的方向与原先的方向相反,借鉴之前的梯度,就会减小其权重更新振荡的幅度,从而加快收敛;当目前的方向与原先方向相同,则加快其收敛速度。若梯度方向都大致相似,其收敛速度的加快与参数 β 的关系为:
    vtβvt1=αg
    v=α|g|1β

      就是如果 β 为 0.99, 则其收敛速度是SGD的 100倍。
      通过累计历史梯度,可能可以逃出连续的驻点。
      但动量的问题在于,如果动量过高,可能会完全越过最小值。

    Nesterov

      Nesterov, 牛顿动量是Momentum的变种,该方法有机会解决动量方法越过最小值的问题。其改进点在于在计算梯度前,先用当前速度 v(t-1) 更新一次参数,再用更新后的临时参数计算梯度。其表现形式为:

    wi=wi+αvt1
    g=1mimE(W,B,x,y)wi
    vt=βvt1αg
    wi=wi+vt

      该方法对于参数的更新更敏感,也能减少SGD方法的频繁振荡问题,也不会最小值,相当于加了矫正因子的Momentum。

    自适应参数的优化方法

      相同学习率并不适用于所有的参数更新。如果训练数据很稀疏,且特征频率差异大,则更新的幅度不应该一样。对于很少出现的特征,应该使用更大的学习率。

    AdaGrad

      AdaGrad方法通过参数来调整适合的学习率,对小频率参数进行大幅度更新,对大频率参数进行小幅度更新。其具体做法为:先设置一个全局学习率,在迭代开始之后,该参数的学习率会除以历史梯度平方和的平方根,从而使每个参数的学习率不同。该方法的表现形式为:

    g=1mimE(W,B,x,y)wi
    r=r+g2
    wi=wiαγ+rg

      AdaGrad方法的好处为不用手动调整学习率。但由于r一直在变大,所以学习率会越来越小,所以模型的学习能力和收敛能力会越来越低,需要很长的时间来训练。所以AdaGrad较为适用于稀疏数据集的训练。

    AdaDelta

      AdaDelta 方法是 AdaGrad 方法的改进,相对于 AdaGrad 方法完全累计先前所有的梯度平方和, AdaDelta 方法使用一个衰减系数 ω 来“忘记”太过久远的梯度平方和,从而避免学习率无限减小的问题。该方法的表现形式为:

    g=1mimE(W,B,x,y)wi
    r=ωr+(1ω)g2
    wi=wiαγ+rg

     &emspAdaDelta 方法结合 Nesterov 方法的使用如下:
    wi=wi+αvt1
    g=1mimE(W,B,x,y)wi
    r=ωr+(1ω)g2
    vt=βvt1αγ+rg
    wi=wi+vt

      AdaDelta和Momentum结合之后,就可以不用设置全局学习率了。

    Adam

      Adam(Adaptive Moment Estimation,自适应矩估计)算法,该方法实际上是修正后的 Momentum 方法 和 AdaDelta 方法的结合。该方法的表现形式为:

    g=1mimE(W,B,x,y)wi
    Momentum 项
    st=ρ1st1+(1ρ1)g
    AdaDelta 项
    rt=ρ2rt1+(1ρ2)g2
    s=s1ρt
    r=r1ρt
    wi=wiαγ+rs

      其中 ρ1 建议默认为0.9,ρ2建议默认为0.999,γ 默认设置为10^{-16}。
      值得一提的是,Adam 方法通常被认为对超参数的选择相当鲁棒,且其在实际应用中的效果良好,超过了其他的自适应技术。使用 Adam 方法较为方便,但如果选择了较好的学习率 ,Momentum能得到更好的效果。

    展开全文
  • TensorFlow 网络优化步骤与一般方法

    千次阅读 2017-07-05 14:42:19
    深度学习中,网络的优化是训练过程中很重要的一部分,现在很多的优化策略,而他们的核心的内容都是梯度下降。 理论的部分大家可以参考: 理解梯度下降在机器学习模型优化中的应用,其中介绍了批量梯度下降,随机...

    深度学习中,网络的优化是训练过程中很重要的一部分,现在有很多的优化策略,而他们的核心的内容都是梯度下降。
    理论的部分大家可以参考:
    理解梯度下降在机器学习模型优化中的应用,其中介绍了批量梯度下降,随机梯度下降与小批量梯度下降的基本概念。
    An overview of gradient descent optimization algorithms,其中介绍了各种改进的优化方法,包括动量法,adagrad等等

    而在本文的内容中重要讨论的是TensorFlow中实现这些优化方法的一般步骤,先贴上代码(该代码是整个可以运行dome的优化部分,也就是说单独无法运行)

     # 构建训练操作
      def _build_train_op(self):
        # 学习率/步长
        self.lrn_rate = tf.constant(self.hps.lrn_rate, tf.float32)
        tf.summary.scalar('learning_rate', self.lrn_rate)
    
        # 计算训练参数的梯度
        trainable_variables = tf.trainable_variables()
        grads = tf.gradients(self.cost, trainable_variables)
    
        # 设置优化方法 其实是在实例化对象 optimizer
        if self.hps.optimizer == 'sgd':
          optimizer = tf.train.GradientDescentOptimizer(self.lrn_rate)
        elif self.hps.optimizer == 'mom':
          optimizer = tf.train.MomentumOptimizer(self.lrn_rate, 0.9)
    
        # 梯度优化操作  optimizer对象中的方法 
        apply_op = optimizer.apply_gradients(
                            zip(grads, trainable_variables),
                            global_step=self.global_step, 
                            name='train_step')
        
        # 合并BN更新操作
        train_ops = [apply_op] + self._extra_train_ops
        # 建立优化操作组
        self.train_op = tf.group(*train_ops)
    

    1.确定学习率

    self.lrn_rate = tf.constant(self.hps.lrn_rate, tf.float32)
    

    学习率时由self.hps.lrn_rate这个东西来的,下面会说具体是什么。

    2.计算梯度
    使用梯度下降的优化算法当然要计算梯度,TensorFlow中提供了tf.gradients函数:

    grads = tf.gradients(self.cost, trainable_variables)
    

    self.cost为定义好的loss function,trainable_variables为所有需要训练的变量,其中trainable_variables是直接用tf.trainable_variables()参数得到的(在这里可以看下计算梯度的公式,不就是loss对w求偏导么,也就不难理解为啥是这两个参数)

    3.设置优化策略
    这个过程其实是实例化一个对象出来,叫做optimizer,上面的代码选择使用随机梯度下降还是动量。比如:

    optimizer = tf.train.MomentumOptimizer(self.lrn_rate, 0.9)
    

    tf.train.MomentumOptimizer是一个类,提供了动量优化方法,对象的初始化参数有学习率和一个超参数(这个参数要看公式才知道是什么意思)

    4.执行优化(定义优化的op)
    在上面的三步中确定了优化需要的所有东西:步长,梯度,方法,那么就能确定最后的优化操作了,直接使用实例化出来的那么对象—optimizer,下面提供的方法apply_gradients,最后返回值是一个op。其中需要的注意的地方是第一个参数:zip(grads, trainable_variables),这个东西的目的是为了把梯度和参数关联起来,因为我们知道,在梯度下降过程中,要训练的变量个数决定了loss surcafe的维度,那么当然每一个维度上都会有一个自己的梯度。

    5.加入BN
    按道理讲,这一部分和梯度下降没有关系,他只是把批归一化的操作加入到了梯度优化上,组合成新的操作 — train_ops。最后就是利用tf.group函数把多个操作合并为一个。并让一个Session去run这个op就好了。

    从上面的代码中,我们知道了梯度优化过程中的一般步骤以及需要的变量是如何得到的,但是学习速率没有涉及,下面的代码说明了学习率如何确定:

      class _LearningRateSetterHook(tf.train.SessionRunHook):
    
        def begin(self):
          #初始学习率
          self._lrn_rate = 0.1
    
        def before_run(self, run_context):
          return tf.train.SessionRunArgs(
                          # 获取全局Step
                          model.global_step,
                          # 设置学习率
                          feed_dict={model.lrn_rate: self._lrn_rate})  
    
        def after_run(self, run_context, run_values):
          # 动态更新学习率
          train_step = run_values.results
          if train_step < 40000:
            self._lrn_rate = 0.1
          elif train_step < 60000:
            self._lrn_rate = 0.01
          elif train_step < 80000:
            self._lrn_rate = 0.001
          else:
            self._lrn_rate = 0.0001
      # 建立可监控的Session
      with tf.train.MonitoredTrainingSession(
          checkpoint_dir='temp',
          hooks=[logging_hook, _LearningRateSetterHook()],
          chief_only_hooks=[summary_hook],
          # 禁用默认的SummarySaverHook,save_summaries_steps设置为0
          save_summaries_steps=0,
          #设备的软分配
          config=tf.ConfigProto(allow_soft_placement=True)) as mon_sess:
        while not mon_sess.should_stop():
          # 执行优化训练操作
          mon_sess.run(model.train_op)
    

    可以看到,专门建立了_LearningRateSetterHook类来做学习率的更新,该代码没有涉及到自适应学习率的方法,而是根据执行步数逐步降低学习率。
    在后面定义了可监控的Session — tf.train.MonitoredTrainingSession,并将学习率更新的类加入到Session中。
    最后如果没有达到终止条件,则一直执行mon_sess.run(model.train_op),而model.train_op就是第一个代码中最后定的:self.train_op = tf.group(*train_ops),即优化方法和批归一化(这里不说批归一化)。
    hook这个词在代码中常常看到,首先它是个变量的名,用什么词都可以,之所以大家都选择hook是因为变量涉及的部分就像钩子一样挂在graph上。

    以上就是一个模型训练中的优化部分的代码,使用了动量的方法,手动设置学习率。除此之外,TensorFlow还提供了很多其他的优化方法,比如:
    adagrad:在TensorFlow中的 tf.train.AdagradOptimizer类下封装。
    Adam:在TensorFlow中的 tf.train.AdamOptimizer类下封装。
    具体可以参考TensorFlow Training

    展开全文
  • 实体关系抽取任务方法及SOTA模型总结

    千次阅读 多人点赞 2020-05-31 21:02:08
    对于实体关系抽取任务,最容易想到的方法就是先抽取句子中的实体,然后在对实体对进行关系分类,从而找出spo三元组,这种思想被称作管道模型(Pipeline)。管道模型把实体关系抽取分成了两个子任务,实体识别和关系...

    1 实体关系抽取方法思路

    实体关系抽取是从文本中的句子里抽取出一对实体并给出实体间关系的任务。该任务的输入是一句话,输出是一个spo三元组(subject-predicate-object)。

    对于实体关系抽取任务,最容易想到的方法就是先抽取句子中的实体,然后在对实体对进行关系分类,从而找出spo三元组,这种思想被称作管道模型(Pipeline)。管道模型把实体关系抽取分成了两个子任务,实体识别和关系分类,两个子任务按照顺序依次执行,它们之间没有交互。在管道模型之后,可以同时进行实体识别和关系分类的联合模型被提了出来,之后的实验证明联合模型由于实现了两个子任务之间的信息交互,大大提升了实体关系抽取的效果,目前针对实体关系抽取任务的研究大多采用联合模型。而联合模型又可以细分为基于参数共享的联合模型和基于联合解码的联合模型。

    另外,解码方式对实体关系抽取性能的影响也很大,主要的解码方式有三种:基于序列标注、基于指针网络和基于片段分类的方法。

    实体关系抽取任务根据抽取思路的不同可以按下图所示方式分类:

    在这里插入图片描述

    2 参数共享方法与联合解码方法

    下图是参数共享方法和联合解码方法的对比。使用参数共享的联合模型和管道模型的结构是非常相似的,它们抽取spo三元组的过程都是分成多步完成的,主要的不同在于基于参数共享的联合模型的loss是各个子过程的loss之和,在求梯度和反向更新参数时会更新整个模型所有子过程的参数,而管道模型各子过程之间则没有联系。使用联合解码的联合模型则更符合“联合”的思想,主体,客体和关系类型是在同一个步骤中进行识别然后得出的。

    在这里插入图片描述

    2.1 使用参数共享的经典模型:

    End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures

    这篇论文是实体关系抽取领域内的一篇非常重要的论文,几乎所有和实体关系抽取有关的综述都会提到这篇论文,它是联合模型的开山之作,被之后许多论文借鉴。

    本文提出了一种联合实体关系识别,基于参数共享的关系抽取模型,模型中有两个双向的LSTM-RNN,一个基于word sequence,主要用于实体检测;一个基于Tree Structures ,主要用于关系抽取;后者堆在前者上,前者的输出和隐含层作为后者输入的一部分。下图为整个模型的结构图:

    在这里插入图片描述

    该文章提出的模型就是一种典型的基于参数共享的联合模型,两个双向LSTM-RNN结构分别用于检测实体和分类关系,它们是单独训练的,但是loss是加在一起同时进行反向传播和更新的。

    2.2 使用联合解码的经典模型:

    Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme

    该论文的主要工作是设计了一种特别的标签类型,将实体识别和关系分类转化为序列标注问题;然后提出了一个端到端模型,通过编码层对句子进行编码,将隐藏层向量输入解码层然后直接得到spo三元组,没有将抽取过程分为实体识别和关系分类两个子过程。

    该论文提出的标记方法如下图所示,在该方法中,共包含 3 种标注信息:

    (1) 实体中词的位置信息 { B,I,E,S,O } 分别表示{实体开始,实体内部,实体结束,单个实体,无关词};

    (2) 实体关系类型信息,需根据关系类型进行标记,分为多个类别,如 { CF,CP,… } ;

    (3) 实体角色信息 { 1,2 } 分别表示 { 实体 1,实体 2 }

    在这里插入图片描述

    该论文提出的端到端的神经网络模型如下图所示,对输入的句子,首先,编码层使用Bi-LSTM来进行编码;之后,解码层再使用 LSTMd( 作者提出的一种基于LSTM的改进型 ) 进行解码;最终,输出模型标注好的实体—关系三元组。

    在这里插入图片描述

    该论文提出的模型有一个明显的不足就是不能识别重叠的实体关系,下图表格展示了实体关系三元组的重叠类型,实体关系三元组根据重叠方式的不同可以分为三类:没有重叠的Normal类型,关系重叠的EPO类型,实体重叠的SEO类型。本文的模型由于标签设计的原因,只能识别Normal类型的实体关系三元组。

    在这里插入图片描述

    2.3 参数共享方法和联合解码方法的优缺点对比:

    参数共享 联合解码
    优点 1.实体识别和关系分类过程不是同步的,所以后面步骤的训练可以使用前面步骤的结果作为特征,2.灵活性更高,能够更好的处理重叠实体关系重叠问题。 没有明确的将抽取过程分为多个步骤,真正实现了实体识别和关系分类的信息共享。
    缺点 实体识别和关系分类仍然是两个独立的过程,没有真正的“联合”。 目前要实现联合解码一般需要设计复杂的标签或者解码过程,而且联合解码的方式对重叠的关系三元组的识别效果不是很好。

    3 实体关系抽取解码方式总结

    常见的实体关系抽取的解码层的解码方式有三种,分别是基于序列标注,基于指针网络和片段分类。

    3.1 序列标注

    基于序列标注的解码方式通常会使用CRF作为解码器,使用结合BIO或者BIOES标签的联合标签,每个token标记一个tag标签。解码层的任务就是确定每个token的tag,CRF能够进行标签约束,解码效果比直接使用Softmax更好。

    序列标注方法在命名实体识别任务中非常常用,但是在实体关系抽取任务中,序列标注有非常多的不足,很重要的一点是一个token只能有一个标签,而关系抽取任务情况复杂,存在实体重叠、关系重叠等诸多特殊情况,经常需要设计比较复杂的联合标签才能完成对实体关系三元组的抽取,然而标签越复杂,抽取效果就越差。因此最新的论文基本都不再采用这种方法。

    上文提到的论文Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme中提出的模型使用的就是序列标注方法,该模型就无法解决实体重叠问题。

    下图中的句子使用了序列标注方法,采用BIO和实体类型联合标签,该方法只能确定“北京”这一个实体,而无法将另一个实体“北京德易东方转化医学研究中心”也一起表示出来。

    在这里插入图片描述

    3.2 指针网络

    序列标注方法只有一个标签序列,表达能力较弱,不能解决实体重叠问题,因此有人提出使用MRC机器阅读理解中大量使用的指针网络来对关系抽取中的输入句子进行标注,使用多个标签序列(多层label网络)来表示一个句子。如下图所示,该指针网络采用了两个标签序列,一个表示实体的起始位置,另一个表示实体的结束位置。在解码时使用Sigmoid代替Softmax,预测每个token对应的标签是0还是1。由于指针网络的表达能力较强,可以很好地解决实体-关系重叠等问题,所以在目前的实体关系抽取方法中被大量使用。虽然指针网络是一个比较好的方案,但是在指针网络的使用过程中很可能会遇到标签不平衡问题,需要进行一些调参工作。

    在这里插入图片描述

    3.3 片段分类

    片段分类方法和上述两方法有较大的差异,片段分类方法找出所有可能的片段组合,然后针对每一个片段组合求其是否是实体的概率。如下图所示,针对一个句子,片段排序方法从开始位置起依次选取一个token,两个token……,组成实体可能的片段,然后求该片段是否是实体的概率。

    在确定所有的实体之后,对所有实体两两配对,然后求每一对实体对之间存在关系的概率。例如,如果有N个实体,M种关系,那么存在N × N个实体对(实体对是有序的),需要求N × N × M个概率,来判断每个实体对之间的关系。

    如果文本过长,片段分类会产生大量的负样本,在实际中需要限制span长度并合理削减负样本。

    在这里插入图片描述

    3.4 不同解码方式的优缺点对比:

    序列标注 指针网络 片段分类
    优点 使用简单,准确率高 能够在解决实体重叠问题的同时保证较高的准确率 可以直接得到实体,不需要从标签到实体的转换过程
    缺点 无法解决实体重叠问题 1.容易遇到标签不平衡问题。2.在使用解码层得到指针网络的多个标签序列之后还需要专门的程序根据指针网络确定实体 文本过长时会大大增加计算量

    4 实体关系抽取任务主要模型总结

    4.1 SOTA模型(2020.6)

    实体关系抽取任务SOTA排行榜上目前最佳的模型,这几个模型分别在不同的数据集上达到了SOTA效果:

    模型 ETL-span HBT SpERT DYGIE
    模型结构 基于共享参数的联合模型 基于共享参数的联合模型 基于参数共享的联合模型 基于参数共享的联合模型
    解码方式 指针网络 指针网络 片段分类 片段分类
    达到SOTA效果的数据集 NYT-single NYT,WebNLG CoNLL04 ACE04,ACE05
    论文 Joint Extraction of Entities and Relations Based ona Novel Decomposition Strategy A Novel Hierarchical Binary Tagging Framework forJoint Extraction of Entities and Relations Span-based Joint Entity and Relation Extraction withTransformer Pre-training A General Framework for Information Extractionusing Dynamic Span Graphs

    ETL-span

    该模型的抽取方案借鉴了 seq2seq 的概率图思路。在 seq2seq 解码器的解码过程是层次递归进行的的,其实际上是在建模
    P(y1,y2,...,ynx)=P(y1x)P(y2x,y1)...P(ynx,y1,y2,,yn1) P(y_1,y_2,...,y_n|x)=P(y_1|x)P(y_2|x,y_1)...P(y_n|x,y_1,y_2,…,y_n-_1)
    而对于信息抽取任务,三元组的抽取过程也能够转化为上述层次递归的方式进行抽取,对于三元组 (s, o, p),其抽取过程可以建模为:
    P(s,p,o)=P(s)P(os)P(ps,o) P(s,p,o)=P(s)P(o|s)P(p|s,o)
    即首先预测 s(主体),然后根据 s 来预测该 s 所对应的 o (客体)及 p(关系)。具体的抽取过程如下图所示,抽取过程的开始首先预测出句子中所有的主体,Trump和Queens。然后把每一个主体作为触发词,预测该主体对应的客体及关系。在训练阶段模型会从句子中随机选取一个主体来训练,通过多个epoch的训练达到遍历全部数据的目的。预测阶段会逐一遍历每一个主体,预测出每个主体对应的客体和关系。

    在这里插入图片描述

    由于抽取 主体以及抽取主体所对应的客体及关系的过程均是非唯一性的(存在实体及关系重叠问题),因此,作者采用了 MRC 中常用的指针网络的抽取方法,即仅抽取答案的开始和结束位置,且把预测开始和结束位置的任务转化为了预测每一个位置是否为开始位置或结束位置(将softmx换成sigmoid)。模型的整体结构如下图所示:

    在这里插入图片描述

    整个模型可以分为三大部分,第一部分Shared Encoder,是模型的编码层,将输入的每个字编码为字向量。第二部分HE Extractor使用Shared Encoder的结果抽取(s,o,p)三元组中的主体s,第三部分TER Extractor也使用Shared Encoder的结果作为输入,同时还要使用HE Extractor抽取出的s作为触发词,抽取o和p。模型的loss是HE Extractor和TER Extractor两部分的loss之和,通过共享参数的方式训练。

    HE Extractor和TER Extractor都使用了HBT结构来抽取结果(这里的HBT结构和下文中提到的HBT模型之间没有关系),这个HBT结构由两个双向LSTM组成,分别用来预测目标实体的开始位置和结束位置,预测结束位置的LSTM会使用预测开始位置的LSTM的结果作为特征,通过增加约束来避免不合理的预测结果,比如预测的结束位置在开始位置前面。

    HBT

    该模型的论文指出,当前处理关系重叠得方法存在一系列问题,大部分模型都是先抽取出实体对,然后将关系视为要分配给实体对的离散标签。 这种表述使关系分类成为困难的机器学习问题。 例如,当在相同上下文中的同一实体参与多个(在某些情况下超过五个)有效关系(即重叠的三元组)时,分类器需要大量的监督学习才能确定上下文与关系的对应关系。

    该模型设计了一种 Hierarchical Binary Tagging 的框架,这个框架将三元组的抽取任务建模为三个级别的问题,从而能够更好解决三元组重叠的问题。其核心观点就是不再将关系抽取的过程看作实体对的离散标签,而是将其看作两个实体的映射关系,即f(s,o)−>r,整个三元组的过程可以概括为:

    • 抽取三元组中的 subject

    • 针对每一个 fr(⋅),抽取其对应的 object

    这种思想和上面的ETL-span模型的思想极为相似,HBT模型也是先抽取出主体,然后使用主体作为触发词来抽取主体对应的客体和关系。

    在这里插入图片描述

    模型的整体结构如上图所示,主要包括如下几个部分:

    • BERT Encoder:通过 BERT 得到每个词的词表征,把BERT的输出当作词向量使用
    • Subject Tagger:该部分用于识别所有可能的subject对象。其通过对每一个位置的编码结果用两个分类器(全连接层)进行分类,来判断其是否是实体的开始或结束位置,激活函数为 sigmoid,计算公式如下:

    pistart_s=σ(Wstartxi+bstart) p^{start\_s}_i=σ(W_{start}x_i+b_{start})

    piend_s=σ(Wendxi+bend) p^{end\_s}_i=σ(W_{end}x_i+b_{end})

    • Relation-specific Object Taggers:针对每一个 subject,都需要对其进行之后的 object 进行预测。由图中可知,其与 Subject Tagger 基本一致,主要区别在于每一个关系类别独享一组 object 分类器,同时还要将subject作为特征和BERT词向量拼接后作为输入,计算公式如下:
      pistart_o=σ(Wstartr(xi+vsubk)+bstartr) p^{start\_o}_i=σ(W^r_{start}(x_i+v^k_{sub})+b^r_{start})

      piend_o=σ(Wendr(xi+vsubk)+bendr) p^{end\_o}_i=σ(W^r_{end}(x_i+v^k_{sub})+b^r_{end})

    DYGIE

    DYGIE是一个多任务的信息抽取框架,该框架可以在不经过修改的情况下,同时完成命名实体识别、关系抽取和共指消解三个不同的NLP任务。DYGIE构建了一个可以更新的动态图,以实体span作为图中的节点,用关系信息和共指信息来构建边,span的表示可以通过从关系信息和共指信息获得的上下文信息进行更新优化。

    在这里插入图片描述

    有许多研究表明多任务学习通过各任务之间的信息交互,使得整体效果好于单独执行一个任务的效果。上图的例子展示了一个多任务学习的示例,该示例同时执行命名实体识别、关系抽取和共指消解三个任务。这里有两个句子,只关注第二个句子的信息无法预测出“This thing”和“it”这两个实体的实体标签。然而,由于父节点“car”的类型为VEH,因此预测“This thing”和“it”这两个实体类型也是VEH,通过共指关系帮助解决了命名实体识别问题。类似地,“Tom”位于”Starbucks”这个地点,根据“Mark”和“Tom”的关系(都是人名)可以推断出“Mark”也在”Starbucks”,这是通过命名实体识别获得的实体类型信息辅助解决了关系抽取任务。

    DyGIE模型首先枚举出每个句子中所有的text span,然后识别出最可能表示实体的text spans,并将这些spans作为图中的节点。根据这些节点,预测出节点间的共指链接和关系链接,然后使用这些链接作为图中的有可信度权重的边。图构建完成后,节点使用从相邻的关系类型和共指实体传播来的信息,对节点的向量表示进行更新优化。优化后的span表示用于多任务框架,以对实体类型、关系类型和共指链接进行预测。

    下图展示了DyGIE的训练过程:

    在这里插入图片描述

    第一层是输入的原始数据,Token Representation层是一个编码层,对词向量进行编码。Span Representation层将编码层的输出结果与其他信息(span长度等)拼接得到实体span的原始输入gi0g_i^0。Coreference Propagation层通过共指链接更新span表示,加入共指信息,共迭代N次,得到giNg_i^N。Relation Propagation层通过关系链接更新span表示,加入关系信息,迭代M次,得到giN+Mg_i^{N+M}。Final Prediction根据最终形态的span表示giN+Mg_i^{N+M},完成命名实体识别,关系抽取和共指消解三个任务。

    对于命名实体识别任务,使用giN+Mg_i^{N+M}作为输入,为每个span sis_i计算其为每个实体类别的分数 PE(i)P_E(i)

    对于关系分类任务,使用一对span表示,giN+Mg_i^{N+M}giN+Mg_i^{N+M}作为输入,为每个span对 sis_isjs_j计算其为每个关系类别的分数 PR(i,j)P_R(i,j)

    对于共指消解任务,使用Coreference Propagation层的结果,为每个span对 sis_isjs_j计算其为共指关系的分数 pair(giN,gjN)(g_i^N,g_j^N)

    SpERT

    SpERT是一个使用片段分类作为解码方式的联合模型,SpERT分为span classification 、Span Filtering和relation classification三层结构。span classification 和 Span Filtering层对实体进行筛选和识别,relation classification 进行关系抽取。模型架构如下图所示:

    在这里插入图片描述

    SpERT使用bert获取文本的向量表示(e1,e2,...en,c)(e_1,e_2,...e_n,c)。之后,使用片段分类的方法,用枚举的方式将所有可能的文本片段列举出来,然后计算文本片段是实体的概率,计算实体概率时用到了token的向量、文本片段长度和特殊标记cls作为特征,拼接后作为span分类阶段的输入。为了减小计算量,模式设置了文本片段的最大长度。

    在获得实体表示后,SpERT通过将实体两两配对然后对每一对实体对求它们之间关系的概率。考虑到需要分类的关系太多,SpERT在关系分类过程中还使用了负采样。

    4.2 其他经典模型

    另外还有一些模型没有达到SOTA效果,但是其思路非常值得借鉴

    模型 DuIE_baseline multi-head+AT PASL Multi-turn QA
    模型结构 基于联合解码的联合模型 基于参数共享的联合模型 基于联合解码的联合模型 基于参数共享的联合模型
    解码方式 指针网络 序列标注 序列标注 指针网络
    论文 Joint entity recognition and relation extraction as amulti-head selection problem Joint Extraction of Entities and Overlapping Relations Using Position-Attentive Sequence Labeling Entity-Relation Extraction as Multi-turn Question Answering

    DuIE_baseline

    该模型是百度20年关系抽取比赛的baseline模型,采用了指针网络,联合解码的方法,统一了实体识别和关系分类两个过程。DuIE_baseline的结构很简单,使用Ernie作为编码层,对字级别token进行编码,解码层是一个全连接层,以Ernie字向量作为输入,输出一个多层label实现实体关系抽取。

    该模型最大亮点是设计了一个简单而有效的标注框架,该框架使用token level 的多label分类,即每一个token对应多个label。假设一共存在R个关系,那label一共有(2*R+2)层,如果是subject中的第一个token,则标记为「B-S-关系名称」;如果是object中的第一个token,则标记为「B-O-关系名称」;其余的实体token标记为「I」,不隶属于实体的token标记为「O」;

    如下图示例中的2个spo三元组,「王雪纯-配音-晴雯」和「王雪纯-配音-红楼梦」,存在两个关系「配音-人物」和「配音-作品」,对于subject「王雪纯」,「王」是一个复合标签,同时标记为「B-S-配音-作品」和「B-S-配音-人物」;其余的「雪」「纯」用「I」来标注;对于object「红楼梦」,「红」标注为「B-O-配音-作品」;其余的「楼」「梦」用「I」来标注;对于object「晴雯」,「晴」标注为「B-O-配音-人物」;其余的「雯」用「I」来标注。

    在这里插入图片描述

    Multi-turn QA

    该模型将实体关系联合抽取的任务当作一个多轮问答问题来处理,即每种实体和每种关系都用一个问答模板进行刻画,从而这些实体和关系可以通过回答这些模板化的问题来从上下文中进行抽取。

    Multi-turn QA的抽取过程如下图所示:

    在这里插入图片描述

    Multi-turn QA可以分为头实体抽取和关系与尾实体抽取两部分。

    头实体抽取:由于每一轮多轮对话都需要一个头实体来作为 trigger,因此需要事先抽取句子中所有的头实体,而抽取实体的过程可以看作一个抽取 entity_question 答案的过程。所有 entity_question 都存放在EntityQuesTemplates 中,每一种 entity_question 都对应一类实体的抽取

    关系与尾实体抽取:ChainOfRelTemplates 定义了一个关系序列,我们需要根据这个关系序列来进行多轮问答。同时,它也定义了每种关系的模板,为了生成对应的问题,要在模板槽(slot)中插入之前抽取的实体。然后,关系 REL 和尾实体 e 就能通过回答问题同时被抽取出来。如果回答是 None,就说明没有答案,即只有同时抽出头实体,以及头实体存在对应的关系和尾实体被抽出时,才算是成功抽出一个满足条件的三元组。

    本文的思想和ETL-span,HBT两个模型非常相似。都是先抽取一个头实体作为触发词,然后在从句子中抽取这个头实体对应的尾实体和关系。这种抽取思路的主要优点是能够整合对关系分类任务重要的一些先验信息,这些信息可以帮助解决现有关系抽取模型难以解决的问题,如远距离实体对、关系重叠问题。

    展开全文
  • 常用最优化方法

    千次阅读 2018-05-18 14:14:15
    熟悉机器学习的童鞋都知道,优化方法是其中一个非常重要的话题,最常见的情形就是利用目标函数的导数通过多次迭代来求解无约束最优化问题。实现简单,coding方便,是训练模型的必备利器之一。 2. 几个数学概念 1)...
  • 几个优化方法

    千次阅读 2017-04-01 11:02:55
    常见的几类优化算法:梯度下降法(GD)、批量梯度下降法(BGD)、随机梯度下降法(SGD)、牛顿法、拟牛顿法、共轭梯度法、Momentum、Nesterov Momentum、Adagrad、Adadelta。接下来一一介绍。 一、梯度下降梯度下降...
  • 组合查询这个功能的实现,在VB中大家已经体验过了,其中大量的重复代码,极大地影响了系统的性能,这篇博客将为大家介绍一种面向对象的VB.NET版组合查询,其中结合模板方法模式对组合查询进行了优化,什么是模板...
  • 文章目录优化方法概述整体框架SGDMomentum理解指数加权平均偏差修正AdaGradAdaDelta/RMSPropAdam(Adaptive Moment Estimation)...模型优化方法的选择直接关系到最终模型的性能。时候效果不好,未必是特征的问题或...
  • 机器学习模型优化模型融合

    万次阅读 多人点赞 2018-01-07 15:37:24
    前言:在机器学习训练完模型之后我们要考虑模型的效率问题,常用的模型效率分析手段: 研究模型学习曲线,判断模型是否过拟合或者欠拟合,并做出相应的调整; 对于模型权重参数进行分析,对于权重绝对值高/低的...
  • CDMA网络RF优化方法

    千次阅读 2009-08-04 11:57:00
    摘要:本文介绍了CDMA网络RF优化的指标,...为工程实践提供了一些参考价值的具体方法,并为优化软件开发提供了工程实践基础。关键词:CDMA,RF(射频)优化,区域优化,全域优化1.引言目前CDMA技术已成为中国移动通
  • 关系模型

    千次阅读 2016-08-30 19:38:49
    关系实际上就是关系模式在某一时刻的状态或内容。也就是说,关系模式是型,关系是它的值。
  • 学习关系代数优化的感受

    千次阅读 2013-09-02 23:40:32
    (这时候应该回归具体和实践,哪怕是最简单的和重复的,在这个基础上才能产生进一步抽象的可能) 2、把书看了两遍之后,感觉好多了。 3、把握好关键后,也即是最花时间的是笛卡尔积和连接操作,优化的目标...
  • 无约束优化方法

    千次阅读 2018-09-15 20:50:17
    1.1问题定义 1.1.1优化问题定义 ...可行域这个东西,等式约束,也不等式约束,或者没有约束,这次的精力主要还是集中在无约束的优化问题上,如果精力,再讨论约束的。 1.1.2最优化方法定义 优化...
  • 层次数据模型     定义:层次数据模型是用树状<...其实层次数据模型就是的图形表示就是一个倒立生长的树,由基本数据结构中的树(或者二叉树)的定义可知,每棵树都且仅一个根节点,其余的...
  • 几种常见梯度优化方法

    千次阅读 2018-07-09 15:40:29
    优化算法是机器学习领域的重要内容,本文介绍几种常见的无约束的...关于无约束问题优化方法的一般讨论请参考此文。 梯度下降法 动量法 共轭梯度法 自然梯度法 梯度下降法 动量法 共轭梯度法 自然梯度法...
  • Matlab数学建模(五):优化模型之标准模型

    万次阅读 多人点赞 2018-11-18 18:43:41
    (1)了解最优化模型。 (2)掌握线性规划的优化求解。 (3)掌握整数规划的优化求解。 (4)了解Matlab的图形化应用。 二、实例演练  1、谈谈你对最优化模型的了解。  最优化模型是数学建模大赛中最常见的...
  • 实体-关系图转换为关系模型

    千次阅读 2019-04-25 16:54:19
      由于目前使用的数据库基本上都是关系数据库,因此首先需要将E-R图转换为关系模型,然后根据具体DBMS的特点和限制转换为特定的DBMS支持下的数据模型,最后进行优化。 2.E-R图向关系模型的转换 2....
  • 概念模型与关系模型和关系规范化

    万次阅读 2017-05-20 16:18:34
    》概念模型  概念模型用于信息世界的建模,是实现现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言,因此概念模型一方面具有较强的语义...
  • 我们每个人都会在我们的生活或者工作中遇到各种各样的最...随着学习的深入,博主越来越发现最优化方法的重要性,学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法...
  • 优化方法:牛顿迭代法和拟牛顿迭代法

    万次阅读 多人点赞 2014-04-27 09:18:18
    http://blog.csdn.net/pipisorry/article/details/24574293牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods)牛顿法(Newton's method) ...它是一种在实数域和复数域上近似求解方程的方法方法使用函数
  • 业务流程管理模型优化设计

    千次阅读 2015-07-01 08:21:40
    在需求的驱动下,对业务流程管理模型进行优化,分析业务、表单、工作流三者关系,给出优化的设计方案。
  • 深度学习 | 训练及优化方法

    千次阅读 2019-06-17 21:03:23
    训练及优化方法深度网络优化方法优化及调试策略:实践流程梯度消失与梯度爆炸Sigmoid 激活函数问题ReLU参数初始化学习率迭代次数batch sizeBatch 方差与 learning rate 关系Large-batch 魔咒正则化正则化技术概述数据...
  • 关系数据库查询优化分析

    千次阅读 2008-01-07 12:52:00
    因此人们往往通过对查询语句进行优化来提高整个数据库的性能。举例来说,如果一个数据库表信息积累到上百万甚至是上千万条记录,全表扫描一次需要数十分钟,甚至数小时;但如果采用比全表扫描更好的查询策略,往往...
  • 看到一篇用工厂+策略模式优化 多If else的文章,感觉非常不错,文章地址如下: 代码重构:用工厂+策略模式优化过多的if else代码块 文章中利用工厂和策略模式对多个if else 语句进行了优化,其思路:1、定义一个...
  • 机器学习中常见的几种最优化方法

    万次阅读 2016-06-07 10:02:17
    1. 梯度下降法(Gradient Descent) ...4. 启发式优化方法  5. 解决约束优化问题——拉格朗日乘数法 我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题
  • 实体-关系模型 2.区分不同实体的依据是(B)。 A.名称B. 属性C. 对象 D.概念 3.关系数据模型是目前最重要的一种数据模型,它的三个要素分别为(B)。 A.实体完整、参照完整、用户自定义完整 B.数据结构、
  • 性能优化原则和优化模式

    千次阅读 2018-10-02 12:08:32
    一般而言,性能优化指降低响应时间和提高系统吞吐量两个方面,但在流量高峰时候,性能问题往往会表现为服务可用性下降,所以性能优化也可以包括提高服务可用性。在某些情况下,降低响应时间、提高系统吞吐量和提高...
  • 机器学习中常见的几种优化方法

    万次阅读 2016-06-08 15:11:36
    机器学习中常见的几种优化方法 声明:本文为转载,原文作者为:Poll的笔记,原文链接为:http://www.cnblogs.com/maybe2030/p/4751804.html#rd,尊重原创 阅读目录 1. 梯度下降法(Gradient ...
  • 关系数据库的优化是一个和实际数据库结构密切相关的问题,在实际应用中应该结合具体的数据库服务器,深入的理解服务器的运作模式、资源配置,优化服务器的运行环境,选择合适的操作系统,最大限度的发挥服务器的性能...
  • 常见的几种最优化方法

    千次阅读 2017-06-30 22:18:51
    阅读目录 1. 梯度下降法(Gradient Descent) ...4. 启发式优化方法  5. 解决约束优化问题——拉格朗日乘数法  我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 299,624
精华内容 119,849
关键字:

关系模型优化有哪些具体方法