神经网络模型的训练方法、数据处理方法及装置与流程

文档序号:31014425发布日期:2022-08-05 18:07阅读:213来源:国知局
神经网络模型的训练方法、数据处理方法及装置与流程

1.本技术涉及人工智能领域,并且更具体地,涉及一种神经网络模型的训练方法、数据处理方法及装置。


背景技术:

2.人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,ai基础理论等。
3.深度神经网络是一种具有深度结构的前馈神经网络,是深度学习的代表算法之一。深度神经网络具有强大的特征表达能力,广泛应用于图像、视频以及语音等多种媒体信号的处理与分析任务中。激活函数是深度神经网络的一个重要组成部分。激活函数通常被置于卷积或全连接层之后,为深度神经网络引入非线性运算,从而使得深度神经网络能够更好地拟合非线性的函数,解决真实世界中的复杂问题。激活函数对模型的精度以及收敛速度等各方面性能具有重要的影响。
4.现有的激活函数大部分是固定参数的激活函数,或者,参数变化的空间较小,这种激活函数无法保证在所有的模型和任务上均取得较好的效果。此外,还可以通过强化学习算法搜索得到激活函数。swish函数是通过强化学习算法搜索得到的一种较为通用的激活函数,可以应用于多种神经网络模型中。然而,在通过强化学习算法搜索激活函数的过程中,搜索空间受限于预定义的一元和二元函数,较为局限;而且,基于采样的强化学习算法搜索激活函数,搜索效率低,难以针对每个任务和模型搜索最优的激活函数的形式。swish函数仅作为一种相对通用的激活函数应用于模型中,并不能保证对所有模型和任务而言均为最优的激活函数。
5.因此,如何获得适合神经网络模型的激活函数,提高神经网络模型的性能,成为一个亟待解决的问题。


技术实现要素:

6.本技术提供一种神经网络模型的训练方法、数据处理方法及装置,能够获得适合神经网络模型的激活函数,提高神经网络模型的性能。
7.第一方面,提供了一种神经网络模型的训练方法,该方法包括:获取训练数据;基于训练数据对神经网络模型进行训练,神经网络模型的激活函数包括至少一个分段函数,分段函数包括多个可训练参数;在对神经网络模型进行训练的训练过程中更新至少一个分段函数的多个可训练参数,得到目标神经网络模型。
8.根据本技术实施例的方案,将至少一个分段函数作为激活函数,通过调整该至少一个分段函数的多个可训练参数可以拟合出多种函数形式,即激活函数的搜索空间更大,有利于得到更优的激活函数。同时,在模型的训练过程中,通过参数梯度更新分段函数的多个可训练参数,降低了运行开销,提高了激活函数的构建效率以及模型的训练效率,从而能够针对不同的模型实现激活函数的搜索,得到适合不同模型的激活函数,提高了模型的性能。
9.训练数据的类型与神经网络模型的任务有关。例如,神经网络模型用于图像处理任务,则该训练数据可以为图像。具体地,图像处理任务包括图像分类、图像检测、图像分割或图像生成等。再如,神经网络模型用于文本处理任务,则该训练数据可以为文本。具体地,文本处理任务包括文本识别或文本翻译等。再如,神经网络模型用于语音处理任务,则该训练数据可以为语音数据。具体地,语音处理任务包括语音识别等。
10.在对神经网络模型进行训练的训练过程中,基于该多个可训练参数的梯度对该多个可训练参数进行更新。
11.结合第一方面,在第一方面的某些实现方式中,至少一个分段函数为分段线性函数,至少一个分段函数的参数包括以下一个或多个:分界点的数量、右边界、左边界、定义域最大的区间上的斜率、定义域最小的区间的斜率或分界点对应的函数值。
12.根据本技术实施例中的方案,上述参数组合中仅包括两个斜率值,在后续参数更新过程中,一个分界点对应的函数值的变化仅影响该与分界点相邻的两个区间的函数,影响范围较小,能够提高训练效率以及训练后的模型性能。
13.此外,采用分段线性函数的形式可以拟合各种函数形式,相当于为激活函数的搜索过程提供了一个较大的搜索空间,能够提高搜索到的激活函数的精度的上限。而且,相较于分段非线性函数作为激活函数而言,采用分段线性函数作为激活函数,能够提高运算效率,减少时间开销。
14.结合第一方面,在第一方面的某些实现方式中,对神经网络模型进行训练的训练过程包括第一阶段和第二阶段,第一阶段在第二阶段之前执行,以及在对神经网络模型进行训练的训练过程中更新至少一个分段函数的多个可训练参数,包括:在第二阶段中,根据至少一个分段函数中的多个可训练参数的梯度更新至少一个分段函数的多个可训练参数;其中,至少一个分段函数中的右边界和左边界在第二阶段的初始值是根据第一阶段中输入至至少一个分段函数的特征的分布情况确定的。
15.根据本技术实施例的方案,通过第一阶段统计的输入特征的分布情况调整激活函数的左边界和右边界的值,这样,左边界和右边界能够匹配实际的输入特征的分布,以使输入特征尽可能落入左边界和右边界之间。这样,可以使得激活函数中更多的参数参与训练过程,有效利用分段函数中的多个分段,或者说,能够有效利用训练数据调整激活函数的参数,从而稳定训练过程,有利于提高激活函数的精度,进而提高模型的性能以及训练效率。
16.结合第一方面,在第一方面的某些实现方式中,在第一阶段中,至少一个分段函数中的多个可训练参数保持不变。
17.根据本技术实施例的方案,在第一阶段固定分段函数的参数,避免分段函数的参数变化对输入特征的分布情况产生影响,能够得到更准确的输入特征的分布情况,有利于之后分段函数的参数的调整。
18.结合第一方面,在第一方面的某些实现方式中,第一阶段中输入至至少一个分段函数的特征的分布情况由第一阶段的最后一次迭代后得到的特征的预测平均值和特征的预测标准差表示,特征的预测平均值和特征的预测标准差是通过滑动平均法确定的。
19.结合第一方面,在第一方面的某些实现方式中,特征的预测平均值和特征的预测标准差满足以下公式:
[0020][0021]
其中,r
mean_j
表示第j次迭代后得到的特征的预测平均值,r
mean_j+1
表示第j+1次迭代后得到的特征的预测平均值,r
std_j
表示第j次迭代后得到的特征的预测标准差,r
std_j+1
表示第j+1次迭代后得到的特征的预测标准差,j为大于或等于0的整数,j=0时,r
mean_0
表示特征的预测平均值的初始值,r
std_0
表示特征的预测标准差的初始值,r
mean_0
=0,r
std_0
=0;mean(x)表示特征的平均值,std(x)表示特征的标准差,a表示r
mean_j
的权重参数,b表示r
std_j
的权重参数。
[0022]
a为小于1的正数,b为小于1的正数。例如,a为0.9;b为0.9。
[0023]
结合第一方面,在第一方面的某些实现方式中,至少一个分段函数中的右边界rb在第二阶段的初始值满足如下公式:
[0024]
rb=r
mean
+c*r
std

[0025]
至少一个分段函数中的左边界lb在第二阶段的初始值满足如下公式:
[0026]
lb=r
mean-c*r
std

[0027]
其中,r
mean
表示第一阶段的最后一次迭代后得到的特征的预测平均值;r
std
表示第一阶段的最后一次迭代后得到的特征的预测标准差,c表示参数。
[0028]
结合第一方面,在第一方面的某些实现方式中,至少一个分段函数中的多个可训练参数包括:右边界、左边界、定义域最大的区间上的斜率、定义域最小的区间的斜率或分界点对应的函数值。
[0029]
也就是说,将分界点的数量n作为超参数,在训练过程中不更新分界点的数量,更新分段函数的其他参数。在训练过程中不更新分界点的数量,能够保证分段函数的参数的数量不变,降低了分段函数更新的复杂度,保证了模型训练的稳定性。
[0030]
结合第一方面,在第一方面的某些实现方式中,分段函数的分段数为6至18中的任一值。
[0031]
第二方面,提供了一种数据处理方法,该方法包括:获取待处理的数据,待处理的数据包括图像数据、语音数据或者文本数据;采用目标神经网络对待处理数据进行处理,得到待处理数据的处理结果;其中,目标神经网络模型是基于训练数据对神经网络模型进行训练得到的,神经网络模型的激活函数包括至少一个分段函数,目标神经网络模型的激活函数包括至少一个目标分段函数,目标分段函数是在对神经网络模型进行训练的过程中对分段函数的多个可训练参数进行更新得到的。
[0032]
可以采用第一方面中的神经网络模型的训练方法得到目标神经网络模型,该目标神经网络模型可以是已经训练好的神经网络模型,可以利用该训练好的神经网络模型对待处理数据进行处理。
[0033]
本技术中,由于目标神经网络模型是采用上述第一方面的方法得到的,比较符合
或者贴近神经网络模型的应用需求,利用这样的神经网络模型进行数据处理,能够取得较好的处理效果。
[0034]
根据本技术实施例的方案,将至少一个分段函数作为激活函数,通过调整该至少一个分段函数的多个可训练参数可以拟合出多种函数形式,即激活函数的搜索空间更大,有利于得到更优的激活函数。同时,在模型的训练过程中,通过参数梯度更新分段函数的多个可训练参数,降低了运行开销,提高了激活函数的构建效率以及模型的训练效率,从而能够针对具体的模型实现激活函数的搜索,得到适合的激活函数,提高了目标神经网络模型的性能。
[0035]
结合第二方面,在第二方面的某些实现方式中,至少一个分段函数为分段线性函数,至少一个分段函数的参数包括以下一个或多个:分界点的数量、右边界、左边界、定义域最大的区间上的斜率、定义域最小的区间的斜率或分界点对应的函数值。
[0036]
结合第二方面,在第二方面的某些实现方式中,对神经网络模型进行训练的训练过程包括第一阶段和第二阶段,第一阶段在第二阶段之前执行,以及目标分段函数是在对神经网络模型进行训练的过程中对分段函数的多个可训练参数进行更新得到的,包括:目标分段函数是在第二阶段中根据分段函数中的多个可训练参数的梯度对分段函数的多个可训练参数进行更新得到的,其中,分段函数中的右边界和左边界在第二阶段的初始值是根据第一阶段中输入至分段函数的特征的分布情况确定的。
[0037]
结合第二方面,在第二方面的某些实现方式中,在第一阶段中,至少一个分段函数中的多个可训练参数保持不变。
[0038]
结合第二方面,在第二方面的某些实现方式中,第一阶段中输入至分段函数的特征的分布情况由第一阶段的最后一次迭代后得到的特征的预测平均值和特征的预测标准差表示,特征的预测平均值和特征的预测标准差是通过滑动平均法确定的。
[0039]
结合第二方面,在第二方面的某些实现方式中,特征的预测平均值和特征的预测标准差满足以下公式:
[0040][0041]
其中,r
mean_j
表示第j次迭代后得到的特征的预测平均值,r
mean_j+1
表示第j+1次迭代后得到的特征的预测平均值,r
std_j
表示第j次迭代后得到的特征的预测标准差,r
std_j+1
表示第j+1次迭代后得到的特征的预测标准差,j为大于或等于0的整数,j=0时,r
mean_0
表示特征的预测平均值的初始值,r
std_0
表示特征的预测标准差的初始值,r
mean_0
=0,r
std_0
=0;mean(x)表示特征的平均值,std(x)表示特征的标准差,a表示r
mean_j
的权重参数,b表示r
std_j
的权重参数。
[0042]
结合第二方面,在第二方面的某些实现方式中,至少一个分段函数中的右边界rb在第二阶段的初始值满足如下公式:
[0043]
rb=r
mean
+c*r
std

[0044]
至少一个分段函数中的左边界lb在第二阶段的初始值满足如下公式:
[0045]
lb=r
mean-c*r
std

[0046]
其中,r
mean
表示第一阶段的最后一次迭代后得到的特征的预测平均值;r
std
表示第
一阶段的最后一次迭代后得到的特征的预测标准差,c表示参数。
[0047]
结合第二方面,在第二方面的某些实现方式中,至少一个分段函数中的多个可训练参数包括:右边界、左边界、定义域最大的区间上的斜率、定义域最小的区间的斜率或分界点对应的函数值。
[0048]
结合第二方面,在第二方面的某些实现方式中,分段函数的分段数为6至18中的任一值。
[0049]
第三方面,提供了一种神经网络模型的训练装置,所述装置包括用于执行上述第一方面以及第一方面中的任意一种实现方式中的方法的模块或单元。
[0050]
第四方面,提供了一种数据处理装置,所述装置包括用于执行上述第二方面以及第二方面中的任意一种实现方式中的方法的模块或单元。
[0051]
应理解,在上述第一方面中对相关内容的扩展、限定、解释和说明也适用于第二方面、第三方面和第四方面中相同的内容。
[0052]
第五方面,提供了一种神经网络模型的训练装置,该装置包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行第一方面以及第一方面中的任意一种实现方式中的方法。
[0053]
上述第五方面中的处理器既可以是中央处理器(central processing unit,cpu),也可以是cpu与神经网络运算处理器的组合,这里的神经网络运算处理器可以包括图形处理器(graphics processing unit,gpu)、神经网络处理器(neural-network processing unit,npu)和张量处理器(tensor processing unit,tpu)等等。其中,tpu是谷歌(google)为机器学习全定制的人工智能加速器专用集成电路。
[0054]
第六方面,提供了一种数据处理装置,该装置包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行第二方面以及第二方面中的任意一种实现方式中的方法。
[0055]
上述第六方面中的处理器既可以是中央处理器,也可以是cpu与神经网络运算处理器的组合,这里的神经网络运算处理器可以包括图形处理器、神经网络处理器和张量处理器等等。其中,tpu是谷歌为机器学习全定制的人工智能加速器专用集成电路。
[0056]
第七方面,提供一种计算机可读介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行第一方面或第二方面中的任意一种实现方式中的方法。
[0057]
第八方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面或第二方面中的任意一种实现方式中的方法。
[0058]
第九方面,提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述第一方面或第二方面中的任意一种实现方式中的方法。
[0059]
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面或第二方面中的任意一种实现方式中的方法。
[0060]
上述芯片具体可以是现场可编程门阵列(field-programmable gate array,fpga)或者专用集成电路(application-specific integrated circuit,asic)。
附图说明
[0061]
图1是本技术实施例提供的一种人工智能主体框架示意图;
[0062]
图2为一种神经网络模型的部分结构的示意图;
[0063]
图3为本技术实施例提供的一种系统架构的结构示意图;
[0064]
图4为本技术实施例提供的一种芯片的硬件结构示意图;
[0065]
图5为本技术实施例提供的一种系统架构的示意图;
[0066]
图6为本技术实施例提供的一种应用场景的示意图;
[0067]
图7为本技术实施例提供的另一种应用场景的示意图;
[0068]
图8为本技术实施例提供的一种神经网络模型的训练方法的示意性流程图;
[0069]
图9为本技术实施例提供的一种分段线性函数的示意图;
[0070]
图10为本技术实施例提供的一种分段线性函数的前向传播过程的示意性流程图;
[0071]
图11为本技术实施例提供的一种激活函数的初始化形式的示意图;
[0072]
图12为本技术实施例提供的一种神经网络模型的训练方法的示意性流程图;
[0073]
图13为本技术实施例提供的不同激活函数的对比示意图;
[0074]
图14是本技术实施例提供的数据处理方法的示意性流程图;
[0075]
图15是本技术实施例提供的神经网络模型的训练装置的示意性框图;
[0076]
图16是本技术实施例提供的数据处理装置的示意性框图;
[0077]
图17是本技术实施例提供的神经网络模型的训练装置的示意性框图;
[0078]
图18是本技术实施例提供的数据处理装置的示意性框图。
具体实施方式
[0079]
下面将结合附图,对本技术中的技术方案进行描述。
[0080]
图1示出一种人工智能主体框架示意图,该主体框架描述了人工智能系统总体工作流程,适用于通用的人工智能领域需求。
[0081]
下面从“智能信息链”(水平轴)和“信息技术(information technology,it)价值链”(垂直轴)两个维度对上述人工智能主题框架进行详细的阐述。
[0082]“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。
[0083]“it价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
[0084]
(1)基础设施:
[0085]
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。
[0086]
基础设施可以通过传感器与外部沟通,基础设施的计算能力可以由智能芯片提供。
[0087]
这里的智能芯片可以是中央处理器(central processing unit,cpu)、神经网络处理器(neural-network processing unit,npu)、图形处理器(graphics processing unit,gpu)、专门应用的集成电路(application specific integrated circuit,asic)以
及现场可编程门阵列(field programmable gate array,fpga)等硬件加速芯片。
[0088]
基础设施的基础平台可以包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。
[0089]
例如,对于基础设施来说,可以通过传感器和外部沟通获取数据,然后将这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
[0090]
(2)数据:
[0091]
基础设施的上一层的数据用于表示人工智能领域的数据来源。该数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
[0092]
(3)数据处理:
[0093]
上述数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等处理方式。
[0094]
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
[0095]
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
[0096]
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
[0097]
(4)通用能力:
[0098]
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
[0099]
(5)智能产品及行业应用:
[0100]
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市,智能终端等。
[0101]
本技术实施例可以应用在人工智能中的很多领域,例如,智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市等领域。
[0102]
具体地,本技术实施例可以具体应用在自动驾驶、图像分类、图像检索、图像语义分割、图像质量增强、图像超分辨率和自然语言处理等需要使用(深度)神经网络的领域。
[0103]
下面对相册图片分类和平安城市这两种应用场景进行简单的介绍。
[0104]
相册图片分类:
[0105]
当用户在终端设备(例如,手机)或者云盘上存储了大量的图片时,通过对相册中图像进行识别可以方便用户或者系统对相册进行分类管理,提升用户体验。
[0106]
利用本技术实施例的神经网络模型的训练方法,能够获得或者优化适用于相册分类的神经网络。接下来就可以利用该神经网络对图片进行分类,从而为不同的类别的图片打上标签,便于用户查看和查找。另外,这些图片的分类标签也可以提供给相册管理系统进行分类管理,节省用户的管理时间,提高相册管理的效率,提升用户体验。
[0107]
平安城市场景下的属性识别:
[0108]
平安城市场景下,需要进行多种属性识别,例如行人属性识别和骑行属性识别,深度神经网络凭借着其强大的能力在多种属性识别中发挥着重要的作用。通过采用本技术实施例的神经网络模型的训练方法,能够获得或优化适用于平安城市场景下进行属性识别的神经网络。接下来就可以利用该神经网络对输入的道路画面进行处理,从而识别出道路画面中的不同的属性信息。
[0109]
神经网络模型的性能受到很多因素的影响,例如,神经网络模型的结构、训练过程、正则化方法、超参数等。这些因素可以人为干预,也可以通过自动机器学习(automated machine learning,automl)的方式进行控制。automl能够根据用户输入训练数据和目标任务,提供相应的服务。
[0110]
本技术实施例的方法既能够用于对人为构建的神经网络模型进行训练,还能够应用于automl中,根据用户的需求提供相应的服务。
[0111]
由于本技术实施例涉及大量神经网络的应用,为了便于理解,下面先对本技术实施例可能涉及的神经网络的相关术语和概念进行介绍。
[0112]
(1)神经网络
[0113]
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以为:
[0114][0115]
其中,s=1、2、
……
n,n为大于1的自然数,ws为xs的权重,b为神经单元的偏置。
[0116]
f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层的输入。例如,激活函数可以是relu,tanh或sigmoid函数。
[0117]
神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
[0118]
(2)深度神经网络
[0119]
深度神经网络(deep neural network,dnn),也称多层神经网络,可以理解为具有多层隐含层的神经网络。按照不同层的位置对dnn进行划分,dnn内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
[0120]
虽然dnn看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:其中,是输入向量,是输出向量,是偏移向量,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量经过如此简单的操作得到输出向量由于dnn层数多,系数w和偏移向量的数量也比较多。这些参数在dnn中的定义如下所述:以系数w为例:假设在一个三层的dnn中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为上标3代表系数w所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
[0121]
综上,第l-1层的第k个神经元到第l层的第j个神经元的系数定义为
[0122]
激活函数通常置于卷积层或全连接层之后,图2示出了一个全连接层以及该全连接层之后的激活函数。图2中的输入向量为(x1,x2,x3),输出向量为权重矩阵w为如图2所示的全连接层的权重矩阵(图2中省去了权重矩阵的上标),f表示激活函数。输入向量(x1,x2,x3)经过全连接层处理后输出(y1,y2),再经过激活函数f得到输出向量
[0123]
需要注意的是,输入层是没有w参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量形成的权重矩阵)。
[0124]
(3)卷积神经网络
[0125]
卷积神经网络(convolutional neuron network,cnn)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
[0126]
(4)损失函数
[0127]
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。通常地,loss越小,该深度神经网络的训练质量越高,loss越大,深度神经网络的训练质量越低。类似的,loss波动越小,训练越稳定;loss波动越大,训练越不稳定。
[0128]
(5)反向传播算法
[0129]
神经网络可以采用误差反向传播(back propagation,bp)算法在训练过程中修正的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在
得到最优的神经网络模型的参数,例如权重矩阵。
[0130]
例如,神经网络模型每次训练产生的loss值在神经网络模型中从后向前逐层传递。传递到每一层时,同时计算出该层参数的更新量(偏导运算),这个更新量与梯度(gradient)相关。gradient的值与loss的值是线性正相关的。
[0131]
如图3所示,本技术实施例提供了一种系统架构100。在图3中,数据采集设备160用于采集训练数据。例如,针对本技术实施例的数据处理方法来说,若数据为图像数据,则训练数据可以包括训练图像以及训练图像对应的分类结果,其中,训练图像的分类结果可以是人工预先标注的结果。
[0132]
在采集到训练数据之后,数据采集设备160将这些训练数据存入数据库130,训练设备120基于数据库130中维护的训练数据训练得到目标模型/规则101。
[0133]
下面对训练设备120基于训练数据得到目标模型/规则101进行描述,训练设备120对输入的原始数据进行处理,将输出值与目标值进行对比,直到训练设备120输出的值与目标值的差值小于一定的阈值,从而完成目标模型/规则101的训练。
[0134]
上述目标模型/规则101能够用于实现本技术实施例的数据处理方法。本技术实施例中的目标模型/规则101具体可以为神经网络模型。例如,卷积神经网络。需要说明的是,在实际的应用中,所述数据库130中维护的训练数据不一定都来自于数据采集设备160的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备120也不一定完全基于数据库130维护的训练数据进行目标模型/规则101的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本技术实施例的限定。
[0135]
根据训练设备120训练得到的目标模型/规则101可以应用于不同的系统或设备中,如应用于图3所示的执行设备110,所述执行设备110可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,ar)ar/虚拟现实(virtual reality,vr),车载终端等,还可以是服务器或者云端等。在图3中,执行设备110配置输入/输出(input/output,i/o)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向i/o接口112输入数据,输入数据在本技术实施例中可以包括:客户设备输入的待处理的数据。
[0136]
在执行设备110对输入数据进行预处理,或者在执行设备110的计算模块111执行计算等相关的处理过程中,执行设备110可以调用数据存储系统150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统150中。
[0137]
最后,i/o接口112将处理结果,如上述得到的数据的处理结果返回给客户设备140,从而提供给用户。
[0138]
值得说明的是,训练设备120可以针对不同的目标或不同的任务,基于不同的训练数据生成相应的目标模型/规则101,该相应的目标模型/规则101即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
[0139]
在图3中所示情况下,用户可以手动给定输入数据,该手动给定可以通过i/o接口112提供的界面进行操作。另一种情况下,客户设备140可以自动地向i/o接口112发送输入数据,如果要求客户设备140自动发送输入数据需要获得用户的授权,则用户可以在客户设备140中设置相应权限。用户可以在客户设备140查看执行设备110输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备140也可以作为数据采集端,采集如图所示输入i/o接口112的输入数据及输出i/o接口112的输出结果作为新的样本数据,并存入数
据库130。当然,也可以不经过客户设备140进行采集,而是由i/o接口112直接将如图所示输入i/o接口112的输入数据及输出i/o接口112的输出结果,作为新的样本数据存入数据库130。
[0140]
值得注意的是,图3仅是本技术实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图3中,数据存储系统150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储系统150置于执行设备110中。
[0141]
如图3所示,根据训练设备120训练得到目标模型/规则101,该目标模型/规则101在本技术实施例中可以是本技术中的神经网络,具体的,本技术实施例构建的神经网络可以为cnn等。
[0142]
图4为本技术实施例提供的一种芯片的硬件结构,该芯片包括神经网络处理器50。该芯片可以被设置在如图3所示的执行设备110中,用以完成计算模块111的计算工作。该芯片也可以被设置在如图3所示的训练设备120中,用以完成训练设备120的训练工作并输出目标模型/规则101。本技术实施例中的方法可在如图4所示的芯片中得以实现。
[0143]
神经网络处理器npu 50作为协处理器挂载到主中央处理器(central processing unit,cpu)(host cpu)上,由主cpu分配任务。npu的核心部分为运算电路503,控制器504控制运算电路503提取存储器(权重存储器或输入存储器)中的数据并进行运算。
[0144]
在一些实现中,运算电路503内部包括多个处理单元(process engine,pe)。在一些实现中,运算电路503是二维脉动阵列。运算电路503还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路503是通用的矩阵处理器。
[0145]
举例来说,假设有输入矩阵a,权重矩阵b,输出矩阵c。运算电路从权重存储器502中取矩阵b相应的数据,并缓存在运算电路中每一个pe上。运算电路从输入存储器501中取矩阵a数据与矩阵b进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)508中。
[0146]
向量计算单元507可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元507可以用于神经网络中非卷积/非fc层的网络计算,如池化(pooling),批归一化(batch normalization,bn),局部响应归一化(local response normalization)等。
[0147]
在一些实现种,向量计算单元能507将经处理的输出的向量存储到统一缓存器506。例如,向量计算单元507可以将非线性函数应用到运算电路503的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元507生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路503的激活输入,例如用于在神经网络中的后续层中的使用。
[0148]
统一存储器506用于存放输入数据以及输出数据。
[0149]
权重数据直接通过存储单元访问控制器505(direct memory access controller,dmac)将外部存储器中的输入数据搬运到输入存储器501和/或统一存储器506、将外部存储器中的权重数据存入权重存储器502,以及将统一存储器506中的数据存入外部存储器。
[0150]
总线接口单元(bus interface unit,biu)510,用于通过总线实现主cpu、dmac和
取指存储器509之间进行交互。
[0151]
与控制器504连接的取指存储器(instruction fetch buffer)509,用于存储控制器504使用的指令;
[0152]
控制器504,用于调用指存储器509中缓存的指令,实现控制该运算加速器的工作过程。
[0153]
一般地,统一存储器506,输入存储器501,权重存储器502以及取指存储器509均为片上(on-chip)存储器,外部存储器为该npu外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(double data rate synchronous dynamic random access memory,ddr sdram)、高带宽存储器(high bandwidth memory,hbm)或其他可读可写的存储器。
[0154]
上文中介绍的图3中的执行设备110或图4中的芯片能够执行本技术实施例的数据处理方法的各个步骤。上文中介绍的图3中的训练设备120或图4中的芯片能够执行本技术实施例的构建激活函数的方法的各个步骤。上文中介绍的图3中的训练设备120或图4中的芯片能够执行本技术实施例的神经网络模型的训练方法的各个步骤。
[0155]
如图5所示,本技术实施例提供了一种系统架构300。该系统架构包括本地设备301、本地设备302以及执行设备310和数据存储系统350,其中,本地设备301和本地设备302通过通信网络与执行设备310连接。
[0156]
执行设备310可以由一个或多个服务器实现。可选的,执行设备310可以与其它计算设备配合使用,例如:数据存储器、路由器、负载均衡器等设备。执行设备310可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备310可以使用数据存储系统350中的数据,或者调用数据存储系统350中的程序代码来实现本技术实施例的构建激活函数的方法或神经网络模型的训练方法。
[0157]
具体地,在一种实现方式中,执行设备110可以执行以下过程:
[0158]
获取训练数据;
[0159]
基于训练数据对神经网络模型进行训练,神经网络模型的激活函数包括至少一个分段函数,该分段函数包括多个可训练参数;
[0160]
在对神经网络模型进行训练的训练过程中更新至少一个分段函数的多个可训练参数。
[0161]
通过上述过程执行设备110能够获取一个目标神经网络模型,该目标神经网络模型可以用于图像分类、进行图像处理、语音处理或者文本处理等等。
[0162]
或者,通过上述过程执行设备110能够获取到目标激活函数,该目标激活函数可以应用于神经网络模型中,以提供神经网络模型的性能。
[0163]
用户可以操作各自的用户设备(例如本地设备301和本地设备302)与执行设备310进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
[0164]
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备310进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
[0165]
在一种实现方式中,本地设备301、本地设备302从执行设备310获取到目标神经网
络的相关参数,将目标神经网络部署在本地设备301、本地设备302上,利用该目标神经网络进行图像分类、进行图像处理、语音处理或者文本处理等等。
[0166]
在另一种实现中,执行设备310上可以直接部署目标神经网络,执行设备310通过从本地设备301和本地设备302获取待处理数据,并采用目标神经网络模型对待处理数据进行处理。
[0167]
上述执行设备310也可以为云端设备,此时,执行设备310可以部署在云端;或者,上述执行设备310也可以为终端设备,此时,执行设备310可以部署在用户终端侧,本技术实施例对此并不限定。
[0168]
如图6所示,目标神经网络可以部署于执行设备610中,对用户提供的输入数据进行处理,得到处理结果。其中,该目标神经网络中的激活函数是通过本技术实施例中的方法得到的。执行设备610可以为终端设备或云端设备。例如,执行设备610可以为图3中的执行设备110、图5中的执行设备310或本地设备等。
[0169]
如图7所示,本技术实施例提供了一种automl服务平台上的处理流程的示意图。automl服务平台基于用户提供的训练数据以及目标任务提供相应的服务。如图7所示,automl服务平台通过执行一种或多种搜索操作得到满足用户需求的方案。automl服务平台可以执行的搜索操作包括数据增强策略搜索、模型结构搜索、激活函数搜索以及超参数搜索等。其中,数据增强策略搜索、模型结构搜索以及超参数搜索均为可选操作。例如,若用户提供了模型结构,则无需执行模型结构搜索。
[0170]
具体地,激活函数搜索可以采用本技术实施例中的方法执行,得到满足需求的激活函数。具体描述详见后文中的方法800。
[0171]
automl服务平台的输出是根据用户的需求确定的。本技术实施例中,automl服务平台的输出可以包括目标神经网络模型和/或激活函数。例如,用户提供的训练数据为样本图像,目标任务为图像分类任务,则automl服务平台可以输出能够用于执行图像分类任务的目标神经网络模型。再如,用户提供的训练数据为样本图像,目标任务为图像分类任务,用户要求输出目标神经网络模型中的激活函数,则automl服务平台可以输出能够用于执行图像分类任务的目标神经网络模型和激活函数。再如,用户提供的训练数据为样本图像,目标任务为图像分类任务,用户还提供了神经网络模型的结构,要求输出目标神经网络模型中的激活函数,则automl服务平台可以输出能够用于执行图像分类任务的目标神经网络模型中的激活函数。
[0172]
现有的神经网络模型中的激活函数大部分是固定参数的激活函数,或者,参数变化的空间很小,这种激活函数无法保证在所有的模型和任务上均取得较好的效果。修正线性单元(rectifier linear unit,relu)激活函数为深度神经网络中广泛应用的激活函数之一。然而,对于值小于0的输入特征经过relu处理后,其输出恒为0,造成某些神经元不会再被激活,导致相应的参数永远不能被更新,影响模型的性能。
[0173]
swish函数是通过强化学习算法搜索得到的一种较为通用的激活函数,可以应用于多种神经网络模型中。然而,在通过强化学习算法搜索激活函数的过程中,搜索空间受限于预定义好的一元和二元函数,较为局限;此外,基于采样的强化学习算法搜索激活函数,搜索效率非常低,搜索过程开销很大,难以针对每个任务和模型搜索最优的激活函数的形式。swish函数仅作为一种相对通用的激活函数应用于模型中,并不能保证对所有模型和任
务而言均为最优的激活函数。
[0174]
因此,如何获得适合神经网络模型的激活函数,提高神经网络模型的性能,成为一个亟待解决的问题。
[0175]
本技术实施例提出一种神经网络模型的训练方法,能够获得适合神经网络模型的激活函数,提高神经网络模型的性能。
[0176]
下面结合图8至图13对本技术实施例中的神经网络模型的训练方法进行详细的描述。
[0177]
图8示出了本技术实施例提供的神经网络模型的训练方法800。图8所示的方法可以由神经网络模型的训练装置来执行,该训练装置可以是云服务设备,也可以是终端设备,例如,电脑、服务器等运算能力足以用来执行神经网络模型的训练方法的装置,也可以是由云服务设备和终端设备构成的系统。示例性地,方法800可以由图3中的训练设备120、图4中的神经网络处理器50或图5中的执行设备310或本地设备执行。或者,方法800也可以由提供automl服务的设备执行。示例性地,提供automl服务的设备可以是云服务设备。
[0178]
例如,方法800具体可以由如图3所示的训练设备120执行,方法800中的训练数据可以是如图3所示的数据库130中维护的训练数据。
[0179]
在本技术实施例中,方法800也可以作为一种构建激活函数的方法,训练好的神经网络模型中的激活函数即为构建好的激活函数。构建好的激活函数可以称为目标激活函数。本技术实施例中激活函数的构建是通过调整激活函数的参数实现的,不同的参数定义的激活函数不同。因此,本技术实施例中的构建激活函数的方法也可以理解为搜索激活函数的方法,激活函数的搜索空间是由激活函数的参数的可调整的空间决定的。
[0180]
方法800包括步骤s810至步骤s820。下面对步骤s810至步骤s820进行详细介绍。
[0181]
s810,获取训练数据。
[0182]
训练数据的类型与神经网络模型的任务有关。例如,神经网络模型用于图像处理任务,则该训练数据可以为图像。具体地,图像处理任务包括图像分类、图像检测、图像分割或图像生成等。再如,神经网络模型用于文本处理任务,则该训练数据可以为文本。具体地,文本处理任务包括文本识别或文本翻译等。再如,神经网络模型用于语音处理任务,则该训练数据可以为语音数据。具体地,语音处理任务包括语音识别等。本技术实施例对训练数据的类型不做限定。
[0183]
示例性地,训练数据可以是预先存储的。例如,该训练数据可以是图3所示的数据库130中维护的训练数据。
[0184]
可替换地,训练数据可以是用户输入的。例如,方法800由提供automl服务的设备执行,训练数据可以由用户输入。
[0185]
s820,基于训练数据对神经网络模型进行训练。该神经网络模型的激活函数包括至少一个分段函数。该分段函数包括多个可训练参数。
[0186]
应理解,本技术实施例中作为激活函数的分段函数指的是包括多个可训练参数的分段函数,为了描述简洁,后文中将“包括多个可训练参数的分段函数”简称为“分段函数”。
[0187]
在对神经网络模型进行训练的训练过程中更新该多个可训练参数,得到目标神经网络模型。
[0188]
神经网络模型中通常包括两类参数,一类是可以从训练数据中学习估计得到的参
数,即可训练参数,例如,神经网络模型的权重。另一类参数通常无法从训练数据中得到,即超参数。超参数可以是人为设定的,也可以是通过automl进行超参数搜索得到的。
[0189]
可训练参数在神经网络模型的训练过程中可以基于训练数据进行更新。超参数在神经网络模型训练的迭代过程中保持不变。
[0190]
具体地,在对神经网络模型进行训练的过程中,基于该多个可训练参数的梯度对该多个可训练参数进行更新。
[0191]
该神经网络模型的激活函数包括至少一个分段函数,也可以理解为该神经网络模型中的至少一个激活函数为分段函数。
[0192]
该神经网络模型的激活函数可以包括一个或多个分段函数。若该神经网络模型包括多个分段函数,则该多个分段函数的参数可以相同,即该多个分段函数可以共享参数。或者,该多个分段函数的参数也可以不同,即该多个分段函数的参数可以是相互独立的。在该情况下,该多个分段函数中的一个分段函数的参数的变化不影响其他分段函数的参数。
[0193]
示例性地,在神经网络模型中具有分段函数的多个层中,不同层的分段函数的参数不同,同一层的分段函数的参数相同。也就是说,神经网络模型中每个层均可以采用独立的分段函数的参数。
[0194]
进一步地,在神经网络模型中具有分段函数的同一层中多个通道中,不同通道的分段函数的参数不同。也就是说,神经网络模型中同一层的每个通道中均可以采用独立的分段函数的参数。
[0195]
例如,该神经网络模型中的所有激活函数均为分段函数。神经网络模型中的激活函数可以共享相同的分段函数的参数。或者,神经网络模型中的具有激活函数的一层或多层具有独立的分段函数的参数。或者,神经网络模型中的具有激活函数的任一层中的一个或多个通道具有独立的分段函数的参数。独立的分段函数的参数指的是一个分段函数的参数可以独立调整,而不影响神经网络模型中的其他分段函数,也不受神经网络模型中的其他分段函数的参数变化的影响。
[0196]
通过在神经网络模型中同一层的不同通道中使用不同的分段函数的参数,能够在模型的训练过程中针对不同通道调整分段函数的参数,使得不同通道的激活函数与相应通道的适配性更好,进一步提高模型的性能。
[0197]
示例性地,该神经网络模型可以是对原始神经网络模型进行预处理得到的。原始神经网络模型包括激活函数。例如,原始神经网络模型可以为卷积神经网络。
[0198]
对原始神经网络模型进行预处理包括:将原始神经网络模型中的至少一个激活函数替换为分段函数。例如,将原始神经网络模型中的全部激活函数替换为分段函数。
[0199]
在该情况下,训练后得到的神经网络模型中的该至少一个激活函数已被替换为分段函数。
[0200]
若原始神经网络模型的激活函数不包括分段函数,可以将原神经网络模型的至少一个激活函数替换为分段函数,得到步骤s820中的神经网络模型。若原始神经网络模型的激活函数包括分段函数,可以将原始神经网络模型中的激活函数中的至少一个不是分段函数的激活函数替换为分段函数,得到步骤s820中的神经网络模型。
[0201]
示例性地,该神经网络模型或原始神经网络模型可以是用户输入的。
[0202]
可替换地,该神经网络模型或原始神经网络模型可以是在automl的模型结构搜索
过程中,基于采样的模型结构搜索得到的候选神经网络模型。
[0203]
分段函数指的是在其定义域的不同区间内或点处采用不同的表达式表示的函数。相邻的两个区间的公共端点称为分段函数的分界点。或者说,分段函数包括多段定义域不同的函数。该分段函数的定义域为该多段函数的定义域的并集,分段函数的值域为该多段函数的值域的并集。
[0204]
可选地,该至少一个分段函数为分段线性函数(piecewise linear function,pwl)。
[0205]
分段线性函数在其定义域的不同区间内具有不同斜率的线性函数,即分段线性函数在其定义域的每个区间内均为线性函数,该分段线性函数整体为非线性函数。
[0206]
采用分段线性函数的形式可以拟合各种函数形式,相当于为激活函数的搜索过程提供了一个较大的搜索空间,能够提高搜索到的激活函数的精度的上限。而且,相较于分段非线性函数作为激活函数而言,采用分段线性函数作为激活函数,能够提高运算效率,减少时间开销。
[0207]
可选地,该至少一个分段函数至少包括两个分界点。即该分段函数至少被分为三个区间上的三个线性函数。
[0208]
一个分段线性函数可以由多种参数组合定义。通过给参数设置不同的值,即可得到不同的激活函数。
[0209]
例如,一个分段线性函数包括以下参数:n个分界点、n+1个区间上的斜率和n个分界点中任一分界点对应的函数值。n为大于或等于1的整数。
[0210]
n+1个区间上的斜率指的是分段线性函数在n+1个区间上的斜率。
[0211]
一个分段线性函数的定义域基于分界点被划分为多个区间。分段线性函数在多个区间中的每个区间内均为线性函数。也就是说,分段线性函数包括多个区间内的多个线性函数。分段线性函数在该多个区间中的任一区间上的斜率即为该区间内的线性函数的斜率。分界点对应的函数值指的是分界点的值在分段线性函数中对应的函数值。或者说,在该分段线性函数所在的坐标系中,以分界点的值作为横坐标,在分段线性函数中该横坐标对应的纵坐标。
[0212]
然而,在上述参数组合中包括n+1个区间上的斜率,在训练过程中,任一个区间的斜率的更新都可能会对其他多个区间的函数产生影响,降低了训练效率以及训练后的模型性能。
[0213]
本技术实施例提供了一种参数组合方式,通过n个分界点对应的函数值定义分段线性函数在中间n-1个区间上的函数值,一个分界点对应的函数值的变化仅影响该与分界点相邻的两个区间的函数,影响范围较小,能够提高训练效率以及训练后的模型性能。
[0214]
可选地,至少一个分段线性函数包括以下参数中的一个或多个:n个分界点、分段线性函数在定义域最大的区间上的斜率rk、分段线性函数在定义域最小的区间的斜率lk或n个分界点对应的函数值yb。
[0215]
定义域最大的区间和定义域最小的区间也可以称为该多个区间中的两端的区间。n个分界点对应的函数值yb可以表示为一个数组,该数组中元素的数量为n,每个元素表示一个函数值,分别对应一个分界点。
[0216]
可选地,至少一个分段函数包括以下参数中的一个或多个:分界点的数量n、右边
界rb、左边界lb、定义域最大的区间上的斜率rk、定义域最小的区间的斜率lk或n个分界点对应的函数值yb。
[0217]
右边界指的是n个分界点中的最大值,左边界指的是n个分界点中的最小值。
[0218]
可选地,分段函数的分段数为6至18中的任一值。
[0219]
图9示出了一种分段函数的示意图。下面结合图9对上述参数进行说明。图9中的分界点的数量n为9,基于该9个分界点将该分段线性函数的定义域分为10个区间。该10个区间中定义域最大的区间为该坐标系中最右端的子区间,定义域最小的子区间为该坐标系中最左端的子区间。分段线性函数在定义域最大的区间上的斜率rk即分段线性函数在最右端的区间上的斜率rk。分段线性函数在定义域最小的区间上的斜率rk即分段线性函数在最左端的区间上的斜率lk。n个分界点对应的函数值yb为该n个分界点对应的横坐标在分段线性函数中的函数值,即图9中坐标系中的纵坐标的值。
[0220]
示例性地,中间区间的长度可以是相同的。中间区间指的是分段线性函数的多个区间中除了两端的区间之外的区间。
[0221]
根据右边界rb和左边界lb即可确定其余n-1个分界点的值。例如,右边界rb和左边界lb为如图9所示。
[0222]
通过将中间区间的长度设置为相同的长度可以减少参数量,提高运算效率。
[0223]
同时,上述参数组合中仅包括两个斜率值,在后续参数更新过程中,一个分界点对应的函数值的变化仅影响该与分界点相邻的两个区间的函数,影响范围较小,能够提高训练效率以及训练后的模型性能。
[0224]
后文中以上述参数组合为例对方法800进行描述。
[0225]
至少一个分段函数的参数的梯度是基于训练数据执行前向计算得到的损失函数值确定的。
[0226]
在神经网络模型的训练过程中,基于训练数据执行神经网络模型的前向传播,得到损失函数值,进而根据该损失函数值执行反向传播,即计算模型参数的梯度,根据模型参数的梯度调整模型参数。例如,模型参数可以包括模型权重。
[0227]
在步骤s820中,采用上述模型参数的更新方法更新分段函数的多个可训练参数。也就说,将分段函数的多个可训练参数视为神经网络模型的参数,通过反向传播得到更新后的参数。或者说,可以理解为,通过模型权重的更新方法来调整分段函数的多个可训练参数。例如,采用随机梯度下降法更新分段函数的多个可训练参数。
[0228]
下面结合图10对分段函数的前向传播过程进行举例说明,前向传播过程包括步骤s1至步骤s7。
[0229]
s1:判断输入至分段函数的特征x与右边界rb和左边界lb之间的关系。
[0230]
在x<lb的情况下,执行步骤s2;
[0231]
在x>rb的情况下,执行步骤s3;
[0232]
在lb≤x≤rb的情况下,执行步骤s4。
[0233]
应理解,上述关系判断中等号的位置可以根据需要设定。例如,将上述三种情况分为x≤lb、lb<x≤rb和x>rb;再如,将上述三种情况分为x≤lb、lb<x<rb和x≥rb。本技术实施例对此不做限定。
[0234]
s2:分段函数的输出y满足如下公式。
[0235]
y=(x-lb)*lk+yb[0];
[0236]
其中,yb[0]表示数组yb中的第一个分界点对应的函数值。本技术实施例按照从小到大的顺序排列的分界点中,第一个分界点即为左边界lb,第n个分界点即为右边界rb。该n个分界点按照从小到大的顺序排列后分别对应数组yb中的元素yb[0]、yb[1]、yb[2]

yb[n-1]。
[0237]
s3:分段函数的输出y满足如下公式。
[0238]
y=(x-rb)*rk+yb[n-1];
[0239]
其中,yb[n-1]表示数组yb中的第n个分界点对应的函数值,第n个分界点即为右边界rb。
[0240]
s4:计算中间区间的长度。
[0241]
中间区间的长度d满足如下公式。
[0242][0243]
在该情况下,中间区间的长度是相同的。
[0244]
s5:计算x所属的中间区间。
[0245]
x所属的中间区间的编号i满足如下公式。
[0246][0247]
其中,floor()表示floor函数,即向下取整函数,用于计算不大于给定值的最大整数。i=0表示中间区间中的第一个中间区间,即最左侧的中间区间。随着i的递增,以此类推。
[0248]
s6:计算x所属区间的左端点和该区间的斜率。
[0249]
x所属区间的左端点l满足如下公式。
[0250]
l=lb+i*d;
[0251]
x所属区间的斜率k满足如下公式。
[0252][0253]
yb[i]表示第i+1个分界点对应的函数值,yb[i+1]表示第i+2个分界点对应的函数值。第i+1个分界点即为x所属区间的左端点,第i+2个分界点即为x所属区间的右端点。
[0254]
s7:分段函数的输出y满足如下公式。
[0255]
y=(x-l)*k+yb[i];
[0256]
在神经网络模型的训练过程中,每次迭代均可以按照图10所示的方式执行前向传播。每次迭代的前向传播过程中的分段函数的参数为上一次迭代后调整后的分段函数的参数。
[0257]
应理解,以上仅为示意,还可以通过其他方式执行前向传播过程。此外。若通过其他参数组合的方式定义分段函数,还可以根据设定的参数组合相应地调整前向传播过程。
[0258]
该至少一个分段函数的多个可训练参数可以为该至少一个分段函数的参数的部分或全部。
[0259]
也就是说,可以将分段函数中的一部分参数作为超参数,在训练过程中不进行调
整,另一部分参数随着模型训练而不断更新。
[0260]
可选地,至少一个分段函数中的多个可训练参数包括:右边界、左边界、定义域最大的区间上的斜率、定义域最小的区间的斜率或分界点对应的函数值。
[0261]
将分界点的数量n作为超参数,在训练过程中不更新分界点的数量,更新分段函数的其他参数。
[0262]
分界点的数量决定了分段函数的参数的数量,在训练过程中不更新分界点的数量,能够保证分段函数的参数的数量不变,降低了分段函数更新的复杂度,保证了模型训练的稳定性。
[0263]
根据本技术实施例的方案,将该至少一个分段函数作为激活函数,通过调整该至少一个分段函数中的多个可训练参数可以拟合出多种函数形式,即激活函数的搜索空间更大,有利于得到更优的激活函数。同时,在模型的训练过程中,通过参数梯度更新分段函数的多个可训练参数,降低了运行开销,提高了激活函数的构建效率以及模型的训练效率,从而能够针对不同的模型实现激活函数的搜索,得到适合不同模型的激活函数,提高了模型的性能。
[0264]
该至少一个分段函数的初始化形式可以根据需要设定。
[0265]
也就是说,在第一次迭代之前,可以将该至少一个分段函数的参数根据需要进行初始化,得到该至少一个分段函数的参数的初始值。
[0266]
示例性地,至少一个分段函数的初始化形式可以是随机设定的。
[0267]
也就是说,在第一次迭代之前,可以将分段函数的参数进行随机初始化。
[0268]
示例性地,至少一个分段函数的初始化形式可以为relu函数。例如,如图11所示的relu函数。
[0269]
在第一次迭代之前将分段函数的参数按照relu函数进行初始化,使分段函数与relu函数在坐标轴上重合。
[0270]
其中,右边界rb的初始值和左边界lb的初始值可以是任意值。lk设置为0,rk设置为1。根据relu函数设置yb,以使分段函数和relu函数相同,即二者的图像在坐标轴上重合。
[0271]
relu函数是目前广泛应用的激活函数之一,相较于其他通用的激活函数而言,采用relu函数作为激活函数的模型的性能更好,训练效率更高。因此,将分段函数的参数按照relu函数进行初始化,能够使激活函数具备较好的搜索起点,在此基础上根据分段函数的参数有利于提高模型的性能及训练效率。
[0272]
或者,至少一个分段函数的初始化形式可以为其他函数形式。
[0273]
需要说明的是,当神经网络模型中包括两个及两个以上的分段函数时,该两个及两个以上的分段函数的初始化形式可以相同,也可以不同。
[0274]
可选地,对神经网络模型进行训练的训练过程包括第一阶段和第二阶段,所述第一阶段在所述第二阶段之前执行。在该情况下,步骤s820包括:
[0275]
在第二阶段中,根据至少一个分段函数中的多个可训练参数的梯度更新至少一个分段函数的多个可训练参数。
[0276]
其中,至少一个分段函数中的右边界和左边界在第二阶段的初始值是根据第一阶段中输入至至少一个分段函数的特征的分布情况确定的。
[0277]
在第一阶段中统计输入至该至少一个分段函数的特征的分布情况,进而根据第一
阶段统计的特征的分布情况重新设定该至少一个分段函数的右边界的值和该至少一个分段函数的左边界的值。将重新设定的右边界的值作为该至少一个分段函数的右边界在第二阶段中的初始值,将重新设定的左边界的值作为该至少一个分段函数的左边界在第二阶段中的初始值。该至少一个分段函数的其他参数在第二阶段的初始值可以为该至少一个分段函数的其他参数在第一阶段结束时的值。然后执行第二阶段的训练,在第二阶段的迭代过程中基于该至少一个分段函数的多个可训练参数的梯度更新该多个可训练参数。
[0278]
对于该至少一个分段函数中的一个分段函数而言,其右边界和左边界在第二阶段的初始值是根据第一阶段中输入至该分段函数的特征的分布情况确定的。
[0279]
在第一阶段中,该至少一个分段函数的多个可训练参数保持不变。
[0280]
在第一阶段的迭代过程中固定该至少一个分段函数的参数,并统计输入至该至少一个分段函数的特征的分布情况。
[0281]
在第一阶段固定分段函数的参数,避免分段函数的参数变化对输入特征的分布情况产生影响,能够得到更准确的输入特征的分布情况,有利于之后分段函数的参数的调整。
[0282]
第一阶段和第二阶段的划分方式可以根据需要设置。
[0283]
示例性地,根据模型训练的时期(epoch)的数量设置第一阶段和第二阶段。
[0284]
一个epoch可以理解为将训练集中的所有训练数据训练一次的过程。
[0285]
第一阶段可以包括较少的epoch。例如,模型训练共包括100个epoch,第一阶段包括前5个epoch,第二阶段包括95个epoch。
[0286]
可替换地,根据第一阶段中每次迭代过程中输入至该至少一个分段函数的特征的分布情况设置第一阶段和第二阶段。
[0287]
具体地,可以在输入至该至少一个分段函数的特征的分布趋于稳定后,结束第一阶段,开始执行第二阶段。例如,在输入至该至少一个分段函数的特征的分布的变化量小于设定阈值的情况下,结束第一阶段,开始执行第二阶段。
[0288]
可选地,第一阶段中输入至该至少一个分段函数的特征的分布情况由第一阶段的最后一次迭代后得到的特征的预测平均值和特征的预测标准差表示。特征的预测平均值和特征的预测标准差是通过滑动平均法确定的。
[0289]
示例性地,第一阶段中输入至该至少一个分段函数的特征可以视为服从正态分布。在该情况下,可以通过正态分布表示第一阶段中该至少一个分段函数的特征的分布情况,进而确定第二阶段中该至少一个分段函数的参数中的右边界的初始值和左边界的初始值。
[0290]
具体地,可以基于第一阶段中输入至该至少一个分段函数的特征的预测平均值和预测标准差确定输入至该至少一个分段函数的特征的正态分布。
[0291]
特征的预测平均值和特征的预测标准差是通过滑动平均法确定的。即在第一阶段的每次迭代中,基于上一次迭代后得到的特征的预测平均值和特征的平均值确定本次迭代后的特征的预测平均值。在第一阶段的每次迭代中,基于上一次迭代后得到的特征的预测标准差和特征的标准差确定本次迭代后的特征的预测标准差。
[0292]
也就是说第一阶段中,每次迭代过程中均更新输入至该至少一个分段函数的特征的预测平均值和预测标准差,直至第一阶段结束。根据第一阶段的最后一个迭代后得到的特征的预测平均值和预测标准差确定特征的正态分布,即确定第二阶段中该至少一个分段
函数的右边界的初始值和左边界的初始值。
[0293]
例如,对于任一分段函数,特征的预测平均值r
mean
和特征的预测标准差r
std
满足如下公式。
[0294][0295][0296]
其中,r
mean_j
表示第j次迭代后的特征的预测平均值,r
mean_j+1
表示第j+1次迭代后得到的特征的预测平均值,r
std_j
表示第j次迭代后的特征的预测标准差,r
std_j+1
表示第j+1次迭代后得到的特征的预测标准差,j为大于或等于0的整数,j=0时,r
mean_0
表示所述特征的预测平均值的初始值,r
std_0
表示所述特征的预测标准差的初始值,上式表示将特征的预测平均值r
mean_0
和特征的预测标准差r
std_0
初始化为0。mean(x)表示计算特征的平均值,std(x)表示计算特征的标准差,a表示r
mean_j
的权重参数,b表示r
std_j
的权重参数。
[0297]
a为小于1的正数,b为小于1的正数。例如,a为0.9。b为0.9。
[0298]
将第一阶段的最后一个迭代后得到的特征的预测平均值和预测标准差作为特征所服从的正态分布的平均差和方差,根据3sigma原则设定分段函数的右边界和左边界。该重新设定后的分段函数的右边界和左边界即为第二阶段中分段函数的右边界的初始值和左边界初始值。
[0299]
可选地,至少一个分段函数中的右边界rb和左边界lb在第二阶段的初始值满足如下公式。
[0300]
rb=r
mean
+c*r
std

[0301]
lb=r
mean-c*r
std

[0302]
其中,r
mean
表示第一阶段的最后一次迭代后得到的特征的预测平均值;r
std
表示第一阶段的最后一次迭代后得到的特征的预测标准差,c表示参数。c为正数,例如,c为3。
[0303]
对于服从正态分布的变量,68%以上的变量处于距离平均值1个标准差的范围内,95%以上的变量处于距离平均值2个标准差的范围内,99%以上的变量处于距离平均值3个标准差的范围内,将c设置为3可以使输入至分段函数中的特征尽可能落入激活函数的左边界和右边界之间。
[0304]
模型训练初期,输入特征的分布情况变化较大。在本技术实施例中,通过第一阶段统计的输入特征的分布情况调整激活函数的左边界和右边界的值,这样,左边界和右边界能够匹配实际的输入特征的分布,以使输入特征尽可能落入左边界和右边界之间。这样,可以使得激活函数中更多的参数参与训练过程,有效利用分段函数中的多个分段,或者说,能够有效利用训练数据调整激活函数的参数,从而稳定训练过程,有利于提高激活函数的精度,进而提高模型的性能以及训练效率。
[0305]
模型训练结束后可以得到激活函数以及训练好的模型。也就是说,采用方法800既可以得到激活函数,也可以得到训练好的模型。因此,方法800既可以作为一种激活函数的构建方法,用于得到构建好的激活函数,也可以作为一种神经网络模型的训练方法,用于得到训练好的神经网络模型。
[0306]
在一种实现方式中,采用方法800得到的激活函数与训练好的模型是匹配的,能够提高模型的性能。
[0307]
在另一种实现方式中,采用方法800得到的激活函数可以应用于其他模型中,例如,应用于与方法800中的模型结构类似的模型中,这样,可以进一步提高模型的训练效率,同时保证模型的性能。
[0308]
训练好的神经网络模型可以用于执行目标任务。示例性地,目标任务可以为图像处理任务,例如,目标检测,图像分割,实例分割,图像去噪,图像超分辨率等。或者,目标任务可以为语音处理任务,例如,语音识别等。或者,目标任务可以为文本处理任务,例如,文本识别或文本翻译等。
[0309]
在一种实现方式中,步骤s820中的神经网络模型是通过对原始神经网络模型进行预处理得到的。原始神经网络模型包括激活函数。
[0310]
具体地,可以将原始神经网络模型中的至少一个激活函数替换为分段函数,采用方法800对替换后的神经网络模型进行训练,得到构建好的激活函数以及训练好的神经网络模型。
[0311]
示例性地,原始神经网络模型可以是用户输入的神经网络模型。例如,该模型可以人为构建的神经网络模型或者由automl得到的神经网络模型。再如,该模型可以为现有的模型,例如,该模型可以为卷积神经网络模型或resnet18模型。
[0312]
或者,待处理的神经网络模型可以在automl在执行过程中搜索得到的候选神经网络模型。
[0313]
automl在执行过程中,基于采样的方式进行模型结构搜索,得到候选神经网络模型,然后对候选神经网络模型进行训练,重复上述过程,直至得到满足条件的神经网络模型。原始神经网络模型可以为其中的候选神经网络模型。
[0314]
在另一种实现方式中,步骤s820中的神经网络模型的激活函数包括至少一个分段函数。即在该神经网络模型的构建过程中将至少一个激活函数设置为分段函数。
[0315]
示例性地,该模型可以人为构建的神经网络模型或者由automl得到的神经网络模型。
[0316]
进一步地,可以将分界点的数量作为超参数,automl的执行过程中通过搜索超参数的操作即可更新分界点的数量。
[0317]
图12示出了一种神经网络模型的训练方法。图12的方法可以视为方法800的一种具体实现方式,具体描述可以参见前述方法800,为了避免重复,在介绍图12的方法时做适当省略。该方法可以由能够执行神经网络模型训练的装置1200执行。
[0318]
方法1200包括步骤s1210至步骤s1250。
[0319]
s1210,将原始神经网络模型中的激活函数替换为至少一个分段函数。
[0320]
示例性地,可以将原始神经网络模型中的部分或全部激活函数替换为至少一个分段函数。若该至少一个分段函数包括两个及两个以上分段函数,则该多个分段函数的参数可以是部分或全部相互独立的,该多个分段函数也可以共享一组参数。
[0321]
例如,该待处理的神经网络模型可以为resnet18。分段函数可以为如图9所示的pwl形式。替换后的神经网络模型中的每个通道中的分段函数的参数是独立的。
[0322]
示例性地,该原始神经网络模型可以是用户提供的。
[0323]
s1220,将该至少一个分段函数初始化为relu函数。
[0324]
初始化该至少一个分段函数的参数使该至少一个分段函数满足relu函数的形式,得到该至少一个分段函数的参数的初始值。例如,初始化后的分段函数可以如图10所示。
[0325]
其中,分界点的数量作为超参数,不参与训练过程中的参数更新。分界点的数量可以为5-17。也就是说分段函数的分段数为6至18中的任一值。例如,分界点的数量可以为9。
[0326]
右边界rb的初始值和左边界lb的初始值可以是任意值。例如,右边界的初始值为1,左边界的初始值为-1。
[0327]
lk设置为0,rk设置为1。
[0328]
根据relu函数设置yb,以使分段函数和relu函数相同,即二者的图像在坐标轴上重合。
[0329]
步骤s1220中仅以将所有分段函数初始化为relu函数作为示例。
[0330]
可替换地,还可以将该至少一个分段函数中的部分分段函数初始化为relu函数。具体描述可以参见前述方法800中的步骤s820,此处不再赘述。
[0331]
s1230,执行第一阶段的训练。在第一阶段中,该至少一个分段函数的参数保持不变,分别统计输入到该至少一个分段函数中的每个分段函数的特征的分布情况。
[0332]
也就是说,在第一阶段中仅基于训练数据执行模型的权重的训练,该至少一个分段函数的参数保持初始化的状态,也就是在第一阶段该至少一个分段函数的参数始终固定为使该至少一个分段函数形如relu函数的参数。
[0333]
示例性地,训练数据可以是用户提供的。
[0334]
例如,输入每个分段函数的特征的分布情况满足如下公式。
[0335][0336][0337]
具体地,将特征的预测平均值r
mean_0
和特征的预测标准差r
std_0
初始化为0,并在第一阶段的每次迭代中更新预测平均值和预测标准差,第一阶段的最后一次迭代后得到的预测标准差和预测标准差用于指示输入该分段函数的特征的分布情况。
[0338]
示例性地,训练过程包括100个epoch,第一阶段可以包括5个epoch,则第二阶段包括95个epoch。
[0339]
应理解,步骤s1230中仅以该至少一个分段函数相互独立为例进行说明,不对本技术实施例的方案构成限定。具体描述可以参见方法800中的步骤s820。
[0340]
s1240,基于输入到该至少一个分段函数中的每个分段函数的特征的分布情况调整每个分段函数的右边界和左边界。
[0341]
示例性地,每个分段函数的右边界和左边界满足公式。
[0342]
rb=r
mean
+3*r
std

[0343]
lb=r
mean-3*r
std

[0344]
调整后的每个分段函数的右边界和左边界即为第二阶段中每个分段函数的右边界的初始值和左边界的初始值。第二阶段中每个分段函数的其他参数的初始值即为步骤
s1220中初始化后的每个分段函数的参数的值。
[0345]
s1250,执行第二阶段的训练。在第二阶段中,基于该至少一个分段函数的多个可训练参数的梯度更新该至少一个分段函数的多个可训练参数。
[0346]
也就是说,在第二阶段中模型的权重和该至少一个分段函数的多个可训练参数进行更新。例如,采用随机梯度下降法进行更新。
[0347]
步骤s1250中至少一个分段函数的多个可训练参数指的是除了分界点的数量之外的该至少一个分段函数的参数。方法1200中仅以将分界点的数量作为超参数,更新分段函数的其余参数作为示例,还可以设置分段函数的其他参数作为超参数,更新分段函数的其余参数。
[0348]
第二阶段完成后即得到训练好的模型的权重以及对应的激活函数的参数。之后即可部署训练好的模型并用于推理任务。
[0349]
第二阶段完成也可以理解为激活函数的搜索过程结束,得到构建好的激活函数的参数。
[0350]
表1示出了采用本技术实施例中的pwl函数作为激活函数和采用其他函数(relu和swish)作为激活函数的多个模型在imagenet图像分类任务上的效果对比结果。
[0351]
表1
[0352][0353]
其中,model表示用于执行图像分类任务所选取的神经网络模型,包括mobilenetv3模型、resnet18模型和efficientnet-b0模型。
[0354]
搜索开销指的是训练模型所耗费的资源开销,即得到可以用于推理的模型时所耗费的资源开销。搜索开销对比指的是相较于无需搜索激活函数的训练方式进行一次训练所耗费的资源开销。swish的搜索开销是基于无需搜索激活函数的训练方式进行一次训练所耗费的资源开销的300倍以上。本技术的pwl的搜索开销仅为基于无需搜索激活函数的训练方式进行一次训练所耗费的资源开销的1.2倍左右,也就是说本技术的pwl的构建过程无需耗费大量的资源开销。此外,表1中的数值的单位为百分比,用于表示图像分类任务中top-1的准确率。可以看出,在不同的模型中,相较于其他两种激活函数的模型,采用pwl的模型的在分类任务上的准确率均有较大的提升。pwl函数的搜索效率高,同时能显著提升模型的精度。
[0355]
图13的(a)示出了基于方法1300得到的resnet18中的分段函数的形式。图13的(b)示出了现有的激活函数的形式,例如,relu激活函数、swish激活函数、softplus激活函数和mish激活函数。由图13可以看出,相较于现有的激活函数的形式,pwl函数的形式更多样,本技术实施例的方案能够根据不同的模型自适应地得到适合该模型的激活函数。
[0356]
图14示出了本技术实施例提供的数据处理方法1400的示意性流程图,该方法可以
由能够进行数据处理的装置或设备执行,例如,该装置可以是云服务设备,也可以是终端设备,例如,电脑、服务器等运算能力足以用来执行数据处理方法的装置,也可以是由云服务设备和终端设备构成的系统。示例性地,方法1400可以由图3中的执行设备110、图4中的神经网络处理器50或图5中的执行设备310或本地设备执行。
[0357]
例如,方法1400具体可以由如图3所示的执行设备110执行,方法1400中的待处理数据可以是如图3所示的客户设备140给出的输入数据。
[0358]
图14中的数据处理方法1400中使用的目标神经网络模型可以是通过上述图8中的方法构建的。方法1400包括步骤s1410至步骤s1420。方法1400中的具体实现方式可以参照前述方法800,为了避免不必要的重复,下面在介绍方法1400时适当省略重复的描述。
[0359]
s1410,获取待处理数据。待处理数据包括图像数据、语音数据或文本数据等。
[0360]
待处理数据的类型与神经网络模型的任务有关。例如,神经网络模型用于图像处理任务,则该待处理数据可以为图像。具体地,图像处理任务包括图像分类、图像检测、图像分割、图像识别或图像生成等。再如,神经网络模型用于文本处理任务,则该待处理数据可以为文本。具体地,文本处理任务包括文本识别或文本翻译等。再如,神经网络模型用于语音处理任务,则该待处理数据可以为语音数据。具体地,语音处理任务包括语音识别等。本技术实施例对待处理数据的类型不做限定。
[0361]
示例性地,待处理数据为图像,待处理图像可以是终端设备(或者电脑、服务器等其他装置或设备)通过摄像头拍摄到的图像,或者,该待处理图像还可以是从终端设备(或者电脑、服务器等其他装置或设备)内部获得的图像(例如,终端设备的相册中存储的图像,或者终端设备从云端获取的图像),本技术实施例对此并不限定。
[0362]
s1420,采用目标神经网络模型对待处理数据进行处理,得到待处理数据的处理结果。
[0363]
其中,目标神经网络模型基于训练数据对神经网络模型进行训练得到的,神经网络模型的激活函数包括至少一个分段函数,目标神经网络模型的激活函数包括至少一个目标分段函数,目标分段函数是在对神经网络模型进行训练的过程中对分段函数的多个可训练参数进行更新得到的。
[0364]
根据本技术实施例的方案,将至少一个分段函数作为激活函数,通过调整该至少一个分段函数的多个可训练参数可以拟合出多种函数形式,即激活函数的搜索空间更大,有利于得到更优的激活函数。同时,在模型的训练过程中,通过参数梯度更新分段函数的多个可训练参数,降低了运行开销,提高了激活函数的构建效率以及模型的训练效率,从而能够针对具体的模型实现激活函数的搜索,得到适合的激活函数,提高了目标神经网络模型的性能。
[0365]
可选地,至少一个分段函数为分段线性函数,至少一个分段函数的参数包括以下一个或多个:分界点的数量、右边界、左边界、定义域最大的区间上的斜率、定义域最小的区间的斜率或分界点对应的函数值。
[0366]
可选地,对神经网络模型进行训练的训练过程包括第一阶段和第二阶段,第一阶段在第二阶段之前执行,以及目标分段函数是在对神经网络模型进行训练的过程中对分段函数的多个可训练参数进行更新得到的,包括:目标分段函数是在第二阶段中根据分段函数中的多个可训练参数的梯度对分段函数的多个可训练参数进行更新得到的,其中,分段
函数中的右边界和左边界在第二阶段的初始值是根据第一阶段中输入至分段函数的特征的分布情况确定的。
[0367]
可选地,在第一阶段中,至少一个分段函数中的多个可训练参数保持不变。
[0368]
可选地,第一阶段中输入至分段函数的特征的分布情况由第一阶段的最后一次迭代后得到的特征的预测平均值和特征的预测标准差表示,特征的预测平均值和特征的预测标准差是通过滑动平均法确定的。
[0369]
可选地,特征的预测平均值和特征的预测标准差满足以下公式:
[0370][0371]
其中,r
mean_j
表示第j次迭代后得到的特征的预测平均值,r
mean_j+1
表示第j+1次迭代后得到的特征的预测平均值,r
std_j
表示第j次迭代后得到的特征的预测标准差,r
std_j+1
表示第j+1次迭代后得到的特征的预测标准差,j为大于或等于0的整数,j=0时,r
mean_0
表示特征的预测平均值的初始值,r
std_0
表示特征的预测标准差的初始值,r
mean_0
=0,r
std_0
=0;mean(x)表示特征的平均值,std(x)表示特征的标准差,a表示r
mean_j
的权重参数,b表示r
std_j
的权重参数。
[0372]
可选地,至少一个分段函数中的右边界rb在第二阶段的初始值满足如下公式:
[0373]
rb=r
mean
+c*r
std

[0374]
至少一个分段函数中的左边界lb在第二阶段的初始值满足如下公式:
[0375]
lb=r
mean-c*r
std

[0376]
其中,r
mean
表示第一阶段的最后一次迭代后得到的特征的预测平均值;r
std
表示第一阶段的最后一次迭代后得到的特征的预测标准差,c表示参数。
[0377]
可选地,至少一个分段函数中的多个可训练参数包括:右边界、左边界、定义域最大的区间上的斜率、定义域最小的区间的斜率或分界点对应的函数值。
[0378]
可选地,分段函数的分段数为6至18中的任一值。
[0379]
下面结合图15至图18对本技术实施例的装置进行说明。应理解,下面描述的装置能够执行前述本技术实施例的方法,为了避免不必要的重复,下面在介绍本技术实施例的装置时适当省略重复的描述。
[0380]
图15是本技术实施例的神经网络模型的训练装置的示意性框图。图15所示的神经网络模型的训练装置3000包括获取单元3010和处理单元3020。
[0381]
获取单元3010和处理单元3020可以用于执行本技术实施例的神经网络模型的训练方法,具体地,可以用于执行方法800。
[0382]
获取单元3010用于获取训练数据。
[0383]
处理单元3020用于基于训练数据对神经网络模型进行训练,神经网络模型的激活函数包括至少一个分段函数,分段函数包括多个可训练参数;在对神经网络模型进行训练的训练过程中更新至少一个分段函数的多个可训练参数,得到目标神经网络模型。
[0384]
可选地,作为一个实施例,至少一个分段函数为分段线性函数,至少一个分段函数的参数包括以下一个或多个:分界点的数量、右边界、左边界、定义域最大的区间上的斜率、定义域最小的区间的斜率或分界点对应的函数值。
[0385]
可选地,作为一个实施例,对神经网络模型进行训练的训练过程包括第一阶段和第二阶段,第一阶段在第二阶段之前执行,以及处理单元3020具体用于:在第二阶段中,根据至少一个分段函数中的多个可训练参数的梯度更新至少一个分段函数的多个可训练参数;其中,至少一个分段函数中的右边界和左边界在第二阶段的初始值是根据第一阶段中输入至至少一个分段函数的特征的分布情况确定的。
[0386]
可选地,作为一个实施例,在第一阶段中,至少一个分段函数中的多个可训练参数保持不变。
[0387]
可选地,作为一个实施例,第一阶段中输入至至少一个分段函数的特征的分布情况由第一阶段的最后一次迭代后得到的特征的预测平均值和特征的预测标准差表示,特征的预测平均值和特征的预测标准差是通过滑动平均法确定的。
[0388]
可选地,作为一个实施例,特征的预测平均值和特征的预测标准差满足以下公式:
[0389][0390]
其中,r
mean_j
表示第j次迭代后得到的特征的预测平均值,r
mean_j+1
表示第j+1次迭代后得到的特征的预测平均值,r
std_j
表示第j次迭代后得到的特征的预测标准差,r
std_j+1
表示第j+1次迭代后得到的特征的预测标准差,j为大于或等于0的整数,j=0时,r
mean_0
表示特征的预测平均值的初始值,r
std_0
表示特征的预测标准差的初始值,r
mean_0
=0,r
std_0
=0;mean(x)表示特征的平均值,std(x)表示特征的标准差,a表示r
mean_j
的权重参数,b表示r
std_j
的权重参数。
[0391]
可选地,作为一个实施例,至少一个分段函数中的右边界rb在第二阶段的初始值满足如下公式:
[0392]
rb=r
mean
+c*r
std

[0393]
至少一个分段函数中的左边界lb在第二阶段的初始值满足如下公式:
[0394]
lb=r
mean-c*r
std

[0395]
其中,r
mean
表示第一阶段的最后一次迭代后得到的特征的预测平均值;r
std
表示第一阶段的最后一次迭代后得到的特征的预测标准差,c表示参数。
[0396]
可选地,作为一个实施例,至少一个分段函数中的多个可训练参数包括:右边界、左边界、定义域最大的区间上的斜率、定义域最小的区间的斜率或分界点对应的函数值。
[0397]
可选地,作为一个实施例,分段函数的分段数为6至18中的任一值。
[0398]
图16是本技术实施例提供的数据处理装置4000的示意性框图。图16所示的数据处理装置4000包括获取单元4010和处理单元4020。
[0399]
获取单元4010和处理单元4020可以用于执行本技术实施例的数据处理方法,例如,可以用于执行方法1400。
[0400]
获取单元4010用于获取待处理的数据。
[0401]
处理单元4020用于采用目标神经网络模型对待处理的数据进行处理,得到待处理的数据的处理结果。
[0402]
其中,目标神经网络模型是基于训练数据对神经网络模型进行训练得到的,目标神经网络模型的激活函数包括至少一个目标分段函数,神经网络模型的激活函数包括至少一个分段函数,目标分段函数是在对神经网络模型进行训练的过程中对分段函数的多个可
训练参数进行更新得到的。
[0403]
可选地,作为一个实施例,至少一个分段函数为分段线性函数,至少一个分段函数的参数包括以下一个或多个:分界点的数量、右边界、左边界、定义域最大的区间上的斜率、定义域最小的区间的斜率或分界点对应的函数值。
[0404]
可选地,作为一个实施例,对神经网络模型进行训练的训练过程包括第一阶段和第二阶段,第一阶段在第二阶段之前执行,以及目标分段函数是在对神经网络模型进行训练的过程中对分段函数的多个可训练参数进行更新得到的,包括:目标分段函数是在第二阶段中根据分段函数中的多个可训练参数的梯度对分段函数的多个可训练参数进行更新得到的,其中,分段函数中的右边界和左边界在第二阶段的初始值是根据第一阶段中输入至分段函数的特征的分布情况确定的。
[0405]
可选地,作为一个实施例,在第一阶段中,至少一个分段函数中的多个可训练参数保持不变。
[0406]
可选地,作为一个实施例,第一阶段中输入至分段函数的特征的分布情况由第一阶段的最后一次迭代后得到的特征的预测平均值和特征的预测标准差表示,特征的预测平均值和特征的预测标准差是通过滑动平均法确定的。
[0407]
可选地,作为一个实施例,特征的预测平均值和特征的预测标准差满足以下公式:
[0408][0409]
其中,r
mean_j
表示第j次迭代后得到的特征的预测平均值,r
mean_j+1
表示第j+1次迭代后得到的特征的预测平均值,r
std_j
表示第j次迭代后得到的特征的预测标准差,r
std_j+1
表示第j+1次迭代后得到的特征的预测标准差,j为大于或等于0的整数,j=0时,r
mean_0
表示特征的预测平均值的初始值,r
std_0
表示特征的预测标准差的初始值,r
mean_0
=0,r
std_0
=0;mean(x)表示特征的平均值,std(x)表示特征的标准差,a表示r
mean_j
的权重参数,b表示r
std_j
的权重参数。
[0410]
可选地,作为一个实施例,至少一个分段函数中的右边界rb在第二阶段的初始值满足如下公式:
[0411]
rb=r
mean
+c*r
std

[0412]
至少一个分段函数中的左边界lb在第二阶段的初始值满足如下公式:
[0413]
lb=r
mean-c*r
std

[0414]
其中,r
mean
表示第一阶段的最后一次迭代后得到的特征的预测平均值;r
std
表示第一阶段的最后一次迭代后得到的特征的预测标准差,c表示参数。
[0415]
可选地,作为一个实施例,至少一个分段函数中的多个可训练参数包括:右边界、左边界、定义域最大的区间上的斜率、定义域最小的区间的斜率或分界点对应的函数值。
[0416]
可选地,作为一个实施例,分段函数的分段数为6至18中的任一值。
[0417]
需要说明的是,上述训练装置3000以及装置4000以功能单元的形式体现。这里的术语“单元”可以通过软件和/或硬件形式实现,对此不作具体限定。
[0418]
例如,“单元”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(application specific integrated circuit,asic)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处
理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
[0419]
因此,在本技术的实施例中描述的各示例的单元,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0420]
图17是本技术实施例提供的神经网络模型的训练装置的硬件结构示意图。图17所示的神经网络模型的训练装置5000(该装置5000具体可以是一种计算机设备)包括存储器5001、处理器5002、通信接口5003以及总线5004。其中,存储器5001、处理器5002、通信接口5003通过总线5004实现彼此之间的通信连接。
[0421]
存储器5001可以是只读存储器(read only memory,rom),静态存储设备,动态存储设备或者随机存取存储器(random access memory,ram)。存储器5001可以存储程序,当存储器5001中存储的程序被处理器5002执行时,处理器5002用于执行本技术实施例的神经网络模型的训练方法的各个步骤。具体地,处理器5002可以执行上文中图8所示的方法中的步骤s820。
[0422]
处理器5002可以采用通用的中央处理器(central processing unit,cpu),微处理器,应用专用集成电路(application specific integrated circuit,asic),图形处理器(graphics processing unit,gpu)或者一个或多个集成电路,用于执行相关程序,以实现本技术方法实施例的神经网络模型的训练方法。
[0423]
处理器5002还可以是一种集成电路芯片,具有信号的处理能力,例如,可以是图4所示的芯片。在实现过程中,本技术的神经网络模型的训练方法的各个步骤可以通过处理器5002中的硬件的集成逻辑电路或者软件形式的指令完成。
[0424]
上述处理器5002还可以是通用处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器5001,处理器5002读取存储器5001中的信息,结合其硬件完成图15所示的训练装置中包括的单元所需执行的功能,或者,执行本技术方法实施例的图8所示的神经网络模型的训练方法。
[0425]
通信接口5003使用例如但不限于收发器一类的收发装置,来实现装置5000与其他设备或通信网络之间的通信。例如,可以通过通信接口5003获取训练数据。
[0426]
总线5004可包括在装置5000各个部件(例如,存储器5001、处理器5002、通信接口5003)之间传送信息的通路。
[0427]
图18是本技术实施例的数据处理装置的硬件结构示意图。图18所示的数据处理装置6000包括存储器6001、处理器6002、通信接口6003以及总线6004。其中,存储器6001、处理器6002、通信接口6003通过总线6004实现彼此之间的通信连接。
[0428]
存储器6001可以是rom,静态存储设备和ram。存储器6001可以存储程序,当存储器
6001中存储的程序被处理器6002执行时,处理器6002和通信接口6003用于执行本技术实施例的数据处理方法的各个步骤。具体地,处理器6002可以执行上文中图14所示的方法中的步骤s1420
[0429]
处理器6002可以采用通用的,cpu,微处理器,asic,gpu或者一个或多个集成电路,用于执行相关程序,以实现本技术实施例的数据处理装置中的单元所需执行的功能,或者执行本技术方法实施例的数据处理方法。
[0430]
处理器6002还可以是一种集成电路芯片,具有信号的处理能力,例如,可以是图4所示的芯片。在实现过程中,本技术实施例的数据处理方法的各个步骤可以通过处理器6002中的硬件的集成逻辑电路或者软件形式的指令完成。
[0431]
上述处理器6002还可以是通用处理器、dsp、asic、fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器6001,处理器6002读取存储器6001中的信息,结合其硬件完成本技术实施例的数据处理装置中包括的单元所需执行的功能,或者执行本技术方法实施例的数据处理方法。
[0432]
通信接口6003使用例如但不限于收发器一类的收发装置,来实现装置6000与其他设备或通信网络之间的通信。例如,可以通过通信接口6003获取待处理的数据。
[0433]
总线6004可包括在装置6000各个部件(例如,存储器6001、处理器6002、通信接口6003)之间传送信息的通路。
[0434]
应注意,尽管上述装置5000和装置6000仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,装置5000和装置6000还可以包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,装置5000和装置6000还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,装置5000和装置6000也可仅仅包括实现本技术实施例所必须的器件,而不必包括图17和图18中所示的全部器件。
[0435]
应理解,本技术实施例中的处理器可以为中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0436]
还应理解,本技术实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高
速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,ram)可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0437]
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质。半导体介质可以是固态硬盘。
[0438]
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
[0439]
本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
[0440]
应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0441]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0442]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0443]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或
讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0444]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0445]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0446]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0447]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1