选择联系人_vue 选择联系人 - CSDN
精华内容
参与话题
  • 目录 一、瀑布模型 1.1什么是瀑布模型 1.2特点 1.3优缺点 1.4客户需求 ...三、增量模型 ...3.1什么是增量模型 3.2特点 3.3优缺点 3.4作用 四、螺旋模型 4.1什么是螺旋模型 4.2特点 4.3优缺点 4.4...

    目录

    一、瀑布模型

    1.1什么是瀑布模型

    1.2特点

    1.3优缺点

    1.4客户需求

    二、快速原型模型

    2.1什么是快速原型模型

    2.2优缺点

    2.3快速原型模型的思想产生、原理及运用方式

    2.4类型

    2.5开发步骤

    三、增量模型

    3.1什么是增量模型

    3.2特点

    3.3优缺点

    3.4作用

    四、螺旋模型

    4.1什么是螺旋模型

    4.2特点

    4.3优缺点

    4.4限制条件


    一、瀑布模型

    1.1什么是瀑布模型

    1970年温斯顿.罗伊斯提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型

    瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落

    瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动

    从本质来讲,它是一个软件开发架构,开发过程是通过一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,开发进程从一个阶段“流动”到下一个阶段,这也是瀑布开发名称的由来

    对于经常变化的项目而言,瀑布模型毫无价值

    1.2特点

    1、阶段间具有顺序性和依赖性

    该阶段具有两重含义

    1. 必须等前一阶段的工作完成后,才能开始后一阶段的工作
    2. 前一阶段的输出文档就是后一阶段的输入文档,因此只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果

    2、推迟实现的观点

    对于规模较大的软件项目来说,往往编码开始的越早,最终完成开发所需时间越长。因为前面阶段的工作没做或做的不扎实,过早地考虑进行程序实现,往往导致大量返工,有时甚至发生无法弥补的问题

    瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现

    清楚的区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想

    3、质量保证的观点

    为了保证所开发的软件的质量,在瀑布模型的每一个阶段都应坚持两个重要做法

    1. 每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务
    2. 每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误

    传统的瀑布模型过于理想化,实际的瀑布模型是带"反馈环"的。如图所示(图中实线箭头表示开发过程,虚线箭头表示维护过程),当在后面阶段发现前面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品后再回来继续完成后面阶段的任务

    瀑布模型是文档驱动的模型,遵守这个约束可使软件维护变得比较容易一些,从而显著降低软件预算

    1.3优缺点

    优点:

    • 项目提供了按阶段划分的检查点
    • 当前一阶段完成后,您只需要去关注后续阶段
    • 可在迭代模型中应用瀑布模型

    缺点:

    • 不适合需求模糊或需求经常变动的系统
    • 由于开销的逐步升级问题,它不希望存在早期阶段的反馈
    • 在一个系统完成以前,它无法预测一个新系统引入一个机构的影响
    • 用户可能需要较长等待时间来获得一个可供使用的系统,也许会给用户的信任程度带来影响和打击
    • 最终产品往往反映用户的初始需求而不是最终需求

    1.4客户需求

    对项目而言,是否使用这一模型主要取决于是否能理解客户的需求以及在项目的进程中这些需求的变化程度;对于经常变化的项目而言,瀑布模型毫无价值,可以考虑其他的架构来进行项目管理,比如螺旋模型

    瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:

    1. 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
    2. 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险
    3. 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果

    按照瀑布模型的阶段划分,软件测试可以分为单元测试集成测试系统测试

     

    二、快速原型模型

    2.1什么是快速原型模型

    快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集

    快速原型模型是增量模型的另一种形式,在开发真实系统之前,迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,在该原型的基础上,逐渐完成整个系统的开发工作

    它允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护

    2.2优缺点

    优点

    • 克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险
    • 适合预先不能确切定义需求的软件系统的开发

    缺点

    • 所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下
    • 使用前提是要有一个展示性的产品原型,一定程度上可能会限制开发人员的创新

    2.3快速原型模型的思想产生、原理及运用方式

    1、思想产生

    在需求分析阶段得到完全、一致、准确、合理的需求说明十分困难

    获得一组基本需求说明后,就快速地使其“实现”,通过原型反馈,加深对系统的理解满足用户基本要求,使用户在试用后对需求说明进行补充和精确化,从而获得合理完整、现实可行的需求说明

    再把快速原型思想用到软件开发的其他阶段,向软件开发的全过程扩展

    先用相对少的成本,较短的周期开发一个简单的、但可以运行的系统原型向用户演示或让用户试用,以便及早澄清并检验一些主要设计策略,在此基础上再开发实际的软件系统

    2、原理

    利用原型辅助软件开发

    经过简单快速分析快速实现一个原型,用户与开发者在试用原型过程中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,最终提高软件质量

    3、运用方式

    由于运用原型的目的和方式不同,在使用原型时也采取不同的策略

    • 抛弃策略:将原型用于开发过程的某个阶段,促使该阶段的开发结果更加完整、准确、一致、可靠,该阶段结束后,原型随之作废。探索型和实验型就是采用此策略的
    • 附加策略:将原型用于开发的全过程,原型由最基本的核心开始,逐步增加新的功能和新的需求,反复修改反复扩充,最后发展为用户满意的最终系统,演化型快速原型就是采用此策略

    采用何种形式、何种策略运用快速原型主要取决于软件项目的特点、可供支持的原型开发工具和技术等,根据实际情况的特点决定

    2.4类型

    在软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性

    探索型

    这种原型目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性

    实验型

    这种原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠

    进化型

    这种原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统

    2.5开发步骤

    1、快速分析

    在分析人员与用户密切配合下,迅速确定系统的基本需求,根据原型需要体现的特征描述基本需求以满足开发原型的需要

    2、构造原型

    在快速分析的基础上,根据基本需求说明尽快实现一个可行的系统

    要求具有强有力的软件工具的支持,并忽略最终系统在某些细节上的要求,主要考虑原型系统能够充分反映所要评价的特性

    3、运行原型

    发现问题,消除误解,开发者与用户充分协调

    4、评价原型

    在运行的基础上,考核评价原型的特性,分析运行效果是否满足用户的愿望,纠正过去交互中的误解与分析中的错误,增添新的要求,并满足因环境变化或用户的新想法引起的系统要求变动,提出全面的修改意见

    5、修改

    根据评价原型的活动结果进行修改

    若原型未满足需求说明的要求,说明对需求说明存在不一致的理解或实现方案不够合理,根据明确的要求迅速修改原型

    快速原型模型不带反馈环,软件产品的开发基本上是线性顺序进行的

    快速原型的本质是"快速"。开发人员应尽可能地建造出原型系统,以加速软件开发过程,节约软件开发成本

    原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃

     

    三、增量模型

    3.1什么是增量模型

    增量模型也称渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能

    使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能

    把软件产品分解成增量构件时,唯一必须遵守的约束条件是,当把新构件集成到现有构件中时,所形成的产品必须是可测试的

    瀑布模型或快速原型模型目标是一次就把一个满足所有需求的产品提交给用户

    增量模型把整个软件产品分解成许多个增量构件,分批地逐步向用户提交产品

    3.2特点

    把瀑布模型的顺序特征与快速原型法的迭代特征相结合

    将软件看作一系列相互联系的增量,在开发过程的各次迭代中,每次完成其中的一个增量

    风险更大的增量模型

    确定用户需求后就着手拟定第一个构件的规格说明文档,完成后规格说明组转向第二个构件的规格说明文档,同时设计组开始涉及第一个构件

    使用该方法将不同的构件并行构建,可能加快工程进度,但将冒构建无法集成到一起的风险

    3.3优缺点

    优点

    1. 能在较短的时间内向用户提交可完成部分工作的产品
    2. 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展
    3. 以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统
    4. 开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整

    缺点

    1. 由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构
    2. 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性
    3. 如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程

    3.4作用

    1、开发初期的需求定义只是用来确定软件的基本结构,使得开发初期用户只需要对软件需求进行大概的描述;而对于需求的细节性描述,则可以延迟到增量构件开发时进行,以增量构件为单位逐个地进行需求补充。这种方式能够有效适应用户需求的变更

    2、软件系统可以按照增量构件的功能安排开发的优先顺序,并逐个实现和交付使用。不仅有利于用户尽早用上系统,能够更好地适应新的软件环境,而且在以增量方式使用系统的过程中,还能获得对软件系统后续构件的需求经验

    3、软件系统是逐渐扩展的,因此开发者可以通过对诸多构件的开发,逐步积累开发经验。实际上,增量式开发还有利于技术复用,前面构件中设计的算法、采用的技术策略、编写的源码等,都可以应用到后面将要创建的增量构件中去

    4、增量式开发有利于从总体上降低软件项目的技术风险。个别的构件或许不能使用,但一般不会影响到整个系统的正常工作

    5、实际上,在采用增量模型时,具有最高优先权的核心增量构件将会被最先交付,而随着后续构件不断被集成进系统,这个核心构件将会受到最多次数的测试。这意味着软件系统最重要的心脏部分将具有最高的可靠性,这将使得整个软件系统更具健壮性

     

    四、螺旋模型

    4.1什么是螺旋模型

    螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径

    螺旋模型是快速原型模型以进化的开发方式为中心,在每个项目阶段使用瀑布模型法。该模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。软件开发过程每迭代一次,软件开发又前进一个层次。用螺旋模型的软件过程如下

    简化的螺旋模型

    完整的数据模型

     

    图中带箭头的点划线的长度代表当前累计的开发费用,螺旋线的角度值代表开发进度,螺旋线的每个周期对应于一个开发阶段

    图中的四个象限代表了以下活动

    1. 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件
    2. 风险分析:分析评估所选方案,考虑如何识别和消除风险
    3. 实施工程:实施软件开发和验证
    4. 客户评估:评价开发工作,提出修正建议,制定下一步计划

    4.2特点

    螺旋模型在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定

    螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应,因此特别适用于庞大、复杂并具有高风险的系统

    4.3优缺点

    优点

    1. 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标
    2. 减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险
    3. 在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别

    缺点

    1. 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失
    2. 过多的迭代次数会增加开发成本,延迟提交时间

    4.4限制条件

    1. 螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发
    2. 如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目
    3. 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险

    一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段

    展开全文
  • 增量式开发的优点

    千次阅读 2004-06-16 15:21:00
    增量式开发的优点未经允许,严禁转载本栏目内容本文经许可转载自软件工程专家网www.21cmm.com,未经CSDN许可,请勿随便转载,谢谢合作 统计质量控制之下的增量式开发(incremental development)是软件项目建立和保持...

    增量式开发的优点

    未经允许,严禁转载本栏目内容

    本文经许可转载自软件工程专家网www.21cmm.com

    未经CSDN许可,请勿随便转载,谢谢合作

      统计质量控制之下的增量式开发(incremental development)是软件项目建立和保持管理控制的净室途径。增量式开发是20世纪70年代早期由Mills提出的。但直到80年代末,当Mills和他的助手们的净室论文和专项报告开始出现的时候才获得认同。Fred Brooks描述了增量式开发方法的深刻影响,针对该方法在软件实践方面的作用,给出了影响广泛的评论:“没有银弹:软件工程的本质和偶然性。”

      Brooks的观察在工业实践中得到了证实。增量式开发有助于早期的和连续的质量评估、用户反馈和方便的开发进度的过程改进。增量式设计方法避免了在开发周期中部件集成之后风险的继承。而且增量式开发允许在整修开发周期过程中需求变化的系统协调。

      增量式开发的技术基础是引用透明性特征。在软件开发的前后,这种特征要求规范及其实现定义了同样的数学函数。当拥有了这种特征时,设计就能显示出与它的规范的一致性。

      大的软件系统由各个部分组成。系统各个部分组成的方式对项目的成功有重要的影响。增量式自顶向下的开发途径表现为软件系统的已开发和已测试部分作为功能累积子集的序列。在最早增量中开发了一个小系统,然后把功能添加到每一个后续增量中直到系统完成。这种软件系统的控制增长方式有利于客房、管理者,同样有利于技术人员。

    进展的可见性

      利用增量式开发,每一步增量实现了一个或多个最终用户功能。每一步增量包含所有早期的已开发的功能集加上一些新的功能;系统在逐步累积的增量中增长。例如,在早期增量结束时,开发者很有信心地说:系统的20%已100%完成了,而不是推测系统已完成了20%。

    智能控制

      增量式开发通过引用透明性,实现了整个系统开发过程中的智能控制。当在后续增量待实现的函数的子规范被嵌入当前增量流程逻辑中时,这种特性,即等式的等量替换令人满意。当拥有引用透明性时,一个系统的部件无需回溯就能根据其子规范得以实现。无需重做前期增量。这里策略有利于在一个完整系统中对每个增量进行正确性验证。

    增量系统集成

      净室增量式开发允许在整修开发生命期引用透明的用户函数增量的连续集成。因为每一步增量设计基于一个已验证的子规范和前期增量已测试的接口,因此几乎没有更深的设计和接口错误。较好的定义增量贯穿于整修系统开发过程,系统在良好定义的增量中深化。测试和验证工作始于开发周期早期。

    连续质量反馈贯穿统计过程控制

      已在净室中实践的增量式开发为统计过程控制提供了基础。每一个净室增量都是过程的一个完整周期,包含规范、开发和新的用户函数的验证,加上到目前为止所有已工作的测试。作为统计过程控制的典型,把过程的每一次反复的性能度量与性能目标相比较,以决定是否过程一直在控制之下(即:是否正如所期望的那样发生)。

      净室软件小组常使用在测试中的开发性能度量作为过程控制的标准。通常使用的度量包括每千行代码的错误数、失效的间隔时间(MTTF)、可靠性及可信性。其他过程控制方法或许依赖于所管理的事务,而不是产品的质量。进度一致性一、预算一致性瑟整体计划的一致性等等,都是按增量的实际性能与目标性能相比较而言。净室增量度量依据的标准描述了过程控制的具体级别,要按计划继续该项目,开发小组要求此级别。如果标准不符合,开发小组能从增量中检测执行数据,确定问题所在,必要时调整项目计划,修改软件开发过程,避免此类问题的再次发生。例如,如果增量的测试提示过程失去控制(如:质量标准不符合),开发者们应停止测试,返回设计阶段,如果过程是在控制之下,下一歨增量工作才能继续。

      统计过程控制(Statistical Process Control ,SPC)是为数据悼念和分析提供较好的开发技术的成熟的工程实践。丰富的方法和工具支持是希望从事更高实践的设计者可利用的。然而,SPC的基本实践要求少量的投资和努力就能产生充足的回报。统计过程控制应用的基本任务很简单:每一过程周期的性能度量,比较实际性能与预先定义的目标性能,确定不可接受偏差的原因,以及通过过程改变改进将来的性能。

      例如,如果一个净室小组开发的一个产品在测试中习惯于每千行代码有三个或更少失效,那么一个增量每千行有5个失效或许认为是不可接收的偏差。在调查中,小组或许发现失效是由错误引起的,实际上在验证过程中错误才能被发现,不能证实代码改变的正确性。从这种分析中,小组认识到直到所有错误代码的改变被验证为正确之前这种验证不视为完整的。小组相应地修改验证过程,决心在将来的增量设计中避免因不正确的补丁而引起的失效。以这种方式,每步增量中产生的反馈用于改进下一歨增量过程。

      统计过程控制的能力取决于针对正在进行的计划性能与实际性能的对比检验。确定造成不可接受的偏差的原因,制定专门过程改进措施,以重新获得控制或改善控制。净室软件小组实践这些基本原理,并加以发展。每个净室增量都是针对完善的期望来测试,任何失效都被认为是不可接受的。仔细分析由错误发生的失效与开发过程的关系,错误的来源是什么?为什么在小组评审中错误被忽视?如何改进过程避免相同错误站起来重犯?净室软件小组真诚地追求完美,统计过程控制是衡量和提高小组成果的工程规范。

    用户使用中不断的功能反馈

    增量式开发有助于用户对一个进货系统的执行功能做出尽早的不断的反馈,必要时允许改变。因为增量执行于系统环境并代表了用户功能的子集,早期的增量能通过用户对系统功能性和实用性的检测来反馈。这种反馈有助于避免开发出失效的系统和建立用户可接受的最终产品。

    变更的适应性

      在系统需求和项目环境中增量式开发允许不可避免变更的系统适应性。在每一步增量完成时,系统需求的积累变更所产生的影响能根据当前规范和增量设计来评估。如果变更与将来增量想到独立,则通常与现已存在的增量开发计划相合并,并对进度和资源进行可能的调整。如果变更影响已完成的增量,自顶向下修改系统开发,通常重用绝大多数已存在的增量代码(通常是全部),按照要求的进度和资源来进行相应调整。

    进度与资源管理

      项目资源在增量式开发全过程中能在可控制的方式下分配。可用进度是决定待开发的增量数据和其规模的一个因素。在短进度中,小规模增量将有助于在增量交付与认证组之间维持充分的时间段,允许一个有序的测试过程。然而,这将给项目开发小组设计和实现更大、更复杂的增量带来更多负担。进度和复杂性的折衷能够反映增量式开发计划。另外,从后续增量得到的反馈,为过程和产品性能的目标度量提供了管理,以允许在开发和测试中对不足和意外收获的适应。

    展开全文
  • 增量式开发的优点 (转)[@more@]增量式开发的优点未经允许,严禁转载本栏目内容 本文经许可转载自软件工程专家网www.21cmm.com, 未经CSDN许可,请勿随便转载,谢谢合作ASP?page=/bbs/inde...
    增量式开发的优点 (转)[@more@]

    增量式开发的优点

    未经允许,严禁转载本栏目内容

    本文经许可转载自软件工程专家网www.21cmm.com

    未经CSDN许可,请勿随便转载,谢谢合作ASP?page=/bbs/index.asp?Type=D">

      统计质量控制之下的增量式开发(incremental development)是软件项目建立和保持管理控制的净室途径。增量式开发是20世纪70年代早期由Mills提出的。但直到80年代末,当Mills和他的助手们的净室论文和专项报告开始出现的时候才获得认同。Fred Brooks描述了增量式开发方法的深刻影响,针对该方法在软件实践方面的作用,给出了影响广泛的评论:“没有银弹:软件工程的本质和偶然性。”

      Brooks的观察在工业实践中得到了证实。增量式开发有助于早期的和连续的质量评估、用户反馈和方便的开发进度的过程改进。增量式设计方法避免了在开发周期中部件集成之后风险的继承。而且增量式开发允许在整修开发周期过程中需求变化的系统协调。

      增量式开发的技术基础是引用透明性特征。在软件开发的前后,这种特征要求规范及其实现定义了同样的数学函数。当拥有了这种特征时,设计就能显示出与它的规范的一致性。

      大的软件系统由各个部分组成。系统各个部分组成的方式对项目的成功有重要的影响。增量式自顶向下的开发途径表现为软件系统的已开发和已测试部分作为功能累积子集的序列。在最早增量中开发了一个小系统,然后把功能添加到每一个后续增量中直到系统完成。这种软件系统的控制增长方式有利于客房、管理者,同样有利于技术人员。

    进展的可见性

      利用增量式开发,每一步增量实现了一个或多个最终用户功能。每一步增量包含所有早期的已开发的功能集加上一些新的功能;系统在逐步累积的增量中增长。例如,在早期增量结束时,开发者很有信心地说:系统的20%已100%完成了,而不是推测系统已完成了20%。

    智能控制

      增量式开发通过引用透明性,实现了整个系统开发过程中的智能控制。当在后续增量待实现的函数的子规范被嵌入当前增量流程逻辑中时,这种特性,即等式的等量替换令人满意。当拥有引用透明性时,一个系统的部件无需回溯就能根据其子规范得以实现。无需重做前期增量。这里策略有利于在一个完整系统中对每个增量进行正确性验证。

    增量系统集成

      净室增量式开发允许在整修开发生命期引用透明的用户函数增量的连续集成。因为每一步增量设计基于一个已验证的子规范和前期增量已测试的接口,因此几乎没有更深的设计和接口错误。较好的定义增量贯穿于整修系统开发过程,系统在良好定义的增量中深化。测试和验证工作始于开发周期早期。

    连续质量反馈贯穿统计过程控制

      已在净室中实践的增量式开发为统计过程控制提供了基础。每一个净室增量都是过程的一个完整周期,包含规范、开发和新的用户函数的验证,加上到目前为止所有已工作的测试。作为统计过程控制的典型,把过程的每一次反复的性能度量与性能目标相比较,以决定是否过程一直在控制之下(即:是否正如所期望的那样发生)。

      净室软件小组常使用在测试中的开发性能度量作为过程控制的标准。通常使用的度量包括每千行代码的错误数、失效的间隔时间(MTTF)、可靠性及可信性。其他过程控制方法或许依赖于所管理的事务,而不是产品的质量。进度一致性一、预算一致性瑟整体计划的一致性等等,都是按增量的实际性能与目标性能相比较而言。净室增量度量依据的标准描述了过程控制的具体级别,要按计划继续该项目,开发小组要求此级别。如果标准不符合,开发小组能从增量中检测执行数据,确定问题所在,必要时调整项目计划,修改软件开发过程,避免此类问题的再次发生。例如,如果增量的测试提示过程失去控制(如:质量标准不符合),开发者们应停止测试,返回设计阶段,如果过程是在控制之下,下一歨增量工作才能继续。

      统计过程控制(Statistical Process Control ,SPC)是为数据悼念和分析提供较好的开发技术的成熟的工程实践。丰富的方法和工具支持是希望从事更高实践的设计者可利用的。然而,SPC的基本实践要求少量的投资和努力就能产生充足的回报。统计过程控制应用的基本任务很简单:每一过程周期的性能度量,比较实际性能与预先定义的目标性能,确定不可接受偏差的原因,以及通过过程改变改进将来的性能。

      例如,如果一个净室小组开发的一个产品在测试中习惯于每千行代码有三个或更少失效,那么一个增量每千行有5个失效或许认为是不可接收的偏差。在调查中,小组或许发现失效是由错误引起的,实际上在验证过程中错误才能被发现,不能证实代码改变的正确性。从这种分析中,小组认识到直到所有错误代码的改变被验证为正确之前这种验证不视为完整的。小组相应地修改验证过程,决心在将来的增量设计中避免因不正确的补丁而引起的失效。以这种方式,每步增量中产生的反馈用于改进下一歨增量过程。

      统计过程控制的能力取决于针对正在进行的计划性能与实际性能的对比检验。确定造成不可接受的偏差的原因,制定专门过程改进措施,以重新获得控制或改善控制。净室软件小组实践这些基本原理,并加以发展。每个净室增量都是针对完善的期望来测试,任何失效都被认为是不可接受的。仔细分析由错误发生的失效与开发过程的关系,错误的来源是什么?为什么在小组评审中错误被忽视?如何改进过程避免相同错误站起来重犯?净室软件小组真诚地追求完美,统计过程控制是衡量和提高小组成果的工程规范。

    用户使用中不断的功能反馈

    增量式开发有助于用户对一个进货系统的执行功能做出尽早的不断的反馈,必要时允许改变。因为增量执行于系统环境并代表了用户功能的子集,早期的增量能通过用户对系统功能性和实用性的检测来反馈。这种反馈有助于避免开发出失效的系统和建立用户可接受的最终产品。

    变更的适应性

      在系统需求和项目环境中增量式开发允许不可避免变更的系统适应性。在每一步增量完成时,系统需求的积累变更所产生的影响能根据当前规范和增量设计来评估。如果变更与将来增量想到独立,则通常与现已存在的增量开发计划相合并,并对进度和资源进行可能的调整。如果变更影响已完成的增量,自顶向下修改系统开发,通常重用绝大多数已存在的增量代码(通常是全部),按照要求的进度和资源来进行相应调整。

    进度与资源管理

      项目资源在增量式开发全过程中能在可控制的方式下分配。可用进度是决定待开发的增量数据和其规模的一个因素。在短进度中,小规模增量将有助于在增量交付与认证组之间维持充分的时间段,允许一个有序的测试过程。然而,这将给项目开发小组设计和实现更大、更复杂的增量带来更多负担。进度和复杂性的折衷能够反映增量式开发计划。另外,从后续增量得到的反馈,为过程和产品性能的目标度量提供了管理,以允许在开发和测试中对不足和意外收获的适应。


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-997162/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/10748419/viewspace-997162/

    展开全文
  • 翻译论文:Incremental Learning Through Deep Adaptation ... 该方法取得2017 cvpr Visual Decathlon Challenge 竞赛冠军 注:翻译中可能存在用词不准的情况,如有发现,欢迎留言 摘要: \quad鉴...

    翻译论文:Incremental Learning Through Deep Adaptation

    代码:https://github.com/rosenfeldamir/incremental_learning

    该方法取得2017 cvpr Visual Decathlon Challenge 竞赛冠军

    注:翻译中可能存在用词不准的情况,如有发现,欢迎留言
    ##摘要:
    \quad鉴于现有的训练过的神经网络,通常需要学习新的能力而不妨碍已经学过的人的表现。现有的方法要么学习次优解决方案,需要联合培训,要么大大增加每个添加域的参数数量,通常与原始网络一样多。我们提出了一种称为深度适应网络(DAN)的方法,将新学习的过滤器限制为现有过滤器的线性组合。 DAN在原始域中精确地保持性能,与标准微调程序相比,需要一小部分(通常取决于网络体系结构的13%)参数数量,并且在较少的培训周期内收敛到相当或更好的性能水平。当与标准网络量化技术结合使用时,我们将参数成本进一步降低到原来的3%左右,精度可以忽略不计或没有损失。可以控制学习的体系结构以在各种学习表示之间切换,从而使单个网络能够解决来自多个不同领域的任务。我们进行了广泛的实验,展示了我们的方法在一系列图像分类任务中的有效性,并探索了其行为的不同方面。

    ##1.引言
    \quad尽管深度神经网络在图像分类[1],语义分割[2],目标检测[3],语音识别[4]医学图像分析[5]等等各个领域继续显示出显着的性能增益,仍然是这样的情况,通常情况下,需要为每个新任务训练单独的模型。给定两种完全不同的形式或性质的任务,例如预测单词序列中的下一个单词与预测图像中某个对象的类别,理所当然的是每个都需要不同的体系结构或计算。一个更受限制的情景 - 我们打算在这项工作中处理的一个情景 - 是学习一个能够在多个相关领域运行良好的表示。这种情况最近由Rebuffi等人提出。 [6]作为多领域学习(MDL),将其置于多任务学习之外,即在同一个领域执行不同的任务。 MDL的一个例子是图像分类,其中图像可能属于不同的领域,例如绘图,自然图像等。在这样的设置中,期望解决方案可以自然地会:
    1)利用相同的计算流水线
    2)要求每个添加域的所需参数数量适度增加
    3)保留已学习数据集的性能(避免“灾难性遗忘”)
    4)逐步学习,放弃对联合训练的要求,例如在先前学过的任务的训练数据不再可用的情况下。
    \quad我们的目标是让网络在遵守上述要求的同时逐一学习一系列相关任务。我们这样做是通过增加一个已经学习过另一个任务的控制器模块学习新的任务。控制器模块的参数经过优化,以最大限度地减少新任务的损失。在这个阶段不需要原始任务的训练数据。原始任务数据上的网络输出保持原样;任何数量的控制器模块可以被添加到每一层,使得单个网络可以同时编码多个不同的域,其中从一个域到另一个域的转换可以通过设置二进制交换变量或自动控制来完成。由此产生的架构是DAN,表示深度自适应网络。我们证明了我们的方法在最近推出的Visual Decathlon Challenge [6]上的有效性,它的任务是生成一个分类器,以在十个不同的图像分类数据集上运行良好。虽然每个新学到的任务只增加13%的原始参数数量(具体数量取决于网络架构),但平均性能超过了微调所有参数的平均性能 - 没有加倍参数数量的负面影响和灾难性遗忘。在这项工作中,我们专注于各种数据集中的图像分类,因此在我们的实验中,“任务”一词是指特定的数据集/域。所提出的方法可扩展到多任务学习,例如执行图像分割和分类的单个网络,但本文不讨论这一点。
    \quad我们的主要贡献在于引入了一种改进的传输学习方法,这种方法与微调所有网络参数以实现新任务一样有效,能够精确保留旧任务性能,需要一部分(网络相关,通常为13%)在新权重方面的成本的分数,并且能够在任何数量的学习任务之间切换。 实验结果验证了该方法对各种图像分类数据集的适用性。
    \quad我们介绍了该方法的两个变体,一个完全参数化的版本,其优点如上所述,一个参数少得多,对于可比数目的参数显着地执行浅传递学习(即特征提取)。 在下一节中,我们将回顾一些相关的工作。 第3节详细介绍了所提出的方法。 在第4节中,我们展示了各种实验,包括与相关方法的比较,以及探索如何使我们的方法更有效的各种策略,随后进行了一些讨论和总结发言。

    ##2.相关工作
    ###2.1 多任务学习
    \quad在多任务学习中,目标是训练一个网络同时在同一个输入上执行多个任务。这通常通过对所有任务进行联合训练来完成。这样的训练是有利的,因为单个表示被用于所有任务。另外,据说多重损失是另一个正规化者。一些例子包括面部标志定位[7],语义分割[8],3D推理[9],对象和零件检测[10]等。虽然所有这些学习在同一数据集上执行不同的任务,但最近的工作[11]探索了单个网络在各种图像分类数据集上执行任务的能力。我们还旨在对来自多个数据集的图像进行分类,但我们建议以逐一学习而非共同学习的方式进行。与我们的方法相一致的是[6]中介绍的数据集特定的附加残差单元。我们与第4节中的这项工作进行了比较。我们的工作与[12]有些相似,其中两个网络共同训练,附加的“cross-stitch”单元允许来自一个网络的每一层具有输出的附加输入线性组合从另一个下层。但是,我们的方法不需要联合培训,并且需要的参数显着减少。
    ###2.2 增量学习
    \quad向神经网络添加新的能力常常导致所谓的“灾难性遗忘”[13],阻碍了网络工作在旧任务中表现良好的能力。解决这个问题最简单的方法是固定网络的所有参数,并使用其倒数第二层作为特征提取器,然后可以训练分类器[14],[15]。虽然保证不改变旧的性能,但观察到的结果大大低于对整个架构进行微调[3]。 Li和Hoiem [16]的工作提供了这种方法几种变体的简洁分类。另外,他们提出了一种微调整个网络的机制,同时通过引入一个损失函数来保证旧任务的性能,该函数鼓励旧特征的输出在新引入的数据上保持不变。虽然他们的方法为每个新任务添加了非常少量的参数,但并不能保证该模型在旧任务中保留其全部功能。 Rusu等人[17]显示新的表示可以与旧的表示一起添加,同时保持旧的任务性能不受影响。但是,这需要为每个添加的任务复制原始网络的参数数量。在Kirkpatrick等人[18]如果发现它们对于旧任务很重要,则神经元的学习率降低。我们的方法完全保留了旧的表示,同时导致每个添加任务的参数数量适度增加。最近,Sarwar等人[19]提出通过分享早期层次的子集和分裂后期层次来逐步培训网络。通过构建,他们的方法也保留了旧的表示。然而,正如他们的实验所显示的,重新学习新网络分支的参数,无论是用类似的分布随机初始化还是仅仅复制旧分支,都会导致比没有任何网络共享的学习更糟的性能。我们的方法在重新利用现有权重的同时,获得的结果平均好于简单的转移学习或从零开始学习。
    ###2.3 网络压缩
    \quad多篇关于减少神经网络的数量权重的文章已经发表[20],[21],增加加速[22]或避免过度拟合[23],使用编码, 量化,修剪和张量分解。 这些方法可以与我们的方法结合使用,以进一步改善结果,如我们在第4节中所示。
    ##3.方法
    \quad我们从一些符号开始。让T 成为一些需要学习的任务。具体而言,我们使用深度卷积神经网络(DCNN)去学习图像分类解决T 这个图像分类任务。当代大多数DCNN都遵循一个共同的结构:对于每一个输入 xix_{i},DCNN通过让输入在一组中 ll 个层 ϕi\phi _{i}i1...li\in 1...l 之间用交错的非线性传递来计算输入的表示形式。网络的初始(较低)层是计算块,例如:在更新的结构中与可选的残差单元进行卷积[24]。我们的方法同样适用于有或没有残差连接的网络。至少有一个全连接层 fif_{i}i1...ci\in 1...c 被附加到最后一个卷积层的输出。设 ΦFN=σ(ϕl)...σ(ϕ2)σ(ϕ1)\Phi _{FN}=\sigma(\phi _{l})\circ ...\sigma(\phi _{2})\circ\sigma(\phi _{1}) 是网络N 的所有卷积层的组成,由非线性交织。我们使用一种结构,所有的非线性σ都是相同的函数,没有可调参数。用ΦFN(x)\Phi _{FN}(x)表示网络N 的特征部分。类似的 ΦCN=fc...σ(f2)σ(f1)\Phi _{CN}=f _{c}\circ ...\sigma(f_{2})\circ\sigma(f _{1}) 表示N 的分类器部分,即N 的所有全连接层。然后N 被简单的定义为:N(x)=ΦCNΦFN(x)(1)N(x)=\Phi _{CN}\circ\Phi _{FN}(x)\quad\quad(1)为简洁起见,我们没有在上述符号中指定批量规范化层。如果网络是完全卷积的,可以放弃ΦCN\Phi _{CN}项[2]。
    ###3.1 调整表示
    \quad假设我们有两个任务 T1T_{1}T2T_{2} 需要学习,并且我们已经学习了一个基础网络 NN 来解决T1T_{1}。 我们假设T2T_{2}的一个很好的解决方案可以通过与NN具有相同架构但具有不同参数的网络来获得。 我们增加NN,以便它能够通过将控制器模块附加到其每个卷积层来解决T2T_{2}。 每个控制器模块使用 NN 的相应层的现有权重来创建适用于新任务T2T_{2}的新卷积滤波器:对于NN中的每个卷积层ϕl\phi_{l},令FlRC0×Ci×k×kF_{l}\in R^{C_{0}\times C_{i}\times k\times k}为该组的滤波器层,其中C0C_{0}是输出特征的数量,C1C_{1}是输入的数量,并且$ k\times k是内核大小(假设是方形内核)。 由b_{l}\in R^{C}表示偏差。 用F_{l}\in R^{C_{0}\times D}表示其行是F_{l}flattenedversion的滤波器平坦版本(原文为flattened version )的矩阵,其中D= C_{i}\times k\times k;; 令f\in R^{C_{i}\times k\times k}是一个来自F_{l}的滤波器,其值为:$f^{1}=\begin{pmatrix}
    f_{11}^{1} & \cdots &f_{1k}^{1} \
    & \ddots & \
    & & f_{kk}^{1}
    \end{pmatrix} ,\cdots ,f^{i}=\begin{pmatrix}
    f_{11}^{i} & \cdots & f_{1k}^{i} \
    &\ddots & \
    & & f_{kk}^{i}
    \end{pmatrix}\quad\quad(2) $KaTeX parse error: Can't use function '$' in math mode at position 2: f$̲的平坦版本(flattened…\widetilde{f}=(f_{11}{1},\cdots,f_{kk}{1},\cdots ,\cdots f_{11}^{i},\cdots ,f_{kk}^{i})\in R^{D}\quad\quad(3)KaTeX parse error: Can't use function '$' in math mode at position 22: …flattening”)行向量$̲\widetilde{f}$将…\widetilde{F_{l}^{a}}=W_{l}\cdot \widetilde{F_{l}}\quad\quad(4)KaTeX parse error: Can't use function '$' in math mode at position 4: 其中 $̲W_{l}\in R^{C_{…F_{l}^{a}=W_{l}\otimes F_{l}\quad\quad(5)KaTeX parse error: Can't use function '$' in math mode at position 26: …,我们实例化一个新的权重向量 $̲b_{l}^{a}$ 代替原来…x_{l+1}=\left [ \alpha (W_{l}\otimes F_{l})+(1-\alpha)F_{l} \right ]\ast x_{l}+\alpha b_{l}^{a}+(1-\alpha)b_{l}\quad\quad(6)KaTeX parse error: Can't use function '$' in math mode at position 47: …,这些行为是为新任务学习的。 $̲\quad$为了允许网络执行多…x_{l+1}=\sum_{n}^{i=1}\alpha {i}(F{l}^{a_{i}}\ast x_{l}+b_{l}^{i})KaTeX parse error: Can't use function '$' in math mode at position 3: 其中$̲F_{l}^{a_{i}}$,…y_{i}=F(x_{i};W_{i}+x_{i}\quad\quad(7)KaTeX parse error: Can't use function '$' in math mode at position 4: 其中 $̲x_{i}$ 是该层的输入,$…v=\begin{pmatrix}
    +1 & -1 &+1 \
    -1& -1 & -1\
    +1& -1 & +1
    \end{pmatrix}9delta会完美匹配这个切片。 另一方面,可以第一层的9个滤波器设置为delta函数,滤波器分别为\begin{pmatrix}
    +1 & 0 &0 \
    0& 0 & 0\
    0& 0 & 0
    \end{pmatrix} ,\begin{pmatrix}
    0 & +1&0 \
    0& 0 & 0\
    0& 0 & 0
    \end{pmatrix},\cdots,\begin{pmatrix}
    0 & 0 &0 \
    0& 0 & 0\
    0& 0 & +1
    \end{pmatrix}$$。这些过滤器涵盖了所有可能的 3x3 切片,因此它们不会影响表达。 然而,保持第一层固定,第二层需要创建一个过滤器来匹配 pp ,而 vv 直接表达了这一点。
    ####3.3.3 小样本集(Toy Dataset)
    \quad 为了进一步展示上述限制,我们构建了一个小样本分类任务。我们首先描述数据集和实验,然后讨论结果。
    \quad 任务是:给定一个尺寸为28x28x3的输入图像,预测图像中条的长度。在此数据集中,图像被限制为长度为 3k3\cdot k的1像素宽度条,其中在空白背景上 k{3,4,5,6,7}k\in \{3,4,5,6,7\},并且类是条的相应长度。条的长度被设置为3的增量,因为较小的条导致网络难以学习,这可能是最大化操作造成的。
    \quad 数据集由1000个例子组成,其中训练、测试集的划分为75%/ 25%。我们测试的网络故意非常简单:第一层包含一个5x5滤波器,第二层包含20个滤波器,接下来是两个全连接层,分别为320x50和50x5。
    \quad 我们创建了这个数据集的3个变体,以测试它的不同传输学习场景。数据集变体是(1)仅红色水平条,(2)仅红色竖条(被称为“转置”)和(3)仅绿色水平条(被称为“新通道”)。请注意,我们限制了我们的方法仅在第一层操作,在这种情况下归结为将滤波器的输出乘以标量并学习新的偏差。
    \quad 在所有情况下,该网络使用Adam [26]优化器(SGD在这种情况下不会收敛)训练了50次。我们测试了七个场景。这些涉及数据集中图像的不同组合,第一层的初始化以及优化程序可能会修改或不可修改哪些层。
    •原始:水平数据集,第一个过滤器固定到水平绿色栏,学习其他层
    •原创+学习:水平数据集,学习所有层
    •转置:转置数据集,第一个过滤器固定到一个水平栏,学习其他层
    •频道切换:新频道数据集,第一个过滤器固定到水平绿色栏,学习其他层
    •通道切换+噪声:新通道数据集,第一个滤波器固定为水平绿色条+高斯噪声,学习其他层
    •频道切换+干净启动:新频道数据集,学习所有层
    •频道切换+学习:新频道数据集,首先将过滤器初始化为水平绿色栏,了解所有层。
    每个实验重复20次以解释可变性。我们绘制了50次训练在验证集上的平均准确度。
    这里写图片描述图4\quad 演示小样本示例中可能方法的不同可能限制。从第一层包含从正交子空间的特征到任务所需特征的网络传输可能会导致机会的准确性。详情请参阅文字。
    \quad 图4总结了这些实验的结果。左侧的子图显示了50次训练的平均表现,右侧显示了每种情景下获得的最大(20次试验)。这些表明,在大多数情况下,我们可以达到很好的准确性,但是在平均情况下,获得的性能之间存在巨大差异,尽管这是一个非常简单的数据集。第一层固定的原始场景达到100%的准确性。将通道从绿色切换到红色(“通道切换”),但保持第一个滤波器的固定结果的机会准确性,例外:纯粹“绿色”滤波器的线性组合不能代表来自红色通道的信息。在这种情况下,如果我们允许学习所有层(“信道切换+学习”),网络的确可以最终收敛到一个很好的精度(图4(b)),但20次试验的平均性能远不及最优(图4(a)) - 网络收敛到约50%的准确度(机会表现为20%)。这证实,即使对于非常简单的情况,错误的初始化也可能对训练过程不利。
    \quad 平作为一项“健全测试”,我们确保随机初始化网络并允许在“频道切换”案例中学习所有层次,从而实现100%的性能(在平均和最好的情况下)。这确实是这种情况(“通道切换+干净启动”),尽管我们看到随机初始化首先收敛的速度比“原始”的已知初始化要慢得多。接下来,我们将网络初始化为“原始”,但使用“频道切换”数据集。但是,我们将随机噪声添加到第一层滤波器,然后保持固定(“通道切换+噪声”)。由于初始滤波器不与绿色通道正交,优化能够在平均和最佳情况下从初始化中恢复。
    \quad “原始+学习”初始化为“原始”,但允许修改第一层。平均而言,它最初的收敛速度比“原始”情景慢,平均而言,它表现更好。
    \quad 最后,将原始滤波器固定为与所需形状(水平条)正交的“转置”情况下,性能平均降低,在最佳情况下接近100%。请注意,虽然我们无法通过线性变换垂直线条来生成水平条形,但由于其卷积性质,信息不会丢失并且可以由第二层的滤波器恢复。这是通过对具有适当系数的水平滤波器的移位响应的加权总和来完成的。这是降低网络“效率”的一个例子,即委托到第一层可以完成的第二层计算。
    \quad 总而言之,我们从这个小数据集上的实验得出以下结论:
    1)使用强领域特定知识设置一些网络权重并修正它们的值,只学习其他层可以导致快速收敛的强解决方案。
    2)如果所有图层都是随机初始化的,然后允许更新,即使收敛速度会变慢,也会出现更强的解决方案。
    3)将某些权重初始化为“坏”值可能会导致平均值显着低于前两种情况,偶尔但很少出现性能良好的情况。
    4)将一些权重初始化为“坏”值,修正它们,并学习其余的权重将完全无法挽回地阻止网络的学习。
    \quad 在下一节中,我们将测试我们的方法,使用更丰富,更多样化的数据集,更少的退化网络(例如,第一层中的多个过滤器),以及在某些情况下残差网络,这些网络都可能会减少人工示例。
    ##4 真实数据集上的实验
    \quad 我们进行了几次实验来测试我们的方法并探索其行为的不同方面。实验部分分为两部分,第一部分是更具探索性的部分,第二部分是针对近期多任务学习基准的结果。我们使用两种不同的基本网络结构,分别针对各个部分的两个(有些重叠的)分类基准集。第一个是VGG-B [25]。我们首先列出我们使用的数据集(4.0.1),然后通过使用几个初始网络为每个数据集训练一个单独的模型来建立基线。我们继续测试我们提出的方法的几个变体(4.1)以及测试不同的训练方案。接下来,我们讨论如何预测网络作为基础网络的性能(4.3)。我们展示如何辨别输入图像的域,并输出适当的分类(4.3.1),而无需手动选择控制参数 α\alpha。在第二部分实验中,我们展示了如何使用我们的方法在Visual Decathlon挑战赛中取得领先分数[6],并使用不同的更新的结构。在总结之前,我们将展示我们方法的一些有用特性。
    \quad 所有实验均使用PyTorch框架使用单个Titan-X Pascal GPU执行。
    ####4.0.1 数据集和评估
    \quad 我们的评估协议的第一部分类似于[11]:我们在以下数据集上测试我们的方法:Caltech-256 [27], CIFAR-10 [28], Daimler [29] (DPed), GTSR [30],Omniglot [31], Plankton imagery data [32] (Plnk), HumanSketch dataset [33] 和 SVHN [34]。 所有图像都调整为64×64像素,复制灰度图像以使它们具有RGB通道的3个通道。 我们通过减去平均像素值并除以每个通道的方差来美白所有图像。 这是分别为每个数据集完成的。 我们选择80%用于训练,20%用于未提供固定分组的数据集中进行验证。 我们使用[25]中描述的B结构,此后称为VGG-B。 在从零开始训练时,它在各种数据集上表现相当好(请参见表1)。请参阅[11]以获取每个数据集的简要说明。
    \quad 作为基准,我们在8个数据集的每一个上独立地训练网络。 这部分的所有实验都是用Adam优化器[26]完成的,初始学习率为1e-3或1e-4,这取决于每个数据集的几个试验时期。 学习率在每10个迭代后减半。 大多数网络工程在前10-20个迭代后收敛,之后几乎可以忽略不计。 我们选择Adam作为这部分的原因在于其对于非自适应优化方法(例如SGD)的快速初始收敛,代价是可能较低的最终准确度[35]。 表1中汇总了top-1(%)。
    这里写图片描述
    表1\quadPerf:针对几种基线和我们方法的几种变体,各种数据集和参数成本(#par.,越低越好)的top-1准确率(%,越高越好)。 第1,2行:独立基准表现。 VGG-B:VGG [25]结构B。(S) - 从头开始培训。 § - 在ImageNet上预先训练好。 第3-7行:(我们的)控制器网络性能; 在大多数数据集上,DANsketchDAN_{sketch} 作为基础网络胜过DANcaltech256DAN_{caltech-256}。 基于随机权重的控制器网络(DANnoiseDAN_{noise})工作得很好,因为其学习参数的数量是其他方法的五分之一。 DANimagenetDAN_{imagenet}:控制器网络从在ImageNet上预训练的VGG-B模型初始化而来。 DANimagenet+sketchDAN_{imagenet + sketch}:基于VGG-B§&Sketch的选择性控制网络。 我们对每列中的第一(红色),第二(绿色)和第三(蓝色)个最高值进行颜色编码(#par的最低值)。 #par:为了实现所有任务的所述性能而划分的权重的分摊数量除以所处理任务的数量(越低越好)。
    ###4.1 控制器网络
    \quad为了测试我们的方法,我们依次在8个数据集的每一个上训练了一个网络,作为所有其他网络的基础网络。我们将这与每个数据集从头开始(VGG-B(S))或预训练(VGG-B§)网络的训练基线进行比较。表1总结了两个代表性基础网络的所有数据集的性能:DANcaltech256DAN_{caltech-256}(79.9%)和DANsketchDAN_{sketch}(83.7%)。其他基准网络的平均性能如图5(a)所示。每个设置的参数成本(3.2.3)在表格的最后一栏中报告。这与[6]类似,是一组完全参数化网络标准化的一组任务所需的参数总数。我们还检查了网络在充分训练后能够作为基础网络执行的程度,例如:DANimagenetDAN_{imagenet}是基于ImageNet上预训练的VGG-B,这使得平均性能提高了很多(83.7%至86.5%),在Caltech-256上我们看到了从88.2% 开始的提升(从头开始训练)。但是,对于Sketch和Omniglot,性能都支持DANsketchDAN_{sketch},注意这些是严格非自然图像的唯一两个域,此外,DANimageneDAN_{imagene}t仍然略低于非预先训练的VGG-B(S)(86.5% vs 87.7%),尽管后者参数成本更高。
    #####4.1.1 多种基础网络
    \quad可以说,一个好的基础网络应该具有足够通用的特征,以便控制器网络可以将它们用于广泛的目标任务。实际上,这可能不是必然的。我们推测,使用多种特征(例如通过多个任务的训练学习)将为转移学习提供更好的基础。为了同时使用两个基础网络,我们通过使用DANcaltech256DAN-{caltech-256}DANsketchDAN_{sketch}并连接到控制器网络来实现双控网络。所得子网络的特征部分的输出在全连接层之前被级联。这导致与DANsketchDAN_{sketch}单独完全相同的性能。然而,通过使用每组任务中选定的控制器模块,我们可以改进结果:对于每个数据集,最大性能的网络(基于验证)是控制模块的基础,即我们对除Omniglot和Sketch之外的所有数据集使用DANimagenetDAN_{imagenet}。对于后两者,我们使用DANsketchDAN_{sketch}作为基础网络。我们称该网络为DANimagenet+sketchDAN_{imagenet +sketch}。以更多参数为代价,它将平均性能提升至87.76% - 比使用任何单个基本网络用于控制器或从头开始进行培训要好。由于它被用于9个任务(包括ImageNet),其参数成本(2.76)仍然相当不错。
    #####4.1.2 从随机初始化的基础网络开始
    \quad我们测试了我们的方法在没有任何现有知识的情况下性能表现,例如,在随机初始化的基础网络上构建控制器网络。 这个结构的参数总数是~12M。 然而,由于10M已经被随机初始化,并且只有控制器模块和全连接层已经被学习,所以有效数目实际上是2M。 因此其参数成本被确定为0.22。 我们在表1中总结了结果。 值得注意的是,这种初始化的结果非常好, 该网络获得的平均top-1精度为76.3%,比DANcaltech256DAN_{caltech-256}(79.9%)略差。 这比使用DANdaimlerDAN_{daimler}进行初始化要好,其平均准确度为75%。 这是可能的,因为基础网络中的随机值仍然可以通过我们的方法线性组合,以创建对分类很有用的值。
    ###4.2 初始化
    \quad出现的一个问题是如何初始化控制模块的权重W。我们测试了几个选项:(1)将W设置为单位矩阵(对角线(diagonal))。这相当于控制器模块从一个有效模仿基础网络行为的状态开始(2)将W设置为随机噪声(随机(random))(3)从头开始为新任务训练独立网络,然后将W设置为最佳用基本权重线性近似新的权重(线性近似(linear_approx))。为了找到最佳的初始化方案,我们在训练DANsketchcaltech256DAN_{sketch\rightarrow caltech256} 的过程中逐轮观察了损失。每个实验重复5次,结果取平均值。从图5(a)可以看出,对角线初始化是根号的,或许直观地反映出,不需要训练完全参数化的目标网络。简单地从基础网络的行为开始,并通过控制模块进行调整,可以加快收敛速度​​。因此,我们用对角线方法训练控制器模块。有趣的是,[6]中的残差适配单元最初与对角线配置类似。如果其适配器单元中的所有过滤器都设置为1(达到标准化),则适配器的输出最初将与使用单位矩阵初始化的控制器单元的输出相同。
    这里写图片描述
    图5\quad(a)控制器初始化方案。 对于初始化控制器模块的不同方式,在5次实验中的平均损失的平均值,用最小值和最大值重叠。 随机初始化性能最差(随机)。近似微调网络的性能略好(线性近似)且初始化基础网络(对角线表现最好(b)考虑到其可转移性测量,控制网络的整体准确度在所有数据集上的可预测性。
    ###4.3 可转移性(Transferability)
    \quad如何选择一个良好的网络作为其他网络的基础?作为每个独立训练网络N 的特征的代表能力的指标,我们在其他数据集上测试性能,使用N 进行微调。我们将一个源任务S w.r.t的目标任务T 的可转移性定义为通过对在S 上训练的N 进行微调以在 T 上执行而获得的top-1精度。我们测试3种不同的场景,如下:(1)仅微调最后一层(也称为特征提取)(ft-last); (2)微调 N 的所有层(ft-full); (3)与ft-full相同,但冻结批处理标准化层的参数 - 在某些情况下,这已被证明是有益的 - 我们将此选项称为ft-full-bn-off。图3中的结果显示了一些有趣的现象。首先,如预期的那样,特征提取(ft-last)不如微调整个网络。其次,通常从头开始的训练是最有利的选择。第三,我们看到自然图像(Caltech-256,CIFAR-10,SVHN,GTSR,Daimler)和非自然图像(Sketch,Omniglot,Plankton)之间的区别;Plankton图像本质上是自然的,但似乎表现出与其他行为不同的行为。
    这里写图片描述
    图3\quad不同数据集相互之间的可转移性(ft-last)只调整最后一层(full)微调所有层(ft-full-bn-off)微调所有层,同时禁止批量标准化层要更新的权重。 总的来说,网络往往更容易转移到相关领域的问题(例如,自然/绘图)。 放大查看数字。 建议在线观看该图。
    \quad很明显,自然图像的特征对于不自然的图像不太有利。有趣的是,相反的情况并非如此:从Sketch或Omniglot开始训练一个网络对于大多数数据集来说工作得非常好,既自然又不自然。这在表2中进一步示出:我们通过图3的可转移矩阵的每行的平均值来计算每个数据集的平均可转移性。 DANCaltech256DAN_{Caltech-256}最适合特征提取。但是,使用DANPlanktonDAN_{Plankton} 作为最佳起点的全面微调,紧随其后的是DANCaltech256DAN_{Caltech-256}。对于控制器网络,使用DANsketchDAN_{sketch}(83.7%)获得从零开始训练的单个基准网达到的最佳平均准确度。这与通过完全转移学习获得的性能接近(84.2%,参见表2),参数数量的一小部分。这与我们的可转让性措施一致。为了进一步测试可转移性与特定基础网络的性能之间的相关性,我们使用每个数据集作为所有其他网络的控制网络的基础,并测量平均总体准确度。结果见图5(b)
    这里写图片描述
    表2\quad平均转移学习表现。 我们展示了通过微调从每个域到所有域的网络获得的平均top-1精度(%)。 在上面的数据集中,从Caltech-256开始,证明了最通用的特征提取器(ft-last)。 但是,在初始训练Sketch数据集时(ft-full),微调是最好的,
    ####4.3.1 统一网络
    \quad最后,我们测试一个单一网络的可能性,它既可以确定图像的域,也可以对其进行分类。 我们训练一个分类器,使用8个数据集中的训练图像来预测图像来源于哪个数据集。 网络(也称为VGG-B)很容易学会这一点,其迅速收敛到99%的准确度。 使用这个名为 NdcN_{dc}的“数据集-决策器”,我们增加了DANsketchDAN_{sketch},以便为来自任何数据集DiD_{i}的每个输入图像 II 设置 DANsketchDiDAN_{sketch\rightarrow D_{i}}的控制器值 αi\alpha_{i} 为1,当且仅当 NdcN_{dc} 认为 II 源自 DiD_{i} 否则为0。 这产生了一个网络,它将适用于每个输入图像的正确控制器分类到它自己的域中。 虽然 αi\alpha_{i} 的预测值是实值,但我们将最高值设置为1,其余为零。
    ###4.3 视觉十项全能挑战赛
    \quad我们现在展示最近的[6]的视觉十项全能 挑战赛的成绩。挑战介绍涉及10个不同的图像分类数据集:ImageNet [36];Aircraft[37]; Cifar-100 [28];Daimler Pedestrians[29];Dynamic Textures[38];GTSR [30];Flowers[39];Omniglot [40];SVHN [34]和UCF-101 [41]。我们的目标是使用作者确定的train / val / test splitting,在保持小模型大小的同时,在每个数据集上实现准确的分类。所有图像都调整大小,因此每个图像的较小边是72像素。预计分类器可以在64x64像素的图像上运行。在挑战中的每个条目都被赋予一个十项全能得分,这是一个为所有10个数据集上的高亮度方法设计的功能,其比基线要好。有关评分和数据集的详细信息,请参阅挑战网站:http://www.robots.ox.ac.uk/~vgg/decathlon/。与[6]类似,我们选择使用整个深度为28和扩展因子为4的宽残差网络[42],在每个基本块的开始卷积处步长为2。下面我们描述挑战结果,然后再进行一些额外的实验,显示我们方法在各种环境中的附加价值。在本节中,我们使用了最近的YellowFin优化器[43],因为它需要的调整少于SGD。我们使用0.1的初始学习率因子,并在25次迭代后将其降至0.01。这适用于除ImageNet外的所有数据集,我们用SGD进行150迭代,初始学习率为0.1,每35次迭代降低10倍。这是我们使用可用验证数据确定的配置,然后用于在验证集上进行训练(如挑战的作者),并从评估服务器获取结果。在这里,我们从头开始对降低分辨率的ImageNet进行训练,并使用生成的网络作为所有其他任务的基础。表3总结了我们的结果以及基线方法和[6]中的方法,所有方法都使用相似容量的基础架构。通过使用明显更强的基础结构,他们获得了更高的结果(平均值为79.43%),但参数成本为12,即需要原始参数的12倍。所有的行都从[6]中复制,包括它们重新实现的LWF,除了最后一个显示我们的结果。表中的最后一列显示了十项全能评分。 2500分的分数反映了将ImageNet上学习的网络独立地微调到每个数据集所产生的基线。对于同样的结构,残差适配器方法所获得的最好结果在十项全能评分方面略低于我们,在平均性能方面略高于我们。然而,与他们不同的是,我们避免对所有数据集进行联合训练,并使用数据集相关的权重衰减。
    这里写图片描述
    表3\quad视觉十项全能挑战的结果。 Scratch:独立进行每项任务的培训。Feature:使用预先训练的网络作为特征提取器。 Finetune:香草(vanilla)微调。 性能良好但需要许多参数。 无需学习的学习(LWF,[16]略胜过它,但参数成本较高,Residual adapt[6]显著减少了参数数量,在所有任务上共同训练的结果会提高(Res.Adapt(Joint)) 。所提出的方法(DAN)虽然增加了每个任务的独立性,但仍胜过残差适配器,S是十项全能挑战分数。
    ###4.5 压缩和收敛
    \quad在本节中,我们重点介绍一下我们方法的其他有用属性。以下所有实验均使用与上一节中相同的结构完成,但仅对视觉十项全能挑战赛的训练集进行训练并在验证集上进行测试。首先,我们检查网络压缩的影响是否与我们的互补或可能阻碍他们。尽管最近出现了复杂的网络压缩技术(例如[20]),但我们仅使用一种简单的压缩方法作为概念验证,并指出使用最新的压缩方法可能会产生更好的结果。我们对网络权重应用简单的线性量化,使用4,6,8,16或32位来表示每个权重,其中32表示无量化。我们没有量化批标准化系数。图7(b)显示了量化每个网络的系数如何影响准确性。使用8位仅导致精度的边际损失。这实际上意味着我们的方法可以用来学习新的任务,同时需要增加3.25%的原始参数量。很多人甚至保持在6位的性能(DPed,Flowers,GTSR,Omniglot,SVHN)。接下来,我们比较量化对不同转移方法的影响:特征提取,微调和我们的方法(对角线和线性变体)。对于每个数据集,我们记录每种方法/量化级别(将其转换为所需参数的百分比)的归一化(除以最大值)精度。如图9所示,我们的方法达到与微调相同的精度,需要的参数明显更少。 如果参数使用有限,则我们方法的对角线变体显着优于特征提取。 最后,我们表明,直到接近最大性能时的迭代次数明显低于我们的方法。 这可以在图8中看到。
    这里写图片描述
    图7\quad(a)准确性与学习方法。 仅使用最后一层(特征提取器)表现最差。 finetune:香草(vanilla)微调。 Diagonal:我们的控制器模块具有对角组合矩阵。 Linear:我们的完整方法。 平均而言,我们的完整方法胜过了香草(vanilla)微调。 (b)精度与量化:低至8位,我们看不到网络量化对我们方法的显着影响,表明它们可以一起使用。
    这里写图片描述
    图8\quad(a)我们的方法(线性)比微调收敛速度快。 我们方法的较弱变体收敛速度与特征提取一样快,但达到了较高的准确性(7(a))。(b) 放大(a)的右上方。
    这里写图片描述
    图9\quad 平均分类准确率(标准化,对数据集进行平均)w.r.t no. paramters 我们的方法在基线上获得了更好的性能,适用于大范围的参数预算。 对于极少数参数对角线(我们的)胜过特征提取。 为了获得最大的准确度,我们完整的方法需要的参数少得多(参见线性与微调)。
    ###4.6 讨论
    \quad我们已经观察到,所提出的方法比香草微调更快地收敛到相当好的解决方案,并且最终获得稍好的性能。尽管网络具有表现力,但分类精度的提高仍受到我们的结构限制。我们推测,将每一层约束为表示为原始网络中相应层的线性组合,用于规范解空间,并且在任务彼此充分相关时是有利的。人们可以想出简单的例子,其中提出的方法可能会失败。如果任务不属于同一类型,则可能会发生这种情况。例如,一个任务需要计算水平线,另一个需要计算垂直线,而且这些例子都出现在训练集中,那么所提出的方法可能会比从头开始的香草微调或训练的工作差得多。我们在第3.3节中尝试了这种场景。根据经验,我们没有看到在我们的任何关于“真实”数据集的实验中发生了这种情况。这可能只是源于图像分类任务中的一些内在相似性,这使得一些基本特征对大多数都有用。我们离开了对这个问题的调查,并找到了在特征重用和学习新特征之间取得平衡的方法,以此作为未来的工作。
    ##5 总结
    \quad我们已经提出了一种转移学习方法,可以将现有网络适应新的任务,同时完全保留现有的表示。我们的方法匹配或优于微调,但需要一小部分参数,当与净压缩结合时达到原始参数的3%而不损失精度。该方法快速收敛到高准确度,同时达到或超越其他具有相同目标的方法。内置于我们的方法中的是能够轻松切换各种学习任务之间的表示,使单个网络能够在各个领域无缝执行。控制参数 α\alpha 可以作为实值向量来转换,从而允许不同任务的表示之间的平滑过渡。这种平滑过渡的效果的一个例子可以在图6中看到,其中 α\alpha 用于在不同学习配对任务的表示之间线性内插,允许人们平滑地控制不同行为之间的转换。允许每个添加的任务使用现有控制器的凸面组合将潜在地更有效地利用控制器,并将控制器的数量与任务的数量分离。
    这里写图片描述
    图6 \quad转移表示。 使用单个基础网络 NsketchN_{sketch},我们通过在[0,1]范围内改变它来检查该方法对 α\alpha 的变化值的敏感性。 增加 α\alpha 使网络远离基本表示并转向学习任务 - 逐渐降低基础任务(菱形)的性能并改进已知学习任务(圆形)。图上的性能(蓝色菱形)相对较慢的下降以及Plankton(蓝色圆圈)的增加表明学习表示之间的相似性。
    ##参考文献
    [1] A. Krizhevsky, I. Sutskever, and G. E. Hinton, “Imagenet classification with deep convolutional neural networks,” in Advances in neural information processing systems, 2012, pp. 1097–1105.
    [2] J. Long, E. Shelhamer, and T. Darrell, “Fully convolutional networks for semantic segmentation,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2015, pp.3431–3440.
    [3] R. Girshick, J. Donahue, T. Darrell, and J. Malik, “Rich feature hierarchies for accurate object detection and semantic segmentation,” in Proceedings of the IEEE conference on computer vision and pattern recognition, 2014, pp. 580–587.
    [4] A. Hannun, C. Case, J. Casper, B. Catanzaro, G. Diamos, E. Elsen,R. Prenger, S. Satheesh, S. Sengupta, A. Coates et al., “Deep speech: Scaling up end-to-end speech recognition,” arXiv preprint arXiv:1412.5567, 2014.
    [5] G. Litjens, T. Kooi, B. E. Bejnordi, A. A. A. Setio, F. Ciompi, M. Ghafoorian, J. A. van der Laak, B. van Ginneken, and C. I. Sanchez, “A survey on deep learning in medical image analysis,” ´ arXiv preprint arXiv:1702.05747, 2017.
    [6] S.-A. Rebuffi, H. Bilen, and A. Vedaldi, “Learning multiple visual domains with residual adapters,” arXiv preprint arXiv:1705.08045,2017.
    [7] S. Zhu, C. Li, C. C. Loy, and X. Tang, “Face alignment by coarseto-fine shape searching.” in CVPR. IEEE Computer Society, 2015,pp. 4998–5006.
    [8] K. He, G. Gkioxari, P. Dollar, and R. Girshick, “Mask R-CNN,” ´arXiv preprint arXiv:1703.06870, 2017.
    [9] D. Eigen and R. Fergus, “Predicting depth, surface normals and semantic labels with a common multi-scale convolutional architecture,” in Proceedings of the IEEE International Conference on Computer Vision, 2015, pp. 2650–2658.
    [10] H. Bilen and A. Vedaldi, “Integrated perception with recurrent multi-task neural networks,” in Proceedings of Advances in Neural Information Processing Systems (NIPS), 2016.
    [11] ——, “Universal representations:The missing link between faces, text, planktons, and cat breeds,” 2017.
    [12] I. Misra, A. Shrivastava, A. Gupta, and M. Hebert, “Cross-stitch Networks for Multi-task Learning.” CoRR, vol. abs/1604.03539, 2016.
    [13] R. M. French, “Catastrophic forgetting in connectionist networks,” Trends in cognitive sciences, vol. 3, no. 4, pp. 128–135, 1999.
    [14] J. Donahue, Y. Jia, O. Vinyals, J. Hoffman, N. Zhang, E. Tzeng, and T. Darrell, “DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition.” in Icml, vol. 32, 2014, pp. 647–655.
    [15] A. Sharif Razavian, H. Azizpour, J. Sullivan, and S. Carlsson,
    “CNN features off-the-shelf: an astounding baseline for recognition,” in Proceedings of the IEEE Conference on Computer Vision and
    Pattern Recognition Workshops, 2014, pp. 806–813.
    [16] Z. Li and D. Hoiem, “Learning without Forgetting.” CoRR, vol. abs/1606.09282, 2016.
    [17] A. A. Rusu, N. C. Rabinowitz, G. Desjardins, H. Soyer, J. Kirkpatrick, K. avukcuoglu, R. Pascanu, and R. Hadsell, “Progressive neural networks,” arXiv preprint arXiv:1606.04671, 2016.
    [18] J. Kirkpatrick, R. Pascanu, N. Rabinowitz, J. Veness, G. Desjardins, A. A. Rusu, K. Milan, J. Quan, T. Ramalho, A. Grabska-Barwinska et al., “Overcoming catastrophic forgetting in neural networks,” Proceedings of the National Academy of Sciences, p. 201611835, 2017.
    [19] S. S. Sarwar, A. Ankit, and K. Roy, “Incremental Learning in Deep Convolutional Neural Networks Using Partial Network Sharing,” 2017.
    [20] S. Han, H. Mao, and W. J. Dally, “Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding,” arXiv preprint arXiv:1510.00149, 2015.
    [21] S. Han, J. Pool, J. Tran, and W. Dally, “Learning both weights and connections for efficient neural network,” in Advances in Neural Information Processing Systems, 2015, pp. 1135–1143.
    [22] E. L. Denton, W. Zaremba, J. Bruna, Y. LeCun, and R. Fergus,“Exploiting linear structure within convolutional networks for efficient evaluation,” in Advances in Neural Information Processing Systems, 2014, pp. 1269–1277.
    [23] S. J. Hanson and L. Y. Pratt, “Comparing biases for minimal network construction with back-propagation,” in Proceedings of the 1st International Conference on Neural Information Processing Systems.MIT Press, 1988, pp. 177–185.
    [24] K. He, X. Zhang, S. Ren, and J. Sun, “Deep residual learning for image recognition,” in Proceedings of the IEEE conference on computer vision and pattern recognition, 2016, pp. 770–778.
    [25] K. Simonyan and A. Zisserman, “Very deep convolutional networks for large-scale image recognition,” arXiv preprint arXiv:1409.1556, 2014.
    [26] D. Kingma and J. Ba, “Adam: A method for stochastic optimization,” arXiv preprint arXiv:1412.6980, 2014.
    [27] G. Griffin, A. Holub, and P. Perona, “Caltech-256 object category dataset,” 2007.
    [28] A. Krizhevsky and G. Hinton, “Learning multiple layers of features from tiny images,” 2009.
    [29] S. Munder and D. M. Gavrila, “An experimental study on pedestrian classification,” IEEE transactions on pattern analysis and machine intelligence, vol. 28, no. 11, pp. 1863–1868, 2006.
    [30] J. Stallkamp, M. Schlipsing, J. Salmen, and C. Igel, “Man vs. computer: enchmarking machine learning algorithms for traffic sign recognition,” Neural networks, vol. 32, pp. 323–332, 2012.
    [31] V. Mnih, K. Kavukcuoglu, D. Silver, A. A. Rusu, J. Veness, M. G. Bellemare, A. Graves, M. Riedmiller, A. K. Fidjeland, G. Ostrovski et al., “Human-level control through deep reinforcement learning,” Nature, vol. 518, no. 7540, pp. 529–533, 2015.
    [32] R. K. Cowen, S. Sponaugle, K. Robinson, and J. Luo, “Planktonset 1.0: Plankton imagery data collected from fg walton smith in straits of florida from 2014–06-03 to 2014–06-06 and used in the 2015 national data science bowl (ncei accession 0127422),” Oregon State University; Hatfield Marine Science Center, 2015.
    [33] M. Eitz, J. Hays, and M. Alexa, “How do humans sketch objects?” ACM Trans. Graph., vol. 31, no. 4, pp. 44–1, 2012.
    [34] Y. Netzer, T. Wang, A. Coates, A. Bissacco, B. Wu, and A. Y.Ng, “Reading digits in natural images with unsupervised feature learning,” in NIPS workshop on deep learning and unsupervised feature learning, vol. 2011, no. 2, 2011, p. 5.
    [35] A. C. Wilson, R. Roelofs, M. Stern, N. Srebro, and B. Recht, “The Marginal Value of Adaptive Gradient Methods in Machine Learning.” CoRR, vol. abs/1705.08292, 2017.
    [36] O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein et al., “Imagenet large scale visual recognition challenge,” International Journal of Computer Vision, vol. 115, no. 3, pp. 211–252, 2015.
    [37] S. Maji, E. Rahtu, J. Kannala, M. Blaschko, and A. Vedaldi, “Fine-grained visual classification of aircraft,” arXiv preprint arXiv:1306.5151, 2013.
    [38] M. Cimpoi, S. Maji, I. Kokkinos, S. Mohamed, and A. Vedaldi, “Describing Textures in the Wild.” CoRR, vol. abs/1311.3618, 2013.
    [39] M.-E. Nilsback and A. Zisserman, “Automated Flower Classifica tion over a Large Number of Classes.” in ICVGIP. IEEE, 2008, pp.722–729.
    [40] B. M. Lake, R. Salakhutdinov, and J. B. Tenenbaum, “Human level concept learning through probabilistic program induction,” Science, vol. 350, no. 6266, pp. 1332–1338, 2015.
    [41] K. Soomro, A. R. Zamir, and M. Shah, “UCF101: A dataset of 101 human actions classes from videos in the wild,” 2012.
    [42] S. Zagoruyko and N. Komodakis, “Wide Residual Networks.” CoRR, vol. abs/1605.07146, 2016.
    [43] J. Zhang, I. Mitliagkas, and C. Re, “YellowFin and the Art of Momentum Tuning,” arXiv preprint arXiv:1706.03471, 2017.

    展开全文
  • 何谓“二上二下”部门预算机制?  这原本是机关为了规范执法部门“收支两条线”管理,节约开支,建始县结合实际,对部门预算采用了“二上二下”的编制程序。“二上”即各部门按部门预算编制要求,向财政部门...
  • 云数据库

    千次阅读 2019-02-23 17:47:02
    1. 云数据库概述 1.1. 云计算是云数据库兴起的基础 1.2. 云数据库概念 云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法,它极大地增强了...
  • 软件项目管理案例教程 第4版 课后习题答案

    万次阅读 多人点赞 2020-03-22 20:17:49
    1.敏捷模型包括(4)个核心价值,对应(12)个敏捷原则。 2.项目管理包括(启动过程组)、(计划过程组)、(执行过程组)、(控制过程组)、(收尾过程组)5个过程组。 二、判断题 1、搬家属于项目。(√) 2、...
  • 在爬取数据的过程中,有时候需要用到定时、增量爬取。定时这里暂且不说,先说增量爬取。 我想要的增量爬取目前只是简单的,根据url请求来判断是否爬过,如果爬过则不再爬。 复杂一些的增量则是重复爬取,根据指定的...
  • 软件工程导论--软件工程概述

    万次阅读 2020-04-19 17:33:40
    1 软件与软件危机 1.1 软件的特性 软件是一种逻辑实体,而非具体的物理实体; 软件产品的生产主要是研制; 软件具有“复杂性”,其开发和运行常受到计算机系统的限制; 软件成本昂贵,其开发方式目前未完全摆脱手工...
  • 敏捷SDLC模型是迭代和增量流程模型的组合,通过快速交付工作软件产品,专注于流程适应性和客户满意度。敏捷方法将产品分解为小型增量构建。这些构建在迭代中提供。每次迭代通常持续大约一到三周。每次迭代都涉及跨...
  • 项目管理案例教程(第三版)习题及答案

    万次阅读 多人点赞 2019-04-24 09:57:35
    第一章软件项目管理概述 一、填空题 1、实现项目目标的制约因素有(项目范围)、...2、项目管理包括(启动过程组)、(计划过程组)、(执行过程组)、(控制过程组)、(收尾过程组)5个过程组。 二、判断题...
  • 2015年系统架构师考试题详解

    万次阅读 2017-11-03 11:05:27
    考试科目一:综合知识某航空公司机票销售系统有n个售票点,该系统为每个售票点创建一个进程Pi(i=1,2,…,n)管理机票销售。假设Tj(j=1,2,…,m)单元存放某日某航班的机票剩余票数,Temp为Pi进程的临时工作...
  • 以下内容仅供参考,乐意黎 2016-09-12 一、单项选择题(1-25)  1.【题干】某上市公司职业经理人在任职期间不断...这一现象所揭示的公司制企业的缺点主要是( )。... A.... B.... C.... D.... 【解析】所有者希望经营
  • 以下内容仅供参考,乐意黎 2016-09-12 一、单项选择题(本类题共25小题,每小题1分,共25分。每小题备选答案中,只有一个符合题意的正确答案。请将选定的答案,按答题卡要求,用2B铅笔填涂答题卡中相应信息点。...
  • 软件过程模型的分类与选用

    千次阅读 2008-03-27 21:47:00
    软件过程模型的分类与选用 所谓模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型,这种选择...
  • Apache Kylin 大数据时代的OLAP利器

    千次阅读 2016-03-27 11:07:06
    典型的OLAP应用场景包括销售、市场、管理等商务报表,预算决算,经济报表等等。 最早的OLAP查询工具是发布于1970年的Express,然而完整的OLAP概念是在1993年由关系数据库之父EdgarF.Codd 提出,伴随而来的是著名...
  • 软件工程北大慕课题

    万次阅读 多人点赞 2020-01-23 13:56:33
    第一周:软件工程概论 软件的定义及特点 1单选(2分)软件产品与物质产品有很大的区别,软件产品是一种(C)产品。 A.有形 B.消耗 C.逻辑 D....2多选(2分)下列关于软件的说法正确的是(BCD) A....B....C....D....
  • 软件开发流程(Software development process)
  • 软件测试基础知识

    千次阅读 多人点赞 2019-11-08 14:57:05
    第一章 1.1 软件测试背景知识和发展史 互联网公司职位架构:产品 运营 技术 市场 行政 软件测试:使用人工或自动化手段,来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际...
1 2 3 4 5 ... 20
收藏数 1,164
精华内容 465
关键字:

选择联系人