CN105184367A - 深度神经网络的模型参数训练方法及系统 - Google Patents
深度神经网络的模型参数训练方法及系统 Download PDFInfo
- Publication number
- CN105184367A CN105184367A CN201410255853.XA CN201410255853A CN105184367A CN 105184367 A CN105184367 A CN 105184367A CN 201410255853 A CN201410255853 A CN 201410255853A CN 105184367 A CN105184367 A CN 105184367A
- Authority
- CN
- China
- Prior art keywords
- model parameter
- thread
- sub
- training
- model
- 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.)
- Granted
Links
Abstract
本发明公开了一种深度神经网络的模型参数训练方法及系统,其中方法包括主线程获取初始化模型参数,并将初始化模型参数备份至各子线程;主线程在接收到任意一个子线程根据自己的训练数据独立运算得到的累计统计量后,根据累计统计量更新主线程保存的模型参数,并将更新后的模型参数发送给子线程,以使子线程更新自己保存的模型参数。本发明提高了模型参数的训练效率;使得系统鲁棒性强,在多个子线程中的一个或者几个无法工作的情况下仍然能够完成模型参数的训练;子线程分别独立地与主线程进行信息交互,提高了GPU的利用率。
Description
技术领域
本发明涉及模式分类领域,尤其涉及一种深度神经网络的模型参数训练方法及系统。
背景技术
在基于数据统计的模式分类系统中,通常选择合适的模型来描述所述模式的概率分布,如用高斯混合模型来表述符合多高斯分布的模式的概率分布函数等。一般来说模式识别系统由模型参数训练和应用分类两个阶段构成,在模型参数训练阶段利用收集的标注训练数据对所述模型进行训练,得到模型参数,如高斯混合模型的均值、方差等;随后在分类阶段,基于训练得到的模型预测待分类数据的类别。
一般来说,模型拓扑结构越复杂,模型参数越多,则其对模式的模拟效果越精确。作为模式分类领域中功能非常强大的分类器,神经网络一直是研究的热点内容之一。而近年来随着计算机计算能力的不断提升,结构更为复杂的深度神经网络技术得以发展,其中以深度可信神经网络为代表的一些利用深度神经网络的技术方案在语音和图像识别等领域中取得了显著的性能提升。
复杂模型提高了模型的模拟精度,但相应的其模型参数规模往往过于庞大,导致模型训练过程非常缓慢,无法满足系统产品应用需求。如在语音识别应用中训练数据通常是几千小时甚至更多的语音数据,在这些数据基础上训练一个正常规模的深度神经网络往往需要长达几个月甚至一年的时间,这对于产品的更新来说时间长到完全无法接受。尽管模式分类领域存在训练效率优化算法,如多台机器并行训练或者采用单GPU(GraphicProcessingUnit,图形处理器)进行训练等等,但是对于复杂模型如深度神经网络训练来说,优化算法的训练效率仍然无法满足产品级应用的需求。
发明内容
本发明实施例提供一种深度神经网络的模型参数训练方法及系统,以提高深度神经网络训练效率。
本发明的技术方案为:
一种深度神经网络的模型参数训练方法,包括:
主线程获取初始化模型参数,并将所述初始化模型参数备份至各子线程;
主线程在接收到任意一个子线程根据自己的训练数据独立运算得到的累计统计量后,根据所述累计统计量更新主线程保存的模型参数,并将更新后的模型参数发送给所述子线程,以使所述子线程更新自己保存的模型参数。
优选的是,所述子线程根据自己的训练数据独立运算包括:
所述子线程获取自己的训练数据,根据所述训练数据和所述模型参数计算统计量和累计统计量,并根据所述统计量更新自己保存的模型参数,直到满足系统更新条件;
在满足系统更新条件后,所述子线程向主线程发送更新请求,所述更新请求中包含所述子线程独立运算得到的累计统计量;
所述子线程每隔设定时间判断是否收到主线程发送的针对该子线程的更新响应,直到收到所述更新响应后,根据所述更新响应中的模型参数更新自己保存的模型参数。
优选的是,所述方法还包括:
所述子线程根据所述更新响应中的模型参数更新自己保存的模型参数后,将自己记录的模型参数的更新次数清零。
优选的是,所述系统更新条件为所述子线程自己记录的模型参数的更新次数超过设定阈值,或者所有训练数据都已参与了训练。
优选的是,所述系统更新条件为所述子线程自己记录的模型参数的更新次数超过设定阈值,并且所述设定阈值次数的累计统计量的二范数的值大于设定门限,或者所有训练数据都已参与了训练。
一种深度神经网络的模型参数训练系统,包括主线程模块和至少一个子线程模块,其中:
所述主线程模块包括:
初始化单元,用于获取初始化模型参数,并将所述初始化模型参数备份至各子线程模块;
系统模型存储单元,用于保存所述初始化模型参数及更新后的模型参数;
系统交互单元,用于接收任意一个子线程模块根据自己的训练数据独立运算得到的累计统计量;
系统模型更新单元,用于在所述系统交互单元接收到所述累计统计量后,根据所述累计统计量更新所述系统模型存储单元保存的模型参数;
所述系统交互单元,还用于将所述系统模型更新单元更新后的模型参数发送给所述子线程模块,以使所述子线程模块更新自己保存的模型参数。
优选的是,所述子线程模块包括:
线程模型存储单元,用于保存所述初始化模型参数及更新后的模型参数;
训练数据获取单元,用于获取自己的训练数据;
计算单元,用于根据所述训练数据和所述线程模型存储单元保存的模型参数计算统计量和累计统计量;
线程模型更新单元,用于根据所述计算单元计算得到的统计量更新所述线程模型存储单元保存的模型参数;
判断单元,用于在所述线程模型更新单元更新所述模型参数后,判断是否满足系统更新条件;如果满足,则通知线程交互单元向主线程模块发送更新请求,所述更新请求中包含所述子线程模块独立运算得到的累计统计量;
所述线程交互单元,还用于在向主线程模块发送更新请求后每隔设定时间判断是否收到主线程模块发送的针对所述子线程模块的更新响应,直到收到所述更新响应后,将所述更新响应中包含的模型参数传送给所述线程模型更新单元;
所述线程模型更新单元,还用于根据所述线程交互单元传送的模型参数更新所述线程模型存储单元保存的模型参数。
优选的是,所述子线程模块还包括:
更新次数记录单元,用于在所述线程模型更新单元根据所述更新响应中的模型参数更新自己保存的模型参数后,将自己记录的模型参数的更新次数清零。
优选的是,所述系统更新条件为所述子线程自己记录的模型参数的更新次数超过设定阈值,或者所有训练数据都已参与了训练。
优选的是,所述系统更新条件为所述子线程自己记录的模型参数的更新次数超过设定阈值,并且所述设定阈值次数的累计统计量的二范数的值大于设定门限,或者所有训练数据都已参与了训练。
本发明的有益效果在于,应用本发明实施例深度神经网络的模型参数训练方法及系统:
(1)任意一个子线程独立地在更新若干次各自保存的模型参数后,与主线程进行模型参数的交互,提高了模型参数的训练效率;鲁棒性强,在多个子线程中的一个或者几个无法工作的情况下,应用本发明实施例的训练方法及系统仍然能够完成模型参数的训练;
(2)子线程分别独立地与主线程进行信息交互,提高了GPU的利用率,使用同等数目的GPU,应用本发明实施例的训练方法及系统能够有更高的复杂模型训练效率和GPU利用率。
附图说明
图1示出了本发明实施例深度神经网络的模型参数训练方法的流程图;
图2示出了本发明实施例中子线程根据自己的训练数据独立运算的流程图;
图3示出了本发明实施例深度神经网络的模型参数训练系统中主线程模块的结构示意图;
图4示出了本发明实施例深度神经网络的模型参数训练系统中子线程模块的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
对于复杂模型来说,通常模型的概率分布无法用简单的分布如高斯分布来描述,因此也就无法直接求出模型的参数。一般来说,复杂模型参数训练通常采用迭代更新优化的方法。首先选取模型参数的初始值,在每次迭代中首先获取当前模型参数的值,随后计算所述训练数据相应于所述模型参数的数学统计量,最后根据所述统计量对所述模型参数进行更新,获取更新的模型参数。其具体步骤包括:
步骤a1:获取当前的模型参数值;
步骤a2:读取当次参与训练的样本或样本集合;
具体地,系统可以根据单个样本训练,也可以将固定个数的样本构成数据批,以批为单位进行训练;
步骤a3:计算当次训练样本或样本集合Xk相应于当前模型参数的统计量;
具体地,假设当前模型参数表示为θk,统计量表示为Δθk,则统计量可以表示为当前模型参数和当前训练样本集合的函数即Δθk=F(θk,Xk)。如对深度神经网络,其统计量通常统计为当次训练数据的目标函数相应于当前模型参数的偏导,具体表示为其中R为当次训练数据批的样本个数,ft为训练样本t对应的误差值,计算公式为ft=(yt-z(θk))2表示均方误差,yt是训练样本t的标注,z(θk)是根据当前模型参数计算得到的模型输出值。
步骤a4:根据所述统计量更新模型参数。
具体地,更新后的模型参数为θk+1,其当前模型参数θk,及当前统计量Δθk的函数,满足θk+1=G(θk,Δθk),即θk+1=G(θk,Δθk)=G(θk,F(θk,Xk))。显然更新后的模型参数是当前模型参数和训练数据集合的函数,对深度神经网络模型一般有其中η表示模型参数的学习速度。
需要说明的是,上述模型参数训练方法可以采用单线程控制方法实现,也可以采用多线程控制方法实现。在单线程控制模式下,系统由单线程完成训练样本的统计量估算并据此对模型参数进行更新。而在多线程控制下,系统一般由多个子线程分别独立统计各自分配的训练数据的统计量,并在所有统计量汇总后对主线程中的模型参数进行更新。也就是说,在多线程训练模式下每个子线程的存储空间即显存中存放有一份线程模型参数。模型更新时读取训练数据到内存中,根据子线程的个数N将读取到的训练数据分成N等份后分别传输到这些子线程各自的显存中,接着每个子线程根据各自的部分训练数据独立的进行相应的运算得到各自的数据统计量,等所有的子线程全部完成了统计量分析后,这些统计量被汇总并完成模型参数更新操作。
在多线程模型更新系统中,具体的训练方法包括以下步骤:
步骤b1:主线程获取模型初始化参数;
步骤b2:主线程将所述模型参数备份至各子线程,使得各子线程保有一份模型参数;步骤b3:主线程获取所有子线程独立运算的训练数据统计量;
步骤b4:主线程累计各子线程的统计量得到总统计量;
步骤b5:主线程根据所述总统计量更新主线程中的模型参数,然后转入步骤b2,将下一批训练数据及更新后的主线程中的模型参数传送至各子线程,以使各子线程开始下一次。
在上述过程中,各子线程独立计算当次训练数据相应于当前模型参数的统计量。主线程需要获取到所述子线程的统计量后才会进行模型参数更新。各子线程运算时可以采用常规的CPU运算器,也可以采用运算效率更高的GPU运算,通常GPU进行浮点矩阵运算能够带来10倍以上的效率提升。
综上,在传统模型训练方式下,不管是单线程控制还是多线程控制,系统在对模型进行一次更新时,所获取的更新统计量都是依赖于当前模型参数,且需要在获取训练数据所有的统计量后才能完成模型参数的一次更新。在这种模式下,多线程的训练模式无法发挥多倍运算效率的提升,存在很多不足之处,具体为:
第一:对模型参数训练效率提升幅度有限
现有方案的数据交互过于频繁,造成运算资源的浪费。系统在每一次模型参数更新过程中都需要进行统计量和更新的模型参数在不同子线程之间的传输,因此会增加相当多的数据传输时间开销,且子线程数量与这部分时间开销呈线性关系。此外,由于现有方案中每一批训练数据量的大小是不变的,随着GPU的数量的增加,统计量计算部分节省的时间越来越少,当GPU达到一定数量时,增加的数据传输时间开销就会大于并行计算带来的时间节流,模型参数的训练效率就不会再提升。在实际任务中为了保证识别性能,数据批的大小不能很大,因此GPU数目通常在2或者3时就已经饱和了,训练效率的提升也就很有限了,通常只有相比单块GPU不到一倍的效率提升。
第二:现有方案的稳定性较差
现有系统对模型参数的更新只有在所有子线程都完成了各自统计量计算后才会开始,因此,一旦其中的某一子线程的运算速度相比其他子线程而言慢很多,其他较快的子线程很大一部分时间都被用来等待,非常影响整个训练流程的效率,更有甚者如果某一子线程因为一些突发事件的影响而停止了工作,整个训练过程便会一致处于等待的僵死状态。
为了尽可能发挥多线程运算的优势,使模型参数训练效率基本上随着GPU的数目的提升而线性的提升,同时也能够规避单个或部分子线程异常对整个模型参数训练过程的稳定性带来的影响,本发明实施例提出了一种新的、高效的深度神经网络的模型参数训练方法及系统。
如图1所示,是本发明实施例深度神经网络的模型参数训练方法的流程图,包括以下步骤:
步骤101:主线程获取初始化模型参数,并将所述初始化模型参数备份至各子线程。
具体地,在初始状态下,各子线程中保存的模型参数均为所述初始化模型参数。
步骤102:主线程在接收到任意一个子线程根据自己的训练数据独立运算得到的累计统计量后,根据所述累计统计量更新主线程保存的模型参数。
在本发明实施例中,可以根据应用需要,设置一个或多个子线程,各子线程根据自己的训练数据独立运算,比如子线程将N次训练的N个统计量进行累加,并将得到的累计统计量发送给主线程。其中,N表示与主线程进行信息交互的子线程累计的模型参数的更新次数。主线程在接收到任意一个子线程传送过来的累计统计量后对自己保存的模型参数进行更新操作。
比如,主线程根据接收到的累计统计量并依据更新公式更新主线程自己保存的模型参数,上述更新公式中,表示主线程更新的模型参数,表示主线程当前的模型参数,表示主线程从子线程处获取到的累计统计量,表示主线程模型参数的学习速度。这里,对于深度神经网络模型来说其中表示子线程独立进行第i次更新时的统计量。
步骤103:所述主线程将更新后的模型参数发送给所述子线程,以使所述子线程更新自己保存的模型参数。
具体地,在所述主线程完成自己模型参数的更新后,将更新后的模型参数发送给与主线程进行信息交互的子线程,该子线程将自己当前保存的模型参数替换为所述主线程发送过来的更新后的模型参数。
本实施例所述的深度神经网络的模型参数训练方法明显不同于传统的深度神经网络的模型参数训练方法,具体地:在传统训练方法中,更新公式中的累计统计量满足其中t表示第t个样本,R表示当次更新包含的样本总数,由上述累计统计量的计算公式可知,传统训练方法中,用于更新主线程保存的模型参数的累计统计量始终是在主线程当前模型参数的基础上计算得到的,而在本实施例的训练方法中,主线程依赖子线程的累计统计量进行自身模型参数的更新,并且在大多数情况下,所述子线程每次更新前的模型参数不同,即所述子线程的统计量对应的模型参数与主线程当前要更新的模型参数已经完全不相同,因此,本实施例所述的训练方法和传统的训练方法中针对主线程模型参数的更新方式是完全不同的。
如图2所示,是本发明实施例中子线程根据自己的训练数据独立运算的流程图,所述子线程根据自己的训练数据独立运算包括以下步骤:
步骤201:所述子线程获取自己的训练数据。
具体地,可以将深度神经网络的所有训练数据存储在指定的存储空间中,所述子线程从该存储空间中获取所需的训练数据,其中训练数据可以是以单个样本为处理单元的,也可以是以数据批为基本单元的;另外,各子线程每次从存储空间中获取的数据批包含的样本个数可以是恒定的,也可以不是恒定的。在本发明的一优选的实施例中,每个子线程每次获取的数据批包含的训练样本个数是一定的,比如,每个数据批包含1000个训练样本。子线程选择每次利用数据批更新自己保存的模型参数的方式,相比每次利用单个训练样本更新自己保存的模型参数的方式,能够在不损失最终性能的情况下极大地提高训练速度。
步骤202:所述子线程根据所述训练数据和所述模型参数计算统计量和累计统计量。
具体地,每个子线程根据自己的训练数据和模型参数独立地执行统计量和累计统计量的计算,其中统计量的计算公式为累计统计量的计算公式为其中,R为当次训练数据批的样本个数,ft sub为该子线程训练样本t对应的误差值,为当前子线程中保存的模型参数。
在传统算法中,模型参数更新需要计算当前训练数据对应的统计量其中ft为当前训练数据对应的误差值,该误差值ft为均方误差,具体的计算公式为ft=(yt-z(θk))2,式中yt是当前训练数据的标注,z(θk)是根据当前模型参数计算得到的模型输出值。
而在本发明实施例中,均方误差ft sub的计算公式为 是当前子线程中保存的模型参数,跟主线程中参数不同;是根据当前子线程模型参数计算得到的模型输出值。
步骤203:所述子线程根据所述统计量更新自己保存的模型参数。
具体公式为其中,表示子线程保存的更新后的模型参数,表示子线程当前保存的模型参数,表示子线程模型参数的学习速度,表示子线程保存的当前模型参数对应的统计量。
步骤204:所述子线程判断是否满足系统更新条件;如果满足,则执行步骤205;否则,返回步骤201。
具体地,所述系统更新条件的设置方式将在下文中进行详细地阐述。在满足所述系统更新条件之前,所述子线程循环顺序执行以下动作:获取训练数据、计算统计量和更新自己保存的模型参数。当满足所述系统更新条件后,执行步骤205,子线程向主线程发送更新请求,请求与主线程进行信息交互。
步骤205:在满足系统更新条件后,所述子线程向主线程发送更新请求,所述更新请求中包含所述子线程独立运算得到的累计统计量。
步骤206:所述子线程每隔设定时间判断是否收到主线程发送的针对所述子线程的更新响应,直到收到所述更新响应为止。
步骤207:所述子线程在收到所述更新响应后,根据所述更新响应中的模型参数更新自己保存的模型参数。
具体地,由于主线程一次仅与一个子线程进行信息交互,所以主线程与子线程之间的交互是阻塞式的,从而当同时有两个或两个以上的子线程向主线程发送更新请求时,主线程需要在这些发送更新请求的子线程中选择与该主线程进行信息交互的子线程,当主线程选定将与其进行信息交互的子线程后,主线程发出针对该子线程的更新响应,所述更新响应中包括主线程当前的模型参数。
在本发明实施例中,各子线程在向主线程发送更新请求后,会每隔设定时间判断是否收到主线程发送的针对该子线程的更新响应,直到收到更新响应为止,而其余请求与主线程进行信息交互的子线程继续读取下一批训练数据开始下一轮的训练。所述子线程根据所述更新响应中的模型参数更新自己保存的模型参数,之后读取下一批训练数据开始下一轮训练。特别地,所述设定时间优选为1ms。在本发明的一优选的实施例中,所述子线程不会一直等待接收所述更新响应,而是在等待接收所述更新响应的累计时间超过设定的时间限值(如1000ms)的情况下,认为出现了网络异常,所述子线程退出由各个子线程组成的子线程组,不再参与深度神经网络的训练任务。
在有多个子线程的情况下,可以通过在更新请求及更新响应中携带一个变量,利用该变量的值来确定是哪个子线程发送的更新请求,以及主线程发送的更新响应是对应哪个子线程的。
值得说明的是,由于子线程会持续判断是否收到了所述更新响应,而且只有在收到更新响应后才会获取下一批数据,因此在实际出现网络通讯故障导致信息中断或传输延迟的情况下,也不会影响后续主线程与其它子线程之间的信息交互,对整个深度神经网络的迭代训练结果不会产生影响。
在本发明的一优选的实施例中,所述子线程根据所述更新响应中的模型参数更新自己保存的模型参数后,将自己记录的模型参数的更新次数清零,所述子线程从0开始重新累加所述累计统计量,从而所述子线程下一次请求与主线程进行信息交互时发送的更新请求中包含的累计统计量为其中N为该子线程上次完成与主线程进行信息交互以后到目前为止总共经历的模型参数的更新次数。
在本发明的一优选的实施例中,步骤204中涉及的系统更新条件优选为:所述子线程自己记录的模型参数的更新次数N超过设定阈值P,或者所有训练数据都已参与了训练。当满足上述任意一个条件时,子线程允许向主线程发送更新请求。
具体地,如果子线程自己记录的模型参数的更新次数N小于等于设定阈值P,并且所述存储空间中还有训练数据未参与训练,则返回到步骤201,子线程获取下一批训练数据继续进行子线程自己保存的模型参数的训练,直到满足更新次数N超过设定阈值P(比如3),或者所有训练数据都已参与了训练为止。
在本发明的另一优选的实施例中,步骤204中涉及的系统更新条件优选为:所述子线程自己记录的模型参数的更新次数N超过设定阈值P,并且所述设定阈值P次数的累计统计量的二范数的值大于设定门限T,或者所有训练数据没有了,进行更新。
具体地,如果子线程自己记录的模型参数的更新次数N小于等于设定阈值P,或者所述设定阈值P次数的累计统计量的二范数的值小于等于设定门限T,并且所述存储空间中还有训练数据未参与训练,则返回到步骤201,子线程获取下一批训练数据继续进行子线程自己保存的模型参数的训练,直到满足更新次数N超过设定阈值P,并且所述设定阈值P次数的累计统计量的二范数的值大于设定门限T,或者所有训练数据都已参与了训练为止。这里,所述设定阈值P次数的累计统计量的二范数,等于P个累计统计量的平方和的平方根。
在上述两个关于设定系统更新条件的实施例中,所述设定阈值P的大小决定着子线程与主线程信息交互次数,合理设定阈值P的值,可以在系统的最终性能基本不受影响的情况下,尽可能地减少子线程与主线程之间的信息交互次数,从而减少整个模型的训练时间。
可见,应用本发明实施例深度神经网络的模型参数训练方法:
(1)任意一个子线程独立地在更新若干次各自保存的模型参数后,与主线程进行模型参数的交互,提高了模型参数的训练效率;鲁棒性强,在多个子线程中的一个或者几个无法工作的情况下,应用本发明实施例的训练方法仍然能够完成模型参数的训练;
(2)子线程分别独立地与主线程进行信息交互,提高了GPU的利用率,使用同等数目的GPU,应用本发明实施例的训练方法能够有更高的复杂模型训练效率和GPU利用率。
相应地,本发明实施例还提供一种深度神经网络的模型参数训练系统。该系统包括主线程模块和至少一个子线程模块。
如图3所示,是本发明实施例深度神经网络的模型参数训练系统中主线程模块的结构示意图,所述主线程模块包括:
初始化单元301,用于获取初始化模型参数,并将所述初始化模型参数备份至各子线程模块;
系统模型存储单元302,用于保存所述初始化模型参数以及更新后的模型参数;
系统交互单元303,用于接收任意一个子线程模块根据自己的训练数据独立运算得到的累计统计量;
系统模型更新单元304,用于在所述系统交互单元303接收到所述累计统计量后,根据所述累计统计量更新所述系统模型存储单元302保存的模型参数;
所述系统交互单元303,还用于将所述系统模型更新单元304更新后的模型参数发送给所述子线程模块,以使所述子线程模块更新自己保存的模型参数。
如图4所示,是本发明实施例深度神经网络的模型参数训练系统中子线程模块的结构示意图,所述子线程模块包括:
线程模型存储单元401,用于保存所述初始化模型参数以及更新后的模型参数;
训练数据获取单元402,用于获取自己的训练数据;
计算单元403,用于根据所述训练数据和所述线程模型存储单元401保存的模型参数计算统计量和累计统计量;
线程模型更新单元404,用于根据所述计算单元403计算得到的统计量更新所述线程模型存储单元401保存的模型参数;
判断单元405,用于在所述线程模型更新单元404更新所述模型参数后,判断是否满足系统更新条件;如果满足,则通知线程交互单元406向主线程模块发送更新请求,所述更新请求中包含所述子线程模块独立运算得到的累计统计量;
所述线程交互单元406,还用于在向主线程模块发送更新请求后每隔设定时间判断是否收到主线程模块发送的更新响应,直到收到所述更新响应后,将所述更新响应中包含的模型参数传送给所述线程模型更新单元404;
所述线程模型更新单元404,还用于根据所述线程交互单元406传送的模型参数更新所述线程模型存储单元401保存的模型参数。
需要说明的是,所述系统更新条件可以优选为子线程自己记录的模型参数的更新次数N超过设定阈值P,或者所有训练数据都已参与了训练。所述系统更新条件还可以更优选为所述更新次数记录单元记录的模型参数的更新次数超过设定阈值,并且所述设定阈值次数的累计统计量的二范数的值大于设定门限,或者所有训练数据都已参与了训练。
为此,在本发明的一优选的实施例中,所述子线程模块还可进一步包括更新次数记录单元(未图示),用于记录子线程保存的模型参数的更新次数,并在线程模型更新单元404根据所述更新响应中的模型参数更新自己保存的模型参数后,将自己记录的模型参数的更新次数清零。
值得说明的是,上述各单元的具体处理过程可参照前面本发明实施例的方法中的描述,在此不再赘述。
应用本发明实施例深度神经网络的模型参数训练系统:
(1)任意一个子线程独立地在更新若干次各自保存的模型参数后,与主线程进行模型参数的交互,提高了模型参数的训练效率;鲁棒性强,在多个子线程中的一个或者几个无法工作的情况下,应用本发明实施例的训练系统仍然能够完成模型参数的训练;
(2)子线程分别独立地与主线程进行信息交互,提高了GPU的利用率,使用同等数目的GPU,应用本发明实施例的训练系统能够有更高的复杂模型训练效率和GPU利用率。
以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上依据图式所示的实施例详细说明了本发明的构造、特征及作用效果,以上所述仅为本发明的较佳实施例,但本发明不以图面所示限定实施范围,凡是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出说明书与图示所涵盖的精神时,均应在本发明的保护范围内。
Claims (10)
1.一种深度神经网络的模型参数训练方法,其特征在于,包括:
主线程获取初始化模型参数,并将所述初始化模型参数备份至各子线程;
主线程在接收到任意一个子线程根据自己的训练数据独立运算得到的累计统计量后,根据所述累计统计量更新主线程保存的模型参数,并将更新后的模型参数发送给所述子线程,以使所述子线程更新自己保存的模型参数。
2.根据权利要求1所述的方法,其特征在于,所述子线程根据自己的训练数据独立运算包括:
所述子线程获取自己的训练数据,根据所述训练数据和所述模型参数计算统计量和累计统计量,并根据所述统计量更新自己保存的模型参数,直到满足系统更新条件;
在满足系统更新条件后,所述子线程向主线程发送更新请求,所述更新请求中包含所述子线程独立运算得到的累计统计量;
所述子线程每隔设定时间判断是否收到主线程发送的针对该子线程的更新响应,直到收到所述更新响应后,根据所述更新响应中的模型参数更新自己保存的模型参数。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述子线程根据所述更新响应中的模型参数更新自己保存的模型参数后,将自己记录的模型参数的更新次数清零。
4.根据权利要求2所述的方法,其特征在于,所述系统更新条件为所述子线程自己记录的模型参数的更新次数超过设定阈值,或者所有训练数据都已参与了训练。
5.根据权利要求2所述的方法,其特征在于,所述系统更新条件为所述子线程自己记录的模型参数的更新次数超过设定阈值,并且所述设定阈值次数的累计统计量的二范数的值大于设定门限,或者所有训练数据都已参与了训练。
6.一种深度神经网络的模型参数训练系统,其特征在于,包括主线程模块和至少一个子线程模块,其中:
所述主线程模块包括:
初始化单元,用于获取初始化模型参数,并将所述初始化模型参数备份至各子线程模块;
系统模型存储单元,用于保存所述初始化模型参数及更新后的模型参数;
系统交互单元,用于接收任意一个子线程模块根据自己的训练数据独立运算得到的累计统计量;
系统模型更新单元,用于在所述系统交互单元接收到所述累计统计量后,根据所述累计统计量更新所述系统模型存储单元保存的模型参数;
所述系统交互单元,还用于将所述系统模型更新单元更新后的模型参数发送给所述子线程模块,以使所述子线程模块更新自己保存的模型参数。
7.根据权利要求6所述的系统,其特征在于,所述子线程模块包括:
线程模型存储单元,用于保存所述初始化模型参数及更新后的模型参数;
训练数据获取单元,用于获取自己的训练数据;
计算单元,用于根据所述训练数据和所述线程模型存储单元保存的模型参数计算统计量和累计统计量;
线程模型更新单元,用于根据所述计算单元计算得到的统计量更新所述线程模型存储单元保存的模型参数;
判断单元,用于在所述线程模型更新单元更新所述模型参数后,判断是否满足系统更新条件;如果满足,则通知线程交互单元向主线程模块发送更新请求,所述更新请求中包含所述子线程模块独立运算得到的累计统计量;
所述线程交互单元,还用于在向主线程模块发送更新请求后每隔设定时间判断是否收到主线程模块发送的针对所述子线程模块的更新响应,直到收到所述更新响应后,将所述更新响应中包含的模型参数传送给所述线程模型更新单元;
所述线程模型更新单元,还用于根据所述线程交互单元传送的模型参数更新所述线程模型存储单元保存的模型参数。
8.根据权利要求7所述的系统,其特征在于,所述子线程模块还包括:
更新次数记录单元,用于在所述线程模型更新单元根据所述更新响应中的模型参数更新自己保存的模型参数后,将自己记录的模型参数的更新次数清零。
9.根据权利要求7所述的系统,其特征在于,所述系统更新条件为所述子线程自己记录的模型参数的更新次数超过设定阈值,或者所有训练数据都已参与了训练。
10.根据权利要求7所述的系统,其特征在于,所述系统更新条件为所述子线程自己记录的模型参数的更新次数超过设定阈值,并且所述设定阈值次数的累计统计量的二范数的值大于设定门限,或者所有训练数据都已参与了训练。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410255853.XA CN105184367B (zh) | 2014-06-09 | 2014-06-09 | 深度神经网络的模型参数训练方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410255853.XA CN105184367B (zh) | 2014-06-09 | 2014-06-09 | 深度神经网络的模型参数训练方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105184367A true CN105184367A (zh) | 2015-12-23 |
CN105184367B CN105184367B (zh) | 2018-08-14 |
Family
ID=54906430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410255853.XA Active CN105184367B (zh) | 2014-06-09 | 2014-06-09 | 深度神经网络的模型参数训练方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105184367B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106327251A (zh) * | 2016-08-22 | 2017-01-11 | 北京小米移动软件有限公司 | 模型训练系统和方法 |
WO2017107788A1 (zh) * | 2015-12-22 | 2017-06-29 | 阿里巴巴集团控股有限公司 | 一种机器学习工具中间件及机器学习训练方法 |
CN107330516A (zh) * | 2016-04-29 | 2017-11-07 | 腾讯科技(深圳)有限公司 | 模型参数训练方法、装置及系统 |
WO2018099084A1 (zh) * | 2016-11-29 | 2018-06-07 | 华为技术有限公司 | 一种神经网络模型训练方法、装置、芯片和系统 |
CN108196882A (zh) * | 2017-12-29 | 2018-06-22 | 普强信息技术(北京)有限公司 | 一种针对神经网络计算的加速方法及装置 |
CN109460792A (zh) * | 2018-11-14 | 2019-03-12 | 深圳市威富视界有限公司 | 一种基于图像识别的人工智能模型训练方法及装置 |
CN109460826A (zh) * | 2018-10-31 | 2019-03-12 | 北京字节跳动网络技术有限公司 | 用于分发数据的方法、装置和模型更新系统 |
CN110032450A (zh) * | 2019-04-17 | 2019-07-19 | 中山大学 | 一种基于固态盘扩展内存的大规模深度学习方法及系统 |
CN110223292A (zh) * | 2019-06-20 | 2019-09-10 | 厦门美图之家科技有限公司 | 图像评估方法、装置及计算机可读存储介质 |
CN110414669A (zh) * | 2019-07-02 | 2019-11-05 | 四川大学 | 一种加速神经网络结构选择的方法 |
CN110737446A (zh) * | 2018-07-20 | 2020-01-31 | 杭州海康威视数字技术股份有限公司 | 更新参数的方法和装置 |
CN113537460A (zh) * | 2021-06-29 | 2021-10-22 | 哈尔滨工业大学 | 一种适用于耀斑预报问题的多线程神经网络模型的构建方法 |
CN114356540A (zh) * | 2021-10-30 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 一种参数更新方法、装置、电子设备和存储介质 |
CN115016950A (zh) * | 2022-08-09 | 2022-09-06 | 深圳市乙辰科技股份有限公司 | 一种基于多线程模型的数据分析方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004006041A3 (en) * | 2002-07-04 | 2004-10-14 | Ronald E Kates | Method for training a learning-capable system |
WO2009149926A2 (de) * | 2008-06-10 | 2009-12-17 | Intelligement Ag | System und verfahren zur rechnerbasierten analyse grosser datenmengen |
CN103345656A (zh) * | 2013-07-17 | 2013-10-09 | 中国科学院自动化研究所 | 一种基于多任务深度神经网络的数据识别方法及装置 |
CN103778414A (zh) * | 2014-01-17 | 2014-05-07 | 杭州电子科技大学 | 基于深度神经网络的实时人脸识别方法 |
-
2014
- 2014-06-09 CN CN201410255853.XA patent/CN105184367B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004006041A3 (en) * | 2002-07-04 | 2004-10-14 | Ronald E Kates | Method for training a learning-capable system |
WO2009149926A2 (de) * | 2008-06-10 | 2009-12-17 | Intelligement Ag | System und verfahren zur rechnerbasierten analyse grosser datenmengen |
CN103345656A (zh) * | 2013-07-17 | 2013-10-09 | 中国科学院自动化研究所 | 一种基于多任务深度神经网络的数据识别方法及装置 |
CN103778414A (zh) * | 2014-01-17 | 2014-05-07 | 杭州电子科技大学 | 基于深度神经网络的实时人脸识别方法 |
Non-Patent Citations (1)
Title |
---|
薛少飞等: ""基于多GPU的深层神经网络快速训练方法"", 《清华大学学报(自然科学版)》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017107788A1 (zh) * | 2015-12-22 | 2017-06-29 | 阿里巴巴集团控股有限公司 | 一种机器学习工具中间件及机器学习训练方法 |
CN107330516A (zh) * | 2016-04-29 | 2017-11-07 | 腾讯科技(深圳)有限公司 | 模型参数训练方法、装置及系统 |
CN107330516B (zh) * | 2016-04-29 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 模型参数训练方法、装置及系统 |
CN106327251A (zh) * | 2016-08-22 | 2017-01-11 | 北京小米移动软件有限公司 | 模型训练系统和方法 |
CN110348571A (zh) * | 2016-11-29 | 2019-10-18 | 华为技术有限公司 | 一种神经网络模型训练方法、装置、芯片和系统 |
CN110348571B (zh) * | 2016-11-29 | 2024-03-29 | 华为技术有限公司 | 一种神经网络模型训练方法、装置、芯片和系统 |
WO2018099084A1 (zh) * | 2016-11-29 | 2018-06-07 | 华为技术有限公司 | 一种神经网络模型训练方法、装置、芯片和系统 |
CN108196882A (zh) * | 2017-12-29 | 2018-06-22 | 普强信息技术(北京)有限公司 | 一种针对神经网络计算的加速方法及装置 |
CN110737446A (zh) * | 2018-07-20 | 2020-01-31 | 杭州海康威视数字技术股份有限公司 | 更新参数的方法和装置 |
CN110737446B (zh) * | 2018-07-20 | 2021-10-12 | 杭州海康威视数字技术股份有限公司 | 更新参数的方法和装置 |
CN109460826A (zh) * | 2018-10-31 | 2019-03-12 | 北京字节跳动网络技术有限公司 | 用于分发数据的方法、装置和模型更新系统 |
CN109460792A (zh) * | 2018-11-14 | 2019-03-12 | 深圳市威富视界有限公司 | 一种基于图像识别的人工智能模型训练方法及装置 |
CN110032450A (zh) * | 2019-04-17 | 2019-07-19 | 中山大学 | 一种基于固态盘扩展内存的大规模深度学习方法及系统 |
CN110032450B (zh) * | 2019-04-17 | 2021-04-20 | 中山大学 | 一种基于固态盘扩展内存的大规模深度学习方法及系统 |
CN110223292A (zh) * | 2019-06-20 | 2019-09-10 | 厦门美图之家科技有限公司 | 图像评估方法、装置及计算机可读存储介质 |
CN110414669A (zh) * | 2019-07-02 | 2019-11-05 | 四川大学 | 一种加速神经网络结构选择的方法 |
CN113537460A (zh) * | 2021-06-29 | 2021-10-22 | 哈尔滨工业大学 | 一种适用于耀斑预报问题的多线程神经网络模型的构建方法 |
CN114356540A (zh) * | 2021-10-30 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 一种参数更新方法、装置、电子设备和存储介质 |
CN115016950A (zh) * | 2022-08-09 | 2022-09-06 | 深圳市乙辰科技股份有限公司 | 一种基于多线程模型的数据分析方法及系统 |
CN115016950B (zh) * | 2022-08-09 | 2022-11-18 | 深圳市乙辰科技股份有限公司 | 一种基于多线程模型的数据分析方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105184367B (zh) | 2018-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105184367A (zh) | 深度神经网络的模型参数训练方法及系统 | |
CN109496322B (zh) | 信用评价方法和装置以及梯度渐进决策树参数调整方法和装置 | |
CN107368891A (zh) | 一种深度学习模型的压缩方法和装置 | |
CN103116762A (zh) | 一种基于自调制字典学习的图像分类方法 | |
CN104834479A (zh) | 面向云平台的自动优化存储系统配置的方法及系统 | |
CN111008693A (zh) | 一种基于数据压缩的网络模型构建方法、系统和介质 | |
CN112348113A (zh) | 离线元强化学习模型的训练方法、装置、设备及存储介质 | |
CN110533178A (zh) | 一种神经网络模型训练方法、装置及系统 | |
CN112541584A (zh) | 深度神经网络模型并行模式选择方法 | |
CN111310918B (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN111461284A (zh) | 数据离散化方法、装置、设备及介质 | |
CN110427263B (zh) | 一种面向Docker容器的Spark大数据应用程序性能建模方法、设备及存储设备 | |
CN110399813A (zh) | 一种年龄识别方法、装置、电子设备及存储介质 | |
CN111796917A (zh) | 算子运算调度方法和装置 | |
Yucheng et al. | Incremental learning method of least squares support vector machine | |
CN110018882A (zh) | 一种基于宽度学习的虚拟机性能预测方法 | |
CN113537614A (zh) | 电网工程造价预测模型的构建方法、系统、设备及介质 | |
CN113449919A (zh) | 一种基于特征和趋势感知的用电量预测方法及系统 | |
CN109190450A (zh) | 基于分布式计算平台的人工智能遥感影像数据提取方法 | |
CN116644804A (zh) | 分布式训练系统、神经网络模型训练方法、设备和介质 | |
CN116304699A (zh) | 基于新能源多场站短路比的临界样本集生成方法及系统 | |
CN110989040B (zh) | 一种基于切片处理的人工智能雷电临近预警方法及系统 | |
CN113822441A (zh) | 决策模型训练方法、装置、终端设备及存储介质 | |
CN114429197A (zh) | 一种神经网络架构搜索方法、系统、设备及可读存储介质 | |
CN112668639A (zh) | 一种模型训练方法、装置、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |