CN113287121A - 神经网络的自动生成 - Google Patents
神经网络的自动生成 Download PDFInfo
- Publication number
- CN113287121A CN113287121A CN201980086664.5A CN201980086664A CN113287121A CN 113287121 A CN113287121 A CN 113287121A CN 201980086664 A CN201980086664 A CN 201980086664A CN 113287121 A CN113287121 A CN 113287121A
- Authority
- CN
- China
- Prior art keywords
- neural network
- network model
- generation
- models
- grammar
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/086—Learning methods using evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Physiology (AREA)
- Image Analysis (AREA)
Abstract
在父神经网络模型集的语法进化中使用语法来生成子神经网络模型集。基于测试数据集来测试神经网络模型的代,其中代包括子神经网络模型集。针对代中的每个神经网络,确定多个属性中的每一个属性的相应值,其中属性中的一个属性包括从测试中确定的验证精度值。基于用于神经网络的代的多个属性的值来执行多目标优化,并且基于多目标优化的结果来选择神经网络模型的代的子集。
Description
相关申请
本申请要求2018年10月31日提交的美国临时专利申请第62/753,822号的权益并且该申请通过引用整体结合于此。
技术领域
本公开大体涉及计算机系统领域,并且更具体地涉及神经网络模型的自动生成。
背景技术
人工神经网络是一种计算模型,可用于解决使用传统计算模型难以解决的任务。例如,可以训练人工神经网络来执行使用其他传统的编程范例极难实现的模式识别任务。利用人工神经网络通常需要执行计算和操作以开发、训练和更新人工神经网络。神经网络可以与其他模型一起使用,以在计算系统中实现机器学习功能。机器学习可以与诸如计算机视觉、电子商务、游戏、机器人运动、大数据分析、图像识别、语言处理等应用结合使用。
附图说明
当结合以下附图考虑时,参考本公开主题的以下详细描述,可以更全面地理解所公开的主题的各种目标、特征和优点,其中相同的参考号标识相同的要素。附图是示意性地并且不旨在按比例绘制。为了清楚起见,并非每一个组件在每一个图中都被标记。在不需要图示来允许本领域普通技术人员理解所公开的主题的情况下,也不是所公开的主题的每一个实施例的每一个组件都被示出。
图1示出了根据一些实施例的采用机器学习的示例系统;
图2是示出包括示例神经网络生成器系统的计算环境的简化框图;
图3是示出示例进化算法的各方面的简化框图;
图4是示出在进化中选择父神经网络时利用的多目标优化的各方面的简化框图;
图5是示出示例网络模块的简化框图;
图6是示出另一示例网络模块的简化框图;
图7A-7B是示出了利用语法进化的神经网络模型的示例生成的简化框图;
图8是示出了在神经网络模型的自动生成中涉及的示例技术的简化框图;
图9是根据至少一些实施例的具有设备的示例性网络的简化框图;
图10是根据至少一些实施例的示例性雾或云计算网络的简化框图;
图11是根据至少一些实施例的包括示例设备的系统的简化框图;
图12是根据至少一些实施例的示例处理设备的简化框图;
图13是根据至少一些实施例的示例性处理器的框图;
图14是根据一些实施例的示例机器学习设备的简化框图;以及
图15是根据至少一些实施例的示例性计算系统的框图。
具体实施方式
在以下描述中,阐述了与所公开的主题的系统和方法以及此类系统和方法可以操作的环境等相关的许多具体细节,以便提供对所公开的主题的透彻理解。然而,对于本领域技术人员将是显而易见的是,可以在没有这些具体细节的情况下实践所公开的主题,并且不详细描述在本领域中是众所周知的某些特征,以便避免复杂化所公开的主题。此外,应当理解,下文所提供的实施例是示例性的,并且构想了在所公开的主题的范围内存在其他的系统和方法。
各种技术基于增强现实、虚拟现实、混合现实、自主设备和机器人出现并包含它们,这可利用采用各种机器学习模型(包括神经网络和深度学习模型)的机器学习。在许多这些应用中,可以预期,将使用此类模型的设备(和相对应的计算逻辑)可包括小型无人机和机器人、可穿戴设备、虚拟现实系统,以及其他示例。随着系统变小,此类设备的存储器和处理资源也可能受到限制。例如,AR/VR/MR应用可能要求使用支持硬件生成的图形表示的高帧速率,或者实现对感测条件的适当快速响应时间(例如,通过机器人、无人机或自主交通工具驱动运动),以及其他示例。一些应用在满足相对应系统的处理、存储器、能力、应用要求等方面的约束的同时,可能面临令人满意地执行大型、资源密集型机器学习模型的挑战,诸如当前的高精度卷积神经网络(CNN)模型。
转向图1,示出了简化框图100,其示出了涉及机器110(例如,无人机或机器人)的示例环境,该机器110将使用与其操作相关的机器学习和机器学习模型(例如,分析3D空间、识别目的地和危害、路径规划等)。例如,在一个示例中,机器110可以被实现为自主或半自主机器,能够处理传感器数据(例如,来自一个或多个本地传感器(例如,135)或描述机器110周围环境的外部传感器的传感器数据)并基于机器在场景中识别的危险和/或目的地来利用该信息在场景中自主移动(例如,改变其在场景中的位置和/或改变机器的一个或多个元件(例如,传感器、相机、指示器、致动器、工具等)的定向(例如,朝向))。例如,机器可以利用计算机视觉引擎140检测并识别场景中的各种对象(例如,120a-c)。实现计算机视觉引擎140可以包括一种或多种机器学习模型的实现和执行(使用机器处的一个或多个计算机处理器(例如,130),包括专用于执行深度学习操作的专用处理器和硬件加速器)。机器可以利用计算机视觉引擎140的结果来(例如,使用路径规划引擎145)确定环境内的路径,并基于检测到的对象自主地导航场景或与场景交互。在一些实现方式中,机器115可被具体化为自主交通工具(用于运载乘客或货物)、空中无人机、陆基无人机或水基无人机、机器人、以及其他示例。
如上所述,在一些示例中,机器110可包括计算系统,该计算系统使用一个或多个数据处理器130(诸如一个或多个中央处理单元(CPU)、图形处理单元(GPU)、张量处理单元或其他矩阵算术处理器、硬件加速器(例如,体积处理加速器、机器学习加速器)、以及其他示例通用或专用处理硬件)来实现,并使用一个或多个存储器元件(例如,155)来进一步实现。可以提供附加的逻辑块,其在硬件电路系统、固件或软件中实现,诸如计算机视觉引擎140、路径规划引擎145、一个或多个致动器150(以控制机器110的响应动作),以及特定于机器的实现方式和目的的其他示例逻辑和功能。在一些实现方式中,机器110可以另外包括一个或多个传感器(例如,135)以测量机器周围环境的各方面(例如,全球定位传感器、光检测和测距(LIDAR)传感器、图像传感器、超声传感器、音频传感器、飞行时间传感器、实感传感器等)。可以将从此类传感器135导出的数据作为输入提供给一个或多个机器学习模型,诸如深度学习网络和其他人工神经网络模型。
如在图1的示例中所示,在一些实现方式中,可以由示例神经网络生成器系统(例如,105)开发和提供由示例机器110(和相关的(多个)机器学习计算系统)利用的神经网络模型(例如,125')。在一些实现方式中,可以从由神经网络生成器系统105自动(例如,不是由人类工程师手动地)设计、训练和验证的神经网络的集合中选择或以其他方式提供(例如,通过一个或多个网络112)此类神经网络。例如,进化计算技术和遗传算法可通过神经网络生成器系统105应用来生成特定的神经网络(例如,125'),其可用于机器110,不仅作为在应用级别上提供适当的精度,而且可以调谐到机器110处可用的计算和存储器资源(在一些情况下,例如,由于大小、电池功率或设备的其他限制,可能受到限制),以及其他示例。
近年来,支持传统的手工设计方法的卷积神经网络(CNN)的自动生成(例如,通过AutoML)受到了越来越多的关注。然而,传统的自动神经网络设计方法集中在自动生成高性能、最先进的(SOTA)架构上,其主要目的是设置新的精度标准。此类方法可以达到单因素优化,唯一的重点是不断发展的神经网络设计,以最大化模型的可实现精度。但是,SOTA神经网络不是在众多现有的和正在开发的机器学习应用以及用于实现此类解决方案的计算系统中千篇一律的解决方案。例如,一些应用可能需要简单、有效和移动大小的架构,这些架构可以轻松地在任何数据集上进行重新训练,而无需大量的计算能力(例如,数百个图形处理单元(GPU))。
自卷积神经网络(CNN)产生以来,其在机器视觉应用中稳稳地越来越普及,并在最近几年中为图像分类和检测任务设置了基准。多年来,设计这些网络的方法基本上保持不变:通过广泛的反复试验方法手动设置参数和超参数。CNN深度/复杂性的增加伴随着越来越难以标识架构选择之间的相互作用及其对模型精度的影响。近年来,对寻求自动搜索最佳网络架构(例如,AutoML)的方法的兴趣越来越大。方法已多样化,并且包括强化学习、神经进化(NE)、顺序结构化搜索和贝叶斯优化。一些传统的自动神经网络生成技术利用进化算法及其优化来寻找最先进的(SOTA)架构,并将测试集上的验证精度用作算法的适应度函数。通过进化方法对神经网络性能的自动优化已迅速成为与最先进的手工制作网络的竞争事件。这些进化方法通常根据它们寻求优化的网络部分进行分组:学习、拓扑或两者。但是,此类传统方法在计算上可能非常昂贵,在一些情况下,涉及数千天的GPU计算才能进化到期望的“最佳”网络结构。
在改进的系统中,可以利用语法进化来执行多目标优化,以生成并进化自动生成的神经网络模型,以在精度和大小方面优化性能。使用此类系统生成的卷积神经网络模型可以实现对较小的、移动大小的网络的搜索,如果需要,可以轻松地对其进行重新训练,而无需非常强大的GPU能力。语法进化(GE)是遗传编程(GP)的一种基于语法的形式,其中形式语法用于从表型映射到基因型。另外,该语法允许将特定领域知识合并到系统中,并在生成候选神经网络模型时由系统使用。在一些实现方式中,可以使用巴科斯-纳尔形式(BNF)语法来实现语法。此类方法可以使得能够灵活地使用系统来根据期望的应用来评估和开发基于各种不同组件(例如,子网、层、滤波器等)的各种不同的神经网络。此外,随着用于神经网络架构的知识库不可避免地增加,可以对语法进行扩充或以其他方式修改以合并该知识以构建新类型的候选模型(例如,具有不同的有效性要求、来自组件/模块的不同组合等),以及其他示例。
在一个示例中,示例神经网络生成器系统所利用的语法进化技术可以利用上下文无关语法(CFG)的派生,其中语法和进化基于与特定层相关联的参数,以及这些层可被使用的允许次数,以及其他因素,诸如与优化过程相关联的参数(例如,批量大小、学习率等)。在一些实现方式中,可以通过仅从那些根据多目标优化执行“最佳”的“父”神经网络模型中生成“子”神经网络模型,来评估并进一步进化候选神经网络模型的进化生成。例如,可以为神经网络模型的代确定非主导的前沿(或Pareto前沿),并且可以选择代表该前沿或在该前沿“上”的那些神经网络作为下一代神经网络模型的父代,以此类推,直到生成合适数量的代为止,以及其他示例实现方式。
转到图2,示出了简化框图200,其图示出示例计算环境,该示例计算环境包括示例神经网络生成器系统105,该神经网络生成器系统105配备有利用语法进化来基于多目标优化来自动生成神经网络模型的功能。神经网络生成器系统105可以实现遗传算法和其他自动化技术以自主地生成神经网络模型125的集合,其可以被各种计算系统(例如,275)利用。在一些实现方式中,可以提供测试系统(例如,205)以自动测试并验证由神经网络生成器系统105生成的神经网络模型。由测试系统205生成的结果可被神经网络生成器系统105用作反馈,以根据神经网络生成器系统105处执行的(多个)遗传算法生成候选神经网络模型的后续代。虽然测试系统205在图2的图示中被示为单独的框,但是应当理解,在一些实现方式中,测试系统的功能和逻辑可以与神经网络生成器系统(例如,105)的功能集成,或者作为单独的逻辑被托管在与托管神经网络生成器系统105的系统相同的系统或外部的系统上,以及其他示例实现方式。
在图2的示例中,神经网络生成器系统105可以包括一个或多个数据处理设备(例如,206)和一个或多个机器可读存储器元件(例如,208)以存储和执行用于实现神经网络生成器系统105的一个或多个模块的代码(和/或驱动硬件实现的逻辑)。例如,在一些实现方式中,神经网络生成器系统105可支持利用一个或多个语法进化技术来自动生成神经网络候选者。例如,可提供语法进化引擎210以基于一个或多个语法(例如,在语法定义数据220中定义)来自动产生候选神经网络模型。每个神经网络模型都可以从一组定义的神经网络构建块或神经网络模块215中生成,并且可以定义语法,使得从语法进化引擎210的该组神经网络模块215构建的任何神经网络模型在理论上将是有效的(尽管神经网络模型的精度和性能水平可能巨大地不同)。语法进化引擎可以(例如,使用被标识为与此类神经网络模型一起使用的合适的训练数据250)训练候选神经网络模型的“代”,并诸如通过测试系统205的网络测试引擎265提供用于测试的模型的代。例如,网络测试引擎265可以利用验证或测试数据(例如,270)来测试语法进化引擎210从指定的网络模块215的集合生成的各个神经网络模型中的每一个的精度。除了精度外,示例测试系统(或神经网络生成器系统本身)可以在模型生成中测量每个神经网络模型的其他属性,诸如神经网络模型的大小(例如,以神经网络模型的参数数量来度量)、用于模型的存储的存储器、执行用于执行模型的触发器的数量以及关于神经网络模型的性能、复杂性和/或大小的其他示例属性。
神经网络测试引擎265的结果可以作为输入提供给优化器引擎,以确定哪些候选神经网络模型(在生成的模型代中)性能最佳。在一些实现方式中,可以根据多目标优化(例如,使用多目标优化器225执行)来确定性能最佳的神经网络。例如,在候选神经网络模型的测试(并且可能还生成)期间,可以确定一组多个目标中的每个目标的值。例如,目标可以包括神经网络的精度(例如,由神经网络测试引擎265基于使用作为每个候选神经网络的输入而提供的测试数据270执行的测试来确定)和与模型的精度不直接相关的至少一个其他目标,诸如模型的大小、用于执行模型的计算和/或存储器资源、执行模型所需的时间以及其他示例。在一个示例中,多目标优化器225可以获取每个候选神经网络模型的多个目标值,并从这些值确定非主导的前沿,并标识与该非主导的(例如,Pareto)前沿上的点相对应的候选神经网络的子集。
继续图2的示例,利用多目标优化器225的结果,语法进化引擎210的网络选择引擎245可以确定应使用候选神经网络的当前代的哪个候选神经网络作为“父”或下一代候选神经网络的基础。在一些实现方式中,可以保留作为在先代的性能最佳的模型的所选“父神经网络”以及新的子神经网络模型,以共同形成神经网络模型的下一代,以供测试系统评估。该过程可以重复进行确定的代数,以生成一组最终的神经网络模型,以供相对应的应用和系统(例如,275)潜在地采用和使用。在一些实现方式中,代的进化可以持续直到观察到收敛的阈值或水平,以及其他示例实现方式。
在一个示例中,语法进化引擎(例如,210)可以包括父网络生成器235,用于生成包括第一数量的神经网络模型的神经网络模型的初始代。如同将由语法进化引擎210生成的神经网络的后续代一样,可以根据定义的语法生成初始代以包括由网络模块215组成的神经网络的各种不同版本。在一些实现方式中,可以由父网络生成器通过随机选择每个参数的值来生成初始代,这些参数指示如何配置和互连网络模块以形成受定义的语法约束的有效神经网络。在其他实例中,可以选择一组已知的、性能良好的神经网络模型或参数值以生成模型的初始代并有效地播种神经网络模型的后续代的成功进化,以及其他示例实现方式。可以训练初始代(与使用语法进化引擎得出的模型的所有代一样),然后进行测试,以基于多个目标来确定要“保留”的神经网络模型的初始代的子集,并该子集作为神经网络模型的下一代的基础。例如,一个或多个子神经网络模型可以从初始神经网络模型的每个最佳性能子集(例如,通过子网络生成器240)生成,例如,通过根据进化计算算法执行变异操作,来改变父神经网络模型的一些参数,以得到新的子神经网络模型。这些子神经网络模型可以(例如,与从在先代选择的性能最佳的父神经网络模型一起)形成待测试的神经网络模型的下一代的至少一部分,以确定应从该下一代中(例如,通过网络选择引擎245)选择哪个子集作为下一代的子神经网络模型(例如,通过子网络生成器240)的派生的父代,等等。
可以定义各种不同的网络模型215,并将其提供给语法进化引擎使用。通过改变模型的参数值,可以通过对“模板”网络部分的各种调整以及从由网络模块215代表的定义的网络部分中的每一个的一个或多个多实例形成的拓扑的各种组合,来生成潜在的无限多种神经网络模型。可以定义与一组特定的网络模块(例如,215)相对应的语法(例如,220),该语法定义了在从网络模块和为这些网络模块选择的参数值组装神经网络模型时要遵循的规则,使得语法进化引擎生成的任何神经网络模型至少在理论上是有效的(例如,它将执行完成操作,而不保证性能的精度或效率等)。语法可以被定义来指定特定的不同类型的网络并与其相对应,并体现对于这些网络类型的知识,即某些模块、属性、拓扑等对于网络的正确运行是必需的和/或怀疑是必需的或重要的,以及其他特征和示例优势。在一些实现方式中,神经网络生成器系统105(或其他系统)可以被提供有工具(例如,语法构建器230),以构建和/或编辑与特定类型的神经网络模型相对应的语法。在一些情况下,使用神经网络生成器系统(例如,通过语法进化引擎210)生成优化的神经网络模型可揭示与给定神经网络类型的正特性相关的附加见解,并且相对应的语法(例如,220)可以被扩充(例如,使用语法构建器230)以将该新知识嵌入语法中,以供语法进化引擎210将来使用和考虑。另外,随着新网络模块的开发,它们被添加到神经网络生成器系统所利用的集合(例如,215)中,并且可以使用语法构建器230来开发或编辑相对应的语法(例如,220),以及其他示例。
如在图2的示例中所示,当使用示例语法进化引擎210导出神经网络模型的“最终”代时,可以(例如,通过一个或多个网络(例如,112))将这些神经网络模型中的一个或多个提供给一个或多个计算系统(例如,275),诸如机器(例如,类似于图1中所示的示例机器110)的计算子系统,以供系统275上提供并且通过一个或多个处理器(例如,276)和存储器元件(例如,278)以及可能存在于系统275上的其他硬件来实现的机器学习引擎(例如,280)消耗。类似地,示例测试系统(例如,网络测试引擎265)的逻辑也可以通过一个或多个处理器(例如,262)和存储器元件(例如,264)以及测试系统(例如,205)上可能存在的其他硬件来实现,以及其他示例实施例。
转向图3,示出了简化流程图300,其图示了广义进化算法的基本功能。例如,可以初始化310单个神经网络模型的群305,并且可以基于给定的适应度函数来对每个单个神经网络模型进行排名(例如,基于一个或多个目标来评估神经网络模型)。基于适应度函数,性能最高的个体可以被留出(在315)作为下一代的父代320。接下来,将诸如变异和交叉之类的改变运算符325应用于父代320,以创建新生成的后代330(或“子”神经网络模型)。进化算法中的改变运算符通过改变个体的遗传物质来探索搜索空间,以便探索搜索空间的新领域。交叉从选择过程中创建的父代群中随机选择父代对,并从这些父代中创建两个子代。语法进化引擎可以使用的交叉技术可以包括固定的单点交叉(例如,其中在两个父代基因组上选择相同的一个点来创建两个子代)、固定的两点交叉(例如,其中在两个父代基因组中选择相同的两个或更多个点来创建两个子代)、可变的单点交叉(例如,其中每个基因组中的一个不同点用于执行交叉)和可变的两点交叉(例如,其中从每个基因组中选择并使用两个或更多个不同的点以执行交换),以及其他示例技术。变异技术也可以或者替代地用于从父神经网络模型导出子模型。例如,虽然交叉对所选的父代对进行操作以产生新的子代,但是在应用交叉后,语法进化的变异可能作用于子代群中的每个个体。变异运算符可以例如使用基于密码子的整数翻转变异(例如,以一定概率随机变异基因组中的每个单个密码子)或基于基因组的整数翻转变异(例如,变异从基因组中随机选择的特定数量的密码子)而应用于基因组的使用部分,以及其他示例技术。
对给定数量的“代”重复此过程,目的是提高由每个后代生成的适应度函数表示的解决方案的质量。可以根据适应度函数,基于成员神经网络模型的相对性能,来同样地选择(例如,335)每一代的幸存成员,并重复进化循环,直到完成期望或定义的结果或进化次数。在达到此类阈值时,进化可以终止(例如,在340处),并且可以呈现一组所得的“优化的”神经网络模型,以供消费计算系统采用和使用。已经开发出各种不同的方法来搜索最佳架构并执行幸存者和/或父代选择。例如,已经利用各种适应度函数和变异技术开发了进化算法。
图4是简化框图400,其示出了用于实现卷积神经网络的多目标优化的示例语法进化技术,诸如上文所介绍的。在一些实现方式中,可以由示例语法进化引擎来执行多目标优化算法,诸如NSGA-II算法。在一些实现方式中,多目标优化可以尝试优化使用语法进化引擎生成的候选卷积神经网络的大小和精度的目标。可以使用与多目标优化一起实施的语法进化方法来执行此优化,以确定在给定数量的代之后最佳地优化大小/精度权衡的一系列可能的网络拓扑。
如图4的示例中所示,示例多目标优化可以从神经网络模型的群305的生成开始。在一些实现方式中,大小为N的初始群由随机创建的个体初始化(在问题范围内)。可以(例如,针对特定的数据集)测试该群,以确定每个单独的神经网络模型的多个目标(例如,精度和大小)中的每个目标的值。然后可以基于这些确定的目标值来将群305分类(在405)到非主导的前沿中(例如,420、425、430、435、440等)。每个确定的非主导的前沿(例如,420、425、430、435、440等)可以由各个神经网络模型组成,这些神经网络模型从其前沿或任何后续的前沿不受任何其他个体模型的主导。例如,如果在所有目标中神经网络模型x1不比另一个神经网络模型x2差并且在至少一个目标中x1严格比x2好,则认为x1主导x2。每个前沿(例如420、425、430、435、440)可以被分配排名(例如,第一前沿(例如,420)是排名1,第二前沿(例如,425)是排名2,等等)。此外,可以为每个单个神经网络模型分配拥挤距离,该距离被定义为每个目标中其两个最近邻居之间的距离的总和(在所有目标上)。在目标的端点中的一个端点处的个体被分配无穷远的拥挤距离。可以使用随机二元锦标赛来(例如,在410处)执行对“顶部”个体的选择,其中可能出现两种情况中的一种:i)个体具有不同的排名,在这种情况下,较高排名的个体获胜;或ii)个体排名相同,在这种情况下,拥挤距离较大的个体获胜。在该示例中,选择后留下大小为0.5N的群(例如,305’)。如在图4的示例中所示,在一些情况下,执行拥挤距离排序(例如,410)以促进选择,可能导致来自给定前沿(例如,430)的一些个体被拒绝,而其他个体被保留在所选的群(例如,305’)中。然后可以例如在指定的概率分布内,将变异运算符(例如,交叉、变异等)应用于该所选的群(例如,305’),以产生后代群。例如,可以从所选群305’中生成大小为0.5N的后代群,并且可以将其与所选群组合以形成大小为N的候选神经网络模型的下一代,以及其他示例实现、优化和进化技术。
诸如图4的示例中所示的并且在本文所讨论的至少某个系统实现方式中实现的多目标优化可用于通过提供精英来增强语法进化技术,使得保留每一代处的最佳解决方案而不对其进行变异,这可能有助于提高多目标进化算法的收敛性。另外,此类技术可以通过确定并使用群内的拥挤距离来执行选择过程来保持多样性。此类方法可用于强调不太拥挤的解决方案并在解决方案空间中保持广泛分布,以及其他示例优势和实现方式功能。
如上所述,在一些实现方式中,可以构造并设计一组神经网络模块或构建块,并将其提供给神经网络生成器系统用来根据相对应的、已定义的语法在群中构造各种候选神经网络模型。为自动生成特定类型网络的优化版本而提供的该组神经网络模块可以包括一个或多个多种不同的模块,这些模块可以基于可调整的各种属性而是可配置的(例如,每个属性值代表候选神经网络模型的整体“基因组”中的特定“密码子”)。
在一个示例实现方式中,使用示例神经网络生成器系统生成的一类网络可以利用两个构建块或模块的集合来构造在语法进化方法中考虑的所有候选神经网络。例如,一组神经网络模块可以包括卷积块(CB)模块和起始块(IB)模块。图5是示出了卷积块(例如,215a)的组成的简化框图500。例如,卷积块215a可以包括可配置的卷积层(例如,505)、可配置的批量归一化层(例如,510)和激活功能层515(例如,整流线性单元(ReLU)激活层),以及其他示例实现方式。转到图6,另一简化框图600示出了起始块模块(例如,215b)的实现方式的示例组成。在一个示例中,起始块模块可以基于GoogLeNet网络架构内的块,以及其他示例实现方式。例如,在图6的示例中,起始块模块可以连接到输入或其他在先层(例如,605),并利用1x1卷积层(例如,610、615、620)和3x3最大池化层625。1x1卷积层中的一个(例如,615)可以馈入3x3卷积层630,另一个1x1卷积层(例如,620)可以馈送5x5卷积层635,并且在该示例中,最大池化层可以向另一1x1卷积层(例如,640)提供输入。块(例如,610、630、635、640)中的这些最后层的输出可以被提供给滤波器串联层(例如,645)。各个层(例如,610-645)可以通过调整到与每个层相对应的变量/属性的相应集来配置。
基于相对应语法的神经网络生成器可以包含附加模块或神经网络结构。例如,继续图5至图6的示例,神经网络生成器可以被配置成用于在最后的(CB或IB)模块的输出与softmax层之间添加完全连接的(FC)层。在一个实现方式中,为了确保尺寸减小,可以在第一块之后插入最大池化层,并且然后在CB网络的每一第二块之后插入最大池化层,并且然后在IB网络的每一第三块之后插入最大池化层。表1示出了要在此类候选神经网络模型的自动化构造中应用的变量的示例规范。在表1中,对于表中的任何一行,该语法用于生成表型,该表型从给定范围中选择值,并使用它们创建网络。
表1:网络架构规范
与图5-图6的示例相对应的示例语法示出了如何定义并选择参数,如下所示:
<settings>::=fc=<fc_range>{::}
pre_layer*MOO
inception_blocks=[]{::}
fc_layers=[]{::}
<inception_blocks>{::}
<pre_layer){::}
<flfc-code>{::}
<pre_layer>::=pce_layer.append((<n_pre_layer_range>)){::}
<n_pre_layer_range>::=128|160|192
<n1x1range>::=112|128|160
<n3x3red_range>::=96|112|128
<n3x3_range>::=196|224|256
<n5x5red_range>::=16|24|32
<n5x5_range>::=48|64|96
<inception_blocks>::=<ib><ib><ib>|<ib><ib><ib><ib>|<ib><ib><ib><ib><ib>|<ib><ib><ib><ib><ib><ib>|<ib><ib><ib><ib><ib><ib><ib>
<ib>::=inception_blocks.append([(<n1x1_range>),(<n3x 3red_range>),(<n3x 3_range>),(<n5x5red_range>)*(<n5x5_range>)]){::}
<fc_range>::=0|1
<flfc-code>::=fc_layers.append(<fc_hidden_range>){::}
<fc_hidden_range>::=100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255|256|257|258|259|260|261|262|263|264|265|266|267|268|269|270|271|272|273|274|275|276|277|278|279|280|281|282|283|284|285|286|287|288|289|290|291|292|293|294|295|296|297|298|299|300|301|302|303|304|305|306|307|308|309|310|311|312|313|314|315|316|317|318|319|320|321|322|323|324|325|326|327|328|329|330|331|332|333|334|335|336|337|338|339|340|341|342|343|344|345|346|347|348|349|350|351|352|353|354|355|356|357|358|359|360|361|362|363|364|365|366|367|368|369|370|371|372|373|374|375|376|377|378|379|380|381|382|383|384|385|386|387|388|389|390|391|392|393|394|395|396|397|398|399|400|401|402|403|404|405|406|407|408|409|410|411|412|413|414|415|416|417|418|419|420|421|422|423|424|425|426|427|428|479|430|431|432|433|434|435|436|437|438|439|440|441|442|443|444|445|446|447|448|449|450|451|452|453|454|455|456|457|458|459|460|461|462|463|464|465|466|467|468|469|470|471|472|473|474|475|476|477|478|479|480|481|482|483|484|485|486|487|488|489|490|491|492|493|494|495|496|497|498|499
作为另一示例,可以增强上述示例语法以考虑进一步可变参数(例如,学习参数),这些参数可以由示例神经网络生成器系统类似地操纵以生成候选神经网络的群:
<batch_size>::=batch_size.append(<bs_range>){::}
<bs_range>::=64|128|256
<optimizer>::=optim.append(torch.optim.<optim_type>){::}
<optim_type>::=SGD|Adam|RMSprop
<learning_rate>::=lr.append(<lr>){::}
<lr>::=0.001|0.01|0.1
<weight_decay>::=weightdecay.append(<wd_range>)
<wd_range>::=0.000l|0.0005|0.00l|0.005|0.01
<momentum>::=momentum.append(<momentum_range>)
<momentum_range>::=0.8|0.85|0.9
<dropout>::=dropout.append(<dropout_range>)
<dropout_range>::=0.2|0.3|0.4|0.5
语法可以另外定义如何在模型架构的每一层应用滤波器(例如,大小和实现方式)。继续上面的示例,在一个实现方式中,语法可以定义所有最大池化滤波器的大小为2×2,步幅为2,而ConvolutionBlockNet中的所有卷积滤波器为3×3或5×5(例如,由语法随机选择,其中每个有50%的机会),步幅为1,而InceptionBlockNet中的所有卷积滤波器定义了大小/属性(例如,在相对应的GoogLeNet架构中定义),以及其他示例实现方式。
此外,除了为语法进化引擎使用的网络模块定义所有拓扑超参数(以及它们可以采用的值的范围)外,为了获得完全相干的功能架构而需要定义网络的另一个方面可以是进出每个卷积层的通道数。可以根据用于构建单个候选网络的(多个)各个块类型来不同地解决此问题。例如,在CB网络模块中,可以将第一层定义为将三个RGB通道映射到32个输出通道,并且每个后续层可以输出两倍数量的输入通道(例如,第二层为64、第三层为128、等等)。在一些情况下,在CB网络模块中任何给定位置处进出卷积层的通道数实际上是固定的。在示例IB网络模块(例如,图6所示)的情况下,可以为在每个块内部发生的六个卷积中的每一个卷积定义通道值。在一个示例中,这些值对于第一块可以是固定的,但是作为由语法构造的表型的一部分而变化。作为说明性示例,表2示出了关于示例IB网络模块中的每个卷积的输出通道值的示例信息。在表2中,卷积称为A×A B,其中A×A是滤波器的大小而B是分支索引。参考图6,表2中指示的分支从左侧开始编号为1到4。在一些实现方式中,在示例IB网络模块中的固定的第一块值可以被定义为与在GoogLeNet中的第一起始模块中定义的那些相同,以及其他示例实现方式。此外,在该示例中,每个起始模块的输入是1×1 1、3×32、5×5 3和1×1 4的串联。但是,3通道RGB图像不直接馈入第一起始块;在这两个之间插入初步的3×3卷积块,其中输出通道的数量等于128、164或196,以及其他示例。
卷积 | 第一块值 | 后续块的可能性 |
1x 1.1 | 64 | 112/128/160 |
1x 1.2 | 96 | 96/112/128 |
3x 3.2 | 128 | 196/224/256 |
1x 1.3 | 16 | 16/24/32 |
5x 5.3 | 32 | 48/64/96 |
1x 1.4 | 32 | 64 |
表2:起始块卷积通道
在其他示例中,可以将语法考虑的搜索空间扩展为包括学习参数的变化。进化的网络的拓扑的进化可以保持相同(例如,在以上示例中定义的所有参数选择/范围可以保持真实),以及所使用的进化参数。结果,即使当搜索空间被扩展时,在生成期间也可以生成相同数量的个体(例如,来自15个个体的15个世代中的240个个体,以及其他示例)。例如,表3示出了示例扩展参数(诸如学习参数)以及这些示例参数的允许值,该扩展参数可以包括在示例神经网络生成器系统生成的进化中。
参数 | 允许值 |
优化器 | Adam/随机梯度下降(SGD)/RMSprop |
学习率 | 0.001/0.01/0.1 |
批量大小 | 64/128/256 |
权重衰减 | 0.0001/0.0005/0.001/0.005/0.01 |
动量 | 0.8/0.85/0.9 |
丢失率 | 0.2/0.3/0.4/0.5 |
表3:学习参数
在一些实现方式中,训练由示例语法进化引擎生成的候选神经网络的方式可以基于用于构造神经网络的模块的数量和类型(来自网络模块的集合)。实际上,语法进化引擎可以利用同一模块的多个实例、不同模块的组合等来生成给定的候选神经网络。例如,训练可能受到影响,当某些模块包括在给定的候选神经网络中时,可进行更长的训练(例如,以时期进行测量)。作为说明性示例,可以训练基于CB网络模块(例如,不使用IB网络模块)的神经网络达15个时期,而可以训练包括IB网络模块的网络模型达20个时期,以及其他示例。
可以使用各种不同的训练数据集来训练(和/或测试)由示例神经网络生成器系统生成的各种类型的神经网络模型代。在一个示例中,可以在多个不同的数据集上执行进化过程。在一种实现方式中,可以使用数据集CIFAR10和STL10,CIFAR10由32x32 RGB图像组成,分为10类(例如,飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车),其中每类5000个训练图像和1000张测试图像,总共60000张图像。STL10数据集受CIFAR10启发,但图像为96x96RGB,但类有所不同(例如,“青蛙”类被“猴子”类所取代)。在一个示例中,数据集可以被划分成训练数据和测试数据。例如,在CIFAR10和STL10的示例中,训练/测试划分可以包括每个类中的500个训练图像和800个测试图像,总共13000个标记图像。在一些情况下,可以使用未标记的数据,以便测试进化的网络的概括能力。在一些情况下,所使用的训练和/或测试数据可以适合于系统上可用的处理资源(例如,资源受限的系统可能无法使用完全ImageNet数据集进行训练)。
转向图7A-7B,示出了简化框图700a-b,其示出了由神经网络生成器系统利用语法进化(使用一组网络模块(例如,215))和多目标优化以供模型消耗的计算系统使用的神经网络模型的示例生成。图7A表示通过语法进化引擎生成初始候选神经网络模型集(例如,125a-N),其中,初始候选神经网络模型集(例如,125a-N)中的每一个由一个或多个网络模块215的实例的各个组合构成。模块组合的选择和这些模块实例的参数设置可以基于语法(例如,220)。在一些实现方式中,可以由语法进化引擎210随机地确定针对该初始候选神经网络模型集(例如,125a-N)确定的基因组以及相对应的拓扑和参数值。初始候选神经网络模型集(例如,125a-N)的生成可以另外包括使用特定训练数据集对神经网络模型的训练。
在生成并训练了初始候选神经网络模型集(例如,125a-N)后,可以(例如,根据定义的适应度函数)对初始组的候选神经网络模型(例如,125a-N)进行测试705。在图7A-图7B中示出的示例中,适应度函数可以考虑多个(竞争)目标的组合,诸如每个候选神经网络模型(例如,125a-N)的精度和每个候选神经网络模型(例如,在参数中测量)的相应大小,以及其他可能的示例(包括优化考虑了三个或更多个目标的示例)。如图7A中所示,可以通过测试705确定针对每个经训练的候选神经网络模型(例如,125a-N)的多个目标中的每个目标的值(例如,如图表710所示(其中,大小沿着正x轴减小而精度沿着正y轴增加))。可以在目标值(例如,715)中确定前沿715(例如,非主导的前沿、Pareto前沿等),并将其作为从候选神经网络模型的代中选择幸存成员720或父代的基础,诸如上面讨论的。
转向图7B,语法进化引擎210可以利用(在740处)候选神经网络模型的在先代(例如,随机生成的神经网络模型的初始代或从初始生成器或其他上一代)的所选的幸存成员(例如,720)以进化、或生成候选神经网络模型的下一代。例如,语法进化引擎210可以通过对幸存成员720的基因组执行改变操作(例如,交叉、变异等)来生成一个或多个子神经网络模型(例如,725a-M),现在作为候选神经网络模型的下一代的父代,诸如上面讨论的。基于所应用的进化算法,可以从每个父神经网络(例如,在集合720中)生成一个或多个子神经网络模型725a-M。与父神经网络一样,变异或其他改变操作也必须遵守相关联的语法中定义的要求。另外,基于改变操作的结果,可以选择相对应的网络模块(例如,215),并且设置相关联的参数以自动构建相对应的子神经网络模型(例如,725a-M)。
继续图7B的示例,在一些实现方式中,由语法进化引擎210考虑的候选神经网络的下一代不仅可以包括该模型的新代形成的子神经网络(例如,725a-M),而且还可以包括包含这些子神经网络的父代,即,候选神经网络模型(例如,720)的子集,该子集在上一代中幸存。在其他实现方式中,下一代可以由从此类所选的父神经网络(从模型的在先代)生成的纯子神经网络组成,以及其他示例实施例。在图7B所示的示例中,父模型(例如,720)和它们的累积子神经网络模型(例如,725a-M)可以形成下一代并且可以类似地使用适应度函数(例如,与在先代中应用的适应度函数相同或甚至不同)来经受测试(例如,705)。如在图7B的示例中所示,相同的测试(例如,705)可以应用于模型的当前代以确定针对每个神经网络模型(例如,720、725a-M)加权的多个目标的值的分布(例如,如图表710’所示)。
可以预期或期望的是,如通过图表710和710’的比较所示,语法进化引擎210执行的进化将导致一代又一代性能的普遍提高。例如,如图7B所示,在实现模型大小的广义(例如,平均)减小(例如,如从分布确定的相对应的优化前沿715’的曲线中所反映的)的同时,后代可以证明与前代相比精度上的提高。基于当前代的该新确定的前沿715’,可以再次选择该代的幸存成员(例如,730)(例如,基于位于前沿715’上的相对应模型的目标值),以用作待测试的下一代的父代。在当前代被确定为语法进化引擎210要考虑的最终代的情况下,“最终”神经网络模型集可以被确定为包括与为神经网络模型的该最终代确定的非主导前沿上的点相对应的点。在一些实现方式中,可以(例如,通过语法进化引擎210或示例神经网络生成器系统的另一逻辑模块)执行附加的选择算法以选择包括在该最终神经网络模型集中的(多个)神经网络模型中的特定一个作为“最佳”或“最终”神经网络模型,以及其他示例实现方式。然后可以使此类最终神经网络模型可供消费计算系统加载并执行,例如,以协助执行计算机视觉任务、分类或其他机器学习任务。
如上所述,由于神经网络生成器系统具有多目标优化算法(例如,NSGA-II)的功能,因此可以期望一代又一代地改善冲突目标的优化。在一些情况下,根据每种情况下生成的解决方案的性质,为每个代确定的第一前沿上的个体数量可能因实验的不同而不同。在一个说明性示例中,候选神经网络模型的在先代可以在第一前沿上检测具有60%的验证精度的最小网络(例如,约200万个参数),而在最后前沿上检测大小大致相同、验证精度为83%的最小网络。类似地,最高精度的网络不仅可以显示出从一代到下一代的精度的小幅逐渐增加,而且还可以显示出代中最精确的候选网络在大小上的逐渐减小。例如,在初始代或其他在先代中,从第一前沿开始最高精度的网络(84.5%)可具有约5.7M参数,而在最后前沿上则下降到约2.7M参数,同时保持可比的精度,以及其他说明性示例。
表4和表5示出了示例参数,其可以是为示例“最终”神经网络模型集确定的示例参数,该示例“最终”神经网络模型集是在使用示例语法进化引擎进行多次进化之后确定的。在表4中,描述了确定的网络架构,其中C X表示具有大小为X的滤波器的卷积模块,而FC X表示具有X个核的完全连接的层。对于起始块,仅指示块的总数(等于XIB项中的X)。在该特定示例中,初步层外的通道数在起始架构的PRE X部分中用X表示。表5给出了第二个实验中与每个网络相关联的学习参数,这些参数由相关联的语法进行编码,以及其他示例:
表4:示例“最终”神经网络的架构
表5:示例“最终”神经网络的学习参数
在表4和5的示例中,架构和学习参数都是可配置的(如在相关联的语法中定义的),并且在生成神经网络模型的代的过程中,语法进化引擎使用这些架构和学习参数。更改参数的数量和类型可能导致神经网络模型的不同“最终”代具有可比性。因此,在一些情况下,语法进化引擎可以使用第一组参数以及一个或多个使用不同(例如,扩展的)参数集的其他参数来执行多个进化,以扩展搜索空间,从而扩展生成的“最终”神经网络模型,以及其他示例实现方式。
如上所述,一种改进的神经网络生成器系统可以通过语法进化(GE)和多目标优化技术的组合来自动生成用于解决方案的神经网络模型,以自动搜索最佳的ANN拓扑。可以使用不同类型的网络模块(例如,卷积块和起始块)的集合和相对应的语法来构建神经网络模型。可以通过要么严格地更改拓扑参数要么更改拓扑参数和学习参数两者来进行进化,也可以使用各种数据集(例如,CIFAR10和STL10)进行网络训练和验证测试。基于多目标优化的神经网络进化的实现方式可能不产生最先进的架构,但是可能抓住重要机会来改善神经网络的其他有价值的特性(例如,大小、处理或存储器占用等)与精度竞争。例如,此类进化可能发现可以对网络进行小的更改,从而以非常少的精度为代价来极大地减小其大小。其中存在严格验证精度方面进行优化的危险:传统的神经网络进化技术可能寻求优化而对网络的大小不感兴趣,从而错过了很容易切割大量参数的机会,从而提高了它尝试生成的网络的效率,以及其他优点示例。
应当理解,以上给出的示例是非限制性示例,其被提供来示出示例改进系统的某些一般特征和功能。例如,在不脱离本文讨论的范围或原理的情况下,可以对本文描述的一些简化示例进行改变。例如,进化可伴随着不同的(和增加的)代数(例如,以进一步提高形成最终Pareto前沿的解决方案的质量)运行,利用不同或附加的网络模块(例如,ResNet连接、密集单元等)和相对应的语法以生成候选神经网络,在进化过程中改变其他或附加学习参数,为从此类网络模块形成的结果序列设计具有或多或少的灵活性的语法,使用不同的训练数据或更长或更短的时期执行训练,利用不同的测试数据,利用不同的多目标优化算法来确定父代神经网络模型,以及其他示例替代功能。
图8是示出用于利用由计算系统执行的语法进化来自动生成一组一个或多个神经网络模型的示例技术的简化流程图800。例如,可以生成805(或以其他方式获得(例如,作为来自在先进化的结果))初始组的父代神经网络模型。在生成初始组的父神经网络模型的地方,它们是基于语法进化中使用的语法生成的。在一些实现方式中,语法可以与一组网络模块相关联,该组网络模块用于在进化中构造候选神经网络。在一个示例中,可以使用随机选择的参数并根据语法从该组网络模块中生成初始组的父神经网络模型。对于生成的初始父神经网络,可以使用一组训练数据(例如,和反向传播)来对其进行训练(例如,810),以及其他示例。在一个或多个初始父神经网络包括先前生成和训练的神经网络的情况下,此类神经网络可能不需要重新训练。生成和/或访问的初始父神经网络的集合可以形成神经网络的初始代。
可以使用测试数据对该神经网络的初始代进行测试(在815处),以确定初始代中的每个网络的相应验证精度。(例如,在测试、训练和/或生成相对应网络期间)可以连同验证精度一起确定其他属性,诸如网络的大小(例如,以神经网络模型中的参数数量来测量)。每个神经网络确定的验证精度和其他属性值可以形成多属性或目标属性值集,其可以用作系统执行820的多目标优化的输入。例如,可以基于为神经网络的代中的每个相应的一个代确定的属性值集的收集,来为该代确定Pareto边界、一个或多个非主导的前沿等。可以从多目标优化的结果820中确定最佳性能的网络(例如,基于位于非主导前沿上的一个特定神经网络的属性值集)。基于多目标优化的结果,可以选择825神经网络的初始代的子集以“幸存”和/或用作下一代神经网络的父代。
继续图8的示例,在从初始(或其他先前)代中选择神经网络模型的子集时,可以(在830)确定这是否是进化中的最终代。该确定830可以基于作为预定的第n代的代,该第n代将用作最终代,或者基于针对该代执行的多目标优化的结果(例如,示出已达到收敛或性能的阈值程度(基于一个或多个正在优化的目标)),以及其他示例。在代表示进化中的最终代的情况下,可以将为该代确定的神经网络模型的子集指定850作为要由进化过程输出的“最终”神经网络。在要构建和测试附加代的情况下,系统可能执行进一步的进化。例如,可以执行835神经网络的子集的语法进化,以生成子神经网络以供包括在下一代网络中。可以(例如,使用与训练进化中的模型的在先代相同的训练数据)对这些子神经网络进行训练,然后再使用这些子神经网络(例如,与从前一代中选择的子网络的父网络一起)以形成845下一代神经网络。可以同样地对该下一代神经网络进行测试(在815),并对其进行多目标优化(在820),以选择825该下一代中性能最佳的网络子集,依此类推,直到确定(例如,在850)最终代和最终神经网络为止。
虽然本文中所描述并示出的系统和解决方案中的一些已经被描述为包含多个元件或与多个元件相关联,但是并非所有被清晰地示出或描述的元件都用于本公开的每一个替代的实现方式中。另外,可以将本文描述的元件中的一个或多个定位在系统外部,而在其他实例中,可以将某些元件包括在其他所述的元件以及未在所示的实现方式中描述的其他元件中的一个或多个元件内,或者作为其他所述的元件以及未在所展示的实现方式中描述的其他元件中的一个或多个元件的一部分。进一步,可以将某些元件与其他组件以及用于除本文中所描述的那些目的之外的替代的目的或附加的目的的组件相组合。
进一步,应该理解到,上文所呈现的示例是仅为了说明某些原则和特征的目的而提供的非限制性示例,并且不一定限制或约束本文中所描述的概念的可能的实施例。例如,可以利用本文中所描述的特征和组件的各种组合(包括通过本文中所描述的组件的各种实现方式来实现的组合)来实现各种不同的实施例。应该从本说明书的内容中理解其他实现方式、特征和细节。
图9-图15是可根据本文中所公开的实施例来使用的示例性计算机架构的框图。实际上,本文所描述的系统的计算设备、处理器以及其他逻辑和电路系统可以包含功能的全部或一部分以及实现此类功能的支持软件和/或硬件电路系统。进一步,还可以将本领域已知的用于处理器和计算系统的其他计算机架构设计在这里示出的示例之外使用。一般来说,适用于本文中所公开的实施例的计算机架构可以包括但不限于图9-图15中示出的配置。
图9示出了通过链路耦合到相应的网关的相应的物联网(IoT)网络的示例域拓扑。物联网(IoT)是这样一种概念,其中大量的计算设备彼此互连,并且连接到互联网,以提供非常低级别的功能和数据采集。因此,如本文所使用的,IoT设备可以包括半自主设备,该半自主设备执行与其他IoT设备以及更广泛的网络(诸如互联网)通信的功能(诸如感测或控制等等)。此类IoT设备可以配备有逻辑和存储器以实现和使用(诸如上文所介绍的)散列表。
通常,IoT设备在存储器、大小或功能上受到限制,允许以与较小数量的较大设备类似的成本来部署较大数量的IoT设备。然而,IoT设备可以是智能电话、膝上型计算机、平板或PC、或其他较大设备。进一步,IoT设备可以是虚拟设备,诸如在智能电话或其他计算设备上的应用。IoT设备可包括IoT网关,用于将IoT设备耦合到其他IoT设备和将IoT设备耦合到云应用,以进行数据存储、过程控制等。
IoT设备的网络可以包括商业和家庭自动化设备,诸如供水系统、配电系统、流水线控制系统、工厂控制系统、灯开关、恒温器、锁、相机、警报器、运动传感器等。IoT设备可以通过远程计算机、服务器或其他系统来访问,例如,以控制系统或访问数据。
互联网和类似网络的未来增长可能涉及极大量的IoT设备。因此,在本文讨论的技术的上下文中,对于这种未来联网的许多创新将解决对所有这些层不受阻碍地增长、发现连接的资源并使其可访问、以及支持隐藏和划分连接的资源的能力的需求。可以使用任何数量的网络协议和通信标准,其中每一个协议和标准被设计用于解决特定目标。此外,协议是支持人类可访问服务的结构的一部分,这些服务无论位置、时间或空间如何都进行操作。所述创新包括服务递送和相关联的基础设施,诸如硬件和软件、安全增强、以及基于在服务水平和服务递送协议中指定的服务质量(QoS)条款的服务的提供。如将被理解的,IoT设备和网络(诸如图9和图10中所介绍的那些)的使用在包括有线和无线技术的组合的异构连接网络中提出了许多新的挑战。
图9具体提供了域拓扑的简化图,该域拓扑可用于包括IoT设备904的多个物联网(IoT)网络,其中IoT网络956、IoT网络958、IoT网络960、IoT网络962通过主干链路902耦合到相应的网关954。例如,多个IoT设备904可以与网关954通信,并且通过网关954与彼此通信。为了简化附图,不是每一个IoT设备904或通信链路(例如,链路916、922、928或932)都被标记。主干链路902可以包括任意数量的有线技术或无线技术(包括光学网络),并且可以是局域网(LAN)、广域网(WAN)或互联网的一部分。另外,此类通信链路促进IoT设备904与网关954两者之间的光学信号路径,包括使用促进各种设备的互连的多路复用/多路分解(MUXing/deMUXing)组件。
网络拓扑可以包括任意数量类型的IoT网络,诸如使用蓝牙低功率(BLE)链路922与网络956一起提供的网格网络。可能存在的其他类型的IoT网络包括:无线局域网(WLAN)网络958,用于通过IEEE 802.11链路928与IoT设备904通信;蜂窝网络960,用于通过LTE/LTE-A(4G)或5G蜂窝网络与IoT设备904通信;以及低功率广域(LPWA)网络962,例如,与LoRa联盟颁布的LoRaWan规范兼容的LPWA网络,或者与互联网工程任务组(IETF)颁布的规范兼容的低功率广域网(LPWAN)网络上的IPv6。此外,相应的IoT网络可以使用任何数量的通信链路与外部网络提供商(例如,第2层或第3层提供商)通信,通信链路诸如LTE蜂窝链路、LPWA链路,或者基于IEEE 802.15.4标准(诸如)的链路。相应的IoT网络还可以使用各种网络和互联网应用协议(诸如受限应用协议(CoAP))进行操作。相应的IoT网络还可以与协调器设备集成,该协调器设备提供形成所链接的设备和网络的集群树的链路链。
这些IoT网络中的每一个都可以为新技术特征(诸如本文所描述的那些)提供机会。改进的技术和网络可以使设备和网络指数性增长,包括将IoT网络用作雾设备或系统。随着此类改进技术的使用的增长,可以开发IoT网络用于自我管理、功能进化和协作,而无需直接的人为干预。改进技术甚至可以使IoT网络能够在没有中央控制系统的情况下起作用。因此,本文所描述的改进技术可以用于远超当前实现方式的、自动化和增强网络管理和操作功能。
在示例中,IoT设备904之间的通信,诸如通过主干链路902的通信,可以由用于认证、授权和计费(AAA)的分散式系统保护。在分散式AAA系统中,可以跨互连的异构网络基础设施实现分布式支付、贷款、审计、授权和认证系统。这允许系统和网络向自主操作移动。在这些类型的自主操作中,机器甚至可以签约人力资源并与其他机器网络协商伙伴关系。这可以允许实现共同的目标,并实现相对于概述的、计划的服务水平协议的平衡的服务交付,以及实现提供计量、测量、可跟踪性和可追踪性的解决方案。创建新的供应链结构和方法可以在没有人员参与的情况下创建大量服务、挖掘大量服务的价值并使大量服务崩溃。
通过将诸如声音、光、电子交通、面部和模式识别、气味、振动等感测技术集成到IoT设备之间的自主组织中,可以进一步增强此类IoT网络。传感系统的集成可以允许服务交付的相对于合同服务目标、基于编排和服务质量(QoS)的资源聚集和融合的系统的且自主的通信和协调。基于网络的资源处理的各个示例中的一些包括以下各项。
例如,网格网络956可以由执行内联数据到信息变换的系统来增强。例如,包括多链路网络的处理资源的自形成链可以以有效的方式分配原始数据到信息的变换,以及具有在资产和资源以及每一个资产和资源的相关联管理之间进行区分的能力。此外,可以插入基础设施的适当组件和基于资源的信任和服务索引,以提高数据完整性、质量、保证并且提供数据置信度度量。
例如,WLAN网络958可以使用执行标准转换的系统来提供多标准连接,从而使得IoT设备904能够使用不同的协议进行通信。其他系统可以提供跨多标准基础设施的无缝互连,多标准基础设施包括可见的互联网资源和隐藏的互联网资源。
例如,蜂窝网络960中的通信可以通过迁移数据、将通信扩展到更多远程设备或迁移数据并将通信扩展到更多远程设备的系统来增强。LPWA网络962可以包括执行非网际协议(IP)到IP互连、寻址和路由的系统。此外,每一个IoT设备904可以包括合适的收发机,该收发机用于与该设备进行广域通信。进一步,每一个IoT设备904可以包括使用附加的协议和频率进行通信的其他收发机。关于例如图12和图13中描绘的IoT处理设备的通信环境和硬件进一步讨论了这一点。
最后,IoT设备集群可以被配备成与其他IoT设备以及云网络进行通信。这可以允许IoT设备在设备之间形成自组织(ad-hoc)网络,允许它们用作单个设备,单个设备可以被称为雾设备。以下关于图10进一步讨论了该配置。
图10示出了与作为云计算网络边缘处的雾设备操作的IoT设备(设备1002)的网格网络通信的云计算网络。IoT设备的网格网络可以被称为雾1020,在云1000的边缘处操作。为了简化该图,不是每一个IoT设备1002都被标记。
可以将雾1020认为是大规模地互连的网络,其中数个IoT设备1002例如通过无线电链路1022与彼此进行通信。作为示例,可以使用开放连接基金会(Open ConnectivityFoundationTM,OCF)发布的互连规范来促进该互连网络。该标准允许设备发现彼此并建立通信以用于互连。还可以使用其他互连协议,包括例如,优化链路状态路由(OLSR)协议、移动自组织联网较佳方案(B.A.T.M.A.N.)路由协议、或OMA轻量级M2M(LWM2M)协议等。
尽管在本示例中展示三种类型的IoT设备1002:网关1004、数据聚合器1026、以及传感器1028,但可以使用IoT设备1002和功能的任何组合。网关1004可以是提供云1000与雾1020之间通信的边缘设备,并且还可以针对从传感器1028获取的数据(诸如运动数据、流量数据、温度数据等)提供后端处理功能。数据聚合器1026可以从任何数量的传感器1028收集数据,并执行后端处理功能用于分析。结果数据、原始数据或两者可以通过网关1004被传递到云1000。传感器1028可以是完全IoT设备1002,例如,既能够收集数据又能够处理数据的IoT设备。在一些情况下,传感器1028可以在功能上更有限,例如,收集数据并允许数据聚合器1026或网关1004处理数据。
来自任何IoT设备1002的通信可以沿着任何IoT设备1002之间的方便路径(例如,最方便的路径)被传递以到达网关1004。在这些网络中,互连的数目提供了大量冗余,这允许即使在损失数个IoT设备1002的情况下也维持通信。进一步,使用网格网络可以允许使用非常低功率或定位在远离基础设施处的IoT设备1002,因为连接到另一个IoT设备1002的距离可以远小于连接到网关1004的距离。
从这些IoT设备1002提供的雾1020可以被呈现给云1000中的设备(诸如服务器1006)作为位于云1000边缘处的单个设备,例如,雾设备。在该示例中,来自雾设备的警报可以在不被标识为来自雾1020内的特定IoT设备1002的情况下被发送。以这种方式,雾1020可以被认为是分布式平台,该分布式平台提供计算和存储资源以执行处理或数据密集型任务,诸如数据分析、数据聚合和机器学习等。
在一些示例中,可以使用命令式编程风格来配置IoT设备1002,例如,每一个IoT设备1002具有特定功能和通信伙伴。然而,可以以声明式编程风格来配置形成雾设备的IoT设备1002,这允许IoT设备1002重新配置它们的操作和通信,诸如响应于条件、查询和设备故障来确定所需的资源。作为示例,来自位于服务器1006的用户的、与由IoT设备1002监测的设备子集的操作相关的查询可能导致雾1020设备选择回答查询所需的IoT设备1002(诸如特定传感器1028)。然后,来自这些传感器1028的数据在由雾1020设备发送到服务器1006以回答查询之前,可以由传感器1028、数据聚合器1026或网关1004的任何组合进行聚合和分析。在该示例中,雾1020中的IoT设备1002可以基于查询(诸如添加来自流量传感器或温度传感器的数据)来选择所使用的传感器1028。此外,如果IoT设备1002中的一些IoT设备不可操作,则雾1020设备中的其他IoT设备1002可以提供类似的数据(如果可用的话)。
在其他示例中,以上所描述的操作和功能可以由示例形式为电子处理系统的IoT设备机器来体现,根据示例实施例,在该电子处理系统中可以执行指令集或指令序列以使得该电子处理系统执行本文讨论的方法中的任何一种。所述机器可以是IoT设备或IoT网关,包括由个人计算机(PC)、平板PC、个人数字助理(PDA)、移动电话或智能手机、或能够(相继或以其他方式)执行指定要由该机器要采取的动作的指令的任何机器的各方面所体现的机器。此外,虽然在以上的示例中只描述和引用单个机器,但是此类机器也应该被视为包括单独地或联合地执行一组(或多组)指令以执行此处所讨论的方法中的任何一个或多个的机器的任何集合。此外,这些示例和与基于处理器的系统类似的示例应被视为包括由处理器(例如,计算机)控制或操作、以单独地或联合地执行指令来执行在此所讨论的方法论中的任何一种或多种的一个或多个机器的任何集合。在一些实现方式中,可以协作地操作一个或多个多个设备以实现功能和执行本文所描述的任务。在一些情况下,一个或多个主机设备可以供应数据、提供指令、聚合结果或其他方式促成由多个设备提供的联合操作和功能。当功能由单个设备实现时,可以被认为是设备本地的功能;在多个设备作为单个机器操作的实现方式中,该功能可以被认为是设备共同地本地的,并且该设备集合可以提供或消耗由其他远程机器(实现为单个设备或设备集合)提供的结果,以及其他示例实现方式。
例如,图11示出了与多个物联网(IoT)设备通信的云计算网络或云1100的图示。云1100可以表示互联网,或者可以是局域网(LAN),或广域网(WAN),诸如公司的专有网络。IoT设备可以包括任何数量的不同类型的设备,分组在各种组合中。例如,交通控制组1106可以包括沿城市中街道的IoT设备。这些IoT设备可包括交通信号灯、交通流监测器、相机、天气传感器等。交通控制组1106或其他子组可通过有线或无线链路1108(诸如LPWA链路、光学链路等)与云1100通信。进一步,有线或无线子网络1112可以允许IoT设备诸如通过局域网、无线局域网等与彼此通信。IoT设备可以使用另一设备(诸如网关1110或网关1128)来与远程位置(诸如云1100)通信;IoT设备还可以使用一个或多个服务器1130来促进与云1100或与网关1110的通信。例如,一个或多个服务器1130可以作为中间网络节点来操作以支持本地局域网之间的本地边缘云或雾实现方式。此外,所描绘的网关1128可以以云到网关到多个边缘设备(cloud-to-gateway-to-many edge devices)配置来操作(诸如各种IoT设备1114、1120、1124对于云1100中资源的分配和使用是受限的或动态的)。
IoT设备的其他示例组可以包括远程气象站1114、本地信息终端1116、警报系统1118、自动柜员机1120、警报面板1122、或移动交通工具(诸如应急交通工具1124或其他交通工具1126),等等。这些IoT设备中的每一个可以与其他IoT设备、与服务器1104、与另一个IoT雾设备或系统(未示出,但在图10中描绘)、或其中的组合通信。该组IoT设备可以被部署在各种住宅设置、商业设置和工业设置中(包括在私有环境或公共环境两者中)。
如从图11中可以看出的,大量的IoT设备可以通过云1100进行通信。这可以允许不同的IoT设备自主地向其他设备请求或提供信息。例如,一组IoT设备(例如,交通控制组1106)可请求来自一组远程气象站1114的当前天气预报,该组远程气象站1114可在没有人为干预的情况下提供预报。此外,应急交通工具1124可被自动柜员机1120警告:盗窃正在进行。当应急交通工具1124朝自动柜员机1120前进时,它可以访问交通控制组1106以请求到该位置的通行许可,例如,通过将信号灯转变为红灯以在交叉路口阻挡交叉交通达足够的时间以使应急交通工具1124无阻碍地进入交叉路口。
IoT设备集群(诸如远程气象站1114或交通控制组1106)可以被配备成与其他IoT设备以及云1100通信。这可以允许IoT设备在设备之间形成自组织网络,允许它们用作单个设备,单个设备可以被称为雾设备或系统(例如,如上参考图10所述)。
图12是可以存在于IoT设备1250中用于实现本文描述的技术的组件的示例的框图。IoT设备1250可以包括在示例中示出的组件或在以上公开中引用的组件的任何组合。这些组件可被实现为适用于IoT设备1250中的IC、IC的部分、分立电子设备或其他模块、逻辑、硬件、软件、固件或其组合,或被实现为另外并入较大系统的机箱内的组件。另外,图12的框图旨在描绘IoT设备1250的组件的高级视图。然而,所示出的组件中的一些组件可以被省略,可以存在附加的组件,并且可能在其他实现方式中发生所示组件的不同布置。
IoT设备1250可以包括处理器1252,该处理器1252可以是微处理器、多核处理器、多线程处理器、超低压处理器、嵌入式处理器或其他已知的处理元件。处理器1252可以是片上系统(SoC)的一部分,其中处理器1252和其他组件形成为单个集成电路,或者单个封装(诸如来自英特尔(Intel)的爱迪生(EdisonTM)或伽利略(GalileoTM)SoC板)。作为示例,处理器1252可包括基于架构酷睿TM(CoreTM)的处理器(诸如QuarkTM、AtomTM、i3、i5、i7或MCU类处理器)、或可从加利福尼亚州圣克拉拉市的公司获得的另一此类处理器。然而,可使用任何数量的其他处理器,诸如,可从加利福尼亚州桑尼威尔市的超微半导体公司(AMD)获得的处理器、来自加利福尼亚州桑尼威尔市的MIPS技术公司的基于MIPS的设计、许可自ARM控股有限公司的基于ARM的设计,或从上述各公司的客户、被许可方或采纳方获得的处理器。处理器可包括诸如以下单元:来自公司的A5-A10处理器、来自 技术公司的骁龙TM(SnapdragonTM)处理器或来自德州仪器公司的OMAPTM处理器。
处理器1252可通过互连1256(例如,总线)来与系统存储器1254通信。可使用任何数量的存储器设备来提供给定量的系统存储器。作为示例,存储器可以是根据联合电子器件工程委员会(JEDEC)设计的随机存取存储器(RAM),诸如DDR或移动DDR标准(例如,LPDDR、LPDDR2、LPDDR3或LPDDR4)。在各种实现方式中,单独的存储器设备可以是任何数量的不同封装类型,诸如单管芯封装(SDP)、双管芯封装(DDP)或四管芯封装(Q17P)。在一些示例中,这些设备可以直接焊接到主板上,以提供较薄型的解决方案,而在其他示例中,设备被配置为一个或多个存储器模块,这些存储器模块进而通过给定的连接器耦合至主板。可使用任何数量的其他存储器实现方式,诸如其他类型的存储器模块,例如,不同种类的双列直插存储器模块(DIMM),包括但不限于microDIMM(微DIMM)或MiniDIMM(迷你DIMM)。
为了提供对信息(诸如数据、应用、操作系统等)的持久性存储,存储1258还可经由互连1256而耦合至处理器1252。在示例中,存储1258可经由固态盘驱动器(SSDD)来实现。可用于存储1258的其他设备包括闪存卡(诸如SD卡、microSD卡、xD图片卡,等等)和USB闪存驱动器。在低功率实现方式中,存储1258可以是与处理器1252相关联的管芯上存储器或寄存器。然而,在一些示例中,存储1258可使用微硬盘驱动器(HDD)来实现。此外,附加于或替代所描述的技术,可将任何数量的新技术用于存储1258,诸如阻变存储器、相变存储器、全息存储器或化学存储器,等等。
组件可通过互连1256进行通信。互连1256可包括任何数量的技术,包括工业标准架构(ISA)、扩展ISA(EISA)、外围组件互连(PCI)、外围组件互连扩展(PCIx)、PCI快速(PCIe)或任何数量的其他技术。互连1256可以是例如在基于SoC的系统中使用的专有总线。其他总线系统可被包括,诸如I2C接口、SPI接口、点对点接口、功率总线,等等。
互连1256可将处理器1252耦合至网格收发机1262,以便例如与其他网格设备1264通信。网格收发机1262可使用任何数量的频率和协议,诸如IEEE 802.15.4标准下的2.4千兆赫兹(GHz)传送,使用如由特别兴趣小组定义的低功率(BLE)标准、或标准,等等。为特定的无线通信协议配置的任何数量的无线电可用于到网格设备1264的连接。例如,WLAN单元可用于根据电气和电子工程师协会(IEEE)802.11标准实现Wi-FiTM通信。另外,例如根据蜂窝或其他无线广域协议的无线广域通信可经由WWAN单元发生。
网格收发机1262可以使用多种标准或无线电来进行通信以用于不同范围的通信。例如,IoT设备1250可使用基于BLE的或另一低功率无线电的本地收发机与接近的(例如,在约10米内的)设备通信以节省功率。更远的(例如,在约50米内的)网格设备1264可通过ZigBee或其他中间功率无线电而达到。这两种通信技术能以不同的功率水平通过单个无线电发生,或者可通过分开的收发机而发生,分开的收发机例如使用BLE的本地收发机和分开的使用ZigBee的网格收发机。
无线网络收发机1266可被包括,以经由局域网协议或广域网协议来与云1200中的设备或服务通信。无线网络收发机1266可以是遵循IEEE802.15.4或IEEE 802.15.4g标准等的LPWA收发机。IoT设备1250可使用由Semtech和LoRa联盟开发的LoRaWANTM(长距广域网)在广域上通信。本文中所描述的技术不限于这些技术,而是可与实现长距离、低带宽通信(诸如Sigfox和其他技术)的任何数量的其他云收发机一起使用。进一步地,可使用其他通信技术,诸如在IEEE 802.15.4e规范中描述的时分信道跳。
除了针对如本文中所描述的网格收发机1262和无线网络收发机1266而提及的系统之外,还可使用任何数量的其他无线电通信和协议。例如,无线电收发机1262和1266可包括使用扩展频谱(SPA/SAS)通信以实现高速通信的LTE或其他蜂窝收发机。进一步地,可使用任何数量的其他协议,诸如用于中速通信和供应网络通信的网络。
无线电收发机1262和1266可包括与任何数量的3GPP(第三代合作伙伴计划)规范(尤其是长期演进(LTE)、长期演进-高级(LTE-A)和长期演进-高级加强版(LTE-A Pro))兼容的无线电。可以注意到,可选择与任何数量的其他固定的、移动的或卫星通信技术和标准兼容的无线电。这些可包括例如任何蜂窝广域无线通信技术,其可包括例如第5代(5G)通信系统、全球移动通信(GSM)无线电通信系统、通用分组无线电服务(GPRS)无线电通信技术、或GSM演进(EDGE)增强数据速率无线电通信技术、UMTS(通用移动电信系统)通信技术,除了上面列出的标准外,任何数量的卫星上行链路技术都可以用于无线网络收发机1266,包括例如符合由ITU(国际电信联盟)或ETSI(欧洲电信标准协会)发布标准的无线电等。本文中所提供的示例因此可被理解为适用于各种现有的和尚未制定的各种其他通信技术。
网络接口控制器(NIC)1268可被包括以提供到云1200或到其他设备(诸如网格设备1264)的有线通信。有线通信可提供以太网连接,或可基于其他类型的网络,诸如控制器区域网(CAN)、本地互连网(LIN)、设备网络(DeviceNet)、控制网络(ControlNet)、数据高速路+、现场总线(PROFIBUS)或工业以太网(PROFINET),等等。附加的NIC 1268可被包括以允许到第二网络的连接,例如,NIC 1268通过以太网提供到云的通信,并且第二NIC 1268通过另一类型的网络提供到其他设备的通信。
互连1256可将处理器1252耦合至外部接口1270,该外部接口1270用于连接外部设备或子系统。外部设备可包括传感器1272,诸如加速度计、水平传感器、流量传感器、光学光传感器、相机传感器、温度传感器、全球定位系统(GPS)传感器、压力传感器、气压传感器,等等。外部接口1270可进一步用于将IoT设备1250连接至致动器1274(诸如电源开关、阀致动器、可听见声音发生器、视觉警告设备等)。
在一些任选的示例中,各种输入/输出(I/O)设备可存在于IoT设备1250内,或可连接至IoT设备1250。例如,显示器或其他输出设备1284可被包括以显示信息,诸如传感器读数或致动器位置。输入设备1286(诸如触摸屏或键区)可被包括以接受输入。输出设备1284可包括任何数量的音频或视觉显示形式,包括:简单视觉输出,诸如二进制状态指示器(例如,LED);多字符视觉输出;或更复杂的输出,诸如显示屏(例如,LCD屏),其具有从IoT设备1250的操作生成或产生的字符、图形、多媒体对象等的输出。
电池1276可为IoT设备1250供电,但是在其中IoT设备1250被安装在固定位置的示例中,该IoT设备1250可具有耦合至电网的电源。电池1276可以是锂离子电池、金属-空气电池(诸如锌-空气电池、铝-空气电池、锂-空气电池),等等。
电池监测器/充电器1278可被包括在IoT设备1250中以跟踪电池1276的充电状态(SoCh)。电池监测器/充电器1278可用于监测电池1276的其他参数以提供失效预测,诸如电池1276的健康状态(SoH)和功能状态(SoF)。电池监测器/充电器1278可包括电池监测集成电路,诸如来自线性技术公司(Linear Technologies)的LTC4020或LTC2990、来自亚利桑那州的凤凰城的安森美半导体公司(ON Semiconductor)的ADT7488A、或来自德克萨斯州达拉斯的德州仪器公司的UCD90xxx族的IC。电池监测器/充电器1278可通过互连1256将关于电池1276的信息传递至处理器1252。电池监测器/充电器1278也可包括允许处理器1252直接监测电池1276的电压或来自电池1276的电流的模数(ADC)转换器。电池参数可被用于确定IoT设备1250可执行的动作,诸如传输频率、网格网络操作、感测频率,等等。
功率块1280或耦合至电网的其他电源可与电池监测器/充电器1278耦合以对电池1276充电。在一些示例中,功率块1280可用无线功率接收机代替,以便例如通过IoT设备1250中的环形天线来无线地获得功率。无线电池充电电路(诸如来自加利福尼亚州的苗比达市的线性技术公司的LTC4020芯片,等等)可被包括在电池监测器/充电器1278中。所选择的特定的充电电路取决于电池1276的尺寸,并因此取决于所要求的电流。可使用由无线充电联盟(Airfuel Alliance)颁布的Airfuel标准、由无线电力协会(Wireless PowerConsortium)颁布的Qi无线充电标准、或由无线电力联盟(Alliance for Wireless Power)颁布的Rezence充电标准等等来执行充电。
存储1258可包括用于实现本文中公开的技术的软件、固件或硬件命令形式的指令1282。虽然此类指令1282被示出为被包括在存储器1254和存储1258中的代码块,但是可以理解,可用例如被建立到专用集成电路(ASIC)中的硬连线电路替换代码块中的任一个。
在示例中,经由存储器1254、存储1258或处理器1252提供的指令1282可具体化为非瞬态机器可读介质1260,该非瞬态机器可读介质1260包括用于指示处理器1252执行IoT设备1250中的电子操作的代码。处理器1252可通过互连1256访问非瞬态机器可读介质1260。例如,非瞬态机器可读介质1260可由针对图12的存储1258所描述的设备来具体化,或者可包括特定的存储单元,诸如光盘、闪存驱动器或任何数量的其他硬件设备。非瞬态机器可读介质1260可包括用于指示处理器1252执行例如像参照上文中描绘的操作和功能的(多个)流程图和(多个)框图而描述的特定的动作序列或动作流的指令。
图13是根据实施例的处理器的示例图示。处理器1300是可以与上文的实现方式结合使用的一种类型的硬件设备的示例。处理器1300可以是任何类型的处理器,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、多核处理器、单核处理器、或用于执行代码的其他设备。虽然在图13中图示出仅一个处理器1300,但处理元件可替代地包括多于一个的图13中所图示的处理器1300。处理器1300可以是单线程核,或者对于至少一个实施例,处理器1300可以是多线程的,因为其每个核可包括多于一个硬件线程上下文(或“逻辑处理器”)。
图13还示出根据实施例的耦合至处理器1300的存储器1302。存储器1302可以是对于本领域技术人员而言已知或以其他方式可用的各种各样的存储器(包括存储器层级结构的各层)中的任何存储器。此类存储器元件可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)的逻辑块、可擦除可编程只读存储器(EPROM)、以及电可擦除可编程ROM(EEPROM)。
处理器1300可以执行与本文中详细描述的算法、过程、或操作相关联的任何类型的指令。一般而言,处理器1300可以将元件或制品(例如,数据)从一种状态或事物变换成另一种状态或事物。
代码1304(其可以是用于由处理器1300执行的一条或多条指令)可被存储在存储器1302中,或者可被存储在软件、硬件、固件、或其任何合适的组合中,或者在适当的情况下并且基于特定需要而被存储在任何其他内部或外部组件、设备、元件、或对象中。在一个示例中,处理器1300可以遵循由代码1304指示的指令的程序序列。每条指令进入前端逻辑1306并且由一个或多个解码器1308处理。解码器可生成诸如采用预定义格式的固定宽度的微操作之类的微操作作为其输出,或者可生成反映原始代码指令的其他指令、微指令、或控制信号。前端逻辑1306还包括寄存器重命名逻辑1310和调度逻辑1312,调度逻辑1312一般分配资源并对与供执行的指令对应的操作进行排队。
处理器1300还可以包括具有一组执行单元1316a、1316b、1316n等的执行逻辑1314。一些实施例可以包括专用于指定功能或功能集的大量执行单元。其他实施例可包括仅一个执行单元或可以执行特定功能的一个执行单元。执行逻辑1314执行由代码指令指定的操作。
在对由代码指令指定的操作的执行完成之后,后端逻辑1318可以对代码1304的指令进行引退。在一个实施例中,处理器1300允许乱序执行但要求对指令的有序引退。引退逻辑1320可以采取各种已知的形式(例如,重排序缓冲区等等)。以此方式,至少对于由解码器所生成的输出、硬件寄存器和由寄存器重命名逻辑1310利用的表以及由执行逻辑1314修改的任何寄存器(未示出)而言,处理器1300在代码1304的执行期间被转换。
虽然未在图13中示出,但处理元件可包括与处理器1300一起处于芯片上的其他元件。例如,处理元件可包括与处理器1300一起的存储器控制逻辑。处理元件可包括I/O控制逻辑和/或可包括与存储器控制逻辑一起被集成的I/O控制逻辑。处理元件还可包括一个或多个高速缓存。在一些实施例中,非易失性存储器(诸如闪存或熔丝)也可与处理器1300一起被包括在芯片上。
图14是根据一些示例实现方式的示例机器学习处理设备1402的简化框图1400。在该特定示例中,机器学习设备1402可以实现VPU,该VPU包括一组专用处理器1405a-h、机器学习加速器1410和非标准存储器层级结构1415以及多种类型的存储器(例如,1420、1425)。例如,根据一些实施例,多个处理器1405a-h(例如,流混合架构向量引擎(SHAVE)处理器)可以共享多端口存储器子系统1415。此类处理器1405a-h可以被实现为具有非常长的指令字(VLIW)指令集的专有或专用处理器,以及其他示例。存储器子系统1415可以被实现为存储器片的集合,在本文中被称为“连接矩阵”(CMX)片。CMX存储器1415可以被实现为快速的本地存储器(例如,SDRAM),并且可以体现可由各个处理器(例如,1405a-h)使用的暂存器存储器。在该示例中,可以进一步提供层2(L2)高速缓存1420和DDR存储器1425作为更通用的存储器或系统存储器。进一步地,示例机器学习处理设备可以进一步包括精简指令集计算机(RISC)元件1430,以及其他处理器设备(例如,1435)。
一个或多个硬件加速器设备(例如,1410)可以被包括在机器学习处理设备中或耦合到机器学习处理设备。此类加速器设备可以是固定功能的硬件加速器,其被配置成特别地支持矩阵算术、特定的机器学习操作或其他专用功能以增强机器学习处理设备1402的整体能力。在一个示例中,加速器设备本身可以包括:可以连接到并且还利用存储器子系统1415的多个数据处理单元(DPU),以及其他示例特征和组件。在图14的示例中,示例存储器子系统1415可以包括或定义需要特定张量类型驻留的特定存储器区域(例如,填充、未填充、网络输入和输出张量)。
在一些实现方式中,每个SHAVE处理器(例如,1405a-h)可以包括两个加载存储单元,通过该两个加载存储单元可以从存储器子系统存储器1415的CMX片加载数据并将数据存储到存储器子系统存储器1415的CMX片。每个存储器片可以与SHAVE处理器(例如,1405a-h)中相对应的一个相关联。此外,每个SHAVE处理器(例如,1405a-h)还可以包括可以将指令加载到其中的指令单元。在其中处理器包括SHAVE的特定实施例中,SHAVE可以包括精简指令集计算机(RISC)、数字信号处理器(DSP)、超长指令字(VLIW)和/或图形处理单元(GPU)中的一个或多个。示例机器学习处理设备可以另外包括将处理器1405a-h和存储器1415的存储器片耦合的互连系统。该互连系统可以被称为SHAVE间互连(ISI)。ISI可以包括总线,处理器(例如,1405a-h)可以通过该总线将数据读取或将数据写入到存储器1415的任何一个存储器片的任何部分,以及其他示例通信和事务。
图15图示出根据实施例的以点对点(PtP)配置布置的计算机系统1500。具体而言,图15示出了其中处理器、存储器以及输入/输出设备通过数个点对点接口互连的系统。一般而言,本文中所描述的计算系统中的一个或多个计算系统能以与计算系统1500相同或类似的方式来配置。
处理器1570和1580还可各自包括集成存储器控制器逻辑(MC)1572和1582以与存储器元件1532和1534通信。在替代实施例中,存储器控制器逻辑1572和1582可以是与处理器1570和1580分开的分立逻辑。存储器元件1532和/或1534可以存储要由处理器1570和1580用来获取本文中所概述的操作和功能中的各种数据。
处理器1570和1580可以是任何类型的处理器,诸如结合其他附图所讨论的那些处理器。处理器1570和1580可经由分别使用点对点(PtP)接口电路1578和1588的点对点接口1550来交换数据。处理器1570和1580可各自经由使用点对点接口电路1576、1586、1594和1598的各个点对点接口1552和1554与芯片组1590交换数据。芯片组1590还可以使用接口电路1592(其可以是PtP接口电路)经由高性能图形接口1539来与高性能图形电路1538交换数据。在替代实施例中,图15中所图示的PtP链路中的任一者或全部可被实现为多分支总线而不是PtP链路。
芯片组1590可经由接口电路1596与总线1520通信。总线1520可具有通过该总线通信的一个或多个设备,诸如总线桥1518和I/O设备1516。经由总线1510,总线桥1518可与其他设备通信,这些其他设备诸如用户接口1512(诸如键盘、鼠标、触摸屏、或其他输入设备)、通信设备1526(诸如调制解调器、网络接口设备、或可通过计算机网络1560通信的其他类型的通信设备)、音频I/O设备1514、和/或数据存储设备1528。数据存储设备1528可存储代码1530,该代码1530可由处理器1570和/或1580执行。在替代实施例中,总线架构的任何部分可利用一个或多个PtP链路来实现。
图15中所描绘的计算机系统是可用于实现本文中所讨论的各实施例的计算系统的实施例的示意性图示。将会领会,图15中所描绘的系统的各组件能以芯片上系统(SoC)架构或以能够实现本文中所提供的示例和实现方式的功能和特征的任何其他合适的配置来组合。
在进一步的示例中,机器可读介质也包括任何有形介质,该有形介质能够存储、编码或携带供由机器执行并且使机器执行本公开方法中的任何一种或多种方法的指令,或者该有形介质能够储存、编码或携带由此类指令利用或与此类指令相关联的数据结构。“机器可读介质”因此可包括但不限于固态存储器、光学介质和磁介质。机器可读介质的特定示例包括非易失性存储器,作为示例,包括但不限于:半导体存储器设备(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存设备);诸如内部硬盘及可移除盘之类的磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。可使用传输介质,经由网络接口设备,利用多种传输协议中的任何一种协议(例如,HTTP),进一步通过通信网络来传送或接收由机器可读介质具体化的指令。
应当理解,在本说明书中所描述的功能单元或能力可被称为或标记为组件或模块,从而特别强调其实现方式的独立性。此类组件可由任何数量的软件或硬件形式来具体化。例如,组件或模块可以被实现成硬件电路,该硬件电路包括定制的超大规模集成(VLSI)电路或门阵列、诸如逻辑芯片、晶体管之类的现成的半导体,或其他分立的组件。组件或模块也可被实现在可编程硬件设备中,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等。组件或模块也可被实现在由各种类型的处理器所执行的软件中。可执行代码的所标识的组件或模块可以例如包括计算机指令的一个或多个物理或逻辑框,其可被组织成例如对象、过程、或函数。然而,所标识的组件或模块的可执行文件不必在物理上在一起,而是可包括存储在不同位置中的不同指令,当这些指令在逻辑上结合在一起时,包括组件或模块,并且针对该组件或模块实现所声称的目的。
实际上,可执行代码的组件或模块可以是单条指令或许多指令,并且甚至可以分布在若干不同的代码段上,分布在不同的程序之间以及跨若干存储器设备或处理系统分布。具体而言,所描述的过程的一些方面(诸如代码重写和代码分析)可发生在与代码部署在其中的处理系统(例如,在嵌入在传感器或机器人中的计算机中)不同的处理系统(例如,在数据中心中的计算机中)上。类似地,操作数据在此可被标识并图示在组件或模块内,并且能以任何合适的形式被具体化并被组织在任何合适类型的数据结构内。操作数据可以被收集为单个数据集,或者可分布在不同位置上(包括分布在不同的存储设备上),并且可以至少部分地仅作为电子信号而存在于系统或网络上。组件或模块可以是无源或有源的,包括可操作以执行期望功能的代理。
当前所描述的方法、系统和设备实施例的附加示例包括下列非限制性的配置。下列非限制性示例中的每一个示例可以独立存在,或可以与以下所提供的或遍及本公开的其他示例中的一个或更多示例按照任何排列或组合进行结合。
尽管已经在某些实现方式和一般相关联方法的方面描述了本公开,但这些实现方式和方法的更改和置换将对于本领域技术人员来说是显而易见的。例如,本文中描述的动作可以以与所描述的顺序不同的顺序来执行,并仍获得期望的结果。作为一个示例,所附附图中描绘的过程并不一定要求所示的特定顺序、或顺序地来实现所期望的结果。在某些实现方式中,多任务处理和并行处理可能是有利的。另外,也可以支持其他用户界面布局和功能。其他变型落在所附权利要求的范围之内。
虽然本说明书包含许多具体实现细节,但这些具体实现细节不应当被解释为对任何发明或可声称权利的范围的限制,而是被解释为针对特定发明的特定实施例的特征的描述。也可将在本说明书中单独的各实施例的情境中所描述的某些特征以组合的形式,在单个实施例中实现。反之,也可单独地在多个实施例中,或在任何合适的子组合中实现在单个实施例的情境中所描述的各种特征。此外,虽然在上文中可能将多个特征描述为以某些组合的方式起作用且甚至最初是如此要求保护的,但是,在一些情况下,可将来自所要求保护的组合的一个或多个特征从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了多个操作,但不应当将此理解为要求按所示的特定顺序或顺序地执行此类操作,或者要求要执行所有示出的操作才能达成期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,不应当将上文所描述的各实施例中的各种系统组件分开理解为在所有实施例中都要求进行此类分开,并且应当理解,一般可将所描述的程序组件和系统一起集成在单个的软件产品中,或将其封装近多个软件产品中。
以下示例涉及根据本说明书的实施例。示例1是其上存储有指令的非瞬态机器可读存储介质,其中,该指令可由机器执行以使该机器用于:标识多个不同父神经网络模型的定义;从语法定义数据中标识在语法进化中使用的语法,其中语法定义规则以自动构建有效的神经网络模型;基于语法来对多个父神经网络模型执行语法进化,以生成子神经网络模型集;使基于要输入到神经网络模型的代的测试数据集来执行神经网络模型的代的测试,其中神经网络模型的代包括子神经网络模型集;基于该测试,为该代中的每个神经网络模型确定属性值集,其中每个属性值集为相对应的神经网络模型的多个不同属性中的每个属性标识相应的值,并且多个不同属性中的至少一个属性包括从测试中确定的验证精度;在为神经网络模型的代而确定的属性值集中确定非主导前沿;以及基于非主导前沿来选择神经网络模型的代的子集。
示例2包括示例1的主题,其中,指令可进一步执行以使机器用于使用训练数据集对子神经网络模型集进行训练,其中在训练子神经网络模型集之后执行测试。
示例3包括示例2的主题,其中,训练数据集包括数据集的第一子集,而测试数据包括数据集的第二子集。
示例4包括示例3的主题,其中,数据集包括图像集。
示例5包括示例1-4中的任一项的主题,其中,语法定义规则以基于网络模块集来构建有效的神经网络模型,并且使用网络模块集各自构建子神经网络集。
示例6包括示例5的主题,其中,从网络模块集中构建神经网络模型包括:基于语法来选择网络模块集中网络模块的组合,以将其包括在相应神经网络模型中;以及基于语法来为所选择的每个网络模块设置相应的参数值,以将其包括在相应子神经网络中。
示例7包括示例5-6中的任一项的主题,其中,基于语法来从网络模块集中构建多个父神经网络模型的至少一个子集。
示例8包括示例5-7中的任一项的主题,其中,该网络模块集包括多个网络模块,并且多个网络模块中的每一个网络模块包括不同的相应类型的网络部分。
示例9包括示例8的主题,其中,网络部分的类型包括相应神经网络层集。
示例10包括示例8-9中的任一项的主题,其中,该多个网络模块包括卷积网络模块和起始网络模块。
示例11包括示例5-10中的任一项的主题,其中,基于语法来将神经网络中的网络模块连接到完全连接层或最大池化层中的至少一个,以生成相应的神经网络模型。
示例12包括示例1-11中的任一项的主题,其中,神经网络模型的代进一步包括父神经网络模型。
示例13包括示例1-12中的任一项的主题,其中,执行语法进化包括对父神经网络模型中的每一个的参数值执行改变操作。
示例14包括示例13的主题,其中,改变操作包括变异操作或交叉操作中的至少一个。
示例15包括示例13-14中的任一项的主题,其中,改变操作包括基于相应父神经网络模型中层数、核数或滤波器大小中的一个或多个的结构变异。
示例16包括示例15的主题,其中,改变操作进一步包括基于学习率、批量大小、权重衰减、动量、使用的优化器和丢失率中的一个或多个的父神经网络模型的学习参数变异。
示例17包括示例1-16中的任一项的主题,其中,神经网络模型代的子集的选择基于根据属性值集的随机二元锦标赛的结果。
示例18包括示例17的主题,其中,随机二元锦标赛的结果基于属性值集中的排名值和拥挤距离。
示例19包括示例1-18中的任一项的主题,其中,神经网络模型包括卷积神经网络(CNN)模型。
示例20包括示例1-19中的任一项的主题,其中,基于语法来在多代神经网络模型上执行多次进化,下一代神经网络模型基于根据通过测试前一代神经网络模型得到的值确定的相应非主导前沿。
示例21是一种方法,包括:标识第一多个不同的父神经网络模型的定义;从语法定义数据中标识要在语法进化中使用的语法,其中语法定义规则以自动构建有效的神经网络模型;基于该语法来对该第一多个父神经网络模型执行语法进化,以生成第一组子神经网络模型;基于要输入到神经网络模型的代的测试数据集来执行待执行的神经网络模型的代的测试,其中神经网络模型的代包括第一组子神经网络模型;针对神经网络模型的代中的每个神经网络模型,确定多个属性中的每一个属性的相应值,其中多个属性中的至少一个属性包括从测试中确定的验证精度值;基于多个属性的值来执行多目标优化以用于神经网络的代,其中多目标优化确定与神经网络模型的代相关联的至少一个非主导前沿;以及基于非主导前沿来选择神经网络模型的代的子集。
示例22包括示例21的主题,进一步包括:将神经网络模型的代的子集指定为下一代神经网络模型的第二多个父神经网络模型;基于语法来对第二多个父神经网络模型执行语法进化,以生成包括在下一代神经网络模型中的第二组子神经网络模型;以及测试下一代神经网络模型,以确定多个属性的值。
示例23包括示例21的主题,其中,神经网络模型的代包括通过基于语法的语法进化生成的多代神经网络模型中的最终代,并且神经网络模型的代的子集包括最终组神经网络模型供采用。
示例24包括示例21-23中的任一项的主题,进一步包括使用训练数据集来训练待训练的第一组子神经网络模型,其中在对第一组子神经网络模型进行训练之后执行测试。
示例25包括示例21-24中的任一项的主题,其中,语法定义规则以基于网络模块集来构建有效的神经网络模型,并且使用网络模块集各自构建第一组子神经网络。
示例26包括示例25的主题,其中,从网络模块集中构建神经网络模型包括:基于语法来选择网络模块集中网络模块的组合,以将其包括在相应神经网络模型中;以及基于语法来为所选择的每个网络模块设置相应的参数值,以将其包括在相应子神经网络中。
示例27包括示例25-26中的任一项的主题,其中,基于语法来从网络模块集中构建第一多个父神经网络模型的至少一个子集。
示例28包括示例25-27中的任一项的主题,其中,该网络模块集包括多个网络模块,并且多个网络模块中的每一个网络模块包括不同的相应类型的网络部分。
示例29包括示例28的主题,其中,网络部分的类型包括相应神经网络层集。
示例30包括示例28-29中的任一项的主题,其中,该多个网络模块包括卷积网络模块和起始网络模块。
示例31包括示例25-30中的任一项的主题,其中,基于语法来将神经网络中的网络模块连接到完全连接层或最大池化层中的至少一个,以生成相应的神经网络模型。
示例32包括示例21-31中的任一项的主题,其中,神经网络模型的代进一步包括第一多个父神经网络模型。
示例33包括示例21-32中的任一项的主题,其中,执行语法进化包括对父神经网络模型中的每一个的参数值执行改变操作。
示例34包括示例33的主题,其中,改变操作包括基于相应父神经网络模型中层数、核数或滤波器大小中的一个或多个的结构变异。
示例35包括示例34的主题,其中,改变操作进一步包括基于学习率、批量大小、权重衰减、动量、使用的优化器和丢失率中的一个或多个的父神经网络模型的学习参数变异。
示例36包括示例21-35中的任一项的主题,其中,神经网络模型代的子集的选择基于根据属性值集的随机二元锦标赛的结果。
示例37包括示例36的主题,其中,随机二元锦标赛的结果基于属性值集中的排名值和拥挤距离。
示例38是包括执行示例21-37中任一项的方法的装置的系统。
示例39是一种系统,包括:至少一个数据处理器;至少一个存储器元件;以及神经网络生成器,该神经网络生成器可由数据处理器执行用于:标识多个不同父神经网络模型的定义;从语法定义数据中标识要在语法进化中使用的语法,其中语法定义规则以自动构建有效的神经网络模型;以及基于语法来对多个父神经网络模型执行语法进化,以生成子神经网络模型集;一种测试系统,可由数据处理器执行用于:基于要输入到神经网络模型的代的测试数据集来执行神经网络模型的代的测试,其中神经网络模型的代包括子神经网络模型集;以及基于该测试,为该代中的每个神经网络模型确定属性值集,其中每个属性值集为相对应的神经网络模型的多个不同属性标识相应的值,并且多个不同属性中的至少一个属性包括从测试中确定的验证精度;以及一种多目标优化器,可由数据处理器执行用于:在为神经网络模型的代而确定的属性值集中确定非主导前沿;以及基于非主导前沿来选择神经网络模型的代的子集。
示例40包括示例39的主题,其中,指令进一步可执行以使机器用于:使用训练数据集对子神经网络模型集进行训练,其中在训练子神经网络模型集之后执行测试。
示例41包括示例40的主题,其中,训练数据集包括数据集的第一子集,而测试数据包括数据集的第二子集。
示例42包括示例41的主题,其中数据集包括图像集。
示例43包括示例39-42中的任一项的主题,其中,语法定义规则以基于网络模块集来构建有效的神经网络模型,并且使用网络模块集各自构建子神经网络集。
示例44包括示例43的主题,其中,从网络模块集中构建神经网络模型包括:基于语法来选择网络模块集中网络模块的组合,以将其包括在相应神经网络模型中;以及基于语法来为所选择的每个网络模块设置相应的参数值,以将其包括在相应子神经网络中。
示例45包括示例43-44中的任一项的主题,其中,基于语法来从网络模块集中构建多个父神经网络模型的至少一个子集。
示例46包括示例43-45中的任一项的主题,其中,该网络模块集包括多个网络模块,并且多个网络模块中的每一个网络模块包括不同的相应类型的网络部分。
示例47包括示例46的主题,其中,网络部分的类型包括相应神经网络层集。
示例48包括示例46-47中的任一项的主题,其中,该多个网络模块包括卷积网络模块和起始网络模块。
示例49包括示例43-48中的任一项的主题,其中,基于语法来将神经网络中的网络模块连接到完全连接层或最大池化层中的至少一个,以生成相应的神经网络模型。
示例50包括示例39-49中的任一项的主题,其中,神经网络模型的代进一步包括父神经网络模型。
示例51包括示例39-50中的任一项的主题,其中,执行语法进化包括对父神经网络模型中的每一个的参数值执行改变操作。
示例52包括示例51的主题,其中,改变操作包括变异操作或交叉操作中的至少一个。
示例53包括示例51-52中的任一项的主题,其中,改变操作包括基于相应父神经网络模型中层数、核数或滤波器大小中的一个或多个的结构变异。
示例54包括示例53的主题,其中,改变操作进一步包括基于学习率、批量大小、权重衰减、动量、使用的优化器和丢失率中的一个或多个的父神经网络模型的学习参数变异。
示例55包括示例39-54中的任一项的主题,其中,神经网络模型代的子集的选择基于根据属性值集的随机二元锦标赛的结果。
示例56包括示例55的主题,其中,随机二元锦标赛的结果基于属性值集中的排名值和拥挤距离。
示例57包括示例39-56中的任一项的主题,其中,神经网络模型包括卷积神经网络(CNN)模型。
示例58包括示例39-57中的任一项的主题,其中,基于语法来在多代神经网络模型上执行多次进化,下一代神经网络模型基于根据通过测试前一代神经网络模型得到的值确定的相应非主导前沿。
示例59包括示例58的主题,其中,从多个进化中生成最终组神经网络模型,以供机器的计算系统使用。
示例60包括示例59的主题,其中,机器包括无人机、机器人、传感器设备、或自主交通工具中的一个。
示例61是一种方法,包括:接收包括多个不同的父神经网络的定义的输入数据,其中使用在网络模块集中定义的相应网络模块来构造该多个父神经网络中的每一个;执行语法进化算法的迭代,以从多个父神经网络中生成子神经网络的代;提供数据集作为每个子神经网络的输入;从响应于输入而生成的相应输出中确定每个子神经网络的相应精度;以及为每一代子神经网络确定Pareto前沿,其中Pareto前沿是优化在子神经网络的大小和所确定的该子神经网络的精度之间的权衡。
示例62包括示例61的主题,进一步包括基于一个或多个Pareto前沿来确定子神经网络中最优的一个子神经网络。
示例63包括示例61-62中的任一项的主题,其中,网络模块集包括卷积块集和起始块集。
示例64包括示例63的主题,其中,神经网络中的网络模块连接到完全连接的层或最大池化层中的至少一个。
示例65包括示例61-64中的任一项的主题,其中,使用网络模块集中的模块来生成子神经网络。
示例66包括示例61-65中的任一项的主题,其中,保留每一代中性能最高的神经网络,以将其包括在紧随其后的一代中。
示例67包括示例61-66中的任一项的主题,其中,语法进化算法基于神经网络中的层数、核数或滤波器大小中的一个或多个,通过结构变异生成子神经网络的代。
示例68包括示例61-67中的任一项的主题,其中,神经网络的权重通过反向传播设置。
示例69包括示例61-68中的任一项的主题,其中,语法进化算法通过基于学习率、批量大小、权重衰减、动量、使用的优化器和丢失率中的一个或多个的参数变异来生成子神经网络的代。
示例70包括示例61-69中的任一项的主题,其中,语法进化算法应用了Backaus-Naur形式语法。
示例71包括示例61-70中的任一项的主题,进一步包括使用来自网络模块集的网络模块的组合随机地生成多个父神经网络。
示例72包括示例61-71中的任一项的主题,其中,执行语法进化算法包括将相应子神经网络分类到非主导的前沿。
示例73包括示例61-72中的任一项的主题,其中,执行包括随机二元锦标赛的语法进化算法。
示例74包括示例73的主题,其中,基于排名值和群内的拥挤距离来确定获胜的子神经网络。
示例75包括示例61-75中的任一项的主题,其中,数据集包括体积数据。
示例76包括示例75的主题,其中,体积数据根据基于VOLA的格式。
示例77包括示例61-76中的任一项的主题,其中,在神经网络的多个参数中测量大小。
示例78是包括执行示例61-77中任一项的方法的装置的系统。
示例79可以包括示例78的主题,其中该装置包括其上存储有指令的机器可读存储介质,其中该指令可由机器执行以使机器执行示例61-77中的任一项的方法的至少一部分。
因此,己经描述了主题的具体实施例。其他实施例在以下权利要求的范围内。在一些情况下,权利要求书中所列举的动作可以用不同顺序来执行,并且仍然获得期望结果。此外,在附图中描绘的过程不一定需要所示出的特定顺序或相继顺序来实现期望的结果。
Claims (44)
1.一种非瞬态机器可读存储介质,其上存储有指令,当所述指令由机器执行时使所述机器用于:
标识多个不同父神经网络模型的定义;
从语法定义数据中标识在语法进化中使用的语法,其中所述语法定义规则以自动构建有效的神经网络模型;
基于所述语法来对所述多个父神经网络模型执行语法进化,以生成子神经网络模型集;
使基于要输入到神经网络模型的代的测试数据集来执行所述神经网络模型的代的测试,其中所述神经网络模型的代包括所述子神经网络模型集;
基于所述测试,为代中的每个神经网络模型确定属性值集,其中每个属性值集为相对应的神经网络模型的多个不同属性中的每个属性标识相应的值,并且所述多个不同属性中的至少一个属性包括从所述测试中确定的验证精度;
在为所述神经网络模型的代而确定的属性值集中确定非主导前沿;以及
基于所述非主导前沿来选择所述神经网络模型的代的子集。
2.如权利要求1所述的存储介质,其中,所述指令进一步被执行以使机器用于:使用训练数据集对所述子神经网络模型集进行训练,其中在训练所述子神经网络模型集之后执行所述测试。
3.如权利要求2所述的存储介质,其中,所述训练数据集包括数据集的第一子集,而所述测试数据包括所述数据集的第二子集。
4.如权利要求3所述的存储介质,其中,所述数据集包括图像集。
5.如权利要求1-4中任一项所述的存储介质,其中,所述语法定义规则以基于网络模块集来构建有效的神经网络模型,并且使用所述网络模块集各自构建子神经网络集。
6.如权利要求5所述的存储介质,其中,从所述网络模块集中构建神经网络模型包括:
基于所述语法来选择所述网络模块集中网络模块的组合,以将其包括在相应神经网络模型中;以及
基于所述语法来为所选择的每个网络模块设置相应的参数值,以将其包括在相应子神经网络中。
7.如权利要求5-6中任一项所述的存储介质,其中,基于所述语法来从所述网络模块集中构建多个父神经网络模型的至少一个子集。
8.如权利要求5-7中任一项所述的存储介质,其中,所述网络模块集包括多个网络模块,并且所述多个网络模块中的每一个网络模块包括不同的相应类型的网络部分。
9.如权利要求8所述的存储介质,其中,网络部分的类型包括相应神经网络层集。
10.如权利要求8-9中任一项所述的存储介质,其中,所述多个网络模块包括卷积网络模块和起始网络模块。
11.如权利要求5-10中任一项所述的存储介质,其中,基于所述语法来将神经网络中的网络模块连接到完全连接层或最大池化层中的至少一个,以生成相应的神经网络模型。
12.如权利要求1-11中任一项所述的存储介质,其中,神经网络模型的代进一步包括所述父神经网络模型。
13.如权利要求1-12中任一项所述的存储介质,其中,执行语法进化包括对所述父神经网络模型中的每一个的参数值执行改变操作。
14.如权利要求13所述的存储介质,其中,所述改变操作包括变异操作或交叉操作中的至少一个。
15.如权利要求13-14中任一项所述的存储介质,其中,所述改变操作包括基于相应父神经网络模型中层数、核数或滤波器大小中的一个或多个的结构变异。
16.如权利要求15所述的存储介质,其中,所述改变操作进一步包括基于学习率、批量大小、权重衰减、动量、使用的优化器和丢失率中的一个或多个的父神经网络模型的学习参数变异。
17.如权利要求1-16中任一项所述的存储介质,其中,所述神经网络模型的代的子集的选择基于根据所述属性值集的随机二元锦标赛的结果。
18.如权利要求17所述的存储介质,其中,所述随机二元锦标赛的结果基于所述属性值集中的排名值和拥挤距离。
19.如权利要求1-18中任一项所述的存储介质,其中,神经网络模型包括卷积神经网络(CNN)模型。
20.如权利要求1-19中任一项所述的存储介质,其中,基于所述语法来在多代神经网络模型上执行多次进化,下一代神经网络模型基于根据通过测试前一代神经网络模型得到的值确定的相应非主导前沿。
21.一种方法,包括:
标识第一多个不同父神经网络模型的定义;
从语法定义数据中标识在语法进化中使用的语法,其中所述语法定义规则以自动构建有效的神经网络模型;
基于所述语法来对所述第一多个父神经网络模型执行语法进化,以生成第一组子神经网络模型;
基于要输入到神经网络模型的代的测试数据集来执行所述神经网络模型的代的测试,其中所述神经网络模型的代包括所述第一组子神经网络模型;
针对神经网络模型的代中的每个神经网络模型,确定多个属性中的每一个属性的相应值,其中所述多个属性中的至少一个属性包括从所述测试中确定的验证精度值;
基于多个属性的值来执行多目标优化以用于神经网络的代,其中所述多目标优化确定与所述神经网络模型的代相关联的至少一个非主导前沿;以及
基于所述非主导前沿来选择所述神经网络模型的代的子集。
22.如权利要求21所述的方法,进一步包括:
将神经网络模型的代的子集指定为下一代神经网络模型的第二多个父神经网络模型;
基于所述语法来对所述第二多个父神经网络模型执行语法进化,以生成包括所述在下一代神经网络模型中的第二组子神经网络模型;以及
测试所述下一代神经网络模型,以确定所述多个属性的值。
23.如权利要求21所述的方法,其中,所述神经网络模型的代包括通过基于所述语法的语法进化生成的多代神经网络模型中的最终代,并且所述神经网络模型的代的子集包括最终组神经网络模型供采用。
24.如权利要求21-23中任一项所述的方法,进一步包括使用训练数据集来训练待训练的第一组子神经网络模型,其中在对所述第一组子神经网络模型进行训练之后执行所述测试。
25.如权利要求21-24中任一项所述的方法,其中,所述语法定义规则以基于网络模块集来构建有效的神经网络模型,并且使用所述网络模块集各自构建第一组子神经网络。
26.如权利要求25所述的方法,其中,从所述网络模块集中构建神经网络模型包括:
基于所述语法来选择所述网络模块集中网络模块的组合,以将其包括在相应神经网络模型中;以及
基于所述语法来为所选择的每个网络模块设置相应的参数值,以将其包括在相应子神经网络中。
27.如权利要求25-26中任一项所述的方法,其中,基于所述语法来从所述网络模块集中构建第一多个父神经网络模型的至少一个子集。
28.如权利要求25-27中任一项所述的方法,其中,所述网络模块集包括多个网络模块,并且所述多个网络模块中的每一个网络模块包括不同的相应类型的网络部分。
29.如权利要求28所述的方法,其中,网络部分的类型包括相应神经网络层集。
30.如权利要求28-29中任一项所述的方法,其中,所述多个网络模块包括卷积网络模块和起始网络模块。
31.如权利要求25-30中任一项所述的方法,其中,基于所述语法来将神经网络中的网络模块连接到完全连接层或最大池化层中的至少一个,以生成相应的神经网络模型。
32.如权利要求21-31中任一项所述的方法,其中,神经网络模型的代进一步包括所述第一多个父神经网络模型。
33.如权利要求21-32中任一项所述的方法,其中,执行所述语法进化包括对所述父神经网络模型中的每一个的参数值执行改变操作。
34.如权利要求33所述的方法,其中,所述改变操作包括基于相应父神经网络模型中层数、核数或滤波器大小中的一个或多个的结构变异。
35.如权利要求34所述的方法,其中,所述改变操作进一步包括基于学习率、批量大小、权重衰减、动量、使用的优化器和丢失率中的一个或多个的父神经网络模型的学习参数变异。
36.如权利要求21-35中任一项所述的方法,其中,所述神经网络模型的代的子集的选择基于根据所述属性值集的随机二元锦标赛的结果。
37.如权利要求36所述的方法,其中,所述随机二元锦标赛的结果基于所述属性值集中的排名值和拥挤距离。
38.一种系统,包括用于执行如权利要求21-37中任一项所述的方法的装置。
39.一种系统,包括:
至少一个数据处理器;
至少一个存储器元件;以及
神经网络生成器,所述神经网络生成器能由所述数据处理器执行用于:
标识多个不同父神经网络模型的定义;
从语法定义数据中标识在语法进化中使用的语法,其中所述语法定义规则以自动构建有效的神经网络模型;以及
基于所述语法来对所述多个父神经网络模型执行语法进化,以生成子神经网络模型集;
测试系统,所述测试系统能由所述数据处理器执行用于:
基于要输入到神经网络模型的代的测试数据集来执行所述神经网络模型的代的测试,其中所述神经网络模型的代包括所述子神经网络模型集;以及
基于所述测试,为代中的每个神经网络模型确定属性值集,其中每个属性值集为相对应的神经网络模型的多个不同属性标识相应的值,并且所述多个不同属性中的至少一个属性包括从所述测试中确定的验证精度;以及
多目标优化器,能由所述数据处理器执行用于:
在为所述神经网络模型的代而确定的属性值集中确定非主导前沿;以及
基于所述非主导前沿来选择所述神经网络模型的代的子集。
40.如权利要求39所述的系统,其中,所述语法定义规则以基于网络模块集来构建有效的神经网络模型,并且使用所述网络模块集各自构建子神经网络集。
41.如权利要求39-40中任一项所述的系统,其中,神经网络模型包括卷积神经网络(CNN)模型。
42.如权利要求39-41中任一项所述的系统,其中,基于所述语法来在多代神经网络模型上执行多次进化,下一代神经网络模型基于根据通过测试前一代神经网络模型得到的值确定的相应非主导前沿。
43.如权利要求42所述的系统,其中,从多个进化中生成最终组神经网络模型,以供机器的计算系统使用。
44.如权利要求43的系统,其中,机器包括无人机、机器人、传感器设备、或自主交通工具中的一个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862753822P | 2018-10-31 | 2018-10-31 | |
US62/753,822 | 2018-10-31 | ||
PCT/US2019/059220 WO2020092810A1 (en) | 2018-10-31 | 2019-10-31 | Automated generation of neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113287121A true CN113287121A (zh) | 2021-08-20 |
Family
ID=70463275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980086664.5A Pending CN113287121A (zh) | 2018-10-31 | 2019-10-31 | 神经网络的自动生成 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210390376A1 (zh) |
EP (1) | EP3874413A4 (zh) |
CN (1) | CN113287121A (zh) |
DE (1) | DE112019004943T5 (zh) |
WO (1) | WO2020092810A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431421A (zh) * | 2023-06-13 | 2023-07-14 | 成都登临科技有限公司 | 神经网络生成方法及生成器、验证方法及系统、存储介质 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11637417B2 (en) * | 2018-09-06 | 2023-04-25 | City University Of Hong Kong | System and method for analyzing survivability of an infrastructure link |
EP3742244A1 (en) * | 2019-05-21 | 2020-11-25 | GF Machining Solutions AG | A method for predicting chatter of a machine tool |
CN111582482B (zh) * | 2020-05-11 | 2023-12-15 | 抖音视界有限公司 | 用于生成网络模型信息的方法、装置、设备和介质 |
CN111767988A (zh) * | 2020-06-29 | 2020-10-13 | 北京百度网讯科技有限公司 | 神经网络的融合方法和装置 |
CN112132259B (zh) * | 2020-09-01 | 2024-03-05 | 厦门大学 | 神经网络模型输入参量降维方法及计算机可读存储介质 |
CN112153347B (zh) * | 2020-09-27 | 2023-04-07 | 北京天玛智控科技股份有限公司 | 煤矿井下智能视觉终端感知方法、存储介质及电子设备 |
US20220188627A1 (en) * | 2020-12-15 | 2022-06-16 | International Business Machines Corporation | Reinforcement learning for testing suite generation |
CN112598117A (zh) * | 2020-12-29 | 2021-04-02 | 广州极飞科技有限公司 | 神经网络模型设计方法、部署方法、电子设备及存储介质 |
CN112819138A (zh) * | 2021-01-26 | 2021-05-18 | 上海依图网络科技有限公司 | 一种图像神经网络结构的优化方法及装置 |
US20220383543A1 (en) * | 2021-05-26 | 2022-12-01 | Abb Schweiz Ag | Multi-Stage Autonomous Localization Architecture for Charging Electric Vehicles |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5704012A (en) * | 1993-10-08 | 1997-12-30 | International Business Machines Corporation | Adaptive resource allocation using neural networks |
US8131656B2 (en) * | 2006-01-31 | 2012-03-06 | The Board Of Trustees Of The University Of Illinois | Adaptive optimization methods |
US8301390B2 (en) * | 2007-01-31 | 2012-10-30 | The Board Of Trustees Of The University Of Illinois | Quantum chemistry simulations using optimization methods |
US8548231B2 (en) * | 2009-04-02 | 2013-10-01 | Siemens Corporation | Predicate logic based image grammars for complex visual pattern recognition |
US20160035344A1 (en) * | 2014-08-04 | 2016-02-04 | Google Inc. | Identifying the language of a spoken utterance |
US11238362B2 (en) * | 2016-01-15 | 2022-02-01 | Adobe Inc. | Modeling semantic concepts in an embedding space as distributions |
-
2019
- 2019-10-31 US US17/290,428 patent/US20210390376A1/en active Pending
- 2019-10-31 CN CN201980086664.5A patent/CN113287121A/zh active Pending
- 2019-10-31 WO PCT/US2019/059220 patent/WO2020092810A1/en unknown
- 2019-10-31 EP EP19878027.2A patent/EP3874413A4/en active Pending
- 2019-10-31 DE DE112019004943.7T patent/DE112019004943T5/de active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431421A (zh) * | 2023-06-13 | 2023-07-14 | 成都登临科技有限公司 | 神经网络生成方法及生成器、验证方法及系统、存储介质 |
CN116431421B (zh) * | 2023-06-13 | 2023-08-29 | 成都登临科技有限公司 | 神经网络生成方法及生成器、验证方法及系统、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020092810A1 (en) | 2020-05-07 |
DE112019004943T5 (de) | 2021-07-01 |
EP3874413A1 (en) | 2021-09-08 |
US20210390376A1 (en) | 2021-12-16 |
EP3874413A4 (en) | 2022-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113287121A (zh) | 神经网络的自动生成 | |
US20190362235A1 (en) | Hybrid neural network pruning | |
US20220067527A1 (en) | Neural network compression | |
US11688171B2 (en) | Person tracking and identification using intelligent camera orchestration | |
US20210097449A1 (en) | Memory-efficient system for decision tree machine learning | |
US20220035678A1 (en) | Automated device selection and provisioning for distributed computing workloads | |
US20200145337A1 (en) | Automated platform resource management in edge computing environments | |
US20180096261A1 (en) | Unsupervised machine learning ensemble for anomaly detection | |
US11070988B2 (en) | Reconfigurable network infrastructure for collaborative automated driving | |
US10872527B2 (en) | Network infrastructure for collaborative automated driving | |
US20190041223A1 (en) | Detection of gps spoofing based on non-location data | |
TW202234236A (zh) | 用以最佳化邊緣網路中的資源之方法、系統、製品及設備 | |
KR20220149418A (ko) | 자율 공장들에 대한 인공 지능 모델들을 자동으로 업데이트하는 방법들 및 장치들 | |
CN115866601A (zh) | 连接设备区域标识 | |
US20220214170A1 (en) | Scene intelligence for collaborative semantic mapping with mobile robots | |
Gong et al. | Grid-Based coverage path planning with NFZ avoidance for UAV using parallel self-adaptive ant colony optimization algorithm in cloud IoT | |
Kruzick et al. | Structurally observable distributed networks of agents under cost and robustness constraints | |
Weikert et al. | Availability-aware multiobjective task allocation algorithm for internet of things networks | |
Godfrey et al. | An energy-efficient routing protocol with reinforcement learning in software-defined wireless sensor networks | |
Zhao et al. | Adaptive swarm intelligent offloading based on digital twin-assisted prediction in VEC | |
Zimmerman et al. | Market‐based frequency domain decomposition for automated mode shape estimation in wireless sensor networks | |
Zhang et al. | Energy-Aware Positioning Service Provisioning for Cloud-Edge-Vehicle Collaborative Network Based on DRL and Service Function Chain | |
Ganchev et al. | Designing a heterogeneous sensor tier for the EMULSION IoT platform | |
CN111556546B (zh) | 最短信息收集路径的搜索方法、系统、存储介质及应用 | |
Griparić | Algebraic connectivity control in distributed networks by using multiple communication channels |
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 |