CN111931901A - 一种神经网络构建方法以及装置 - Google Patents

一种神经网络构建方法以及装置 Download PDF

Info

Publication number
CN111931901A
CN111931901A CN202010626911.0A CN202010626911A CN111931901A CN 111931901 A CN111931901 A CN 111931901A CN 202010626911 A CN202010626911 A CN 202010626911A CN 111931901 A CN111931901 A CN 111931901A
Authority
CN
China
Prior art keywords
network
output
iteration
preset
updating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010626911.0A
Other languages
English (en)
Inventor
毕恺峰
魏龙辉
陈鑫
谢凌曦
田奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010626911.0A priority Critical patent/CN111931901A/zh
Publication of CN111931901A publication Critical patent/CN111931901A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Feedback Control In General (AREA)

Abstract

本申请公开了人工智能领域的一种神经网络构建方法以及装置,用于准确高效地构建目标神经网络,构建出的输出网络输出的准确度高,还可以应用于不同的应用场景中,泛化能力强。该方法包括:获取初始超网络,初始超网络包括多个节点,多个节点之间通过至少一种基础运算连接;通过预设的训练集对超网络进行至少一次迭代更新,得到至少一个输出网络,其中,在至少一次迭代更新中的任意一次迭代更新中,通过预设的训练集更新上一次迭代更新得到的输出网络的权重参数和结构参数,得到更新后的网络,删除更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的输出网络。

Description

一种神经网络构建方法以及装置
技术领域
本申请涉及人工智能领域,尤其涉及一种神经网络构建方法以及装置。
背景技术
在人工智能领域中,神经网络尤其是深度神经网络近年来在计算视觉领域取得了巨大的成功。受益于计算力的增加与越来越多不同的组成元件的提出,神经网络结构朝着越来越复杂的方向发展。
在构建神经网络时,首先人工设计给定的超网络,该超网络可以包括多个节点,每个节点之间通过一种或者多种基础运算连接。然后通过bi-level优化方法来优化超网络,分别在训练数据集和验证数据集上优化权重参数和结构参数更新直到搜索结束,得到一个构建单元。之后对该构建单元进行离散化基础运算,即删除构建单元中的部分基础运算,保留结构参数最大的基础运算,且每个节点保留结构参数最大的两条边,得到的子网络作为最后的输出。最终得到的输出网络由该子网络堆叠得到。然而,超网络中每个单元中的节点之间,仅保留结构参数最大的基础运算,得到构建单元,然后由最终得到的构建单元堆叠得到最终的输出网络。因此,在构建神经网络时,在结构参数和权重参数更新完成之后,再进行离散化基础运算,最终得到的输出网络仅由相同的构建单元堆叠得到,仅能适用简单的场景。
发明内容
本申请提供一种神经网络构建方法以及装置,用于准确高效地构建目标神经网络,构建出的输出网络输出的准确度高,还可以应用于不同的应用场景中,泛化能力强。
有鉴于此,第一方面,本申请提供一种神经网络构建方法,包括:获取初始超网络,初始超网络包括多个节点,多个节点之间通过至少一种基础运算连接,其中,多个节点中的任意每两个节点包括第一节点和第二节点,每个基础运算的输出作为第二节点的输入,第一节点的输出经第一节点和第二节点之间连接的每个基础运算进行运算后的输出为该每个基础运算的输出;通过预设的训练集对超网络进行至少一次迭代更新,得到至少一个输出网络,其中,在至少一次迭代更新中的任意一次迭代更新中,通过预设的训练集更新上一次迭代更新得到的输出网络的每个基础运算对应的结构参数,得到更新后的网络,删除更新后的网络中结构参数低于预设值的基础运算,得到当前次迭代的输出网络,每个基础运算对应的结构参数包括第一节点和第二节点之间连接的每个基础运算的输出,占第二节点的输入的权重。
因此,在本申请实施方式中,在每次迭代更新的过程中,在更新了权重参数和结构UC桉树之后,通过剪枝得到输出网络,而不受搜索空间的限制,因此可以实现在更复杂的空间中的搜索。并且,在对初始超网络进行每次迭代更新的过程中,更新了权重参数和结构参数之后,即可删除更新后的网络中结构参数低于预设值的基础运算,即每次迭代更新都可能得到输出网络,因此可以得到一个或者多个输出网络,以使后续可以根据应用场景灵活选择使用的输出网络,具有较高的泛化性。
在一种可能的实施方式中,在至少一次迭代更新中的任意一次迭代更新中,通过预设的训练集更新上一次迭代更新得到的输出网络的每个基础运算对应的结构参数,得到更新后的网络,具体可以包括:通过预设的数据集,结合损失函数更新上一次迭代更新得到的输出网络的每个基础运算对应的权重参数和结构参数,得到更新后的网络,损失函数中包括针对结构参数的约束函数,权重参数为多个节点之间连接的基础运算内使用的参数;在得到当前次迭代的输出网络之后,上述方法还可以包括:判断前次迭代的输出网络是否符合预设的剪枝条件,并根据判断结果调整约束函数在损失函数中所占的权重。
因此,在本申请实施方式中,在损失函数中增加了针对结构参数更新时的约束函数,可以通过调整约束函数在损失函数中所占的权重,来调整对结构参数进行更新时的约束力度,从而使下一次迭代更新时,得到的结构参数更优。其次,本申请提供的神经网络构建方法使用了相同的训练集更新权重参数和结构参数,相对于使用不同的数据集分别更新权重参数和结构参数,本申请可以提高最终得到的输出网络的稳定性,并且可以快速收敛,快速得到最终的输出网络。
在一种可能的实施方式中,根据判断结果调整约束函数在损失函数中所占的权重,可以包括:若当前次迭代的输出网络符合预设的剪枝条件,则增加约束函数在损失函数中所占的权重;若当前次迭代的输出网络不符合预设的剪枝条件,则减少约束函数在损失函数中所占的权重。
因此,在本申请实施方式中,可以根据输出网络是否符合剪枝条件来调整约束函数在损失函数中所占的权重,从而使下一次迭代中对网络进行剪枝时,得到的输出网络更符合剪枝条件。
在一种可能的实施方式中,预设的剪枝条件包括以下一项或者多项:前次迭代更新过程中删除的基础运算的数量大于预设数量、前次迭代更新过程中删除的基础运算占更新后的网络中的基础运算的比例大于预设比例、前次迭代更新过程中删除基础运算后得到的网络的分类精度的下降值超过预设精度值、或者,前次迭代更新过程中删除基础运算后得到的网络的每秒浮点运算次数(FLOPS)减少的值大于第一预设次数。
因此,在本申请实施方式中,当对网络的剪枝数量过多,或者剪枝后的网络分类精度下降过多,或者剪枝后的网络的FLOPS减少次数过多等,则可以增加约束函数在损失函数中所占的权重,从而增加进行剪枝的约束,从而降低剪枝的数量,或者降低剪枝后的网络分类精度下降量,或者降低剪枝后的网络的FLOPS的减少次数等。当对网络的剪枝数量过少,或者剪枝后的网络分类精度变化较少,或者剪枝后的网络的FLOPS变化次数过少等,则可以减少约束函数在损失函数中所占的权重,从而减少进行剪枝时的约束,从而增加剪枝数量,或者增加剪枝后的网络分类精度的变化量,或者增加剪枝后的网络的FLOPS的变化次数等,从而可以快速得到更优的输出网络。
在一种可能的实施方式中,在任意一次迭代更新中,通过预设的训练集更新上一次迭代更新得到的输出网络的权重参数和结构参数,可以包括:将预设的数据集作为上一次迭代更新得到的输出网络的输入,得到上一次迭代更新得到的输出网络的输出数据;通过损失函数以及上一次迭代更新得到的输出网络的输出数据,得到上一次迭代更新得到的输出网络的损失值;根据损失值对上一次迭代更新得到的输出网络的权重参数更新,以及对上一次迭代更新得到的输出网络中的每个构建单元的结构参数分别进行更新,得到更新后的网络,更新后的网络中的每个构建单元的结构参数不完全相同。
在本申请实施方式中,可以通过同一个训练集更新权重参数和结构参数,使更新后得到的输出网络更稳定。并且,相对于通过相同的构建单元堆叠得到输出网络,本申请实施例中可以对每个构建单元的结构参数进行更新,更新后网络中的每个构建单元的结构参数可能相同,也可能不相同。因此,可以更灵活地得到更多结构种类的输出网络,增加得到更优的输出网络的几率。并且,本申请实施例中,可以针对每个构建单元的结构参数进行更新,最终可以得到复杂度更高的输出网络,可以适应更多复杂的场景,提高了泛化性。
在一种可能的实施方式中,在任意一次迭代更新中,删除更新后的网络中结构参数低于预设值的结构参数对应的基础运算,得到当前次迭代的输出网络,可以包括:删除更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的网络;若当前次迭代的网络符合预设的稳定条件,则将当前次迭代的网络作为当前次迭代的输出网络;若当前次迭代的网络不符合预设的稳定条件,则可以对当前次迭代的网络进行下一次迭代更新,或者终止迭代等。
因此,在本申请实施方式中,若对初始超网络进行了多次迭代更新,则可能得到多个符合稳定条件的输出网络,后续可以根据需求灵活地选择合适的输出网络,可以适用于更多的场景。
在一种可能的实施方式中,预设的稳定条件包括以下一项或者多项:当前次迭代的网络的输出的精度大于第一阈值,或者,当前次迭代的网络的输出的平均精度大于第二阈值,或者,当前次迭代的网络损失值不大于第三阈值,或者,当前次迭代的网络的推理时长不大于第四阈值,或者,当前次迭代的网络的FLOPS不大于第五阈值,平均精度为对当前次迭代的网络进行多次评估得到的多个精度的平均值,推理时长为从当前次迭代的网络根据输入得到输出结果的时长。
本申请实施方式中,可以根据实际应用场景设定稳定条件,从而得到符合需求的输出网络。
在一种可能的实施方式中,删除更新后的网络中结构参数低于预设值的基础运算,包括:获取更新后的网络中结构参数最小的n个基础运算,得到第一基础运算集合,n为正数;从第一基础运算集合中获取结构参数低于b的基础运算,以及获取更新后的网络中结构参数低于a的基础运算,得到第二基础运算集合,a、b为正数,且b>a。
因此,可以删除更新后的网络中结构参数较低的基础运算,使最终得到的输出网络的结构参数整体较高。
在一种可能的实施方式中,通过预设的训练集对初始超网络进行迭代更新的次数为根据预设的终止条件确定,其中,当至少一次迭代更新中任意一次迭代更新得到的输出网络满足预设的终止条件,则终止迭代更新。
因此,本申请实施方式中,可以对初始超网络进行迭代更新,直至输出网络满足终止条件,即收敛,从而可以得到一个或者多个输出网络。
在一种可能的实施方式中,预设的终止条件,包括以下一项或者多项:输出网络的计算量低于预设计算量、输出网络的FLOPS小于第二预设次数、或者针对超网络进行迭代更新的时长大于预设时长。
因此,本申请实施方式中,可以根据应用场景预先设定终止对初始超网络进行更新的条件,从而可以得到符合终止条件的一个或者多个输出网络,进而可以格局应用场景更灵活地选择更合适的输出网络。
第二方面,本申请提供一种神经网络构建装置,包括:
获取单元,用于获取初始超网络,初始超网络包括多个节点,多个节点之间通过至少一种基础运算连接,其中,多个节点中的任意每两个节点包括第一节点和第二节点,每个基础运算的输出作为第二节点的输入,第一节点的输出经第一节点和第二节点之间连接的每个基础运算进行运算后的输出即为该每个基础运算的输出;
处理单元,用于通过预设的训练集对超网络进行至少一次迭代更新,得到至少一个输出网络,其中,在至少一次迭代更新中的任意一次迭代更新中,通过预设的训练集更新上一次迭代更新得到的输出网络的权重参数和结构参数,得到更新后的网络,删除更新后的网络中结构参数低于预设值的基础运算,得到当前次迭代的输出网络,结构参数为第一节点和第二节点之间连接的每个基础运算的输出,占第二节点的输入的权重。
第二方面及第二方面任一种可能的实施方式产生的有益效果可参照第一方面及第一方面任一种可能实施方式的描述。
在一种可能的实施方式中,处理单元,具体用于在任意一次迭代更新中,通过预设的数据集,结合损失函数更新上一次迭代更新得到的输出网络的权重参数和结构参数,得到更新后的网络,损失函数中包括针对结构参数的约束函数,权重参数为多个节点之间连接的基础运算内的参数;
处理单元,还用于在得到当前次迭代的输出网络之后,判断前次迭代的输出网络是否符合预设的剪枝条件,并根据判断结果调整约束函数在损失函数中所占的权重。
在一种可能的实施方式中,处理单元,具体用于:若当前次迭代的输出网络符合预设的剪枝条件,则增加约束函数在损失函数中所占的权重;若当前次迭代的输出网络不符合预设的剪枝条件,则减少约束函数在损失函数中所占的权重。
在一种可能的实施方式中,预设的剪枝条件包括以下一项或者多项:前次迭代更新过程中删除的基础运算的数量大于预设数量、前次迭代更新过程中删除的基础运算占更新后的网络中的基础运算的比例大于预设比例、前次迭代更新过程中删除基础运算后得到的网络的分类精度的下降值超过预设精度值、或者,前次迭代更新过程中删除基础运算后得到的网络的每秒浮点运算次数FLOPS减少的值大于第一预设次数。
在一种可能的实施方式中,处理单元,具体用于:在任意一次迭代更新中,将预设的数据集作为上一次迭代更新得到的输出网络的输入,得到上一次迭代更新得到的输出网络的输出数据;通过损失函数以及上一次迭代更新得到的输出网络的输出数据,得到上一次迭代更新得到的输出网络的损失值;根据损失值对上一次迭代更新得到的输出网络的权重参数更新,以及对上一次迭代更新得到的输出网络中的每个构建单元的结构参数分别进行更新,得到更新后的网络,更新后的网络中的每个构建单元的结构参数不完全相同。
在一种可能的实施方式中,处理单元,具体用于在任意一次迭代更新中,删除更新后的网络中结构参数低于预设值的基础运算,得到当前次迭代的网络;若当前次迭代的网络符合预设的稳定条件,则将当前次迭代的网络作为当前次迭代的输出网络;若当前次迭代的网络不符合预设的稳定条件,则可以对当前次迭代的网络进行下一次迭代更新,或者终止迭代等。
在一种可能的实施方式中,预设的稳定条件包括以下一项或者多项:
当前次迭代的网络的输出的精度大于第一阈值,或者,当前次迭代的网络的输出的平均精度大于第二阈值,或者,当前次迭代的网络损失值不大于第三阈值,或者,当前次迭代的网络的推理时长不大于第四阈值,或者,当前次迭代的网络的FLOPS不大于第五阈值,平均精度为对当前次迭代的网络进行多次评估得到的多个精度的平均值,推理时长为从当前次迭代的网络根据输入得到输出结果的时长。
在一种可能的实施方式中,处理单元,具体用于:获取更新后的网络中结构参数最小的n个基础运算,得到第一基础运算集合,n为正数;从第一基础运算集合中获取结构参数低于b的基础运算,以及获取更新后的网络中结构参数低于a的基础运算,得到第二基础运算集合,a、b为正数,且b>a。
在一种可能的实施方式中,通过预设的训练集对初始超网络进行迭代更新的次数为根据预设的终止条件确定,其中,当至少一次迭代更新中任意一次迭代更新得到的输出网络满足预设的终止条件,则终止迭代更新。
在一种可能的实施方式中,预设的终止条件,包括以下一项或者多项:
输出网络的计算量低于预设计算量、输出网络的FLOPS小于第二预设次数、或者针对超网络进行迭代更新的时长大于预设时长。
第三方面,本申请实施例提供一种神经网络构建装置,该神经网络构建装置具有实现上述第一方面神经网络构建方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第四方面,本申请实施例提供一种神经网络构建装置,包括:处理器和存储器,其中,处理器和存储器通过线路互联,处理器调用存储器中的程序代码用于执行上述第一方面任一项所示的神经网络构建方法中与处理相关的功能。可选地,该神经网络构建装置可以是芯片。
第五方面,本申请实施例提供了一种神经网络构建装置,该神经网络构建装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行如上述第一方面或第一方面任一可选实施方式中与处理相关的功能。
第六方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一可选实施方式中的方法。
第七方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一可选实施方式中的方法。
附图说明
图1本申请应用的一种人工智能主体框架示意图;
图2本申请提供的一种系统架构示意图;
图3为本申请实施例提供的一种卷积神经网络结构示意图;
图4为本申请实施例提供的另一种卷积神经网络结构示意图;
图5本申请提供的另一种系统架构示意图;
图6为本申请实施例提供的一种神经网络构建方法的流程示意图;
图7为本申请实施例提供的一种初始超网络的结构示意图;
图8为本申请实施例提供的一种构建单元的结构示意图;
图9为本申请实施例提供的一种权重参数的示意图;
图10为本申请实施例提供的一种结构参数的示意图;
图11为本申请实施例提供的另一种神经网络构建方法的流程示意图;
图12为本申请实施例提供的另一种结构参数的示意图;
图13为本申请实施例提供的另一种结构参数的示意图;
图14为本申请实施例提供的另一种神经网络构建方法的流程示意图;
图15为本申请实施例提供的一种剪枝过程示意图;
图16为本申请实施例提供的输出网络的输出精度和参数量的分布示意图;
图17为本申请实施例提供的一种神经网络构建装置的结构示意图;
图18为本申请实施例提供的另一种神经网络构建装置的结构示意图;
图19为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供的神经网络构建方法可以应用于人工智能(artificialintelligence,AI)场景中。AI是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
图1示出一种人工智能主体框架示意图,该主体框架描述了人工智能系统总体工作流程,适用于通用的人工智能领域需求。
下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。
“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。
“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施:
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片,如中央处理器(centralprocessing unit,CPU)、网络处理器(neural-network processing unit,NPU)、图形处理器(英语:graphics processing unit,GPU)、专用集成电路(application specificintegrated circuit,ASIC)或现场可编程逻辑门阵列(field programmable gate array,FPGA)等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、视频、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理(如图像识别、目标检测等),语音识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市,智能终端等。
参见附图2,本申请实施例提供了一种系统架构200。该系统架构中包括数据库230、客户设备240。数据采集设备260用于采集数据并存入数据库230,构建模块202基于数据库230中维护的数据生成目标模型/规则201。下面将更详细地描述构建模块202如何基于数据得到目标模型/规则201,目标模型/规则201即本申请以下实施方式中构建得到的神经网络,具体参阅以下图6-16中的相关描述。
计算模块可以包括构建模块202,构建模块202得到的目标模型/规则可以应用不同的系统或设备中。在附图2中,执行设备210配置收发器212,该收发器212可以是无线收发器、光收发器或有线接口(如I/O接口)等,与外部设备进行数据交互,“用户”可以通过客户设备240向收发器212输入数据,例如,本申请以下实施方式,客户设备240可以向执行设备210发送目标任务,请求执行设备构建神经网络,并向执行设备210发送用于训练的数据库。
执行设备210可以调用数据存储系统250中的数据、代码等,也可以将数据、指令等存入数据存储系统250中。
计算模块211使用目标模型/规则201对输入的数据进行处理。具体地,计算模块211用于:获取初始超网络,初始超网络包括多个节点,多个节点之间通过至少一种基础运算连接,其中,多个节点中的任意每两个节点包括第一节点和第二节点,每个基础运算的输出作为第二节点的输入,第一节点的输出经第一节点和第二节点之间连接的每个基础运算进行运算后得到的输出为每个基础运算的输出;通过预设的训练集对超网络进行至少一次迭代更新,得到至少一个输出网络,其中,在至少一次迭代更新中的任意一次迭代更新中,通过预设的训练集更新上一次迭代更新得到的输出网络中每个基础运算对应的结构参数,得到更新后的网络,删除更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的输出网络,结构参数包括第一节点和第二节点之间连接的每个基础运算的输出占第二节点的输入的权重。
最后,收发器212将构建得到的神经网络返回给客户设备240,以在客户设备240或者其他设备中部署该神经网络。
更深层地,构建模块202可以针对不同的任务,基于不同的数据得到相应的目标模型/规则201,以给用户提供更佳的结果。
在附图2中所示情况下,可以根据用户的输入数据确定输入执行设备210中的数据,例如,用户可以在收发器212提供的界面中操作。另一种情况下,客户设备240可以自动地向收发器212输入数据并获得结果,若客户设备240自动输入数据需要获得用户的授权,用户可以在客户设备240中设置相应权限。用户可以在客户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备240也可以作为数据采集端将采集到与目标任务关联的数据存入数据库230。
需要说明的是,附图2仅是本申请实施例提供的一种系统架构的示例性的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制。例如,在附图2中,数据存储系统250相对执行设备210是外部存储器,在其它场景中,也可以将数据存储系统250置于执行设备210中。
在本申请所提及的训练或者更新过程可以由构建模块202来执行。可以理解的是,神经网络的训练过程即学习控制空间变换的方式,更具体即学习权重矩阵。训练神经网络的目的是使神经网络的输出尽可能接近期望值,因此可以通过比较当前网络的预测值和期望值,再根据两者之间的差异情况来更新神经网络中的每一层神经网络的权重向量(当然,在第一次更新之前通常可以先对权重向量进行初始化,即为深度神经网络中的各层预先配置参数)。例如,如果网络的预测值过高,则调整权重矩阵中的权重的值从而降低预测值,经过不断的调整,直到神经网络输出的值接近期望值或者等于期望值。具体地,可以通过损失函数(loss function)或目标函数(objective function)来衡量神经网络的预测值和期望值之间的差异。以损失函数举例,损失函数的输出值(loss)越高表示差异越大,神经网络的训练可以理解为尽可能缩小loss的过程。本申请以下实施方式中更新起点网络的权重以及对串行网络进行训练的过程可以参阅此过程,以下不再赘述。
本申请提及的神经网络可以包括多种类型,如深度神经网络(deep neuralnetwork,DNN)、卷积神经网络(convolutional neural network,CNN)、循环神经网络(recurrent neural networks,RNN)或残差网络其他神经网络等。
示例性地,下面以卷积神经网络(convolutional neural network,CNN)为例。
CNN是一种带有卷积结构的深度神经网络。CNN是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元对输入其中的图像中的重叠区域作出响应。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。该特征抽取器可以看作是滤波器,卷积过程可以看作是使用一个可训练的滤波器与一个输入的图像或者卷积特征平面(feature map)做卷积。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。这其中隐含的原理是:图像的某一部分的统计信息与其他部分是一样的。即意味着在某一部分学习的图像信息也能用在另一部分上。所以对于图像上的所有位置,我们都能使用同样的学习得到的图像信息。在同一卷积层中,可以使用多个卷积核来提取不同的图像信息,一般地,卷积核数量越多,卷积操作反映的图像信息越丰富。
卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
卷积神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的超分辨率模型中参数的大小,使得超分辨率模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的超分辨率模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的超分辨率模型的参数,例如权重矩阵。
如图3所示,卷积神经网络(CNN)100可以包括输入层110,卷积层/池化层120,其中池化层为可选的,以及神经网络层130。
如图3所示卷积层/池化层120可以包括如示例121-126层,在一种实现中,121层为卷积层,122层为池化层,123层为卷积层,124层为池化层,125为卷积层,126为池化层;在另一种实现方式中,121、122为卷积层,123为池化层,124、125为卷积层,126为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
以卷积层121为例,卷积层121可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义。在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素……这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关。需要注意的是,权重矩阵的纵深维度(depthdimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用维度相同的多个权重矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵维度相同,经过该多个维度相同的权重矩阵提取后的特征图维度也相同,再将提取到的多个维度相同的特征图合并形成卷积运算的输出。
通常,权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以从输入图像中提取信息,从而帮助卷积神经网络100进行正确的预测。
当卷积神经网络100有多个卷积层时,初始的卷积层(例如121)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络100深度的加深,越往后的卷积层(例如126)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
池化层:
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,即如图3中120所示例的121-126各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像大小相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。
神经网络层130:
在经过卷积层/池化层120的处理后,卷积神经网络100还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层120只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或别的相关信息),卷积神经网络100需要利用神经网络层130来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层130中可以包括多层隐含层(如图3所示的131、132至13n)以及输出层140。在本申请中,该卷积神经网络为:对选取的起点网络进行至少一次变形得到串行网络,然后根据训练后的串行网络得到。该卷积神经网络可以用于图像识别,图像分类,图像超分辨率重建等等。
在神经网络层130中的多层隐含层之后,也就是整个卷积神经网络100的最后层为输出层140,该输出层140具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络100的前向传播(如图3由110至140的传播为前向传播)完成,反向传播(如图3由140至110的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络100的损失及卷积神经网络100通过输出层输出的结果和理想结果之间的误差。
需要说明的是,如图3所示的卷积神经网络100仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在,例如,如图4所示的多个卷积层/池化层并行,将分别提取的特征均输入给全神经网络层130进行处理。
参见附图5,本申请实施例还提供了一种系统架构300。执行设备210由一个或多个服务器实现,可选的,与其它计算设备配合,例如:数据存储、路由器、负载均衡器等设备;执行设备210可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备210可以使用数据存储系统250中的数据,或者调用数据存储系统250中的程序代码实现本申请以下图6-13对应的神经网络构建方法的步骤。
用户可以操作各自的用户设备(例如本地设备301和本地设备302)与执行设备210进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备210进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。具体地,该通信网络可以包括无线网络、有线网络或者无线网络与有线网络的组合等。该无线网络包括但不限于:第五代移动通信技术(5th-Generation,5G)系统,长期演进(long termevolution,LTE)系统、全球移动通信系统(global system for mobile communication,GSM)或码分多址(code division multiple access,CDMA)网络、宽带码分多址(widebandcode division multiple access,WCDMA)网络、无线保真(wireless fidelity,WiFi)、蓝牙(bluetooth)、紫蜂协议(Zigbee)、射频识别技术(radio frequency identification,RFID)、远程(Long Range,Lora)无线通信、近距离无线通信(near field communication,NFC)中的任意一种或多种的组合。该有线网络可以包括光纤通信网络或同轴电缆组成的网络等。
在另一种实现中,执行设备210的一个方面或多个方面可以由每个本地设备实现,例如,本地设备301可以为执行设备210提供本地数据或反馈计算结果。
需要注意的,执行设备210的所有功能也可以由本地设备实现。例如,本地设备301实现执行设备210的功能并为自己的用户提供服务,或者为本地设备302的用户提供服务。
通常,在构建神经网络的过程中,可以在预先设定的搜索空间中搜索初始超网络,然后通过不同的数据集分别对权重参数和结构参数进行更新,得到更新后的网络。然后删除该更新后的网络中的部分基础运算,保留结构参数最大的基础运算,且每个节点保留结构参数最大的两条边,即两个基础运算,得到输出的子网络。以下将更新后删除部分基础运算的过程称为离散化阶段。然后对该子网络进行堆叠,得到最终的输出网络。然而,该输出网络的所有构建单元使用相同的结构参数,这限制了输出网络的结构,使得输出网络仅能适用简单的场景。并且,一次搜索只能得到一个输出网络,若需要多种输出网络,则需要进行多次搜索,提高了搜索工作量。此外,权重参数和结构参数使用不同的数据集进行更新,导致得到的子网络的结构不稳定,且收敛慢,提高了搜索的工作量。
因此,本申请提供一种神经网络构建方法,用于高效、准确地构建一个或者多个输出网络,得到更稳定的输出网络,可以更灵活地适用于更多、更复杂的场景。
下面基于前述图1-5提供的系统架构或者神经网络,对本申请提供的神经网络构建方法进行详细介绍。
参阅图6,本申请提供的一种神经网络构建方法的流程示意图,如下所述。
601、获取初始超网络。
其中,该初始超网络可以是构建得到的网络,也可以是在预先设定的搜索空间中搜索得到的网络,或者,还可以是在预先设定的搜索空间中搜索得到的网络的基础上进行构建得到的网络。因此,本申请实施方式中,可以解除搜索空间对初始超网络的限制,可以适用于更多更灵活的场景,具有较强的泛化性。
其中,初始超网络中的任意每两个节点可以包括第一节点和第二节点,或者也可以称为上游节点和下游节点。第一节点和第二节点之间连接的每个基础运算的输出作为第二节点的输入,第一节点的输出,经第一节点和第二节点之间连接的每个基础运算进行运算后得到输出即为该每个基础运算的输出。本申请以下实施例中所提及的结构参数,为第一节点和第二节点之间连接的每个基础运算进行运算后得到的输出占第二节点的输入的权重。例如,节点0和节点1之间可以通过5种基础运算连接,节点0的输出经该5种操作分别进行运算之后,该5种操作得到的输出作为节点1的输入;结构参数即该5种操作中每种操作得到的输出占节点1的输入的权重,每个基础运算都有对应的结构参数。
该初始超网络可以包括多个节点,该多个节点之间可以通过至少一种基础运算连接。该基础运算也可以称为操作(operation)或者算子(operator)等。通常,初始超网络中可以包括至少一个构建单元,每个构建单元可以包括多个节点,该多个节点之间可以通过至少一种基础运算连接。例如,初始超网络可以由多个构建单元组成,每个构建单元的节点数量可以是3、4或5个等,节点之间通过基础运算连接,且每个构建单元对应的结构参数可能相同,也可能不相同。
具体地,节点之间连接的基础运算可以包括卷积、池化或卷积与池化的组合等基础运算。例如,池化核大小为3×3的均值池化(avg_pool_3x3)、池化核大小为3×3的最大值池化(max_pool_3x3)、卷积核大小为3×3的分离卷积(sep_conv_3x3)、卷积核大小为5×5的分离卷积(sep_conv_5x5)、卷积核大小为3×3且空洞率为2的空洞卷积(dil_conv_3x3)、卷积核大小为5×5且空洞率为2的空洞卷积(dil_conv_5x5)、skip-connect操作或置零操作(相应位置所有神经元置零,简称Zero)等操作。
示例性地,初始超网络的结构可以如图7所示,初始超网络可以包括一个或者多个构建单元,该一个或者多个构建单元堆叠得到初始超网络。每个构建单元中可以包括一个或者多个节点,构建单元之间或者每个构建单元的节点之间可以通过一种或者多种基础运算连接。以其中一个构建单元为例,该构建单元的结构可以如图8所示,该构建单元可以包括4个节点,每个节点之间可以通过3种基础运算连接。
可选地,在一种可能的实施方式中,在步骤601之前,还可以接收用户的输入数据,该输入数据中可以包括该超网络,或者包括请求构建神经网络的相关数据等。例如,在步骤601之前,可以接收用户输入的目标任务,指示构建用于执行目标任务的神经网络,如用于人脸识别的神经网络,或者用于目标检测的神经网络等,然后执行设备可以基于该目标任务构建初始超网络,或者从搜索空间中搜索得到初始超网络等。
通常,初始超网络中所包括的节点越多,对应的参数也就越多,所需的计算资源也就越多。相应地,初始超网络所包括的节点越少,对应的参数也就越少,所需的计算资源也就越少。因此,当前述的预设硬件的计算资源越多时,可以根据该预设硬件的计算资源,确定包括更多节点的初始超网络的具体结构。并且,在一定的数量范围内,初始超网络所包括的节点越多,输出结果的准确率也就越高,性能也越好。例如,初始超网络中可以包括7个节点,包括2个输入节点、4个中间节点和1个输出节点,可以均衡准确率与计算资源。
在一种可能的实施方式中,该初始超网络可以是从本地保存的数据中直接提取到的。例如,若在步骤601之前,还获取到了历史任务,该历史任务请求构建的神经网络与目标任务请求构建的神经网络类似,如历史任务与目标任务都是请求构建人脸识别神经网络,则可以直接从历史数据中获取基于历史任务构建神经网络时使用或更新的初始超网络,从而降低构建初始超网络的工作量。
602、进行至少一次迭代更新,得到至少一个输出网络。
其中,在得到初始超网络之后,对该初始超网络进行迭代更新,得到一个或者多个输出网络。
具体地,对初始超网络进行迭代更新的过程中的任意一次迭代更新的过程可以包括如下步骤6021-6022,如下所述。
6021、通过预设的训练集更新上一次迭代更新得到的输出网络的每个基础运算对应的结构参数,得到更新后的网络。
其中,可以通过同一训练集更新上一次迭代更新得到的输出网络的每个基础运算的结构参数,得到更新后的网络。该结构参数可以理解为第一节点的输出,经每个基础运算进行运算之后,每个基础运算的输出占第二节点的输入的权重。
更具体地,在任意一次迭代更新的过程中,还通过预设的数据集更新上一次迭代更新得到的输出网络中每个基础运算的权重参数,该权重参数为多个节点之间连接的每个基础运算内使用的参数,如前述的权重矩阵。
为便于理解,对权重参数和结构参数进行示例性说明。
示例性地,权重参数可以参阅图9,其中,节点a1与节点x1和x2之间可以通过基础运算连接,w1和w2即分别为节点a1与节点x1和x2之间连接的基础运算的权重,即w1和w2即可理解为其中两个权重参数。
示例性地,结构参数可以如图10所示,其中,节点0和节点2通过3种基础运算(即基础运算1、2、3)连接,结构参数即包括了每种基础运算所占的权重,该结构参数可以理解为基础运算1、基础运算2和基础运算3的输出,占节点2的输入的权重。
可以理解为,与结构参数不同的是,权重参数表示上一个节点输出的数据作为下一个节点的输入的权重,结构参数表示对应的基础运算的输出在下游节点的输入中所占的权重。
具体地,更新权重参数和结构参数的具体过程可以包括:通过预设的训练集计算损失函数的损失值,然后基于损失函数的损失值更新权重参数和结构参数。示例性地,可以通过训练集中所包括的数据,计算损失函数的损失值,然后基于损失值对权重参数和结构参数进行求导以及梯度更新等,得到更新后的权重参数和结构参数,从而得到更新后的网络。
更具体地,通过预设的训练集更新上一次迭代更新得到的输出网络的权重参数和结构参数,具体可以包括:将预设的数据集中的数据作为上一次迭代更新得到的输出网络的输入,得到上一次迭代更新得到的输出网络的输出;然后通过损失函数以及上一次迭代更新得到的输出网络的输出,得到上一次迭代更新得到的输出网络的损失值;然后,根据该损失值对上一次迭代更新得到的输出网络的权重参数更新,以及对上一次迭代更新得到的输出网络中的每个构建单元的结构参数分别进行更新,得到更新后的网络,更新后的网络中的每个构建单元的结构参数不完全相同。
在本申请实施方式中,可以通过同一个训练集更新权重参数和结构参数,使更新后得到的输出网络更稳定。并且,相对于通过相同的构建单元堆叠得到输出网络,本申请实施例中可以对每个构建单元的结构参数进行更新,更新后的每个构建单元的结构参数可能相同,也可能不相同。因此,可以更灵活地得到更多结构种类的输出网络,增加得到更优的输出网络的几率。并且,本申请实施例中,可以针对每个构建单元的结构参数进行更新,最终可以得到复杂度更高的输出网络,可以适应更多复杂的场景,提高了泛化性。
例如:在N次迭代更新的过程中,更新结构参数集合α的具体方式为:
Figure BDA0002566848810000131
当时ε=0(ε为更新为一阶近似更新),更新权重参数集合ω的方式为:
Figure BDA0002566848810000132
其中,ε为内层优化(inner optimization)的学习率,Ltrain()为网络在训练集上的损失函数。
可选地,可以在损失函数中增加针对结构参数的约束函数。例如,可以在损失函数中增加:βlog(1+x),其中,log(1+x)为约束函数,β为约束函数在损失函数中所占的比重,x为结构参数。
其中,步骤6021中的训练集可以是通过用户的输入数据得到,也可以是采集到的大量的历史数据,具体可以根据实际应用场景进行调整。
例如,若用户请求构建人脸识别神经网络,则可以由用户提供训练集,该训练集中可以包括大量的人脸图像以及对应的人脸识别结果;或者,该训练集也可以是通过搜索或者从本地数据中读取得到。
6022、删除更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的输出网络。
其中,在进行权重参数和结构参数更新,得到更新后的网络之后,删除更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的输出网络,该当前次迭代的输出网络包括于至少一个输出网络中,即对初始超网络进行至少一次迭代之后,可以得到至少一个输出网络。
为便于理解,以下将删除网络中的基础运算的过程称为剪枝,即剪除网络中低于预设值的结构参数对应的基础运算。
因此,在本申请提供的神经网络构建方法中,可以更灵活地通过多种方式得到初始超网络,并且在每次迭代更新的过程中,通过剪枝得到输出网络,而不受搜索空间的限制,因此可以实现在更复杂的空间中的搜索。其次,本申请提供的神经网络构建方法使用了相同的训练集更新权重参数和结构参数,相对于使用不同的数据集分别更新权重参数和结构参数,本申请可以提高最终得到的输出网络的稳定性,并且可以快速收敛,快速得到最终的输出网络。并且,在对初始超网络进行每次迭代更新的过程中,更新了权重参数和结构参数之后,即可删除更新后的网络中低于预设值的结构参数对应的基础运算,即每次迭代更新都可能得到输出网络,因此可以得到一个或者多个输出网络,以使后续可以根据应用场景灵活选择使用的输出网络,具有较高的泛化性。
在一种可能的实施方式中,步骤6022具体可以包括:获取更新后的网络中结构参数最小的n个基础运算,得到第一基础运算集合,n为正数;从第一基础运算集合中获取结构参数低于b的基础运算,以及获取更新后的网络中结构参数低于a的基础运算,得到第二基础运算集合,a、b为正数,且b>a。因此,可以删除更新后的网络中结构参数较低的基础运算,使最终得到的输出网络的结构参数整体较高。
在一种可能的实施方式中,删除更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的网络,若当前次迭代的网络符合预设的稳定条件,则将当前次迭代的网络作为当前次迭代的输出网络,并将该当前次迭代的输出网络加入至输出网络集合中;若当前次迭代的网络不符合预设的稳定条件,则可以对当前次迭代的网络进行下一次迭代更新,或者终止迭代等。可以理解为,可以通过至少一次迭代更新,得到输出网络集合,该输出网络集合中包括了至少一个输出网络,在任意一次迭代中,若得到的输出网络符合稳定条件,则将该输出网络加入输出网络集合,从而得到包括了至少一个输出网络的输出网络集合。
因此,在本申请实施方式中,若对初始超网络进行了多次迭代更新,则可能得到多个符合稳定条件的输出网络,后续可以根据需求灵活地选择合适的输出网络,可以适用于更多的场景。
在一种可能的实施方式中,预设的稳定条件包括以下一项或者多项:当前次迭代的网络的输出的精度大于第一阈值,或者,当前次迭代的网络的输出的平均精度大于第二阈值,或者,当前次迭代的网络损失值不大于第三阈值,或者,当前次迭代的网络的推理时长不大于第四阈值,或者,当前次迭代的网络的每秒浮点运算次数(FLOPS)不大于第五阈值等,平均精度为对当前次迭代的网络进行多次评估得到的多个精度的平均值,推理时长为从当前次迭代的网络根据输入得到输出结果的时长。
在一种可能的实施方式中,通过预设的训练集对初始超网络进行迭代更新的次数为根据预设的终止条件确定,其中,当至少一次迭代更新中任意一次迭代更新得到的输出网络满足预设的终止条件,则终止迭代更新。因此,本申请实施方式中,可以对初始超网络进行迭代更新,直至输出网络满足终止条件,即收敛,从而可以得到一个或者多个输出网络。
在一种可能的实施方式中,前述的预设的终止条件,包括以下一项或者多项:符合预设的稳定条件的输出网络的数量超过预设数量、输出网络的计算量低于预设计算量、输出网络的FLOPS小于第二预设次数、或者针对超网络进行迭代更新的时长大于预设时长。因此,本申请实施方式中,可以根据应用场景预先设定终止对初始超网络进行更新的条件,从而可以得到符合终止条件的一个或者多个输出网络,进而可以格局应用场景更灵活地选择更合适的输出网络。
通常,若未得到符合稳定条件的输出网络,则可以继续进行迭代更新,直到得到符合稳定条件的输出网络,或者,若在预设的时长内未得到符合稳定条件的输出网络,也可以终止迭代更新。
在一种可能的实施方式中,对超网络进行至少一次迭代更新使用的损失函数中包括针对结构参数的约束函数,即通过预先设定的数据集,结合该损失函数更新上一次迭代的输出网络的权重参数和结构参数,在每次更新得到输出网络之后,还判断当前次迭代更新得到的输出网络是否符合剪枝条件,并根据判断结果调整约束函数在损失函数中所占的权重。
在一种具体的实施方式中,调整约束函数在损失函数中所占的权重的具体方式可以包括:若当前次迭代的输出网络符合预设的剪枝条件,则增加约束函数在损失函数中所占的权重;若当前次迭代的输出网络不符合预设的剪枝条件,则减少约束函数在损失函数中所占的权重。
因此,在本申请实施方式中,可以根据输出网络是否符合剪枝条件来调整约束函数在损失函数中所占的权重,从而使下一次迭代中对网络进行剪枝时,得到的输出网络更符合剪枝条件。
在一种具体的实施方式中,预设的剪枝条件包括以下一项或者多项:当前次迭代更新过程中删除的基础运算的数量大于预设数量、当前次迭代更新过程中删除的基础运算的比例大于预设比例、当前次迭代更新过程中删除基础运算后得到的网络的分类精度的下降值超过预设精度值、或者,当前次迭代更新过程中删除基础运算后得到的网络的FLOPS减少的值大于第一预设次数等。
因此,在本申请实施方式中,当对网络的剪枝数量过多,或者剪枝后的网络分类精度下降过多,或者剪枝后的网络的FLOPS减少次数过多等,则可以增加约束函数在损失函数中所占的权重,从而增加进行剪枝的约束,从而降低剪枝的数量,或者降低剪枝后的网络分类精度下降量,或者降低剪枝后的网络的FLOPS的减少次数等。当对网络的剪枝数量过少,或者剪枝后的网络分类精度变化较少,或者剪枝后的网络的FLOPS变化次数过少等,则可以减少约束函数在损失函数中所占的权重,从而减少进行剪枝时的约束,从而增加剪枝数量,或者增加剪枝后的网络分类精度的变化量,或者增加剪枝后的网络的FLOPS的变化次数等,从而可以快速得到更优的输出网络。例如,若剪枝后的网络的输出精度降低超过10%,表示对结构参数的约束力度过大,则此时可以降低对结构参数的更新的约束力度,从而使下一次迭代更新时,剪枝后的网络的输出精度降低量不超过10%,或者增加输出精度等。
为便于理解,下面对本申请提供的神经网络构建方法进行更详细的介绍。
参阅图11,本申请提供的另一种神经网络构建方法的流程示意图,如下所述。
初始超网络1101的具体获取过程可以参阅前述步骤601,此处不再赘述。
训练集1102可以是通过用户的输入数据得到,也可以是采集到的大量的历史数据得到,或者从本地保存的数据中提取得到。该训练集具体可以参阅前述步骤6021中的相关描述,此处不再赘述。
随后,基于训练集1102对初始超网络进行迭代更新。
其中,在任意一次迭代更新的过程中:
可以通过训练集1102进行步骤1103和1104,即更新权重参数和更新结构参数。
具体地,可以基于训练集得到损失函数的值,基于损失函数的值对权重参数进行梯度更新。损失函数中包括了针对结构参数的约束函数,该约束函数用于对结构参数进行更新时形成约束,从而使后续可以调整约束力度来调整对结构参数进行更新的力度。
然后,对更新后的网络进行剪枝,即执行步骤1105。即删除更新后的网络中结构参数低于预设值的结构参数对应的基础运算。
示例性地,如图12所述,该预设值可以设定为0.25,节点0和节点2之间通过3种基础运算连接,基础运算1的结构参数为0.2,基础运算2的结构参数为0.5,基础运算3的结构参数为0.3,即基础运算1的结构参数低于0.25,因此删除节点0和节点2之间连接的基础运算1。如图13所示,删除了基础运算1之后的节点0和节点2之间通过基础运算2和基础运算3连接。
在剪枝完成之后,还根据剪枝结果来调整针对结构参数的约束大小,即调整约束函数在损失函数中所占的比例。具体地,当剪枝后的网络符合剪枝条件时,可以增加约束函数在损失函数中所占的权重,当剪枝后的网络不符合剪枝条件时,可以减少约束函数在损失函数中所占的权重。因此,在下一次迭代更新时,即可使用调整后的约束进行结构参数的更新。
例如,可以在损失函数中增加:βlog(1+x),其中,log(1+x)为约束函数,β为约束函数在损失函数中所占的比重,x为结构参数。因此,在更新结构参数时,β可以对结构参数的更新形成约束,可以在改约束下对约束函数进行求导,随后对结构参数进行梯度更新。
在进行剪枝1105之后可以判断剪枝得到的网络是否符合稳定条件,即执行步骤1106,如当前次迭代的网络的输出的精度大于第一阈值,或者,当前次迭代的网络的输出的平均精度大于第二阈值,或者,当前次迭代的网络损失值不大于第三阈值,或者,当前次迭代的网络的推理时长不大于第四阈值,或者,当前次迭代的网络的FLOPS不大于第五阈值等。若剪枝后的网络符合稳定条件,则可以将剪枝后的网络作为输出网络,并将该输出网络加入输出网络集合1107中。若剪枝后的网络不符合稳定条件,则可以不将该网络加入输出网络集合中。
在本申请实施方式中,该输出网络集合1107中可以包括一个或者多个输出网络。当该输出网络集合1107中包括了多个输出网络时,可以根据实际应用场景来灵活选择使用的输出网络,提高了本申请提供的方法的泛化性,可以灵活适应更多的应用场景。
在进行剪枝之后,判断是否终止搜索,即执行步骤1108。若剪枝后的网络满足终止条件,则终止搜索,即执行步骤1109。若剪枝后的网络不满足终止条件,则可以继续对该网络进行迭代更新,即重复执行步骤1103-1108,直到剪枝后的网络满足终止条件。
因此,在本申请实施方式中在每一次迭代更新中,更新了结构参数和权重参数之后即可进行剪枝,相对于在对结构参数和权重参数更新完成之后,再进行剪枝,本申请提供的神经网络构建方法可以得到更多的输出网络,适用于更多的应用场景。并且,使用了相同的训练集更新权重参数和结构参数,使最终得到的输出网络更稳定,可以更快收敛。此外,还可以根据剪枝结果调整对结构参数进行更新的约束力度,从而使下一次对结果参数更新并进行剪枝后得到的网络更符合剪枝条件。
更进一步地,以一个更具体的应用场景对本申请提供的神经网络构建方法的流程进行示例性说明。
参阅图14,本申请提供的另一种神经网络构建方法的流程示意图,如下所述。
首先,步骤1401-1404可以参阅前述的步骤1101-1104,此处不再赘述。
在步骤1404之后,得到更新后的网络,然后对更新后的网络进行剪枝,即执行步骤1405。
在执行步骤1405之后,判断剪枝数量是否大于预设数量,即执行步骤1406。
若剪枝数量大于预设数量,则调整约束1407,增加约束函数在损失函数中所占的权重,即增加对结构参数进行更新时的约束力度。剪枝数量即对更新后的网络删除的基础运算的数量。从而减少下一次迭代更新时的剪枝数量。
若剪枝数量不大于预设数量,则减少约束函数在损失函数中所占的权重,即减少对结构参数进行更新时的约束力度,从而增加下一次迭代更新时的剪枝数量。
在进行剪枝之后,判断未进行剪枝的迭代次数是否超过t,即执行步骤1408。该t可以是预先设定的值,如t可以等于1、2或者5等。
若未进行剪枝的迭代次数超过t,则将当前次迭代得到的剪枝后的网络作为输出网络,加入输出网络集合1409中。
若未进行剪枝的迭代次数不超过t,则不将前次迭代得到的剪枝后的网络加入输出网络集合1409中。
可以理解为,当更新后的网络中不存在结构参数低于预设值的基础运算之后,即可不进行剪枝,即已得到较稳定的网络,后续可以进行权重参数和结构参数的更新,从而得到更稳定、更符合稳定条件的网络,进而得到输出网络。
在进行剪枝之后,即执行步骤1405之后,判断是否终止搜索。
其中,步骤1410-1400可以参阅前述步骤1108-1109的描述,此处不再赘述。
为便于理解,示例性地,参阅图15,下面对剪枝的过程进行举例说明。
在进行了权重参数和结构参数的更新,得到更新后的网络1501。
之后,从更新后的网络1501中筛选出结构参数最小的n个基础运算,得到基础运算集合1 1502;以及从更新后的网络1501中筛选出所有的基础运算,得到基础运算集合21503。
保留基础运算集合1 1502中结构参数低于b的基础运算,以及保留基础运算集合21503中结构参数低于a的基础运算,从而得到基础运算集合3 1504。
然后删除更新后的网络1501中所包括的基础运算集合3 1504中的基础运算,得到剪枝后的网络1505。
通常,b>a。例如,b可以是0.05,a可以是0.01。因此,对更新后的网络进行剪枝时,删除了该网络中结构参数小于a的所有结构参数对应的基础运算,得到了更稳定的剪枝后的网络。
可以理解为,本申请实施例中,最终得到的输出网络并非仅由结构相同的构建单元进行堆叠得到,每个构建单元可能具有不同的结构参数。在每次迭代更新过程中,进行了结构参数的优化和剪枝,即离散化阶段以剪枝的形式分散于优化阶段中,使得最终可以得到一个或者多个输出网络,根据不同的应用场景可以输出不同的输出网络,泛化能力更强,更灵活地适应更多的场景。更新权重参数和更新结构参数使用相同的数据集,使最终得到的输出网络更稳定。且更新结构参数时,可以在损失函数中增加对结构参数的约束,从而使每次迭代更新的过程都可以适应性地调整结构参数更新的约束力度,从而可以更高效、更准确地得到结构参数更优的输出网络。
因此,在本申请实施方式中,初始超网络可以通过多种方式得到,并且可以针对每个构建单元的结构参数进行更新,即输出网络中每个构建单元的结构参数可能不相同,解除了搜索空间对搜索的限制,可以适应于更复杂的场景中。并且,本申请实施方式提供了一种自适应剪枝的方式,通过多次迭代更新,可以得到一个或者多个输出网络。在得到多个输出网络时,可以根据应用场景选择合适的输出网络,具有较强的泛化性。并且,本申请实施方式中,删除的是结构参数小于预设值的结构参数对应的基础运算,输出网络中每两个节点之前连接的基础运算可能是一个,也可能是多个,可以理解为解除了节点之间只能保留固定数量的基础运算的限定,泛化能力更强。此外,在对初始超网络进行迭代更新的过程中,可能得到多个输出网络,可以在输出精度和计算量之间进行平衡,在不同的场景中可以选择不同的输出网络,避免了重新搜索得到输出网络的过程,提高了工作效率。
示例性地,如图16所示,包括了本申请实施例中构建的输出网络(如图16中表示的GOLD-NAS),和通过随机神经网络结构搜索(stochastic neural architecture search,SNAS)和连续进化结构搜索方法(continuous evolution architecture search,CARS)的输出精度和参数量的分布比较图。且SNAS和CARS的搜索空间可以是可微分结构搜索(differentiable architecture search,DARTS)空间。本申请实施例的初始超网络可以通过搜索空间,如DART或其他搜索空间等搜索得到,或者直接构建初始超网络等。
其中,从图16中可以观察到,本申请实施例得到的输出网络分布更连续,可以实现的输出精度和参数量之间的平衡。可以理解的是,通常,参数量越大,所需的计算量也就越大,参数量越少,所需的计算量也就越少。因此,本申请实施例得到的输出网络分布更连续,可以实现的输出精度和计算量之间的平衡。此外,本申请实施例搜索到的输出网络结构可能更复杂,而输出精度、输出准确度或者平均准确度等输出结果则更优,从而可以得到更优的输出网络。
前述对本申请提供的神经网络构建方法的流程进行了详细说明,下面结合前述图5-16,对本申请提供的装置进行介绍。
首先,参阅图17,本申请提供的一种神经网络构建装置的结构示意图,该神经网络构建装置用于执行前述图5-16中任一实施例的步骤。
该神经网络构建装置,包括:
获取单元1701,用于获取初始超网络,初始超网络包括多个节点,多个节点之间通过至少一种基础运算连接,其中,多个节点中的任意每两个节点包括第一节点和第二节点,每个基础运算的输出作为第二节点的输入,第一节点的输出经第一节点和第二节点之间连接的每个基础运算进行运算后的输出为该每个基础运算的输出;
处理单元1702,用于通过预设的训练集对超网络进行至少一次迭代更新,得到至少一个输出网络,其中,在至少一次迭代更新中的任意一次迭代更新中,通过预设的训练集更新上一次迭代更新得到的输出网络的权重参数和结构参数,得到更新后的网络,删除更新后的网络中结构参数低于预设值的结构参数对应的基础运算,得到当前次迭代的输出网络,结构参数为第一节点和第二节点之间连接的每个基础运算的输出,占第二节点的输入的权重。
在一种可能的实施方式中,处理单元1702,具体用于在任意一次迭代更新中,通过预设的数据集,结合损失函数更新上一次迭代更新得到的输出网络的权重参数和结构参数,得到更新后的网络,损失函数中包括针对结构参数的约束函数,权重参数为多个节点之间连接的基础运算内的参数;处理单元1702,还用于在任意一次迭代更新中,在得到当前次迭代的输出网络之后,判断前次迭代的输出网络是否符合预设的剪枝条件,并根据判断结果调整约束函数在损失函数中所占的权重。
在一种可能的实施方式中,处理单元1702,具体用于:若当前次迭代的输出网络符合预设的剪枝条件,则增加约束函数在损失函数中所占的权重;若当前次迭代的输出网络不符合预设的剪枝条件,则减少约束函数在损失函数中所占的权重。
在一种可能的实施方式中,预设的剪枝条件包括以下一项或者多项:前次迭代更新过程中删除的基础运算的数量大于预设数量、前次迭代更新过程中删除的基础运算占更新后的网络中的基础运算的比例大于预设比例、前次迭代更新过程中删除基础运算后得到的网络的分类精度的下降值超过预设精度值、或者,前次迭代更新过程中删除基础运算后得到的网络的每秒浮点运算次数FLOPS减少的值大于第一预设次数。
在一种可能的实施方式中,处理单元1702,具体用于:在任意一次迭代更新中,将预设的数据集作为上一次迭代更新得到的输出网络的输入,得到上一次迭代更新得到的输出网络的输出数据;通过损失函数以及上一次迭代更新得到的输出网络的输出数据,得到输出上一次迭代更新得到的输出网络的损失值;根据损失值对上一次迭代更新得到的输出网络的权重参数更新,以及对上一次迭代更新得到的输出网络中的每个构建单元的结构参数分别进行更新,得到更新后的网络,更新后的网络中的每个构建单元的结构参数不完全相同。
在一种可能的实施方式中,处理单元1702,具体用于在任意一次迭代更新中,删除更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的网络;若当前次迭代的网络符合预设的稳定条件,则将当前次迭代的网络作为当前次迭代的输出网络。
在一种可能的实施方式中,预设的稳定条件包括以下一项或者多项:当前次迭代的网络的输出的精度大于第一阈值,或者,当前次迭代的网络的输出的平均精度大于第二阈值,或者,当前次迭代的网络损失值不大于第三阈值,或者,当前次迭代的网络的推理时长不大于第四阈值,或者,当前次迭代的网络的FLOPS不大于第五阈值,平均精度为对当前次迭代的网络进行多次评估得到的多个精度的平均值,推理时长为从当前次迭代的网络根据输入得到输出结果的时长。
在一种可能的实施方式中,处理单元1702,具体用于:获取更新后的网络中结构参数最小的n个结构参数对应的基础运算,得到第一基础运算集合,n为正数;从第一基础运算集合中获取结构参数低于b的结构参数对应的基础运算,以及获取更新后的网络中结构参数低于a的结构参数对应的基础运算,得到第二基础运算集合,a、b为正数,且b>a。
在一种可能的实施方式中,通过预设的训练集对初始超网络进行迭代更新的次数为根据预设的终止条件确定,其中,当至少一次迭代更新中任意一次迭代更新得到的输出网络满足预设的终止条件,则终止迭代更新。
在一种可能的实施方式中,预设的终止条件,包括以下一项或者多项:
输出网络的计算量低于预设计算量、输出网络的FLOPS小于第二预设次数、或者针对超网络进行迭代更新的时长大于预设时长。
请参阅图18,本申请提供的另一种神经网络构建装置的结构示意图,如下所述。
该神经网络构建装置可以包括处理器1801和存储器1802。该处理器1801和存储器1802通过线路互联。其中,存储器1802中存储有程序指令和数据。
存储器1802中存储了前述图5-16中的步骤对应的程序指令以及数据。
处理器1801用于执行前述图5-16中任一实施例所示的神经网络构建装置执行的方法步骤。
可选地,该神经网络构建装置还可以包括收发器1803,用于接收或者发送数据。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于生成车辆行驶速度的程序,当其在计算机上行驶时,使得计算机执行如前述图5-16所示实施例描述的方法中的步骤。
可选地,前述的图18中所示的神经网络构建装置为芯片。
本申请实施例还提供了一种神经网络构建装置,该神经网络构建装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行前述图5-16中任一实施例所示的神经网络构建装置执行的方法步骤。
本申请实施例还提供一种数字处理芯片。该数字处理芯片中集成了用于实现上述处理器1801,或者处理器1801的功能的电路和一个或者多个接口。当该数字处理芯片中集成了存储器时,该数字处理芯片可以完成前述实施例中的任一个或多个实施例的方法步骤。当该数字处理芯片中未集成存储器时,可以通过通信接口与外置的存储器连接。该数字处理芯片根据外置的存储器中存储的程序代码来实现上述实施例中神经网络构建装置执行的动作。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上行驶时,使得计算机执行如前述图5-16所示实施例描述的方法中神经网络构建装置所执行的步骤。
本申请实施例提供的神经网络构建装置可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使服务器内的芯片执行上述图5-16所示实施例描述的神经网络构建方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
具体地,前述的处理单元或者处理器可以是中央处理器(central processingunit,CPU)、网络处理器(neural-network processing unit,NPU)、图形处理器(graphicsprocessing unit,GPU)、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)或现场可编程逻辑门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器等。
示例性地,请参阅图19,图19为本申请实施例提供的芯片的一种结构示意图,所述芯片可以表现为神经网络处理器NPU 190,NPU 190作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路190,通过控制器1904控制运算电路1903提取存储器中的矩阵数据并进行乘法运算。
在一些实现中,运算电路1903内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路1903是二维脉动阵列。运算电路1903还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路1903是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器1902中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器1901中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)1908中。
统一存储器1906用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(direct memory access controller,DMAC)1905,DMAC被搬运到权重存储器1902中。输入数据也通过DMAC被搬运到统一存储器1906中。
总线接口单元(bus interface unit,BIU)1910,用于AXI总线与DMAC和取指存储器(instruction fetch buffer,IFB)1909的交互。
总线接口单元1910(bus interface unit,BIU),用于取指存储器1909从外部存储器获取指令,还用于存储单元访问控制器1905从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器1906或将权重数据搬运到权重存储器1902中或将输入数据数据搬运到输入存储器1901中。
向量计算单元1907包括多个运算处理单元,在需要的情况下,对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/全连接层网络计算,如批归一化(batch normalization),像素级求和,对特征平面进行上采样等。
在一些实现中,向量计算单元1907能将经处理的输出的向量存储到统一存储器1906。例如,向量计算单元1907可以将线性函数和/或非线性函数应用到运算电路1903的输出,例如对卷积层提取的特征平面进行线性插值,再例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元1907生成归一化的值、像素级求和的值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路1903的激活输入,例如用于在神经网络中的后续层中的使用。
控制器1904连接的取指存储器(instruction fetch buffer)1909,用于存储控制器1904使用的指令;
统一存储器1906,输入存储器1901,权重存储器1902以及取指存储器1909均为On-Chip存储器。外部存储器私有于该NPU硬件架构。
其中,循环神经网络中各层的运算可以由运算电路1903或向量计算单元1907执行。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述图6-14的方法的程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
最后应说明的是:以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (23)

1.一种神经网络构建方法,其特征在于,包括:
获取初始超网络,所述初始超网络包括多个节点,所述多个节点之间通过至少一种基础运算连接,其中,所述多个节点中的任意每两个节点包括第一节点和第二节点,每个基础运算的输出作为所述第二节点的输入,所述第一节点的输出经所述第一节点和所述第二节点之间连接的每个基础运算进行运算后得到的输出为所述每个基础运算的输出;
通过预设的训练集对所述超网络进行至少一次迭代更新,得到至少一个输出网络,其中,在所述至少一次迭代更新中的任意一次迭代更新中,通过所述预设的训练集更新上一次迭代更新得到的输出网络中每个基础运算对应的结构参数,得到更新后的网络,删除所述更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的输出网络,所述结构参数包括所述第一节点和所述第二节点之间连接的每个基础运算的输出占所述第二节点的输入的权重。
2.根据权利要求1所述的方法,其特征在于,在所述任意一次迭代更新中,所述通过所述预设的训练集更新上一次迭代更新得到的输出网络的每个基础运算对应的结构参数,得到更新后的网络,包括:
通过所述预设的数据集,结合损失函数更新上一次迭代更新得到的输出网络的每个基础运算对应的权重参数和结构参数,得到所述更新后的网络,所述权重参数为所述多个节点之间连接的每个基础运算内使用的参数,所述损失函数中包括针对结构参数的约束函数;
在得到当前次迭代的输出网络之后,所述方法还包括:
判断所述前次迭代的输出网络是否符合预设的剪枝条件,并根据判断结果调整所述约束函数在所述损失函数中所占的权重。
3.根据权利要求2所述的方法,其特征在于,所述根据判断结果调整所述约束函数在所述损失函数中所占的权重,包括:
若所述当前次迭代的输出网络符合所述预设的剪枝条件,则增加所述约束函数在所述损失函数中所占的权重;
若所述当前次迭代的输出网络不符合所述预设的剪枝条件,则减少所述约束函数在所述损失函数中所占的权重。
4.根据权利要求2或3所述的方法,其特征在于,所述预设的剪枝条件包括以下一项或者多项:所述前次迭代更新过程中删除的基础运算的数量大于预设数量、所述前次迭代更新过程中删除的基础运算占所述更新后的网络中的基础运算的比例大于预设比例、所述前次迭代更新过程中删除基础运算后得到的网络的分类精度的下降值超过预设精度值、或者,所述前次迭代更新过程中删除基础运算后得到的网络的每秒浮点运算次数FLOPS减少的值大于第一预设次数。
5.根据权利要求1-4中任一项所述的方法,其特征在于,在所述任意一次迭代更新中,所述通过所述预设的训练集更新上一次迭代更新得到的输出网络的权重参数和结构参数,包括:
将所述预设的数据集作为所述上一次迭代更新得到的输出网络的输入,得到所述上一次迭代更新得到的输出网络的输出数据;
通过损失函数以及所述上一次迭代更新得到的输出网络的输出数据,得到所述上一次迭代更新得到的输出网络的损失值;
根据所述损失值对所述上一次迭代更新得到的输出网络的权重参数更新,以及对所述上一次迭代更新得到的输出网络中的每个构建单元的结构参数分别进行更新,得到所述更新后的网络,所述更新后的网络中的每个构建单元的结构参数不完全相同。
6.根据权利要求1-5中任一项所述的方法,其特征在于,在所述任意一次迭代更新中,所述删除所述更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的输出网络,包括:
删除所述更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的网络;
若所述当前次迭代的网络符合预设的稳定条件,则将所述当前次迭代的网络作为当前次迭代的输出网络。
7.根据权利要求6所述的方法,其特征在于,所述预设的稳定条件包括以下一项或者多项:
所述当前次迭代的网络的输出的精度大于第一阈值,或者,所述当前次迭代的网络的输出的平均精度大于第二阈值,或者,所述当前次迭代的网络损失值不大于第三阈值,或者,所述当前次迭代的网络的推理时长不大于第四阈值,或者,所述当前次迭代的网络的FLOPS不大于第五阈值,所述平均精度为对所述当前次迭代的网络进行多次评估得到的多个精度的平均值,所述推理时长为从所述当前次迭代的网络根据输入得到输出结果的时长。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述删除所述更新后的网络中结构参数低于预设值的结构参数对应的基础运算,包括:
获取所述更新后的网络中结构参数最小的n个结构参数对应的基础运算,得到第一基础运算集合,所述n为正数;
从所述第一基础运算集合中获取结构参数低于b的结构参数对应的基础运算,以及获取所述更新后的网络中结构参数低于a的基础运算,得到第二基础运算集合,所述a、b为正数,且b>a。
9.根据权利要求1-8中任一项所述的方法,其特征在于,
所述通过预设的训练集对所述初始超网络进行迭代更新的次数为根据预设的终止条件确定,其中,当所述至少一次迭代更新中任意一次迭代更新得到的输出网络满足所述预设的终止条件,则终止所述迭代更新。
10.根据权利要求9所述的方法,其特征在于,所述预设的终止条件,包括以下一项或者多项:
所述输出网络的计算量低于预设计算量、所述输出网络的FLOPS小于第二预设次数、或者针对所述超网络进行迭代更新的时长大于预设时长。
11.一种神经网络构建装置,其特征在于,包括:
获取单元,用于获取初始超网络,所述初始超网络包括多个节点,所述多个节点之间通过至少一种基础运算连接,其中,所述多个节点中的任意每两个节点包括第一节点和第二节点,每个基础运算的输出作为所述第二节点的输入,所述第一节点的输出经所述第一节点和所述第二节点之间连接的每个基础运算进行运算后得到的输出为所述每个基础运算的输出;
处理单元,用于通过预设的训练集对所述超网络进行至少一次迭代更新,得到至少一个输出网络,其中,在所述至少一次迭代更新中的任意一次迭代更新中,通过所述预设的训练集更新上一次迭代更新得到的输出网络的结构参数,得到更新后的网络,删除所述更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的输出网络,所述结构参数为所述第一节点和所述第二节点之间连接的每个基础运算的输出,占所述第二节点的输入的权重。
12.根据权利要求11所述的装置,其特征在于,
所述处理单元,具体用于在所述任意一次迭代更新中,通过所述预设的数据集,结合损失函数更新上一次迭代更新得到的输出网络的权重参数和结构参数,得到所述更新后的网络,所述损失函数中包括针对结构参数的约束函数,所述权重参数为所述多个节点之间连接的基础运算内使用的参数;
所述处理单元,还用于在得到当前次迭代的输出网络之后,判断所述前次迭代的输出网络是否符合预设的剪枝条件,并根据判断结果调整所述约束函数在所述损失函数中所占的权重。
13.根据权利要求12所述的装置,其特征在于,所述处理单元,具体用于:
若所述当前次迭代的输出网络符合所述预设的剪枝条件,则增加所述约束函数在所述损失函数中所占的权重;
若所述当前次迭代的输出网络不符合所述预设的剪枝条件,则减少所述约束函数在所述损失函数中所占的权重。
14.根据权利要求12或13所述的装置,其特征在于,所述预设的剪枝条件包括以下一项或者多项:所述前次迭代更新过程中删除的基础运算的数量大于预设数量、所述前次迭代更新过程中删除的基础运算占所述更新后的网络中的基础运算的比例大于预设比例、所述前次迭代更新过程中删除基础运算后得到的网络的分类精度的下降值超过预设精度值、或者,所述前次迭代更新过程中删除基础运算后得到的网络的每秒浮点运算次数FLOPS减少的值大于第一预设次数。
15.根据权利要求11-14中任一项所述的装置,其特征在于,所述处理单元,具体用于:在所述任意一次迭代更新中,
将所述预设的数据集作为所述上一次迭代更新得到的输出网络的输入,得到所述上一次迭代更新得到的输出网络的输出数据;
通过损失函数以及所述上一次迭代更新得到的输出网络的输出数据,得到所述上一次迭代更新得到的输出网络的损失值;
根据所述损失值对所述上一次迭代更新得到的输出网络的权重参数更新,以及对所述上一次迭代更新得到的输出网络中的每个构建单元的结构参数分别进行更新,得到所述更新后的网络,所述更新后的网络中的每个构建单元的结构参数不完全相同。
16.根据权利要求11-15中任一项所述的装置,其特征在于,所述处理单元,具体用于在所述任意一次迭代更新中,
删除所述更新后的网络中低于预设值的结构参数对应的基础运算,得到当前次迭代的网络;
若所述当前次迭代的网络符合预设的稳定条件,则将所述当前次迭代的网络作为当前次迭代的输出网络。
17.根据权利要求16所述的装置,其特征在于,所述预设的稳定条件包括以下一项或者多项:
所述当前次迭代的网络的输出的精度大于第一阈值,或者,所述当前次迭代的网络的输出的平均精度大于第二阈值,或者,所述当前次迭代的网络损失值不大于第三阈值,或者,所述当前次迭代的网络的推理时长不大于第四阈值,或者,所述当前次迭代的网络的FLOPS不大于第五阈值,所述平均精度为对所述当前次迭代的网络进行多次评估得到的多个精度的平均值,所述推理时长为从所述当前次迭代的网络根据输入得到输出结果的时长。
18.根据权利要求11-17中任一项所述的装置,其特征在于,所述处理单元,具体用于:
获取所述更新后的网络中结构参数最小的n个基础运算,得到第一基础运算集合,所述n为正数;
从所述第一基础运算集合中获取结构参数低于b的基础运算,以及获取所述更新后的网络中结构参数低于a的基础运算,得到第二基础运算集合,所述a、b为正数,且b>a。
19.根据权利要求11-18中任一项所述的装置,其特征在于,
所述通过预设的训练集对所述初始超网络进行迭代更新的次数为根据预设的终止条件确定,其中,当所述至少一次迭代更新中任意一次迭代更新得到的输出网络满足所述预设的终止条件,则终止所述迭代更新。
20.根据权利要求19所述的装置,其特征在于,所述预设的终止条件,包括以下一项或者多项:
所述输出网络的计算量低于预设计算量、所述输出网络的FLOPS小于第二预设次数、或者针对所述超网络进行迭代更新的时长大于预设时长。
21.一种神经网络构建装置,其特征在于,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序,当所述存储器存储的程序指令被所述处理器执行时实现权利要求1至10中任一项所述的方法。
22.一种计算机可读存储介质,包括程序,当其被处理单元所执行时,执行如权利要求1至10中任一项所述的方法。
23.一种神经网络构建装置,其特征在于,包括处理单元和通信接口,所述处理单元通过所述通信接口获取程序指令,当所述程序指令被所述处理单元执行时实现权利要求1至10中任一项所述的方法。
CN202010626911.0A 2020-07-02 2020-07-02 一种神经网络构建方法以及装置 Pending CN111931901A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010626911.0A CN111931901A (zh) 2020-07-02 2020-07-02 一种神经网络构建方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010626911.0A CN111931901A (zh) 2020-07-02 2020-07-02 一种神经网络构建方法以及装置

Publications (1)

Publication Number Publication Date
CN111931901A true CN111931901A (zh) 2020-11-13

Family

ID=73317567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010626911.0A Pending CN111931901A (zh) 2020-07-02 2020-07-02 一种神经网络构建方法以及装置

Country Status (1)

Country Link
CN (1) CN111931901A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113033784A (zh) * 2021-04-18 2021-06-25 沈阳雅译网络技术有限公司 一种针对cpu和gpu设备搜索神经网络结构的方法
WO2022166294A1 (zh) * 2021-02-03 2022-08-11 歌尔股份有限公司 一种目标检测方法和装置
CN114925739A (zh) * 2021-02-10 2022-08-19 华为技术有限公司 目标检测方法、装置和系统
CN114969340A (zh) * 2022-05-30 2022-08-30 中电金信软件有限公司 一种对深度神经网络进行剪枝的方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022166294A1 (zh) * 2021-02-03 2022-08-11 歌尔股份有限公司 一种目标检测方法和装置
CN114925739A (zh) * 2021-02-10 2022-08-19 华为技术有限公司 目标检测方法、装置和系统
CN114925739B (zh) * 2021-02-10 2023-11-03 华为技术有限公司 目标检测方法、装置和系统
CN113033784A (zh) * 2021-04-18 2021-06-25 沈阳雅译网络技术有限公司 一种针对cpu和gpu设备搜索神经网络结构的方法
CN114969340A (zh) * 2022-05-30 2022-08-30 中电金信软件有限公司 一种对深度神经网络进行剪枝的方法及装置
CN114969340B (zh) * 2022-05-30 2023-09-22 中电金信软件有限公司 一种对深度神经网络进行剪枝的方法及装置

Similar Documents

Publication Publication Date Title
CN110175671B (zh) 神经网络的构建方法、图像处理方法及装置
CN112183718B (zh) 一种用于计算设备的深度学习训练方法和装置
WO2022083536A1 (zh) 一种神经网络构建方法以及装置
WO2021120719A1 (zh) 神经网络模型更新方法、图像处理方法及装置
CN111797983A (zh) 一种神经网络构建方法以及装置
US20230082597A1 (en) Neural Network Construction Method and System
WO2022052601A1 (zh) 神经网络模型的训练方法、图像处理方法及装置
CN112215332B (zh) 神经网络结构的搜索方法、图像处理方法和装置
CN111931901A (zh) 一种神经网络构建方法以及装置
WO2021218517A1 (zh) 获取神经网络模型的方法、图像处理方法及装置
CN111797992A (zh) 一种机器学习优化方法以及装置
CN110222718B (zh) 图像处理的方法及装置
CN111882031A (zh) 一种神经网络蒸馏方法及装置
CN115081588A (zh) 一种神经网络参数量化方法和装置
CN113592060A (zh) 一种神经网络优化方法以及装置
CN113505883A (zh) 一种神经网络训练方法以及装置
CN111428854A (zh) 一种结构搜索方法及结构搜索装置
CN114091554A (zh) 一种训练集处理方法和装置
CN115018039A (zh) 一种神经网络蒸馏方法、目标检测方法以及装置
CN113536970A (zh) 一种视频分类模型的训练方法及相关装置
WO2022156475A1 (zh) 神经网络模型的训练方法、数据处理方法及装置
WO2024067113A1 (zh) 一种动作预测方法及其相关设备
CN111652349A (zh) 一种神经网络的处理方法及相关设备
CN115146757A (zh) 一种神经网络模型的训练方法及装置
CN114626284A (zh) 一种模型处理方法及相关装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination