CN113316795A - 神经网络模型装置和神经网络模型的压缩方法 - Google Patents
神经网络模型装置和神经网络模型的压缩方法 Download PDFInfo
- Publication number
- CN113316795A CN113316795A CN202080009630.9A CN202080009630A CN113316795A CN 113316795 A CN113316795 A CN 113316795A CN 202080009630 A CN202080009630 A CN 202080009630A CN 113316795 A CN113316795 A CN 113316795A
- Authority
- CN
- China
- Prior art keywords
- neural network
- network model
- training data
- value
- objective function
- 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
-
- 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/04—Architecture, e.g. interconnection topology
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
一种用于压缩神经网络模型的电子装置可以基于原始的训练的神经网络模型来获取训练数据对,并且使用获取的训练数据对来训练从原始的训练的神经网络模型压缩的压缩神经网络模型。
Description
技术领域
本公开涉及被配置用于压缩神经网络模型的电子装置及其相应方法。更具体地,本公开涉及一种用于恢复在压缩已经训练的神经网络模型的过程中产生的性能恶化的电子装置及其相应方法。
背景技术
可以设计和训练人工神经网络来执行广泛的功能。应用人工神经网络的技术可以包括图像处理、语音识别、推理/预测、知识表达、操作控制等。因此,许多层和参数(权重)可以包括在深度神经网络模型中,用于执行各种技术的各种功能。
根据来自大规模数据库的大量训练数据,随着具有许多层的大规模模型的使用的增加,深度神经网络通常具有显示更好性能的趋势。
因此,基于诸如智能手机、机器人、家用电器和物联网(IoT)设备之类的以设备形式应用神经网络模型的设备,考虑到设备资源的限制,压缩和加载神经网络模型以最小化存储器使用、计算复杂性、功耗等可能是必要的。
此外,处理数百万个流程的数据中心等云应用服务器也可能需要压缩神经网络模型。
图1是示出通用神经网络模型压缩处理器的图。
参考图1,神经网络模型压缩流水线10被配置为执行模型压缩11和微调12过程。
作为输入提供给神经网络模型压缩流水线10的原始模型1可以通过模型压缩模块11通过诸如权重修剪、通道修剪、矩阵分解和量化的过程作为第一压缩模型2输出。第一压缩模型2的性能可能低于原始模型1的性能。
为了恢复性能,可以通过微调模块12基于实际训练数据(例如,在生成原始模型时使用的实际训练数据)来训练第一压缩模型2,并且作为调谐第一压缩模型2的结果,可以获取与第一压缩模型相比具有恢复的性能的最终压缩模型3。
基于在模型压缩过程中优化原始模型1的一部分,可能出现与原始模型相比性能恶化的问题,并且需要使用实际训练数据进行微调以恢复恶化的性能的过程。微调不仅在模型压缩中执行,而且在增量学习、转移学习等中执行。
因此,尽管微调需要实际的训练数据集,但可能会出现问题,例如在生成原始模型时不保留实际使用的训练数据集,或者由于个人或法律原因无法共享实际的训练数据集。
发明内容
技术问题
本公开提供了一种神经网络模型的压缩方法,该压缩方法从训练的神经网络模型生成训练数据集。
此外,提供了一种获取具有良好性能和高准确度的压缩神经网络模型的电子装置,尽管没有用于训练原始神经网络模型的训练数据集。
此外,本公开提供了一种尽管不具有训练数据集也能够提供压缩模型的服务器及其压缩方法。
此外,本公开提供了一种AI应用服务服务器装置及其方法,该装置根据规范压缩并提供包括神经网络模型的应用。
下面将更详细地描述本公开的实施例。
问题的解决方案
根据本公开的实施例,提供了一种电子装置,包括:存储器,存储计算机可读指令;和处理器。处理器在执行计算机可读指令时被配置成:获取原始神经网络模型;根据压缩算法对原始神经网络模型进行压缩,获取压缩的神经网络模型;基于原始神经网络模型,获取用于训练压缩的神经网络模型的训练数据对;使用训练数据对训练压缩的神经网络模型,以获取压缩和训练的神经网络模型。
处理器可以基于原始神经网络模型的特定输出值获取目标函数,基于目标函数从原始神经网络模型获取输入值,并且获取包括输入值和特定输出值的训练数据对。
在这种情况下,处理器可以基于输入值获取原始神经网络模型的输出值,通过将原始神经网络模型的输出值应用于目标函数来获取目标函数的输出值,并且基于目标函数的输出值是否满足预定条件来获取输入值。
此外,处理器可以基于满足预定条件的目标函数的输出值,从原始神经网络模型获取输入值和输出值作为训练数据对。
处理器可以基于不满足预定条件的目标函数的输出值,将输入值改变为改变的输入值。并且,处理器可以获取原始神经网络模型的输出值,通过根据改变的输入值将原始神经网络模型的输出值应用于目标函数来获取目标函数的输出值。并且,处理器可以基于满足预定条件的目标函数的输出值,获取改变的输入值和基于改变的输入值从原始神经网络模型获取的输出值作为训练数据对。
预定条件可以包括目标函数的输出值是最小值或最大值的条件。
当执行计算机可读指令以获取训练数据对时,处理器可以基于基于多个输入值中的每一个的目标函数的输出值是否满足预定条件,来获取与所述多个输入值中的每一个对应的输入值。
同时,处理器可以基于原始神经网络模型的多个特定输出值获取多个目标函数,并且基于多个目标函数中的每一个从原始神经网络模型获取输入值。
训练数据对可以包括基于第一输入值获取的原始神经网络模型的第一输入值和第一输出值。在这种情况下,当执行计算机可读指令来训练压缩的神经网络模型时,处理器可以基于第一输入值获取第二输入值。并且,处理器可以获取第二输入值和包括基于第二输入值获取的原始神经网络模型的第二输出值的不同训练数据对,并且基于所述训练数据对和不同训练数据对来训练压缩的神经网络模型。
同时,电子装置还可以包括通信接口。并且,处理器可以基于通过通信接口从外部设备接收的请求,通过通信接口将压缩和训练的神经网络模型发送到外部设备。
根据本公开的实施例,提供了一种电子装置压缩神经网络模型的方法,包括通过使用压缩算法压缩原始神经网络模型来生成压缩的神经网络模型;基于原始神经网络模型生成训练数据对;和通过基于训练数据对训练压缩的神经网络模型来生成压缩的和训练的神经网络模型。
生成训练数据对可以包括,基于原始神经网络模型的特定输出值获取目标函数;基于目标函数从原始神经网络模型获取输入值;和获取包括输入值和特定输出值的训练数据对。
在这种情况下,生成训练数据对可以包括,基于输入值获取原始神经网络模型的输出值,通过将原始神经网络模型的输出值应用于目标函数来获取目标函数的输出值,以及基于目标函数的输出值是否满足预定条件来获取输入值。
此外,生成训练数据对可以进一步包括,基于满足预定条件的目标函数的输出值,从原始神经网络模型获取输入值和输出值作为训练数据对。
生成训练数据对可以包括,基于不满足预定条件的目标函数的输出值,将输入值改变为改变的输入值,基于改变的输入值获取原始神经网络模型的输出值,根据改变的输入值将原始神经网络模型的输出值应用于目标函数以获取目标函数的输出值,并且基于满足预定条件的目标函数的输出值,获取包括改变的输入值的训练数据对。
同时,基于基于多个输入值中的每一个的目标函数的输出值是否满足预定条件,生成训练数据对可以包括获取与所述多个输入值中的每一个对应的输入值,并且获取包括输入值的训练数据对。
生成训练数据对可以包括,基于原始神经网络模型的多个特定输出值获取多个目标函数,以及基于多个目标函数中的每一个从原始神经网络模型获取输入值。
训练数据对可以包括基于第一输入值获取的原始神经网络模型的第一输入值和第一输出值。并且,该方法可以进一步包括,基于第一输入值获取第二输入值,获取第二输入值和包括基于所述第二输入值获取的原始神经网络模型的第二输出值的不同训练数据对,并且基于所述训练数据对和不同的训练数据对来训练压缩的神经网络模型。
该方法可以进一步包括,基于从外部设备接收的请求,将压缩和训练的神经网络模型发送到外部设备。
根据本公开的实施例,提供了一种服务器装置,包括:存储器,存储计算机可读指令;通信器;和处理器。处理器在执行计算机可读指令时被配置成:根据压缩算法对原始神经网络模型进行压缩,获取压缩的神经网络模型;基于原始神经网络模型,获取用于训练压缩的神经网络模型的训练数据对;基于训练数据对训练压缩的神经网络模型,以获取压缩和训练的神经网络模型;和通过通信器输出压缩和训练的神经网络模型。
发明的有利效果
基于从已经训练的原始神经网络模型中提取训练数据的离散度和总结的知识,电子装置可以具有生成新的训练数据集的效果,该新的训练数据集可以替代在原始神经网络模型的训练中使用的实际训练数据。
此外,当执行模型压缩时,通过在微调过程中使用从原始神经网络模型生成的训练数据集,具有即使没有实际原始训练数据也可以在保持高识别准确度的情况下压缩神经网络模型的优点。
附图说明
结合附图,从以下详细描述中,本公开的某些实施例的上述和其他方面、特征和优点将变得更加明显,其中:
图1是示出通用神经网络模型压缩过程的图;
图2是示出根据本公开实施例的电子装置的配置的框图;
图3是示出根据本公开实施例的电子装置的压缩过程的图;
图4是示出电子装置寻找满足目标函数的输入值的过程的示例的图;
图5是示出电子装置寻找满足目标函数的多个输入值的过程的示例的图;
图6是示出为每个输出值获取多个输入值的电子装置的示例的图;
图7a和7b是示出训练数据生成模块的特定操作过程的示例的框图;
图8a、8b和8c是示出用于描述电子装置生成和使用新训练数据的效果的测试结果的表格和曲线;
图9是用于描述根据目标装置的性能具有不同大小或尺寸的压缩模型的电子装置的示例的表格;
图10是示出根据本公开的各种实施例的电子装置的详细配置的框图;
图11a和11b是示出根据用户装置的请求提供“训练的压缩神经网络模型”的电子装置的示例的示意图和框图,该电子装置可以是服务器;
图12a和12b是示出通过压缩外部提供的AI应用内的神经网络模型来重构AI应用,并通过应用商店提供重构的AI应用的电子装置的示例的示意图和框图,该电子装置可以是服务器;
图13是示出从自服务器接收的原始神经网络模型获取训练的压缩神经网络模型的电子装置的示例的图,该电子装置可以是用户装置;
图14是示出根据本公开实施例的电子装置的模型压缩方法的流程图;
图15是示出获取训练数据对的模型压缩方法的详细示例的图;
图16是示出根据外部服务器的请求提供“训练的压缩的神经网络模型”的电子装置的模型压缩方法的示例的流程图,该电子装置可以是服务器;和
图17是示出通过压缩神经网络模型来重构AI应用并提供重构的AI应用的电子装置的模型压缩方法的示例的流程图,该电子装置可以是服务器。
具体实施方式
考虑到本公开的各种示例性实施例中的功能,本公开中使用的术语选自当前广泛理解的通用术语,但是可以根据相关领域的技术人员的意图或先例、新技术的出现等来改变。本公开可以使用新选择的术语,并且其含义将在与本公开相关的描述中详细公开。因此,本公开中使用的术语不是简单地通过术语来理解的,而是基于术语的含义和贯穿本公开的上下文来定义的。
此外,在整个公开中,相似的附图标记表示执行基本相同功能的相似部件。为了便于描述和理解,在不同的示例实施例中使用和描述了相同的附图标记或符号。换句话说,尽管在多个附图中示出了具有相同附图标记的所有元件,但是多个附图并不指代一个实施例。
此外,包括诸如“第一”、“第二”等序数的术语可用于描述本公开中的各种元件。序数可用于区分相同或相似的元件的目的,但元件不应受这些术语的限制。例如,与序数相关联的元件不应该在顺序或数字的使用顺序上受到限制。如有必要,序数可以相互替换。
除非另有说明,单数包括复数。应当理解,术语如“包括”或“由……组成”在此用于表示特征、数量、步骤、操作、元件、组件或其组合的存在,并且不排除添加一个或多个其他特征、数量、步骤、操作、元件、组件或其组合的存在或可能性。
诸如“模块”、“单元”、“部件”等术语用于指执行至少一种功能或操作的元件,并且这种元件可以实现为硬件或软件,或者硬件和软件的组合。此外,除了当多个“模块”、“单元”、“部件”等中的每一个需要在单独的硬件中实现时,组件可以集成在至少一个模块或芯片中,并且可以在至少一个处理器中实现。
此外,当任何部件连接到另一部件时,这不仅包括直接连接,还包括通过另一种介质的间接连接。此外,当某一部件包括某一元件时,除非另有说明,这意味着可以另外包括另一元件,而不是排除另一元件。
压缩原始神经网络模型以获取或获得压缩神经网络模型的操作可以包括通过移除/改变神经网络模型的至少一部分来减小数据大小的第一过程,以及用减小的数据大小训练神经网络模型的第二过程(微调)。
然而,根据上述第一和第二过程,第一过程本身可以被视为神经网络模型的“压缩”,因此,第二过程可以被解释为用于训练通过第一过程压缩的“压缩神经网络模型”(或第一压缩神经网络模型)的过程。
为了描述的方便和防止混淆,在下面的实施例中,诸如“压缩”、“压缩的”和“第一次压缩的”的表述被公开为仅表示通过移除/改变原始神经网络模型的至少一部分来减小模型大小的第一过程。此外,作为原始神经网络模型的压缩的“压缩神经网络模型”(或第一压缩神经网络模型)被公开为表示还没有执行第二过程的状态。
下面将参照附图更详细地描述本公开。
图2是示出根据本公开实施例的电子装置100的配置的框图。
电子装置100可以被实现为各种设备中的任何一种,诸如智能手机、服务器装置、台式PC、笔记本PC、平板PC、TV、机顶盒、信息亭和可穿戴设备。可选地,电子装置100可以以包括能够彼此通信的多个分布式设备的系统形式来实现。
参考图2,电子装置100可以包括存储器110和处理器120。
存储器110可以存储与电子装置100的操作系统(OS)和元件相关的各种数据,用于控制电子装置100的元件的操作。存储器110可以包括软件、程序和用于控制电子装置100的一个或多个元件的功能的至少一个指令。
存储器可以实现为非易失性存储器(例如,硬盘、固态驱动器(SSD)、闪存)、易失性存储器等。
处理器120可以控制电子装置100的操作。就硬件而言,处理器120可以包括中央处理单元(CPU)、图形处理单元(GPU)、神经处理单元(NPU)等,并且可以执行用于控制电子装置100中包括的其他元件的计算或数据处理。
处理器120可以实现为耦合到系统总线和例如随机存取存储器(RAM)和只读存储器(ROM)的存储器110的微处理单元(MPU)或中央处理单元(CPU)等。
处理器120不仅可以控制包括在电子装置100中的硬件元件,还可以控制包括在电子装置100中的一个或多个软件模块的执行,并且处理器120控制软件模块的结果可以被导出为用于控制硬件元件及其功能以执行电子装置100的操作的操作。
具体地,处理器120可以通过执行存储在存储器110中的至少一个指令来控制电子装置100。
下面将更详细地描述包括图2的元件的电子装置100的操作。
处理器120可以基于已经训练的神经网络模型获取训练数据对。神经网络模型是使用原始训练数据的训练的模型,并且训练数据对对应于处理器120生成以替代原始训练数据的新训练数据。
可以训练神经网络模型以确定对应于输入值的输出值。具体地,神经网络模型可以是被训练来识别存在于输入图像中的一种动物(例如:狗、猫等)的神经网络模型或人。此外,神经网络模型可以是被训练成输出语音识别和输入语音/文本数据的翻译结果的神经网络模型。然而,神经网络模型操作的示例不限于上述示例。
也就是说,只要神经网络模型识别对应于给定输入值的输出值,神经网络模型能够识别任何对象,并且神经网络模型的输入值和输出值不限于特定的数据形式。
神经网络模型可以包括一个或多个节点或一个或多个层,以定义输入值和输出值之间的关系。在神经网络模型的训练过程中,节点之间的关系(例如:权重)或层之间的关系可以变化。
基于包括输入值和输出值的原始训练数据训练的神经网络模型可以存储在存储器110中。然而,原始训练数据本身可能不存储在存储器110中。
处理器120可以基于训练的神经网络模型的特定输出值获取或获得目标函数,并且基于目标函数,可以从训练的神经网络模型获取或获得输入值。
特定输出值可以是从神经网络模型输出的输出值中的任何一个。
特定输出值可以例如基于神经网络模型,该神经网络模型是被训练为基于输入值从多个类别中选择任何一个的分类器模型,从对应于多个类别中的第一类别的输出值中选择一个,从多个类别中选择对应于第二类别的输出值,或者从多个类别中的任何类别中选择对应于难以看到的实例的输出值,但是输出值不限于此。
目标函数可以被定义为用于找到神经网络模型的输入值以输出对应于特定输出值的输出值的函数。
目标函数可以是包括作为向神经网络模型输入(任意)输入值的结果的输出值和特定输出值的函数。具体地,目标函数可以是显示将(任意)输入值输入到神经网络模型的结果和输出值之间的关系。
使用目标函数的原因可以是,基于如果对应于输出值的输入值不是1则不形成反函数,通过重复改变输入值并应用于目标函数的过程来找到目标函数满足预定条件的输入值。此外,在使用目标函数方面,作为下文参照图8a至8c描述的根据本公开的电子装置的效果,获取对应于相同输出值的多个输入值并且使用该输出值作为(新的)训练数据来有助于训练结果的改善具有意义。
预定条件可以包括目标函数值最小化或最大化的条件。这是为了获取或获得目标函数处于最小值或最大值点的输入值,这是改变输入值并将改变的输入值连续应用于目标函数的结果。
例如,目标函数可以是‘L(x)=|M(x)-y|’,其中预定条件可以是L(x)是最小值或最大值。在这种情况下,处理器120可以比较目标函数的连续的值(L(x1),L(x2),L(x3),...)相对于逐渐变化的输入值(x1,x2,x3,...)并确定目标函数值为最小值或最大值的输入值。此外,处理器120可以使用相对于逐渐变化的输入值的目标函数的第一微分值或更多个微分值来确定目标函数的值(例如:L(x))变为最小值或最大值的输入值。
预定条件可以包括目标函数值是特定范围内的值的条件。例如,基于目标函数为‘L(x)=|M(x)-y|’(其中x是输入值,M(x)是作为在神经网络模型中输入输入值的结果的输出值,y是特定输出值),目标函数的值(L(x))可以是大于0.995且小于1.005的预定条件。
处理器120可以基于任意输入值,获取或获得训练的神经网络模型的输出值。此外,可以通过将训练的神经网络模型的输出值应用于目标函数来获取目标函数的输出值,并且可以基于目标函数的输出值是否满足预定条件来获取输入值。
基于根据满足预定条件的上述任意输入值的目标函数值,处理器120可以获取任意输入值和基于任意输入值从训练的神经网络模型获取的输出值作为新的训练数据。
另一方面,基于根据不满足预定条件的上述任意输入值的目标函数值,处理器120可以改变任意输入值,并且基于改变的输入值获取训练的神经网络模型的输出值。
在这种情况下,可以将根据改变的输入值的神经网络模型的输出值应用于目标函数,并且可以再次获取目标函数的输出值。
此外,处理器120可以基于根据满足预定条件的改变的输入值的目标函数值,获取改变的输入值和基于改变的输入值从神经网络模型获取的输出值作为新的训练数据。
例如,可以假设目标函数被定义为L(x)=|M(x)-y|。基于x是输入值,M(x)是输入到神经网络模型的输入值,输出值y对应于特定的输出值。
基于预定条件是目标函数值是最小值的条件,输入值x从任意输入值逐渐改变以获取x,其中|M(x)-y|是最小值。
在这种情况下,可以使用各种数值方法,例如重复将输入值从任意输入值改变到目标函数的输出变为最大/最小值的方向的梯度下降法、使用第二部分微分值并应用较小步长的改变的牛顿法、通过修改牛顿法并改变输入值来估计第二微分值的布赖登-弗莱彻-戈德法布-尚诺(BFGS/L-BFGS)算法、以及黑森自由优化法,但是数值方法不限于此。
除了上述示例和包括特定输出值(y)的各种函数之外,目标函数可以被定义为包括原始神经网络模型相对于输入值(x)的输出值(M(x))的各种函数,并且可以在包括例如L(x)=cross-entropy(M(x,y),L(x)=|M(x)-y|的各种示例中描述。
图3是用于描述根据本公开实施例的电子装置的压缩过程的图。参考图3,除了模型压缩模块310和微调模块320之外,电子装置100还可以包括训练数据生成模块330。模块可以由处理器120控制,并且每个模块可以以软件形式存储在电子装置100的存储器110中,或者以硬件形式实现为电路。此外,每个模块可以以包括软件和硬件的组合的形式来实现。
参考图3,处理器120可以使用模型压缩模块310来压缩(例如,压缩到数据大小)原始神经网络模型301,以获取第一压缩模型302。
模型压缩模块310可以分析原始神经网络模型的结构、复杂性、每层的重要性等。此外,模型压缩模块310在整个模型结构中选择是否对某个部分(节点、层、权重等)应用压缩算法之后,可以相对于所选择的压缩范围采用最有效的压缩算法。
在这种情况下,模型压缩模块310可以根据目标装置的性能来选择考虑目标压缩率的压缩范围和压缩算法,在该目标装置中将使用完成了微调的(最终)压缩神经网络模型,这将在下面参考图9进行描述。
压缩算法可以包括权重修剪、通道修剪、矩阵分解、量化等,但是压缩算法不限于此。
此外,模型压缩模块310相对于所选择的压缩范围应用所采用的压缩算法,并且可以减小原始神经网络模型的数据大小。
上述示例对应于模型压缩模块310压缩原始神经网络模型的示例,并且可以部分地应用不同的方法来选择最佳压缩范围和方法。例如,可以应用通过模拟退火(simulatedannealing)等的各种方法,并且可以选择其中最有效的压缩范围和方法。
训练数据生成模块330是用于生成新的训练数据305(即训练数据对)的模块,与图1的情况不同,如果没有训练数据5来训练原始神经网络模型,则能够替代训练数据5。
基于通过训练数据生成模块330生成的新训练数据305,微调模块320可以使用新训练数据305来训练第一压缩模型302。因此,可以获取与第一压缩模型302相比具有恢复性能的最终压缩模型303(不使用原始训练数据的无数据压缩)。
图4是用于描述处理器120通过训练数据生成模块330找到满足预定条件的目标函数的输入值的过程的示例的图。
在图4中,目标函数是L(x)=|M(x)-y|,并且可以假设预定条件是其中L(x)值是最小值的条件。
参考图4,训练数据生成模块330可以获取输入值,其中输入向量空间410上的任意输入值401被应用于目标函数作为第一x,然后x的值被改变为x'(401')、x”(401”)等,使得目标函数的值满足预定条件的最小值。在这种情况下,训练数据生成模块330可以改变输入值,直到目标函数的值是阈值或更小,或者可以重复应用于目标函数的过程。此外,训练数据生成模块330可以在改变输入值预定次数并将输入值应用于目标函数之后,获取具有最小目标函数值的输入值。
处理器120可以获取相对于特定输出值的多个输入值。
具体地,处理器120可以基于基于满足预定条件的多个输入值中的每个输入值的目标函数的输出值,获取对应于多个输入值中的每个输入值的输入值。也就是说,当多个任意输入值中的每一个被应用于目标函数时,可以获取满足预定条件的输入值。
图5是示出处理器120通过训练数据生成模块330找到满足目标函数的多个输入值的过程的示例的图。
参考图5,为了获取相对于特定输出值(y)满足目标函数的多个输入值,训练数据生成模块330不仅可以相对于任意输入值401,还可以相对于502、503、504、505、506等改变输入值并将输入值应用于目标函数。
此外,从任意输入值(401,502,503,504,505,506)中的每一个改变的训练数据生成模块330可以获取满足目标函数的预定条件的多个输入值。
目标函数的形式不限于上述示例。只要包括根据特定输出值(y)和(任意)输入值从神经网络模型获取的输出值(M(x))就可以以各种形式获取目标函数。
处理器120可以使用多个特定输出值来获取多个输入值。也就是说,处理器120可以基于(训练的)神经网络模型的多个特定输出值获取多个目标函数,并且基于多个目标函数中的每一个从神经网络模型获取输入值。
在这种情况下,处理器120可以获取相对于多个目标函数的每一个的多个输入值。
图6是示出处理器120通过训练数据生成模块330获取对应于多个输出值中的每一个的多个输入值的示例的图。
与图6的输出值和输入值相关的神经网络模型是被训练来识别输入图像数据(例如:输入值)是狗还是猫的神经网络模型。
在图6中,y1对应于输入图像是狗的可能性,y2对应于输入图像是猫的可能性,y3对应于输入图像不是狗或猫的可能性,并且(y1,y2,y3)对应于能够从神经网络模型输出的输出值。
参考图6,训练数据生成模块330可以获取对应于输出值610的多个图像660(包括可能类似于狗或者是狗的对象的图像),其中在图像660中检测到的对象是狗的可能性是0.8,在图像660中检测到的对象是猫的可能性是0.10,并且在图像660中检测到的对象既不是狗也不是猫(例如,熊)的可能性是0.1。
多个图像660可以由彼此不同的起点产生(例如:首先应用于目标函数的任意输入值)。此外,关于多个图像660中的每一个,起点可以相同,但是满足目标函数的预定条件可以不同,或者获取满足预定条件的输入值(图像)的方法可以不同。
由训练数据生成模块330获取的多个图像的数量可以达到数百、数千到数万或更多。获取的图像(输入值)数量越多,此后微调的有效性增加越大。
在这种情况下,训练数据生成模块330可以对y1=0.8、y2=0.1和y3=0.1中的每一个使用单独的目标函数。对于y1(=0.8)、y2(=0.1)和y3(=0.1)中的每一个,多个图像660对应于满足目标函数的所有条件的输入值。
此外,训练数据生成模块330可以一次使用包括y1(=0.8)、y2(=0.1)和y3(=0.1)中的两个或更多个的目标函数。
参考图6,训练数据生成模块330可以获取对应于输出值620的多个图像670(包括可能类似于猫或者是猫的对象的图像),其中在图像670中检测到的对象是狗的可能性是0.05,在图像670中检测到的对象是猫的可能性是0.85,并且在图像670中检测到的对象不是狗或者猫(例如,熊)的可能性是0.1。
同样,参考图6,训练数据生成模块330可以获取对应于输出值630的多个图像680(包括可能与猫或狗都不相似的对象的图像),其中在图像680中检测到的对象是狗的可能性是0.05,在图像680中检测到的对象是猫的可能性是0.05,并且在图像680中检测到的对象既不是狗也不是猫(例如,熊)的可能性是0.9。
尽管在图6中,仅为了便于描述,用输入值获取的多个图像660、670和680中的每个图像被示为清晰图像,但是从实际训练数据生成模块330生成的多个图像可以包括例如稍微模糊的图像、具有很多噪声的图像以及其中要被识别的对象不能被肉眼清楚地识别的图像之类的图像等。
在基于上述实施例获取一个或多个输入值之后,处理器120可以获取包括所获取的输入值的训练数据对。
具体地,处理器120可以生成获取的输入值和包括基于获取的输入值获取的神经网络模型的输出值的训练数据对。在这种情况下,处理器120可以以(输入值、输出值)形式的数据对(元组)的形式,在存储器110中存储所获取的输入值和与其对应的输出值。处理器120可以基于获取的输入值生成包括获取的输入值和特定输出值的训练数据对。
因此,可以在存储器110中存储一个或多个训练数据对,每个训练数据对对应于一个或多个输入值,即新的训练数据。
处理器120可以基于通过上述示例获取的输入值,获取附加输入值并生成要包括在新训练数据中的附加训练数据对。
具体地,基于包括基于第一输入值获取的神经网络模型的第一输入值和第一输出值的训练数据对,处理器120可以基于第一输入值获取第二输入值,并且获取基于第二输入值获取的神经网络模型的第二输入值和第二输出值作为附加训练数据对。
处理器120可以通过对第一输入值进行后处理来获取第二输入值。例如,基于对应于一个图像的第一输入值,处理器120可以通过至少修改一个图像内的一部分区域的大小、从右向左反转、改变颜色、改变位置等来获取第二输入值。然而,输入值的形式可以根据神经网络模型而变化,并且对应于图像的后处理输入值的上述实施例仅仅是一个示例,并且这里的技术思想不限于此。
此外,处理器120可以对生成的新训练数据中包括的两个输入值应用插值,以获取附加输入值。
此外,处理器120可以训练(例如:微调)压缩神经网络模型,其中基于一个或多个训练数据对压缩(训练的)神经网络模型。在这种情况下,可以相对于完成微调的“训练的压缩神经网络模型”额外地执行压缩和微调。
作为电子装置100的处理器120通过模型压缩模块310等压缩原始神经网络模型的结果,可以生成(第一压缩的)压缩神经网络模型,或者可以作为在诸如服务器的外部装置中执行压缩的结果来生成(第一压缩的)压缩神经网络模型。
基于在外部装置中生成的压缩神经网络模型,所生成的压缩神经网络模型可以从外部装置接收到电子装置100,并且在这种情况下,电子装置100可以不包括模型压缩模块310,而是模型压缩模块310可以包括在外部装置中。
图7a和7b是示出根据本公开实施例的训练数据生成模块330的操作过程的示例的框图。
参考图7a,训练数据生成模块330可以首先使用原始神经网络模型301和特定输出值(y)来生成目标函数S710。例如,可以生成诸如L(x)=|M(x)-y|的目标函数。这里y是固定目标的输出值。
此外,训练数据生成模块330可以将(任意)输入值应用于目标函数S720。在这种情况下,基于将相关输入值应用于满足预定条件的目标函数的结果,可以存储相关输入值。另一方面,基于不满足目标函数的预定条件的相关输入值,改变相关输入值S730,并且改变的输入值可以再次应用于目标函数S720。基于将改变的输入值应用于满足预定条件的目标函数的结果,改变的输入值可以存储改变的输入值。
例如,训练数据生成模块330可以通过向目标函数输入第一(任意)输入值(X0)来获取L(X0),并且可以识别所获取的L(X0)值是否满足预定条件(例如:小于阈值)。基于满足预定条件的L(X0)值,可以获取X0作为最终输入值。
基于不满足预定条件的L(X0)值,训练数据生成模块330可以将输入值从X0改变为X1。如在L(X0)的情况下,训练数据生成模块330可以识别L(X1)值是否满足预定条件(例如:小于阈值的情况或者如果改变输入值的迭代次数大于预定迭代次数),并且可以基于满足预定条件来获取X1作为最终输入值。
基于不满足预定条件的L(X1)值,训练数据生成模块330可以将输入值从X1改变为X2。例如,基于所使用的梯度下降法等,可以考虑先前X0->X1的变化值和L(X0)->L(X1)的变化值来获取X2值。同样,基于识别L(X2)是否满足预定条件,如果满足预定条件,则可以获取X2作为最终输入值。
因此,训练数据生成模块330可以通过改变/应用来自第一X0的输入值来获取最终输入值。此外,可以获取作为将所获取的最终输入值“X”输入到原始神经网络模型的结果的输出“Y”,并且(X,Y)可以被存储为训练数据对。
即使从不同的任意输入值(X0')开始,训练数据生成模块330也可以通过重复上述改变/应用过程来获取不同的最终输入值X'。在这种情况下,训练数据生成模块330可以获取原始神经网络模型相对于X'的输出值Y',并且可以存储训练数据对(X',Y')。
因此,训练数据生成模块330可以生成并存储新的训练数据305,该新的训练数据305包括存储的输入值和根据存储的输入值从神经网络模型获取的输出值作为训练数据对S740。
训练数据生成模块330不仅可以针对特定输出值y,还可以针对一个或多个不同的输出值迭代地重复过程S710至S740,以生成和存储多个训练数据305。在这种情况下,输出值可以彼此不同,并且通过过程S710生成的目标函数也可以彼此不同。
参考图7b,训练数据生成模块330可以在通过对通过过程S720和S730存储的输入值进行后处理S735来进一步生成输入值之后,生成并存储包括额外生成的输入值和通过额外生成的输入值从神经网络模型获取的输出值的训练数据对。
也就是说,训练数据生成模块330不仅可以存储包括通过先前处理S720和S730获取的输入值的训练数据对,还可以存储包括额外生成的输入值的训练数据对作为新的训练数据。
例如,先前获取的最终输入值X和中间值X'被生成为新的输入值(X”),并且在作为将X”输入到原始神经网络模型的结果而获取输出值Y”之后,(X”,Y”)也可以被存储为训练数据。
图8a、8b和8c是用于描述生成和使用新训练数据的电子装置的效果的表格和曲线。
在测试中使用的图8a的“测试模型”是用于确定对应于给定输入值(图像)的数量(从“0”到“9”的10个类别)的神经网络模型。
参考图8a,“测试模型”(原始模型)可以具有这样的结构,其中“滤波器大小”为5且滤波器数量为20的卷积层和最大汇集层(Max Pooling Layer)、“滤波器大小”为5且滤波器数量为50的卷积层和最大汇集层、“隐藏单元”数量为500的全连接层以及“隐藏单元”数量为10的全连接层被连续连接。
图8b是示出根据压缩的“测试模型”的压缩率的压缩的“测试模型”的准确度(精确选择对应于给定(输入)图像的数字的可能性)的曲线图。对应于水平轴的压缩率是说明模型与压缩后的原始模型相比的大小的比率。例如,基于压缩率为0.3而原始模型的大小为10M,压缩模型的大小可以为3M。
图8b示出了‘测试模型’(原始模型)的测试数据,其已经基于MNIST数据集进行了训练。
具体而言,图8b是示出根据未被单独训练(微调)的压缩“测试模型”的压缩率的准确度变化的曲线图810-1,压缩“测试模型”分别通过任意输入值和根据任意输入值的原始模型(“测试模型”)的输出值被训练810-2,通过如实施例810-3中通过训练数据生成模块330获取的多个训练数据对被训练,并且通过训练原始模型的原始训练数据(MNIST数据集)被训练810-4。
如图所示,在实施例810-3中,当基于通过训练数据生成模块330获取的多个训练数据对使用原始训练数据810-4时,可以验证接近优越的训练准确度。具体地,与不执行微调810-1和使用任意训练数据执行微调810-2相比,可以验证显著更高的准确度。
参考图8b,尽管在810-3的情况下,执行越多的压缩,准确度恶化是自然的(4.41%->1.50%->0.38%),但是还可以验证下面的效果:与810-1和810-2相比,根据压缩率的变化,准确度恶化程度的影响也显著较小。
图8c也是示出根据压缩的“测试模型”的压缩率的压缩的“测试模型”的准确度的曲线。然而,与图8b不同,图8c是测试模型的测试数据,该测试模型是基于时尚MNIST数据集训练的原始模型。
图8c是示出根据未被单独训练(微调)的压缩“测试模型”的压缩率的准确度变化的曲线图820-1,压缩“测试模型”分别通过任意输入值和根据任意输入值的原始模型(“测试模型”)的输出值被训练820-2,通过包括如实施例820-3中通过训练数据生成模块330获取的多个输入值的多个训练数据对被训练,以及通过原始训练数据(时尚MNIST数据集)被训练820-4。
参考图8c,在如实施例820-3中那样基于包括从特定输出值获取的多个输入值的多个训练数据对进行训练时,可以使用原始训练数据820-4来验证优越的训练准确度,并且可以针对820-1和820-2的实例来验证显著优越的准确度。
基于电子装置100执行原始神经网络模型的压缩(例如:第一压缩,减小数据大小),电子装置100可以压缩原始神经网络模型,使得压缩模型的大小或维度、其他条件等可以根据目标装置的性能而变化,其中将使用训练的(微调的)压缩神经网络模型。
具体地,处理器120可以根据性能、处理或存储能力或目标装置的类型来改变压缩程度(压缩范围、压缩算法等)。
图9是用于描述根据目标装置的性能而变化的压缩模型的大小或维度的示例的表格。
在图9中,假设耳机'a'的存储容量小于智能手机'c'的存储容量。参考图9,由于耳机'a'的存储容量小于智能手机'c'的存储容量,处理器120可以基于目标装置是耳机'a',压缩原始神经网络模型,使得压缩神经网络模型的大小为5MB或更小。另一方面,基于目标装置是智能手机'c',处理器120可以压缩原始神经网络模型,使得压缩神经网络模型的大小为100MB或更小。
由于(训练的)压缩神经网络模型的性能本身只能随着相同的原始网络模型被增量压缩而降低,所以电子装置100可以通过基于作为目标装置的耳机‘a’以10%以内的准确度误差为目标,同时基于作为目标装置的智能手机‘c’以5%以内的准确度误差为目标,来验证压缩和微调。
参考图9,电子装置100可以考虑目标装置的RAM性能等,不同地设置训练的压缩神经网络模型的计算量和响应速率目标,并执行压缩和微调。当然,电子装置100可以基于一个或多个参数压缩神经网络模型,但不是所有参数,如图9所示。
图10是示出根据本公开的各种实施例的电子装置100的详细配置的框图。
参考图10,除了存储器110和处理器120之外,电子装置100还可以包括通信接口130、用户接口140等。
通信接口130被配置为通过执行与至少一个外部装置的通信来发送和接收信号/数据。为此,可以包括通信接口130电路。
通信接口130可以包括无线通信模块、有线通信模块等。
为了从外部服务器或外部装置接收数据,无线通信模块可以包括Wi-Fi通信模块、蓝牙模块、红外数据协会(IrDA)通信模块、第三代(3G)移动通信模块、第四代(4G)移动通信模块或4G长期演进(LTE)移动通信模块中的至少一个。
有线通信模块可以实现为有线端口,例如雷电端口(thunderbolt port)、以太网和USB端口。
处理器120可以基于通过通信接口130从外部装置接收对训练的压缩神经网络模型的请求,通过通信接口130将训练的压缩神经网络模型发送到外部装置或不同的外部装置。
处理器120可以基于通过用户接口140输入的用户指令,执行压缩和/或微调,或者将训练的(微调的)压缩神经网络模型发送到外部装置。
具体地,处理器120可以通过用户接口140对根据用户指令选择的原始神经网络模型执行压缩和/或微调。此外,处理器120可以根据由用户指令选择的数据大小、计算速率等对原始神经网络模型执行压缩和微调,并获取训练的压缩神经网络模型。
此外,处理器120可以控制通信接口130将训练的压缩神经网络模型发送到根据通过用户接口140输入的用户指令选择的目标装置。
用户接口140可以包括一个或多个按钮、键盘、鼠标等。此外,用户接口140可以包括用显示器或单独的触摸板实现的触摸板。
用户接口140可以包括通过语音接收关于用户指令或信息的输入的麦克风,以及识别运动形式的用户指令或信息的照相机。
图11a和11b是示出基于被实现为服务器装置的电子装置来提供从用户装置请求的压缩神经网络模型的电子装置的示例的示意图和框图。
参考图11a,可以是服务器装置的电子装置100-1可以执行与各种用户装置200和300的通信。基于从任何一个用户装置接收到对模型压缩的请求,电子装置100-1可以向发送压缩请求的用户装置提供训练后的压缩模型。
具体地,电子装置100-1可以从用户装置200接收原始神经网络模型和对原始神经网络模型的压缩请求。原始神经网络模型可以是已经由特定训练数据训练的模型,并且电子装置100-1可以不接收训练数据。
电子装置100-1可以使用接收的原始神经网络模型生成多个训练数据对。
电子装置100-1可以首先压缩接收的原始神经网络模型,并且可以使用生成的训练数据对微调该压缩的神经网络模型。然后,微调的神经网络模型可以作为最终压缩模型被发送到用户装置200。
作为服务器装置的电子装置除了从用户装置200接收训练的原始神经网络模型之外,还可以接收关于用户装置200的信息。在处理或首先压缩训练的原始神经网络模型的过程中和/或在微调的过程中,电子装置100-1的处理器120可以使用关于接收的用户装置200的信息。
具体地,处理器120可以识别在关于用户装置200的的信息中包括的关于用户装置200的性能的信息(存储容量、计算速率、电池大小/环境等),确定适合于用户装置200的性能的压缩率和准确度,并执行第一压缩和微调以确保期望的压缩率和准确度。
参考图11b,除了模型压缩模块310、微调模块320和训练数据生成模块330之外,电子装置100-1还可以包括约束搜索模块340。
在图11b中,假设在电子装置100-1中接收到关于用户装置200的设备类型的信息306。约束搜索模块340可以通过每个预定设备的约束数据库(307)来识别与关于用户装置200的设备类型306的信息匹配的压缩条件,该约束数据库可以存储在电子装置100-1的存储器110中。压缩条件可以包括压缩率、神经网络模型的压缩过程中的可移除或可变范围、压缩算法、压缩结果的目标容量等。
此外,模型压缩模块310可以首先根据识别的压缩条件压缩(原始)神经网络模型,并生成第一压缩模型302。微调模块320然后可以基于使用由训练数据生成模块330生成的新训练数据305来训练第一压缩模型302,生成最终压缩模型303。
处理器120然后可以将生成的最终压缩模型303发送给用户装置200。
如上所述,使用约束搜索模块340的实施例仅仅是一个示例,各种其他实施例也是可能的。例如,使用关于接收到模型压缩模块310并包括关于用户装置的信息的用户装置200的剩余存储容量的信息,可以通过将原始模型301压缩到小于剩余存储容量的大小来生成第一压缩模型302。
电子装置100-1可以在获取具有适合于用户装置200的性能的压缩率和准确度的“最终压缩模型”之前,抢先向用户装置200提供关于“最终压缩模型”的信息。基于从用户装置200接收到接收“最终压缩模型”的请求,电子装置100-1可以获取相同的(例如:首先压缩和微调原始模型)并将其发送给用户装置200。可以向用户装置200提供关于具有适合于用户装置200的性能的压缩率和准确度的“最终压缩模型”的操作的模拟结果的信息(例如:与原始模型的性能比较等。
图12a和12b是示出电子装置的示例的示意图和框图,该电子装置可以被实现为服务器,重构从外部接收的AI应用,并且通过应用商店将重构的AI应用提供给一个或多个用户装置。AI应用可以是包括人工智能神经网络模型的应用。
参考图12a,可以是服务器装置的电子装置100-2可以从应用提供商1210接收AI应用。应用提供商1210可以指开发或提供AI应用的对象的装置、服务器等。
图12a的应用商店1220可以是用于向各种用户装置提供各种应用的网络服务,并且可以通过电子装置100-2或者通过单独的外部服务器装置来实现。与图12a不同,基于通过外部服务器装置实现的应用存储1220,电子装置100-2可以从外部服务器装置接收向应用存储1220注册的AI应用。
电子装置100-2可以从接收的AI应用中分离训练的(原始)神经网络模型。在这种情况下,可以使用预先存储在电子装置100-2上的AI应用内的神经网络模型的地址,或者神经网络模型的文件格式与预定的文件格式相匹配,以识别包括AI应用内的神经网络模型的文件。
电子装置100-2可以通过根据产品类别(智能手机、TV、大容量智能手机等)的一个或多个产品名称中的每一个的适当需求条件,首先压缩分离的神经网络模型,来获取一个或多个第一压缩的神经网络模型。
然后,电子装置100-2可以基于通过微调一个或多个第一压缩的神经网络模型中的每一个来获取多个最终压缩模型,将每个最终压缩模型与(与神经网络模型分离的)AI应用组合,并获取一个或多个重构的AI应用。
电子装置100-2可以在应用商店1220注册重构的AI应用。如果应用商店1220是通过外部服务器装置实现的,则电子装置100-2可以将重构的AI应用发送到外部服务器装置。重构的AI应用可以被提供给每种类型的设备(例如智能手机、TV等)的应用商店,如图12a所示。
此外,电子装置100-2可以向应用提供商1210发送重构的AI应用。
连接到其中注册了重构的AI应用的应用商店1220的用户装置可以根据用户输入下载重构的AI应用。具体地,如图12a所示,基于根据应用商店1220上的产品类别(智能手机、TV、大容量智能手机等)分类和注册的多个(重构的)AI应用,用户装置可以通过应用商店1220从电子装置100-2(或外部服务器装置)下载适合于包括用户装置的产品类别的(重构的)AI应用。
电子装置100-2可以向应用提供商1210发送用于显示每个多个重构的AI应用的性能的仿真信息和/或在应用存储1220处注册。例如,用户装置可以通过应用商店1220接收仿真信息,并且可以将接收到的仿真信息提供给用户,并且在这种情况下,用户装置可以根据用户输入下载相应的AI应用,以从电子装置100-2(或外部服务器装置)下载适合于用户装置的产品类别的(重构的)AI应用。
图12b是用于描述与图12a一起操作的电子装置100-2的软件结构的框图。参考图12b,除了模型压缩模块310、微调模块320和训练数据生成模块330之外,电子装置100-2还可以包括模型提取模块350、AI应用重构模块360等。
参考图12b,基于从外部源接收AI应用1201,模型提取模块350可以从构成AI应用的数据中分离并提取原始神经网络模型1202。为此,模型提取模块350可以比较神经网络模型上的预定的文件类型(例如:扩展名等)与具有构成AI应用的多个文件,并且从多个文件中分离和提取神经网络模型文件。
参考图12b,模型压缩模块310可以包括多个压缩模块(第一压缩模块、第二压缩模块),根据彼此不同的压缩率压缩神经网络模型。多个压缩模块可以首先基于产品类别或产品规格彼此不同的条件来压缩神经网络模型。因此,可以通过模型压缩模块310获取一个或多个第一压缩模型1204。
具体地,模型压缩模块310可以使用能够根据应用提供商1210从多个压缩模块请求的压缩率压缩神经网络模型的第一压缩模块来压缩神经网络模型。此外,模型压缩模块310可以基于使用多个压缩模块中的每一个压缩神经网络模型,获取多个第一压缩模型。
此外,微调模块320可以使用通过训练数据生成模块330从原始神经网络模型1202生成的训练数据1205,微调第一压缩模型1204,并且作为其结果,获取最终压缩模型1206。
AI应用重构模块360可以将对AI应用1203的微调的最终压缩模型1206与分离的神经网络模型相结合,并且获取重构的AI应用1207,将其注册在应用存储1220中,并且可以将其发送到用户装置。
图13是示出被实现为诸如智能手机和个人PC的用户装置的电子装置的示例的图。
参考图13,实现为智能手机的电子装置100-3可以基于与服务器1310执行通信,从原始神经网络模型生成包括训练数据对的新训练数据,并且可以获取训练的压缩神经网络模型。
例如,电子装置100-3可以基于从服务器1310接收原始神经网络模型,从原始神经网络模型生成新的训练数据,同时压缩神经网络模型以适合电子装置100-3的性能或约束。
电子装置100-3通过新的训练数据微调压缩的神经网络模型,以获取训练的压缩神经网络模型,并使用其来执行电子装置100-3的功能。
基于与落在预定阈值范围之外的电子装置100-3的性能相对应的目标压缩率或目标准确度,电子装置100-3可以不压缩神经网络模型,并且可以在视觉上或听觉上通知用户压缩是不可能的。
下面通过图14和15更详细地描述根据实施例的电子装置的模型压缩方法。
图14是示出根据本公开实施例的电子装置的模型压缩方法的流程图。
参考图14,压缩方法可以通过压缩算法从原始神经网络模型生成第一压缩神经网络模型S1410。可以基于原始训练数据来训练原始神经网络模型,并且第一压缩神经网络模型的数据大小可以小于原始神经网络模型的数据大小。
压缩算法可包括权重修剪、通道修剪、矩阵分解、量化等,但不限于此。
压缩方法可以基于原始神经网络模型获取训练数据对(S1420)。
可以基于原始神经网络模型的特定输出值获取目标函数,并且可以基于目标函数从原始神经网络模型获取输入值。
具体地,可以基于任意输入值获取原始神经网络模型的输出值,并且可以通过将原始神经网络模型的输出值应用于目标函数来获取目标函数的输出值。此外,可以基于目标函数的输出值是否满足预定条件来获取输入值。
基于满足预定条件的目标函数的输出值,可以迅速获取上述任意输入值作为输入值,并且可以获取包括获取的输入值和基于获取的输入值从原始神经网络模型获取的输出值的训练数据对。
基于不满足预定条件的目标函数的输出值,可以改变上述任意输入值,并且可以基于改变的输入值获取原始神经网络模型的输出值。此外,通过根据改变的输入值将原始神经网络模型的输出值应用于目标函数来获取目标函数的输出值,并且基于满足预定条件的目标函数的输出值,可以获取改变的输入值作为输入值。
因此,在目标函数找到满足预定条件的输入值之前,可以改变输入值并将其应用于目标函数。
基于基于多个输入值中的每一个的目标函数的输出值是否满足预定条件,可以获取对应于多个输入值中的每一个的输入值。
另外,可以基于原始神经网络模型的多个特定输出值获取多个目标函数,并且可以基于多个目标函数中的每一个从原始神经网络模型获取输入值。
此外,可以获取包括所获取的输入值的训练数据对作为新的训练数据。
训练数据对可以包括获取的输入值和根据获取的输入值的原始神经网络模型的输出值。此外,训练数据对可以包括上述获取的输入值和输出值(与用于寻找获取的输入值的目标函数对应的特定输出值)。
此外,可以使用获取的输入值生成附加输入值,并且可以根据附加输入值附加地生成训练数据对,以增加新训练数据的量。
作为具体示例,基于包括基于第一输入值获取的神经网络模型的第一输入值和第一输出值的所获取的训练数据对,可以基于第一输入值获取第二输入值。此外,可以获取基于第二输入值获取的原始神经网络模型的第二输入值和第二输出值作为附加训练数据对,并将其包括在新的训练数据中。
压缩方法可以基于生成的一个或多个训练数据对对第一压缩神经网络模型执行微调,并生成最终压缩神经网络模型S1430。
图15是示出生成训练数据对(新训练数据)的压缩方法的详细示例的流程图。
为了生成训练数据对,压缩方法可以首先从能够从神经网络模型输出的值中生成关于特定输出值的目标函数S1510。
然后可以获取最小化所生成的目标函数的输出的输入值S1520。基于以任意输入值开始应用输入值并逐渐改变输入值并将其应用于目标函数,可以找到最小化目标函数输出的输入值。
作为起点的任意输入值每次被不同地设置S1520,并且基于重复该过程几次,可以获取关于特定输出值的多个输入值S1530。
可以通过对获取的输入值应用后处理来获取附加输入值S1540。具体地,可以改变所获取的输入值的数据值的一部分,或者可以使用各种方法来组合所获取的两个或更多个输入值,以获取新的输入值。
可以将包括所获取的输入值(x)和输出值(y)的训练数据对存储为新的训练数据S1550,所述输出值是将所获取的输入值输入到原始神经网络模型的结果。
图16是示出可以在服务器中实现的电子装置的模型压缩方法的示例的流程图。
参考图16,压缩方法可以从外部用户装置接收训练的神经网络模型(原始模型)及其压缩请求S1610。接下来,可以从训练的神经网络模型生成训练数据S1620。在这种情况下,通过特定输出值获取的目标函数可以用于获取一个或多个输入值,并且压缩方法可以生成/存储包括数据对的训练数据,该数据对包括所获取的输入值和针对所获取的输入值的神经网络模型的输出值。
压缩方法可以首先压缩训练的神经网络模型,以减小训练的神经网络模型的大小S1630。在这种情况下,生成的训练数据用于训练第一压缩模型以获取训练的模型(最终压缩模型)S1640,并且可以将训练的模型发送到发送压缩请求的用户装置S1650。
图17是用于描述重构和提供AI应用的AI应用提供方法的示例的流程图。参考图17,AI应用提供方法包括从第三方提供商、外部服务器(应用商店)等接收AI应用S1710,并且可以将神经网络模型与AI应用分离S1720。神经网络模型可以是通过原始训练数据训练的模型。例如,基于AI应用是提供关于图像内的对象的信息的应用,AI应用中包括的神经网络模型可以是被训练为识别输入图像内包括的对象人工智能模型。
此外,AI应用提供方法可以从分离的神经网络模型生成训练数据S1730,同时压缩相应的神经网络模型S1740。基于通过根据产品名称、产品类别或产品性能改变条件来压缩神经网络模型,可以获取多个压缩模型。
可以通过生成的训练数据微调压缩的神经网络模型来获取“训练的压缩模型”,并且通过将AI应用的“训练的压缩模型”与分离的神经网络模型相结合,可以重构AI应用(S1760)。基于从S1740获取多个压缩模型,可以获取对应于多个压缩模型中的每一个的多个AI应用。
此外,重构的AI应用可以被发送到第三方提供商和/或在应用商店中注册S1770。例如,重构的AI应用可以在应用商店中注册,并且用户可以自由下载重构的AI应用。具体地,基于在应用商店中注册的多个AI应用,其中根据产品的类型不同地重构压缩率,用户可以从重构的多个AI应用中选择性地下载适合于用户装置的AI应用。
以上通过图14至图17描述的电子装置的压缩方法可以通过通过图2和图10示出和描述的电子装置100来执行。
以上通过图14至17描述的电子装置的压缩方法可以通过电子装置100和通过包括一个或多个电子装置的系统来执行。
上述各种实施例可在可记录介质中实现,该可记录介质可由计算机或类似于使用软件、硬件或软件和硬件的组合的计算机的装置读取。
根据硬件实现,这里描述的实施例可以使用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑设备(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器或用于执行其他功能的电子单元中的至少一个来实现。
在一些情况下,这里描述的实施例可以由处理器120本身实现。根据软件实现,诸如这里描述的过程和功能的实施例可以用单独的软件模块来实现。上述每个软件模块可以执行这里描述的一个或多个功能和操作。
用于执行根据上述各种实施例的电子装置100的处理操作的计算机指令可以存储在非暂时性计算机可读介质中。当由特定设备的处理器执行时,存储在该非暂时性计算机可读介质中的计算机指令使得特定设备执行根据上述各种实施例的电子装置100的处理操作。
非暂时性计算机可读介质是指半永久存储数据而不是短时间存储数据的介质,例如寄存器、高速缓存、存储器等,并且可由设备读取。非暂时性计算机可读介质的具体示例包括光盘(CD)、数字多功能盘(DVD)、硬盘、蓝光光盘、通用串行总线(USB)、存储卡、只读存储器等。
虽然已经参照其各种实施例说明和描述了本公开,但是本公开不限于所描述的特定实施例。本领域技术人员将理解,在不脱离本公开的精神和范围的情况下,可以在形式和细节上进行各种改变。
Claims (15)
1.一种电子装置,包括:
存储器,存储计算机可读指令;和
处理器,其在执行计算机可读指令时被配置成:
获取原始神经网络模型;
根据压缩算法对原始神经网络模型进行压缩,获取压缩的神经网络模型;
基于原始神经网络模型,获取用于训练压缩的神经网络模型的训练数据对;
使用训练数据对训练压缩的神经网络模型,以获取压缩和训练的神经网络模型。
2.根据权利要求1所述的电子装置,其中,当执行所述计算机可读指令以获取所述训练数据对时,所述处理器还被配置为:
基于原始神经网络模型的特定输出值获取目标函数;
基于目标函数从原始神经网络模型获取输入值;和
获取包括输入值和特定输出值的训练数据对。
3.根据权利要求2所述的电子装置,其中,所述处理器在执行所述计算机可读指令以获取所述训练数据对时,还被配置为:
基于输入值获取原始神经网络模型的输出值;
通过将原始神经网络模型的输出值应用于目标函数来获取目标函数的输出值;和
基于目标函数的输出值是否满足预定条件来获取输入值。
4.根据权利要求3所述的电子装置,其中,所述处理器在执行所述计算机可读指令以获取所述训练数据对时,还被配置为基于满足所述预定条件的所述目标函数的输出值,从所述原始神经网络模型获取所述输入值和所述输出值作为所述训练数据对。
5.根据权利要求3所述的电子装置,其中,当执行所述计算机可读指令以获取所述训练数据对时,所述处理器还被配置为:
基于不满足预定条件的目标函数的输出值,将输入值改变为改变的输入值;
获取原始神经网络模型的输出值;
通过根据改变的输入值将原始神经网络模型的输出值应用于目标函数来获取目标函数的输出值;和
基于满足预定条件的目标函数的输出值,获取改变的输入值和基于改变的输入值从原始神经网络模型获取的输出值作为训练数据对。
6.根据权利要求3所述的电子装置,其中所述预定条件包括目标函数的输出值是最小值或最大值的条件。
7.根据权利要求3所述的电子装置,其中,所述处理器在执行所述计算机可读指令以获取所述训练数据对时,还被配置为基于基于多个输入值中的每一个的所述目标函数的输出值是否满足所述预定条件,来获取与所述多个输入值中的每一个对应的输入值。
8.根据权利要求1所述的电子装置,其中,当执行所述计算机可读指令时,所述处理器还被配置为:
基于原始神经网络模型的多个特定输出值获取多个目标函数;和
基于多个目标函数中的每一个,从原始神经网络模型获取输入值。
9.根据权利要求2所述的电子装置,其中所述训练数据对包括基于所述第一输入值获取的所述原始神经网络模型的第一输入值和第一输出值,并且
其中所述处理器在执行所述计算机可读指令以训练所述压缩的神经网络模型时,还被配置成:
基于第一输入值获取第二输入值;
获取所述第二输入值和包括基于所述第二输入值获取的原始神经网络模型的第二输出值的不同训练数据对;和
基于所述训练数据对和不同的训练数据对训练压缩的神经网络模型。
10.根据权利要求1所述的电子装置,进一步包括:
通信接口,
其中所述处理器在执行所述计算机可读指令时还被配置成基于通过所述通信接口从外部设备接收的请求,通过所述通信接口将所述压缩和训练的神经网络模型发送到所述外部设备。
11.一种通过电子装置压缩神经网络模型的方法,该方法包括:
通过使用压缩算法压缩原始神经网络模型来生成压缩的神经网络模型;
基于原始神经网络模型生成训练数据对;和
通过基于训练数据对训练压缩的神经网络模型来生成压缩的和训练的神经网络模型。
12.根据权利要求11所述的方法,其中生成训练数据对包括:
基于原始神经网络模型的特定输出值获取目标函数;
基于目标函数从原始神经网络模型获取输入值;和
获取包括输入值和特定输出值的训练数据对。
13.根据权利要求12所述的方法,其中生成训练数据对包括:
基于输入值获取原始神经网络模型的输出值;
通过将原始神经网络模型的输出值应用于目标函数来获取目标函数的输出值;和
基于目标函数的输出值是否满足预定条件来获取输入值。
14.根据权利要求13所述的方法,其中生成训练数据对包括:
基于满足预定条件的目标函数的输出值,从原始神经网络模型获取输入值和输出值作为训练数据对。
15.一种服务器装置,包括:
存储器,存储计算机可读指令;
通信器;和
处理器,其在执行计算机可读指令时被配置成:
根据压缩算法对原始神经网络模型进行压缩,获取压缩的神经网络模型;
基于原始神经网络模型,获取用于训练压缩的神经网络模型的训练数据对;
基于训练数据对训练压缩的神经网络模型,以获取压缩和训练的神经网络模型;和
通过通信器输出压缩和训练的神经网络模型。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962848763P | 2019-05-16 | 2019-05-16 | |
US62/848,763 | 2019-05-16 | ||
KR10-2019-0112019 | 2019-09-10 | ||
KR1020190112019A KR20200132627A (ko) | 2019-05-16 | 2019-09-10 | 신경망 모델 장치 및 신경망 모델의 압축 방법 |
PCT/KR2020/005686 WO2020231049A1 (en) | 2019-05-16 | 2020-04-29 | Neural network model apparatus and compressing method of neural network model |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113316795A true CN113316795A (zh) | 2021-08-27 |
Family
ID=73645848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080009630.9A Pending CN113316795A (zh) | 2019-05-16 | 2020-04-29 | 神经网络模型装置和神经网络模型的压缩方法 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP3935578A4 (zh) |
KR (1) | KR20200132627A (zh) |
CN (1) | CN113316795A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116072096A (zh) * | 2022-08-10 | 2023-05-05 | 荣耀终端有限公司 | 模型训练方法、声学模型、语音合成系统和电子设备 |
JP7457996B2 (ja) | 2022-02-10 | 2024-03-29 | ノタ、インコーポレイテッド | ニューラルネットワークモデルの情報を提供する方法及び同方法を実施する電子機器 |
WO2024098373A1 (en) * | 2022-11-11 | 2024-05-16 | Nvidia Corporation | Techniques for compressing neural networks |
JP7565480B2 (ja) | 2022-02-10 | 2024-10-11 | ノタ、インコーポレイテッド | ニューラルネットワークモデルの提供方法及び同方法を実施する電子機器 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102390553B1 (ko) * | 2020-11-24 | 2022-04-27 | 한국과학기술원 | 연합 학습 방법 및 시스템 |
KR102499517B1 (ko) * | 2020-11-26 | 2023-02-14 | 주식회사 노타 | 최적 파라미터 결정 방법 및 시스템 |
WO2022145551A1 (ko) * | 2020-12-29 | 2022-07-07 | 엘지전자 주식회사 | 지능적 신호 송수신 방법 및 이를 위한 장치 |
KR102511225B1 (ko) * | 2021-01-29 | 2023-03-17 | 주식회사 노타 | 인공지능 추론모델을 경량화하는 방법 및 시스템 |
KR102661026B1 (ko) * | 2022-12-21 | 2024-04-25 | 한국과학기술원 | 동적 리소스 적응형 딥러닝 모델 추론 방법 및 상기 방법을 수행하는 딥러닝 모델 추론 장치 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6889728B2 (ja) * | 2016-03-11 | 2021-06-18 | マジック リープ, インコーポレイテッドMagic Leap,Inc. | 畳み込みニューラルネットワークにおける構造学習 |
-
2019
- 2019-09-10 KR KR1020190112019A patent/KR20200132627A/ko active Search and Examination
-
2020
- 2020-04-29 EP EP20804770.4A patent/EP3935578A4/en active Pending
- 2020-04-29 CN CN202080009630.9A patent/CN113316795A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7457996B2 (ja) | 2022-02-10 | 2024-03-29 | ノタ、インコーポレイテッド | ニューラルネットワークモデルの情報を提供する方法及び同方法を実施する電子機器 |
JP7565480B2 (ja) | 2022-02-10 | 2024-10-11 | ノタ、インコーポレイテッド | ニューラルネットワークモデルの提供方法及び同方法を実施する電子機器 |
CN116072096A (zh) * | 2022-08-10 | 2023-05-05 | 荣耀终端有限公司 | 模型训练方法、声学模型、语音合成系统和电子设备 |
CN116072096B (zh) * | 2022-08-10 | 2023-10-20 | 荣耀终端有限公司 | 模型训练方法、声学模型、语音合成系统和电子设备 |
WO2024098373A1 (en) * | 2022-11-11 | 2024-05-16 | Nvidia Corporation | Techniques for compressing neural networks |
Also Published As
Publication number | Publication date |
---|---|
KR20200132627A (ko) | 2020-11-25 |
EP3935578A1 (en) | 2022-01-12 |
EP3935578A4 (en) | 2022-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113316795A (zh) | 神经网络模型装置和神经网络模型的压缩方法 | |
US11657284B2 (en) | Neural network model apparatus and compressing method of neural network model | |
JP7322044B2 (ja) | レコメンダシステムのための高効率畳み込みネットワーク | |
JP7046181B2 (ja) | マルチ・タスク学習を用いた特徴抽出方法、コンピュータ・システム、およびコンピュータ・プログラム製品(マルチ・タスク学習を用いた特徴抽出) | |
CN111652380B (zh) | 针对机器学习算法进行算法参数调优的方法及系统 | |
CN106960219B (zh) | 图片识别方法及装置、计算机设备及计算机可读介质 | |
EP3355513B1 (en) | Electronic node and method for maintaining a distributed ledger | |
JP6272417B2 (ja) | 文抽出方法及びシステム | |
CN113570064A (zh) | 利用复合机器学习模型来执行预测的方法及系统 | |
US11775806B2 (en) | Method of compressing neural network model and electronic apparatus for performing the same | |
CN110109899B (zh) | 物联网数据填补方法、装置及系统 | |
WO2020230658A1 (ja) | 特徴抽出装置及び状態推定システム | |
JP2023505647A (ja) | ニューラルネットワークモデルの圧縮 | |
CN117616431A (zh) | 针对大规模数据的可解释的机器学习 | |
CN114071141A (zh) | 一种图像处理方法及其设备 | |
US10318891B1 (en) | Geometry encoder | |
WO2024109907A1 (zh) | 一种量化方法、推荐方法以及装置 | |
CN114492754A (zh) | 神经网络生成、数据处理方法、装置、电子设备及介质 | |
CN113743277A (zh) | 一种短视频分类方法及系统、设备和存储介质 | |
KR101895121B1 (ko) | 관련도 벡터 머신을 이용한 기계학습방법, 이를 구현하는 컴퓨터 프로그램 및 이를 수행하도록 구성되는 정보처리장치 | |
CN109685091B (zh) | 使用贝叶斯方式的数字体验目标确定 | |
EP3767548A1 (en) | Delivery of compressed neural networks | |
WO2023055614A1 (en) | Embedding compression for efficient representation learning in graph | |
JP2016170750A (ja) | データ管理プログラム、情報処理装置およびデータ管理方法 | |
CN114118411A (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 |