技术领域
[0001] 本文讨论的实施方式涉及学习程序、学习方法和学习设备。
相关背景技术
[0002] 机器学习有时执行为使用计算机的数据分析中的一种数据分析。在机器学习中,将指示已知情况的训练数据输入至计算机。计算机对训练数据进行分析并且学习作为因素(有时被称为解释变量或自变量)与结果(有时被称为目标变量或因变量)之间的广义关系的模型。所学习的模型可以用于预测针对未知情况的结果。例如,学习用于识别手写字符的字符识别模型。
[0003] 在机器学习中,每当重复学习时,就会对模型中包括的参数值进行更新,使得使用该模型的推理结果更接近于真值(ground truth)。可以使用梯度下降法作为用于更新参数的方法。在梯度下降法中,计算指示学习结果与真值之间的误差的损失函数的梯度,并且在该梯度的下降方向上对参数进行更新。梯度下降法包括随机梯度下降(stochastic gradient descent,SGD),在该随机梯度下降中,基于每当使用训练数据的随机排序的片段中的每个片段进行学习时的梯度对参数进行更新。
[0004] 在SGD中,在损失函数具有大的曲率的情况下,学习可能会花费时间。因此,可以使用动量法(momentum method)作为用于使用SGD来加速机器学习的方法。动量法通过使用在最近的学习步骤中计算出的梯度和在过去的学习步骤中计算出的梯度对参数值进行更新。在使用动量法的情况下,对SGD进行修改,使得其中最新的梯度和过去的梯度被定向在同一方向上的维度的参数更新量增加并且其中最新的梯度和过去的梯度被定向在不同方向上的维度的参数值的更新量减少。
[0005] 作为用于提高机器学习的学习效率的技术,例如,提出了机器学习装置,在该机器学习装置中,使用连接至已经学习的现有神经网络之后的阶段的新的神经网络进行机器学习。
[0006] [引用列表]
[0007] [专利文献]
[0008] 日本公开特许公报第2017‑182320号。
具体实施方式
[0034] 在下文中,将参照附图描述本实施方式。注意,只要不发生矛盾,实施方式中的每一个可以与其他实施方式中的至少一个组合来实现。
[0035] [第一实施方式]
[0036] 图1示出了根据第一实施方式的学习方法的示例。图1示出了实现根据第一实施方式的学习方法的学习装置10。学习装置10例如是计算机,并且能够通过执行学习程序来实现根据第一实施方式的学习方法。
[0037] 学习装置10包括存储单元11和处理单元12。存储单元11例如是包括在学习装置10中的存储器或存储装置。处理单元12例如是包括在学习装置10中的处理器或算术电路。
[0038] 存储单元11存储训练数据1和模型2。训练数据1是用于对模型2进行训练的数据。训练数据1包括用于模型2的输入数据和指示其中使用了模型2的计算的结果的真值(ground truth)的标签。模型2被划分成多个层。每个层具有一个或更多个参数。模型2例如是多层神经网络。在这种情况下,所述参数是输入至每个层中的节点的数据的权重参数。
[0039] 处理单元12使用训练数据1重复地执行模型2的学习处理。例如,在训练数据1中指示的输入数据被输入至模型2的情况下,处理单元12搜索使训练数据1中指示的标签作为计算结果被输出的参数值。
[0040] 例如,处理单元12首先使用训练数据1中指示的输入数据作为对模型2的输入,并且使用参数值根据模型2执行计算以计算输出值。接下来,处理单元12将训练数据1中指示的标签与输出值进行比较,并且计算在模型2更新之后的参数值。然后,处理单元12将模型2的参数值更新为计算出的参数值。
[0041] 注意,处理单元12可以将包括在模型2中的多个层中的一些层设置为更新抑制层。更新抑制层(update suppression layer)抑制在参数的学习和更新处理中的对更新之后的参数值的计算。
[0042] 例如,每当执行学习处理时,处理单元12针对模型2的每个层确定是否将该层设置为更新抑制层。例如,处理单元12针对多个层中的每个层计算在先前参数值更新处理中的更新之前的参数值与更新之后的参数值之间的差。然后,基于计算出的差,处理单元12确定是否将相应层设置为更新抑制层。
[0043] 例如,每个层可以包括多个参数。在这种情况下,处理单元12计算以下向量的范数:所述向量将针对一层中的多个参数值中的每一个参数值的在先前参数更新处理中的更新之前的值与更新之后的值之间的差包括为元素。范数是向量长度的广义概念。然后,在计算出的范数等于或小于预定阈值的情况下,处理单元12将所述一个层确定为更新抑制层。
[0044] 在图1的示例中,对于每次的学习的次数(已经进行的学习处理的次数),由圆圈指示基于每个层的参数值的更新量计算的值(范数等)是否大于阈值。白圆圈指示基于更新量的值大于阈值。黑圆圈指示基于更新量的值等于或小于阈值。
[0045] 在学习处理中,每k次(k为2或更大的整数)的学习处理,处理单元12仅执行一次针对更新抑制层的参数值更新处理。k是跳过的次数,并且例如被预先设置为预定值。在图1的示例中,设置k=2,并且每两次的学习处理仅跳过一次参数值更新处理。
[0046] 处理单元12通过应用动量法的梯度下降法来计算在每个层的参数更新之后的值。注意,对于除了更新抑制层之外的层,处理单元12每次执行学习处理时更新参数值,并且因此可以应用常用的动量法。例如,处理单元12通过使用在之前一次的学习处理中计算出的参数值和在之前两次的学习处理中计算出的参数值来计算更新之后的参数值。
[0047] 例如,在模型2是多层神经网络的情况下,处理单元12计算权重参数值。此处,在之前一次的学习处理中计算出的权重参数值被表示为wn‑1,并且在之前两次的学习处理中计算出的权重参数值被表示为wn‑2。此时,处理单元12使用wn‑1来计算之前一次的学习处理中的误差梯度 然后,处理单元12通过使用应用了动量法的梯度下降法的计算公式F(wn‑1,wn‑2, )来计算当前学习处理中的权重参数值wn,其中wn‑1、wn‑2和 被包括为变量。
[0048] 另一方面,对于更新抑制层,在紧先前的预定次数的学习处理中尚未更新参数值。因此,不可能应用常用的动量法。因此,在针对更新抑制层执行参数值更新处理的情况下,处理单元12通过使用在之前k次的学习处理中计算出的参数值和在之前2k次的学习处理中计算出的参数值来计算更新之后的参数值。
[0049] 例如,在模型2是多层神经网络的情况下,在之前k次的学习处理中计算出的权重参数值被表示为wn‑k,并且在之前2k次的学习处理中计算出的权重参数值被表示为wn‑2k。此时,处理单元12使用wn‑k来计算在之前k次的学习处理中的误差梯度 然后,处理单元12通过使用应用了动量法的梯度下降法的计算公式G(wn‑k,wn‑2k, )来计算当前学习处理中的权重参数值wn,其中wn‑k、wn‑2k和 被包括为变量。
[0050] 以这种方式,在已经跳过参数值更新处理的情况下,在随后的参数值更新处理中,处理单元12根据跳过的次数通过使用计算公式来计算更新之后的参数值。因此,即使在已经跳过参数值更新处理的情况下,也可以在随后的学习中通过应用了动量法的梯度下降法来计算更新之后的参数值。例如,在应用了动量法的机器学习中,可以通过减少针对所述层中的一些层的参数值更新处理的次数来减少计算量。
[0051] 注意,处理单元12还可以在计算更新之后的参数值时使用近似值。例如,处理单元12通过将未执行参数值更新处理的学习处理中的误差梯度近似为与已执行参数值更新处理的学习处理中的误差梯度相同的值来计算更新之后的参数值。在已经跳过更新处理的情况下使用误差梯度执行计算允许更准确的计算以及学习的有效收敛。因此,减少了在学习结束之前进行的计算量。
[0052] 此外,可以通过例如将动量项乘以可选系数来校正由被假定在跳过更新处理的学习处理中计算的参数值是未知的而引起的误差。例如,应用了动量法的梯度下降法的计算公式包括使动量法的影响被反映的动量项。因此,在更新抑制层的参数值的计算中,处理单元12使用在其中将在之前k次的学习处理中计算出的参数值与在之前2k次的学习处理中计算出的参数值之间的差乘以预定系数的项作为动量项。因此,可以设置适当的系数,并且因此可以实现准确计算。
[0053] 此外,处理单元12可以基于例如在先前参数值更新处理中的更新之前的参数值与更新之后的参数值之间的差来确定是否将层设置为更新抑制层。因此,可以仅将即使在跳过参数值更新处理的情况下也可以针对其执行通过动量法的计算的层设置为更新抑制层。因此,可以仅将其中更新量小并且跳过更新处理不会不利地影响整个学习的收敛的层设置为更新抑制层。
[0054] 例如,在将某些层的多个参数中的每一个参数的差包括为元素的向量的范数等于或小于预定阈值的情况下,处理单元12可以将该层确定为更新抑制层,从而适当地确定参数更新量小的层。
[0055] [第二实施方式]
[0056] 接下来,将描述第二实施方式。第二实施方式使得在使用应用了动量法的梯度下降法(例如,SGD)的机器学习中能够通过跳过针对多层神经网络中的所述层中的一些层的学习而获得处理效率的提高。
[0057] 图2示出了学习装置的硬件的示例。整个学习装置100由处理器101控制。处理器101经由总线109与存储器102和多个外围装置连接。处理器101可以是多处理器。处理器101例如是中央处理单元(CPU)、微处理单元(MPU)或数字信号处理器(DSP)。通过由处理器101执行程序而实现的功能中的至少一个可以由诸如专用集成电路(ASIC)或可编程逻辑器件(PLD)的电子电路来实现。
[0058] 存储器102用作学习装置100的主存储装置。存储器102临时存储要由处理器101执行的操作系统(OS)程序或应用程序中的至少一个。此外,存储器102存储用于由处理器101进行处理的各种类型的数据。作为存储器102,例如使用诸如随机存取存储器(RAM)的易失性半导体存储装置。
[0059] 连接至总线109的外围装置包括存储装置103、图形处理装置104、输入接口105、光学驱动装置106、装置连接接口107和网络接口108。
[0060] 存储装置103在内置记录介质中电学地或磁性地写入数据或者从内置记录介质电学地或磁性地读取数据。存储装置103用作计算机的辅助存储装置。存储装置103存储OS程序、应用程序和各种类型的数据。注意,作为存储装置103,例如可以使用硬盘驱动器(HDD)或固态驱动器(SSD)。
[0061] 图形处理装置104与监视器21连接。图形处理装置104根据来自处理器101的命令在监视器21的屏幕上显示图像。监视器21的示例包括使用有机电致发光(EL)的显示装置、液晶显示装置等。
[0062] 输入接口105与键盘22和鼠标23连接。输入接口105将从键盘22和鼠标23发送的信号传输至处理器101。注意,鼠标23是指示装置的示例,并且也可以使用其他指示装置。其他指示装置包括触摸面板、平板电脑、触摸板、跟踪球等。
[0063] 光学驱动装置106使用激光等读取记录在光盘24上的数据或将数据写入光盘24。光盘24是在其上记录有数据以通过光的反射可读取的便携式记录介质。光盘24的示例包括数字通用光盘(DVD)、DVD‑RAM、光盘只读存储器(CD‑ROM)、CD可记录(R)/可重写(RW)装置等。
[0064] 装置连接接口107是用于将外围装置连接至学习装置100的通信接口。例如,装置连接接口107可以与存储器装置25和存储器读取器/写入器26连接。存储器装置25是配备有用于与装置连接接口107通信的功能的记录介质。存储器读取器/写入器26是将数据写入存储卡27或从存储卡27读取数据的装置。存储卡27是卡式记录介质。
[0065] 网络接口108连接至网络20。网络接口108经由网络20与另一计算机或通信装置交换数据。网络接口108是通过线缆连接至有线通信装置例如交换机或路由器的有线通信接口。此外,网络接口108可以是通过无线电波连接至诸如基站或接入点的无线通信装置并与之通信的无线通信接口。
[0066] 学习装置100可以利用如上所述的硬件来实现根据第二实施方式的处理功能。注意,在第一实施方式中描述的学习装置10还可以由与图2所示的学习装置100的硬件类似的硬件构成。
[0067] 学习装置100通过执行例如记录在计算机可读记录介质中的程序来实现第二实施方式的处理功能。其中描述要由学习装置100执行的处理的内容的程序可以被记录在各种记录介质中。例如,要由学习装置100执行的程序可以被存储在存储装置103中。处理器101将存储装置103中的程序中的至少一个加载到存储器102上并且执行该程序。要由学习装置100执行的程序还可以被记录在诸如光盘24、存储器装置25或存储卡27的便携式记录介质中。存储在便携式记录介质中的程序可以例如通过处理器101的控制来在被安装到存储装置103上之后进行执行。此外,处理器101还可以直接从便携式记录介质读取程序并且执行该程序。
[0068] 接下来,将描述由学习装置100学习的模型的结构。
[0069] 图3示出了模型的结构的示例。模型40是多层神经网络。通过将多层神经网络用作模型40,学习装置100可以将深度学习用作机器学习算法。图3所示的模型40是N层(N是1或更大的整数)神经网络。
[0070] 模型40包括多个节点41,每个节点表示一个人工神经元。多个节点41被划分成多个层,并且所述层除了输入层之外还包括N层。第一层至第N‑1层是隐藏层,并且第N层是输出层。
[0071] 相邻层中的节点通过指示连接关系的箭头连接。在由箭头连接的节点之间,数据沿箭头方向传输。在神经网络中,数据从接近输入层的节点传输至距输入层较远的节点。
[0072] 每个箭头被赋予指示两侧的节点之间的连接强度的权重参数。例如,在模型40的情况下,输入层中的节点的数目为“3”,并且第一层中的节点的数目为“4”,因此指示输入层中的节点与第一层中的节点之间的连接强度的权重参数组包括12个权重参数w1,1、...、w1,12。在每个层中,通过根据数据的权重参数对输入数据进行加权来计算输出。输入至每个层中的节点的权重参数组在下文中被称为该层的权重参数组。例如,从输入层中的节点传输至第一层中的节点的参数组是第一层的权重参数组。
[0073] 在机器学习中,学习装置100针对第一层至第N层中的每个层学习权重参数组的适当值。
[0074] 图4示出了机器学习的示例。学习装置100将训练数据50存储在存储装置103中。训练数据50包括要输入至模型40的数据51和指示学习结果的真值的标签52。学习装置100使用训练数据50执行机器学习以获得模型40的适当权重参数值。
[0075] 学习模型40涉及重复多个阶段,包括前向(Forward)、后向(Backward)和更新(Update)。
[0076] 在前向阶段中,包括在训练数据50中的解释变量的值被输入至模型40的输入层42中的节点作为用于输入的数据51。输入数据51从输入层42中的节点传输至第一层43中的节点。在第一层43中,使用第一层43的权重参数组43a来计算与输入数据51对应的输出值。包括在第一层43中计算出的输出值的数据53从第一层43传输至第二层44。
[0077] 在第二层44中,使用第二层44的权重参数组44a来计算与输入数据53对应的输出值。包括在第二层44中计算出的输出值的数据54从第二层44传输至第三层45。
[0078] 在第三层45中,使用第三层45的权重参数组45a来计算与输入数据54对应的输出值。第三层45中的计算结果被输出为输出数据55。
[0079] 以上是前向阶段中的处理。在前向阶段之后,执行后向阶段。
[0080] 在后向阶段中,计算输出数据55与标签52之间的差61。然后,根据差61计算针对作为输出层的第三层45的每个权重参数的误差梯度62。此外,基于差61,计算要输入至第三层45以获得真值的适当数据与实际输入数据54之间的差63。然后,根据差63计算针对第二层
44的每个权重参数的误差梯度64。此外,基于差63,计算要输入至第二层44以获得真值的适当数据与实际输入数据53之间的差65。然后,根据差65计算针对第一层43的每个权重参数的误差梯度66。
[0081] 以上是后向阶段中的处理。基于后向中的误差梯度62、64和66执行更新阶段。在更新阶段,对权重参数值进行更新。例如,根据与权重参数对应的误差梯度66对包括在第一层43的权重参数组43a中的权重参数进行更新。根据与权重参数对应的误差梯度64对包括在第二层44的权重参数组44a中的权重参数进行更新。根据与权重参数对应的误差梯度62对包括在第三层45的权重参数组45a中的权重参数进行更新。
[0082] 学习装置100通过重复地执行这样的机器学习来学习模型40的适当权重参数值。
[0083] 通过将误差梯度转换成减法值以减轻当前输入数据的影响并从当前权重中减去减法值,而不是从当前权重中减去误差梯度本身,从而在权重中反映误差梯度。此时,使用作为超参数之一的学习速率。学习速率越大,在权重中反映最新输入数据的影响越强。学习速率越小,在权重中反映最新输入数据的影响越弱。
[0084] 图5示出了根据误差梯度对权重进行更新的示例。如曲线图70所示,神经网络的预测误差E可以被视为权重值w的函数。在反向传播中,进行使预测误差E最小的权重值w的搜索。根据当前权重值w处的预测误差E的误差梯度,权重值w沿与误差梯度相反的方向改变。在误差梯度为正的情况下,权重值w减小。在误差梯度为负的情况下,权重值w增加。
[0085] 误差梯度越大,每次更新的权重参数的更新量(权重更新量)越大。随着预测误差E接近最小值,误差梯度变得平缓并且权重更新量减小。注意,根据误差梯度的权重更新量通过作为“0”或更大的实数的学习速率来调整。
[0086] 针对神经网络中每个层的权重参数与最小值的接近程度根据层而不同。因此,权重更新量也根据各个层而不同。因此,对于其中每次更新的权重更新量变得足够小的层,可以想到跳过误差梯度的计算和权重参数更新处理。
[0087] 例如,在接近输入层的层的情况下,已经学习的模型(现有模型)可以用作要学习的神经网络,并且可以在现有模型之后添加新的层(新模型)。例如,学习装置100通过将新模型连接至学习的通用图像识别模型之后的阶段来生成专用于手写字符识别的手写字符识别模型。
[0088] 当实现其中以这种方式组合现有模型和新模型的模型的机器学习时,对于现有模型部分中的层,重复地执行的每一次学习处理(迭代)的权重更新量变得非常小。在已知权重更新量小的情况下,权重参数值的更新频率可以被设置为例如约每若干次的学习处理一次,使得可以提高处理效率。
[0089] 例如,基于将在层的权重参数组包括的每个权重参数值的更新量包括为元素的向量(权重更新量向量Δw)的Lp范数,学习装置100可以确定是否要实现相应层的权重更新处理。例如,对于其中Lp范数等于或小于预定阈值T的层,学习装置100每若干次的学习处理仅执行一次权重更新处理。稍后将描述Lp范数的细节。
[0090] 图6示出了其中实现权重更新处理的状态的示例。例如,假设对包括第一层71至第五层75的模型执行机器学习。在图6的示例中,对于每次学习的次数(指示已经进行学习的次数的数值),在学习中已经经历权重更新处理的层由圆圈指示。在权重更新处理中的权重更新量的Lp范数大于T的情况下,设置白圆圈。另一方面,在权重更新处理中的权重更新量的Lp范数为T或更小的情况下,设置黑圆圈。“‑”指示已跳过针对相应层的权重更新处理。
[0091] 在接近输入层的层是现有模型的副本的情况下,该层越接近输入层,Δw的Lp范数越早达到T或更小。在其中Δw的Lp范数已达到T或更小的层中,在随后的预定次数的学习中跳过权重更新处理。
[0092] 接下来,将描述动量法。动量法提高了梯度下降法的处理效率。在不应用动量法的梯度下降法中,在第n+1次学习中使用的权重参数值wn+1由以下式表示。
[0093] [式1]
[0094]
[0095] wn是在第n次学习中使用的权重参数值。η是学习速率。Ln是损失函数。 是误差梯度 在采用动量法的情况下,权重参数值wn+1通过以下式来计算。
[0096] [式2]
[0097]
[0098] [式3]
[0099] wn+1=wn+vn (3)
[0100] α是动量系数。α例如是约“0.9”的整数。可以基于式(2)和式(3)推导以下公式。
[0101] [式4]
[0102] vn=wn+1‑wn (4)
[0103] [式5]
[0104]
[0105] 根据式(5),通过将由“wn‑wn‑1”乘以动量系数α获得的值添加至先前权重参数值wn并且然后减去由误差梯度 乘以学习速率η获得的值来获得新的权重参数值wn+1。式(5)右侧的第二项是动量项。
[0106] 图7示出了应用动量法的效果。图7示出了示意图81和示意图82,示意图81示出了通过不应用动量法的梯度下降法对权重参数进行更新的处理,示意图82示出了通过应用动量法的梯度下降法对权重参数进行更新的处理。示意图81和示意图82中的椭圆指示损失函数在一个维度(竖直方向)中具有比在另一维度(水平方向)上大的梯度。此外,椭圆的中心是其中损失函数的值最小化的参数位置。针对每次学习的权重参数值的转变由多边形箭头表示。
[0107] 在不应用动量法的梯度下降法中,权重参数值在其中该值指向局部最优值的谷底的外围处重复地往复运动,并且花费时间来实现其中损失函数最小化的方向。另一方面,在应用了动量法的情况下,权重参数更新量在其中最新梯度和过去梯度定向在同一方向上的维度上(在附图中的水平方向上)增加。因此,权重参数值的变化在其中损失函数的值最小化的方向上加速,并且学习结果有效地收敛。
[0108] 此处,在应用了动量法的梯度下降法的情况下,如图6所示的跳过权重更新处理引起如下所述的问题。
[0109] 当在某些学习处理中跳过权重更新处理时,权重参数值不被更新,并且与先前学习处理中的权重参数值相同。然后,式(5)中所示的“wn‑wn‑1”的值变为“0”。因此,按原样使用式(5)消除了动量项的效果。
[0110] 因此,例如在跳过k次(k是1或更大的整数)的情况下,可以想到将式(5)中的“wn‑wn‑1”替换为“wn‑wn‑k”。因此,动量项不变为“0”,并且发挥应用动量法的效果。此处,跳过k次意味着在k=1的情况下,权重更新处理在被不跳过的情况下执行,并且在k=2的情况下,在执行两次学习处理的同时跳过一次权重更新处理。
[0111] 其中考虑了权重更新处理的跳过的式子如下。
[0112] [式6]
[0113]
[0114] 下面将参照图8和图9描述了在基于式(6)对权重参数进行更新的情况下权重参数值的偏移。注意,误差梯度 始终为负值,其中n是学习的次数,并且通过将先前值乘以“0.99”而从初始值“‑1”逐渐减小。例如, 由于在权
重参数值的波动小的情况下跳过学习,因此假设 没有波动。此外,假设学习速率被设置为η=0.1,动量系数被设置为α=0.9,并且初始值被设置为w0=0和v‑1=0。
[0115] 图8示出了权重参数值的偏移的第一示例。图8的示例指示在权重更新处理的跳过的次数为k=2(每两次跳过一次)的情况下权重参数值的转变。曲线83a指示权重参数值的理想转变。曲线83b指示在通过式(5)执行学习而不反映动量项的效果的情况下权重参数值的转变。曲线83c指示在通过式(6)执行学习并且反映动量项的效果的情况下权重参数值的转变。
[0116] 图9示出了权重参数值的偏移的第二示例。图9的示例指示在权重更新处理的跳过的次数为k=3(每三次跳过一次)的情况下权重参数值的转变。曲线84a指示权重参数值的理想转变。曲线84b指示在通过式(5)执行学习而不反映动量项的效果的情况下权重参数值的转变。曲线84c指示在通过式(6)执行学习并且反映动量项的效果的情况下权重参数值的转变。
[0117] 如在图8和图9中可以看出,应用式(6)使得动量法的效果得到发挥,并且转变状态更接近理想状态。然而,按原样使用式(6),表示应用式(6)的情况的曲线83c和84c偏离理想曲线83a和84a。偏离程度随着跳过的次数k的增加而增加。
[0118] 因此,学习装置100将例如式(6)的动量项乘以作为超参数并且具有大于1的值的系数。因此,权重参数值的转变可以被调整以更接近理想转变。
[0119] 注意,在机器学习中针对超参数设置错误的值使得难以提高模型推断的准确度。因此,优选的是减少学习时设置的超参数的数目。
[0120] 因此,学习装置100通过近似表示来获得要在动量法中使用的过去权重参数值,以增加动量法的效果的反映程度。下面将描述用于推导近似表示的过程。
[0121] 首先,设置 其中w0为常数,并且由于不包括v‑1,因此v‑1被设置为“0”。在这种情况下,v0和w1由以下式表示。
[0122] [式7]
[0123]
[0124] [式8]
[0125]
[0126] 基于式(7)和式(8),可以通过以下公式来计算v1和w2。
[0127] [式9]
[0128]
[0129] [式10]
[0130]
[0131] 此外,基于式(9)和式(10),可以通过以下式来计算v2和w3。
[0132] [式11]
[0133]
[0134] [式12]
[0135]
[0136] 通过如上所述的顺序计算,vn‑1和wn可以表示如下。
[0137] [式13]
[0138]
[0139] [式14]
[0140]
[0141] 此处,给出对跳过的次数为k=2(每两次跳过一次)的情况的考虑。假设w0为常数,并且w1和w2在被不跳过的情况下进行计算。然后,假设在已经跳过w3的权重值的计算时通过近似计算获得w4的情况。在这种情况下,w1由式(8)表示,并且w2由式(10)表示。已经跳过w3的计算,并且w4可以基于通用式(14)通过以下公式来计算。
[0142] [式15]
[0143]
[0144] 式(15)中的 可以根据w2获得。由于已经跳过w3,因此可能无法获得
[0145] 此处,w2‑w0和w4‑w2中的每一个计算如下。
[0146] [式16]
[0147]
[0148] [式17]
[0149]
[0150] 因此,w4由以下式表示。
[0151] [式18]
[0152]
[0153] 此处,由于跳过基本上是由于学习量小而引起的,因此假设然后,公式(18)可以近似如下。
[0154] [式19]
[0155]
[0156] 因此,可以利用之前两次的w2、之前四次的w0和 来近似w4。当以常用形式表示跳过的次数为k=2的情况下的近似时,获得以下式。
[0157] [式20]
[0158]
[0159] 当在与图8所示的曲线图类似的条件下使用式(20)表示权重参数值的曲线时,获得图10所示的曲线。
[0160] 图10示出了权重参数值的偏移的第三示例。图10的示例指示在权重更新处理的跳过的次数为k=2(每两次跳过一次)的情况下通过使用近似表示计算的权重参数值的转变。曲线83d指示在通过式(20)执行近似计算的情况下权重参数值的转变。曲线83d几乎与表示理想转变的曲线83a重合。
[0161] 以这种方式,即使在每两次的学习处理跳过一次权重更新处理的情况下,也可以通过使用式(20)执行近似来以高准确度计算权重参数值。
[0162] 接下来,将描述跳过的次数为k=3的情况下的近似计算。与跳过的次数为k=2的情况一样,w0为常数。假设w1、w2和w3在被不跳过的情况下进行计算。然后,假设在已经跳过针对w4和w5的权重更新处理的计算时通过近似计算获得w6的情况。在这种情况下,w1由式(8)表示,w2由式(10)表示,并且w3由式(12)表示。跳过针对w4和w5的计算。基于通用式(14),w6可以通过以下式来计算。
[0163] [式21]
[0164]
[0165] 式(21)中的 可以根据w3获得。由于已经跳过w4和w5,因此无法获得 和
[0166] 此处,w3‑w0和w6‑w3中的每一个计算如下。
[0167] [式22]
[0168]
[0169] [式23]
[0170]
[0171] 因此,w6由以下式表示。
[0172] [式24]
[0173]
[0174] 此处,由于跳过基本上是由于学习量小而引起的,因此假设然后,式(24)可以近似如下。
[0175] [式25]
[0176]
[0177] 因此,可以利用之前三次的w3、之前六次的w0和 来近似w6。当以常用形式表示跳过的次数为k=3的情况下的近似时,获得以下式。
[0178] [式26]
[0179]
[0180] 当在与图9所示的曲线图类似的条件下使用式(26)表示权重参数值的曲线时,获得图11所示的曲线。
[0181] 图11示出了权重参数值的偏移的第四示例。图11的示例指示在权重更新处理的跳过的次数为k=3(每三次跳过一次)的情况下通过使用近似表示计算的权重参数值的转变。曲线84d指示在通过式(26)执行近似计算的情况下权重参数值的转变。曲线84d几乎与表示理想转变的曲线84a重合。
[0182] 注意,在图11的示例中,误差梯度 通过将先前值乘以“0.99”而从初始值“‑1”逐渐减小,其中n是学习的次数。这指示在先前学习与当前学习之间的误差梯度的变化小的情况下,在执行近似计算的情况下的曲线几乎与理想曲线重合。在图12中示出了其中误差梯度 的绝对值显示出较强的减小趋势的情况的示例。
[0183] 图12示出了权重参数值的偏移的第五示例。图12的例子指示在权重更新处理的跳过的次数为k=3(每三次跳过一次)并且设置 的情况下通过使用近似表示计算的权重参数值的转变。曲线84e指示在通过式(6)执行学习并且反映动量项的效果的情况下权重参数值的转变。曲线84f指示在通过式(26)执行近似计算的情况下权重参数值的转变。曲线84f从表示理想转变的曲线84a向下偏移,但是仍然接近理想曲线。
[0184] 接下来,将描述适用于在跳过的次数k是可选整数的情况下的近似表示。以与上述方法类似的方式,可以利用之前k次的wn‑k、之前2k次的wn‑2k和 来近似wn。在跳过的次数为可选k的情况下的近似表达式由以下式表示。
[0185] [式27]
[0186]
[0187] 可以使用用于几何序列之和的式来对式(27)进行如下变换。
[0188] [式28]
[0189]
[0190] 以这种方式,即使在跳过的次数k是可选值的情况下,也可以使用式(28)由根据wn‑k、wn‑2k和 的近似计算来获得wn。此外,在α=0的情况下,可以近似不应用动量法的梯度下降法。
[0191] 接下来,将描述学习装置100的用于执行其中组合了权重更新处理的跳过和动量法的机器学习的功能。
[0192] 图13是示出学习装置的功能的示例的框图。学习装置100包括模型存储单元110、训练数据存储单元120、权重信息存储单元130、跳过信息存储单元140和机器学习单元150。模型存储单元110、训练数据存储单元120、权重信息存储单元130和跳过信息存储单元140通过使用学习装置100中包括的存储器102或存储装置103的存储区域的一部分来构成。机器学习单元150可以通过例如使处理器101执行其中描述机器学习处理过程的程序来实现。
[0193] 模型存储单元110存储要通过当前深度学习来学习的模型。该模型为如图3所示的多层神经网络。将要学习的模型预先存储在模型存储单元110中,并且由机器学习单元150通过学习对该模型的权重参数进行更新。
[0194] 训练数据存储单元120存储用于当前深度学习的训练数据。训练数据包括多个记录,在所述多个记录的每个记录中,解释变量的值和真实标签彼此关联。
[0195] 权重信息存储单元130每当执行一个学习周期时就存储在学习中计算出的每个权重参数值。所存储的权重参数值被用于通过动量法来计算权重参数值。
[0196] 跳过信息存储单元140存储针对每个层的与是否跳过针对该层的权重更新处理有关的信息。在学习的后向处理中,针对由跳过信息指示为要跳过的层的层,抑制对权重参数组的更新。
[0197] 机器学习单元150通过使用存储在训练数据存储单元120中的训练数据来学习存储在模型存储单元110中的模型的适当的权重参数值。在学习中,在其中权重参数值的更新量较小的层的情况下,每进行由跳过次数指示的学习次数,机器学习单元150仅进行一次权重更新处理。例如,在其中跳过次数被设置为2的层的情况下,每两次学习处理,机器学习单元150仅进行一次相应层的权重更新处理。此外,机器学习单元150使用动量法来进行权重更新处理。对于针对在先前的学习中已经跳过权重更新处理的层的当前权重更新处理,使用式(28)来计算权重参数的新的值。
[0198] 接下来,将具体描述存储在权重信息存储单元130和跳过信息存储单元140中的数据。
[0199] 图14示出权重信息存储单元的示例。权重信息存储单元130存储例如权重管理表131。在权重管理表131中,针对每个层设置通过学习获得的权重参数值。权重参数值与学习次数相关联地设置。权重参数值中的每个权重参数值是相应学习次数的学习结束时的值。
在图14的示例中,将三个数值作为下标添加至权重参数值w。第一数值指示层编号,第二数值指示层中的权重参数编号,并且第三数值指示学习次数。
[0200] 图15示出跳过信息存储单元的示例。跳过信息存储单元140存储例如跳过管理表141。在跳过管理表141中,针对每个层设置是否跳过以及跳过的次数。是否跳过是指示是否将要跳过针对相应层的权重更新处理的信息。在要跳过权重更新处理的情况下,设置为“要跳过”,并且在不要跳过权重更新处理的情况下,设置为“不跳过”。是否跳过的初始值为“不跳过”。跳过的次数是针对相应层跳过更新处理的连续次数。跳过次数的初始值为“0”。
[0201] 机器学习单元150使用权重信息存储单元130和跳过信息存储单元140来学习模型。
[0202] 接下来,将参照图16和图17详细描述学习处理的过程。
[0203] 图16是示出学习处理的过程的流程图的前半部分。下面将根据步骤编号描述图16所示的处理。
[0204] [步骤S101]机器学习单元150将学习计数计数器i设置为初始值“0”(i=0)。
[0205] [步骤S102]机器学习单元150确定跳过次数k和阈值T。阈值T是用于确定是否跳过权重更新处理的实数。例如,机器学习单元150将由用户预先与跳过次数k相关联设置的值和与阈值T相关联设置的值分别确定为跳过次数k和阈值T。
[0206] [步骤S103]机器学习单元150选择针对尚未针对其设置在下一学习中是否跳过权重更新处理的一个层。
[0207] [步骤S104]机器学习单元150确定在第i(先前)学习中针对所选择的层是否已经跳过权重更新处理。例如,如果在跳过管理表141中针对相应层的跳过次数为“1”或更多,则机器学习单元150确定权重更新处理已经被跳过。如果权重更新处理已经被跳过,则机器学习单元150使处理前进至步骤S109。另一方面,如果权重更新处理尚未被跳过,则机器学习单元150使处理前进至步骤S105。
[0208] 注意,当学习计数计数器i等于或小于2k时,机器学习单元150针对每个层给出否作为步骤S104中的确定的结果,并且使处理前进至步骤S109。因此,是否跳过可以保持在“不跳过”的初始状态,直到可以在跳过权重更新处理时使用动量法进行近似计算为止。
[0209] [步骤S105]机器学习单元150计算所选择的层的Δw的Lp范数(p为1或更大的整数)。Δw是权重更新量向量,该权重更新量向量将输入至所选择的层中的节点的数据的权重参数值的更新量包括为元素。权重参数值的更新量对应于更新之前的值与更新之后的值之间的差。当所选择的层的权重参数值的更新量为“Δw1、Δw2、……、Δwn”时,权重更新量向量Δw为“Δw=(Δw1、Δw2、……、Δwn)”。
[0210] Δw的Lp范数通过下述式给出。
[0211] [式29]
[0212]
[0213] 例如,Δw的L1范数如下。
[0214] [式30]
[0215] |Δw1|+|Δw2|+…+|Δwn| (30)
[0216] 此外,Δw的L2范数如下。
[0217] [式31]
[0218]
[0219] 例如,在设置的阈值T为Δw的L2范数的阈值的情况下,机器学习单元150计算Δw的L2范数。
[0220] [步骤S106]机器学习单元150确定Δw的Lp范数是否等于或小于阈值T。如果Δw的Lp范数等于或小于阈值T,则机器学习单元150使处理前进至步骤S108。另一方面,如果Δw的Lp范数大于阈值,则机器学习单元150使处理前进至步骤S107。
[0221] [步骤S107]机器学习单元150将所选择的层设置为“不跳过”。例如,机器学习单元150针对在跳过管理表141中与所选择的层对应的记录设置为“不跳过”。然后,机器学习单元150使处理前进至步骤S109。
[0222] [步骤S108]机器学习单元150将所选择的层设置为“要跳过”。例如,机器学习单元150针对在跳过管理表141中与所选择的层对应的记录设置为“要跳过”。
[0223] [步骤S109]机器学习单元150确定是否存在尚未设置针对其是否要跳过的层。如果存在尚未设置针对其是否要跳过的层,则机器学习单元150使处理前进至步骤S103。另一方面,如果已经针对每个层完成了是否跳过的设置,则机器学习单元150使处理前进至步骤S110。
[0224] [步骤S110]机器学习单元150将1加至学习计数计数器i(i=i+1),并且使处理前进至步骤S121(参见图17)。
[0225] 图17是示出学习处理的过程的流程图的后半部分。下面将根据步骤编号描述图17所示的处理。
[0226] [步骤S121]机器学习单元150从训练数据存储单元120中读取训练数据。
[0227] [步骤S122]机器学习单元150使用所读取的训练数据执行前向处理。例如,使用训练数据中包括的用于训练的输入数据作为到模型的输入层中的节点的输入,机器学习单元150根据由该模型指示的神经网络进行计算并且获得来自输出层的输出值。
[0228] [步骤S123]机器学习单元150以从最接近所述输出的层起的顺序选择一层。
[0229] [步骤S124]机器学习单元150参考跳过管理表141并且在是否跳过的设置中确定所选择的层是否已经被设置为“要跳过”。如果所选择的层已经被设置为“要跳过”,则机器学习单元150使处理前进至步骤S126。另一方面,如果所选择的层已经被设置为“不跳过”,则机器学习单元150使处理前进至步骤S125。
[0230] [步骤S125]机器学习单元150使用非近似动量法(式(2)和式(3))来计算在更新针对输入至所选择的层中的节点的数据的每个权重参数之后的值wi。然后,机器学习单元150使处理前进至步骤S130。
[0231] [步骤S126]机器学习单元150确定针对所选择的层的跳过次数是否已经达到k‑1。例如,如果在跳过管理表141中针对所选择的层的跳过次数达到k‑1,则机器学习单元150确定跳过次数已经达到k‑1。如果跳过的次数已经达到k‑1,则机器学习单元150使处理前进至步骤S128。另一方面,如果跳过次数小于k‑1,则机器学习单元150使处理前进至步骤S127。
[0232] [步骤S127]机器学习单元150跳过针对所选择的层的权重更新处理,并且对在跳过管理表141中针对相应层的跳过次数进行计数。然后,机器学习单元150使处理前进至步骤S131。
[0233] [步骤S128]机器学习单元150使用利用近似处理(式(28))的动量法,以计算在更新针对输入至所选择层中的节点的数据的每个权重参数之后的值wi。注意,机器学习单元150可以通过使用通过下述方式获得的公式来计算更新每个权重参数之后的值wi:将式(6)中的动量项(右手侧的第二项)乘以系数1或更大(与使用图8和图9所示的超参数调整的量对应的值)。
[0234] [步骤S129]机器学习单元150将跳过管理表141中针对所选择的层的跳过次数重置为“0”。
[0235] [步骤S130]机器学习单元150将所选择的层的权重参数值更新为在步骤S125或步骤S128中计算出的值。
[0236] [步骤S131]机器学习单元150确定是否已经选择了每个层。如果存在尚未被选择的层,则机器学习单元150使处理前进至步骤S123。另一方面,如果已经选择了每个层,则机器学习单元150使处理前进至步骤S132。
[0237] [步骤S132]机器学习单元150确定学习计数计数器i是否小于预先设置的要被执行的学习次数N(N为1或更大的整数)。如果学习计数计数器i小于N,则机器学习单元150使处理前进至步骤S103(参见图16)。另一方面,如果学习计数计数器i已经达到N,则机器学习单元150结束学习。
[0238] 以这样的方式,即使在针对所述层中的一些层的权重参数值更新处理已经被跳过并且尚未获得误差梯度的情况下,也可以使用利用动量法的近似,以使得能够在精度不劣化的情况下进行高速处理。
[0239] [其他实施方式]
[0240] 在第二实施方式中,基于Δw的范数来确定是否要跳过权重更新处理。可替选地,还可以通过将Δw的元素的绝对值|Δw1|、|Δw2|、……、|Δwn|中的每个绝对值与阈值T进行比较来确定是否要跳过权重更新处理。例如,如果Δw的元素的绝对值|Δw1|、|Δw2|、……、|Δwn|中的全部绝对值等于或小于阈值T,则学习装置100确定权重更新处理将被跳过。
[0241] 此外,在第二实施方式中,重复学习处理直到学习次数达到将要执行的学习次数N为止。可替选地,如果输出层中Δw的Lp范数已经变成等于或小于预定值,则机器学习单元150可以结束学习处理。
[0242] 上面已经通过示例的方式描述了实施方式,并且实施方式中描述的每个部分的配置可以被具有相似功能的另一配置代替。此外,可以添加任何其他部件和步骤。此外,上述实施方式的任意两个或更多个配置(特征)可以进行组合。
[0243] 本发明还可以通过以下实施方案来实现。
[0244] 实施方案1.一种由计算机执行的学习程序,所述学习程序包括:
[0245] 在针对具有多个层的模型重复执行的学习处理中,每k次所述学习处理,仅执行一次针对所述多个层中的至少一个更新抑制层的参数的值的更新处理,其中k为2或更大的整数;以及
[0246] 当执行针对所述更新抑制层的参数的值的更新处理时,使用在之前k次所述学习处理中计算出的所述参数的第二值和在之前2k次所述学习处理中计算出的所述参数的第三值,通过应用了动量法的梯度下降法来计算更新之后的所述参数的第一值。
[0247] 实施方案2.根据实施方案1所述的学习程序,其中,
[0248] 所述计算包括通过将第一误差梯度近似为第二误差梯度来计算所述参数的第一值,所述第一误差梯度为尚未执行所述参数的值的更新处理的学习处理中的误差梯度,所述第二误差梯度为已经执行所述参数的值的更新处理的学习处理中的梯度。
[0249] 实施方案3.根据实施方案1所述的学习程序,其中,
[0250] 所述计算包括通过使用计算公式来计算所述参数的第一值,所述计算公式包括动量项,所述动量项为乘以差和预定系数的项,所述差为所述参数的第二值与所述参数的第三值之间的差。
[0251] 实施方案4.根据实施方案1至3中任一项所述的学习程序,还包括:
[0252] 针对所述多个层中的每个层,计算在先前的更新处理中在所述参数的更新之前的值与更新之后的值之间的差,以及
[0253] 基于所计算的差,确定在所述多个层中包括的层是否要被设置为所述更新抑制层。
[0254] 实施方案5.根据实施方案4所述的学习程序,其中,
[0255] 所述确定包括:当向量的范数等于或小于预定阈值时,确定将所述层设置为所述更新抑制层,所述向量基于针对所述值中的每个值的在先前的更新处理中在更新处理之前的值与更新处理之后的值之间的差,所述值中的每个值与所述层中的多个参数中的每个参数对应。
[0256] 实施方案6.一种学习方法,包括:
[0257] 在针对具有多个层的模型重复执行的学习处理中,每k次所述学习处理,仅执行一次针对所述多个层中的至少一个更新抑制层的参数的值的更新处理,其中k为2或更大的整数;以及
[0258] 当执行针对所述更新抑制层的参数的值的更新处理时,使用在之前k次所述学习处理中计算出的所述参数的第二值和在之前2k次所述学习处理中计算出的所述参数的第三值,通过应用了动量法的梯度下降法来计算更新之后的所述参数的第一值。
[0259] 实施方案7.根据实施方案6所述的学习方法,其中,
[0260] 所述计算包括通过将第一误差梯度近似为第二误差梯度来计算所述参数的第一值,所述第一误差梯度为尚未执行所述参数的值的更新处理的学习处理中的误差梯度,所述第二误差梯度为已经执行所述参数的值的更新处理的学习处理中的梯度。
[0261] 实施方案8.根据实施方案6所述的学习方法,其中,
[0262] 所述计算包括通过使用计算公式来计算所述参数的第一值,所述计算公式包括动量项,所述动量项为乘以差和预定系数的项,所述差为所述参数的第二值与所述参数的第三值之间的差。
[0263] 实施方案9.根据实施方案6至8中任一项所述的学习方法,其中,所述处理还包括:
[0264] 针对所述多个层中的每个层,计算在先前的更新处理中在所述参数的更新之前的值与更新之后的值之间的差,以及
[0265] 基于所计算的差,确定在所述多个层中包括的层是否要被设置为所述更新抑制层。
[0266] 实施方案10.根据实施方案9所述的学习方法,其中,
[0267] 所述确定包括:当向量的范数等于或小于预定阈值时,确定将所述层设置为所述更新抑制层,所述向量基于针对所述值中的每个值的在先前的更新处理中在更新处理之前的值与更新处理之后的值之间的差,所述值中的每个值与所述层中的多个参数中的每个参数对应。
[0268] 实施方案11.一种学习设备,包括:
[0269] 处理单元,所述处理单元配置成:
[0270] 在针对具有多个层的模型重复执行的学习处理中,每k次所述学习处理,仅执行一次针对所述多个层中的至少一个更新抑制层的参数的值的更新处理,其中k为2或更大的整数;以及
[0271] 当执行针对所述更新抑制层的参数的值的更新处理时,使用在之前k次所述学习处理中计算出的所述参数的第二值和在之前2k次所述学习处理中计算出的所述参数的第三值,通过应用了动量法的梯度下降法来计算更新之后的所述参数的第一值。
[0272] 实施方案12.根据实施方案11所述的学习设备,其中,
[0273] 所述处理单元通过将第一误差梯度近似为第二误差梯度来计算所述参数的第一值,所述第一误差梯度为尚未执行所述参数的值的更新处理的学习处理中的误差梯度,所述第二误差梯度为已经执行所述参数的值的更新处理的学习处理中的梯度。
[0274] 实施方案13.根据实施方案11所述的学习设备,其中,
[0275] 所述处理单元通过使用计算公式来计算所述参数的第一值,所述计算公式包括动量项,所述动量项为乘以差和预定系数的项,所述差为所述参数的第二值与所述参数的第三值之间的差。
[0276] 实施方案14.根据实施方案11至13中任一项所述的学习设备,其中,
[0277] 所述处理单元针对所述多个层中的每个层,计算在先前的更新处理中在所述参数的更新之前的值与更新之后的值之间的差,以及
[0278] 所述处理单元基于所计算的差来确定在所述多个层中包括的层是否要被设置为所述更新抑制层。
[0279] 实施方案15.根据实施方案14所述的学习设备,其中,当向量的范数等于或小于预定阈值时,所述处理单元确定将所述层设置为所述更新抑制层,所述向量基于针对所述值中的每个值的在先前的更新处理中在更新处理之前的值与更新处理之后的值之间的差,所述值中的每个值与所述层中的多个参数中的每个参数对应。