卷积神经网络训练技巧具体怎样训练

卷积神经网络具体怎样训练?
有几个非常不清楚的难点,卷积层到Pooling层如何误差反传?全连接层到pooling如何误差反传??
按投票排序
全链接到pooling就是链式法则,推导简单。pooling到卷积咋说呢,和别的一样,如果是平均卷积就把误差也平均了传递就是了
同样按照bp公式推导,毕竟原则是不变的。比如说最流行的max pooling,那就只对原convolution区块中输出最大值的那个neuron进行反向传播,其他neuron对权值更新的贡献算做0。
这两篇blog详细分析了。在图形处理单元上训练卷积神经网络的制作方法
专利名称在图形处理单元上训练卷积神经网络的制作方法
专利说明在图形处理单元上训练卷积神经网络
某些计算机问题,如字符识别和图象识别都能用机器学习技术很好地解决,其中主要是利用神经网络。神经网络是一类基于相互连接的“神经元”概念的算法。在一个典型的神经网络中,神经元具有多个数据值,每个数据值根据预定义的连接强度影响一个所连接的神经元的值,并判断对于每个特定神经元的总连接是否达到预定义的阈值。通过确定合适的连接强度和阈值(这一过程也被称为“训练”),神经网络就可以有效识别图形和字符。通常,这些神经元被分组到多个“层”中,以使组间的连接对数据值的每次计算更加明显。
图1例示了一个简化的神经网络框图,该图解释了手写字母“m”的一个示例100。在该示例中,示例性神经元的值是0或1。这是为了简化示例,并不限制在神经网络的神经元的数据值的范围或类型。在该示例中,手写样本的电子图像用于为输入层210即“第0层”创建一组数据值。在有些实现中,这可以通过直接将样本200的每个像素映射到第0层的某个特定神经元来实现,从而每个神经元根据像素是开还是关来显示1或0。另一个给神经元赋值的示例方法将结合卷积神经网络在以下讨论。由于神经网络的不规则性,以及它所导致需要解决的问题,神经网络的每一层可能有不同数量的神经元,而这些可能与输入数据的具体质量有关或无关。
如图1所示,第0层中的多个神经元与下一层即第1层(120)中的神经元相连接。在一个实现中,这被称为全连接神经网络,具体层中的每个神经元都与下一层的每个神经元相连接。在图1的示例中,通过展示两个神经元与第1层中的每个神经元的连接,部分地说明了这一点。然后,第1层中的每个神经元从第0层中的每个神经元接收输入值。这些输入值就进行加总,加总之和与偏差即阈值进行比较。如果该输入值超出一个具体神经元的阈值,该神经元就保持一个可作为下一层中的神经元的输入值的正值。这种计算对于神经网络中的各个层都持续出现,直到计算到最后一层,即层130,这里称其为“第n层”。在这一点处,神经网络例程的输出可从第n层的值中读取。在一字符识别中使用的网络实现中,层中的每个值都被赋予一个具体的字符。在这个实现中,该网络配置成以输出层结束,该输出层在一个神经元中只有一个大的正值,随后,该值显示出哪个字符是该网络计算出的最有可能的手写输入字符。
然而,如图2所示,这些连接在计算上很复杂。图2是基于前一层中的数据值计算神经元的数据值的方法的框图。应当注意,虽然图2例示了各种矩阵,但这些矩阵的指数(或大小)会因层和网络的改变而改变,而且,各种实现可能会有所不同地将矩阵定向至或映射至计算机存储器中。如图2所示,实现神经网络的一个方法是把每一层都当作一个神经元数据值矩阵,第0层矩阵210例示了这一方法。连接强度就可实现为一转换矩阵220,该转换矩阵乘以第0层矩阵210。这个乘积允许前一层中的每个数据值依据连接强度来通过一般的矩阵乘法运算进行缩放,然后加总。相乘后,添加一偏差矩阵230至乘积矩阵中以说明下一层中的每个神经元的阈值。然后,将S函数(在一实现中为tanh())应用于每个作为结果的数据值以确定是否达到阈值,因此而产生的数据值放置到矩阵中供下一层所用。这也被称为“压缩函数”。因此,如图2所示,每层间的连接,以及整个网络可用一系列的矩阵来表示。寻找这些矩阵的合适值就是训练神经网络的问题。
虽然图2例示了神经网络可以实现为矩阵,但如下述讨论,神经网络计算和神经网络训练还包括许多数学计算。此外,非全连接神经网络计算复杂性甚至更大。
一像素着色器程序能在图形处理单元上有效训练卷积神经网络。例如,一卷积神经网络在图形处理单元上被实现为一系列纹理。然后,该神经网络通过一系列正向传递和反向传递进行训练,其中卷积核和偏差矩阵在每次反向传递中根据误差函数的梯度利用梯度下降法得到修正。
该实现利用了GPU中的像素着色器单元的并行处理性能,以有效地并行计算正向传递和反向传递。它还利用了一组示例性的逐步推倒公式以执行像素着色器单元中的计算。在一实例中,程序通过纹理来完成输入和输出,计算过程中这些纹理在也会被处理。在另一实例中,使用了一多级求和运算过程对各像素着色器单元寄存器进行求和运算。多种技术和系统可组合使用或单独使用。
本发明内容部分提供一些简单形式的概念的介绍,这些概念在下面的详细说明部分中将进行详细的描述。本发明内容部分不用来确定权利要求主题的关键特征或实质特征,也不用来确定所要求保护的主题的范围。
结合附图阅读以下详细描述的说明性实施例,可以清楚理解本发明的其它特征和优点。
图1是一个常规的全连接神经网络框图。
图2是一个全连接神经网络的两层间的连接的矩阵实现的框图。
图3是一个图形处理单元架构的框图。
图4a和图4b是两个例示在手写体样本上使用卷积核框图。
图5是图形处理单元中的卷积神经网络的代表性训练过程的流程图。
图6是为图形处理单元中的计算准备神经网络数据的子过程的流程图。
图7是一个多级求和运算的例子的框图。
图8是实施图6的卷积神经网络技术的合适的计算环境的框图。
具体实施例方式 以下描述涉及,为了识别手写体而对图形处理单元(“GPU”)架构训练卷积神经网络。GPU对输入数据反复执行正向传递和反向传递,修正和优化包括每一次传递中的神经网络的矩阵。这里描述的许多方法都已经设计出来,以利用GPU的高效性和使用为在GPU上高效执行而设计的像素着色器程序。
1、GPU架构
这里所描述的方法实现在一图形处理单元中。图1所示的一图形处理单元例示了对传统的GPU结构300的简述。在一个实现中,GPU架构与图8所示的GPU 815相对应。显示数据305描述了要呈现的数据的几何图形,该显示数据305被输入到顶点着色器单元310中,以生成其几何形式的多角形的表示。然后,把这些几何形状输入到一光栅器中,该光栅器内插多角形并对它们进行采样,以在图形空间形成一组样本点,该组样本点就可以被着色器并被添加纹理。然后,这些点被传输到一系列可编程的像素着色器单元330中,可编程像素着色器单元330利用并行计算技术为这些点着色,并添加和操作纹理。正是因为能够并行计算和操作纹理使得GPU,尤其是像素着色器单元,成为神经网络计算的一个有用的平台。在为利用像素着色器单元而写的GPU可执行程序像素着色器程序的控制下,像素着色器单元计算被频繁地执行。
能够在训练前被计算机CPU预先加载至图形存储器350的纹理被高速缓存入纹理高速缓存器340。一旦这些过程都完成后,图像点就可以在传输给图形存储器350之前置入帧缓冲器360。然而,在这里的方法的各种实现中,神经网络的输入数据和输出数据都将保存在纹理中。因此,在各种实现中,帧缓冲器的图像点输出就被忽略了或者就根本没有创建。
2、卷积神经网络
虽然上述全连接神经网络经过合适训练后能够识别手写体,但是在对输入进行操作时,它们经常不能利用形状和接近性。原因之一是每个像素都是各自独立操作的,忽略了相邻的像素。正因如此才使用了卷积神经网络,它是通过联合数据值阵列与每个神经元而运作的,而非通过单个值来运作。由此,这个阵列可以认为是一图像的一小片。下一层的神经元值的变换通常就从乘法泛化为卷积。这意味着连接强度230是卷积核而非标量值。图4a和4b展示了作用于字母“m”的一个样本400的卷积核的两个例子。在图4a中,样本与表示一竖线的卷积核410结合。因此而产生的像素片420包括样本中存在的三条竖线。同样地,在图4b中,手写体样本450与表示向右上方斜线的卷积核460结合。这使得像素片460包括输入字符的两条斜线。如图4a和4b所示,两个结果片在保持像素相邻的情况下示出字符的不同信息。这使字符识别更加有效。
然而,这些更复杂的传输包括更复杂的神经网络矩阵。因此,当一全连接网络中的一个矩阵包括一个数值阵列时,在一卷积神经网络中,每个矩阵条目都是一个矩形的(或正方形的)像素片;类似地,偏差矩阵也具有像素片,并且对每个片的每个元素执行S函数。此外,随着并行计算要求的增加,卷积神经网络的计算涉及到更复杂的数学而非简单的矩阵乘法运算。以下第四节部分描述了一卷积神经网络计算实现的例子。更多关于卷积网络方面的信息见P.Y.Simard,D.Steinkaus,and J.C.Platt所著的,“Best Practices for ConvolutionalNeural Networks Applied to Visual Document Analysis(卷积神经网络应用于可视文本分析的最佳实践)”proc.International Conference on Document Analysisand Recognition,pp958-962(文档分析和识别国际会议期刊,第958至962页),2003,该文献作为参考引入本说明书。
3、训练过程
图5展示了用于训练一卷积神经网络的一个示例过程500。在过程500的各种实现中,各步骤可以被删除、组合或分成子步骤。该过程开始于步骤510,在该步骤中,过程接收一需要训练的神经网络和训练样本。在一一般的实现中,网络可以预先设置好样本卷积核和偏差,但是每个样本卷积核和偏差都需优化以给出一致的且有效的结果。训练样本通常包括许多(在成千上万个的数量级)手写体字符样本,并要标出每个样本对应的正确字符。接下来过程进行到步骤520,准备神经网络数据比如样本和神经网络矩阵,将之作为图形数据,由GPU300的像素着色器单元330处理。这个步骤的示例过程将在以下图6中做进一步的详细描述。在一个实现中,步骤510和520都由和GPU 815相关联的CPU执行。在另一实现中,所有准备工作都由GPU 815执行。
如图5所示,这些样本中的每一个都将输入至卷积神经网络,并且计算输出以确定网络离合适的字符识别有多接近或多远。这被称为“正向传递”。然后,关于包括网络的每个矩阵的误差度通过所谓的“反向传递”来确定,然后根据误差修正矩阵。以下通用GPU程序的一般实践在这里描述的实现中写作一系列像素着色器程序。
这样,在步骤530中,GPU进入每个样本输入的循环。在步骤540中,神经网络经正向传递,为一给定样本确定一输出。接下来,在步骤550中,用一误差函数计算神经网络距期望输出有多远。接着在步骤560中,为误差函数确定一梯度函数。通过计算一梯度函数,所述梯度函数包括每个神经网络矩阵的每个条目相对于误差的偏导数,GPU可以根据梯度下降法计算出每个矩阵必须调整多少。然后,在步骤570中,包括卷积核和偏差的矩阵根据梯度函数得到修正。步骤550,560和570被总称为“反向传递”,因为它们接收输出误差信息,并且利用这些信息来确定每个神经网络矩阵所需做出的修正。第4节描述了这些正向传递和反向传递中使用的等式的一个实现的例子。最后,在步骤580中,只要有更多的样本输入,过程500的正向传递和反向传递步骤就会被反复执行。在样本输入结束时,神经网络已经对那些输入进行训练,过程也就此结束。
图6展示了用于准备神经网络数据的示例过程600,该数据在过程500的步骤520中为图形数据。在过程600的各种实现中,各步骤可以被删除、组合或分成子步骤。过程开始于步骤610,在该步骤中,过程创建一由覆盖全部视口的单一三角形组成的场景。之所以这么做是为了保护光栅器和GPU的其他阶段不受计算结果的影响,以免过程集中在像素着色器计算上。
在理想实现中,每个数据并行变量都存储为一个二维纹理。然而有些变量超过二维,所以在步骤620中它们被嵌入一二维纹理中。例如,变量Kv可通过以下等式(记号见以下第4节)“平坦化”为
在下一个步骤630中,为纹理确定了一坐标系统,因为像素着色器单元是为能在“像素”上运作而设计的,因此每个“像素”(在这里,像素是一卷积网络矩阵的元素)的位置必须确定。一种常用方法是将“纹理坐标”信息与向顶点着色器单元呈现的三角形的顶点相关联。然后,GPU就可以在每一个输出像素上插入纹理坐标值,并在一个像素着色器单元寄存器中提供插入的值。这不仅可以用来确定像素,还可以用来预先计算像素着色器程序执行期间所需的值。
然而,光栅器的插值函数的任何非平凡的使用都使得程序需要在每一次传递前适当地设置顶点数据。设置顶点数据的开支可能会超过从预计算数据值中获得的好处。另一可选择的实现利用了微软公司的ShaderModel 3.0和ShaderModel 3.0的vPos的寄存器。这个寄存器将到输出纹理的左上角的整数偏移量包括在其x和y分量中。从输入纹理中查找数据值所需的地址是vPos的简单线性组合。当坐标系统确定后,过程就可以在步骤630中创建纹理。最后,在步骤640中,纹理在处理开始前加载到GPU中。在一个实现中,如果不是所有的,也需要尽可能多的纹理加载到图形存储器中以防止GPU访问系统存储器,访问系统存储器会减慢计算时间。在这一点处,过程结束。
4、实现和推导
虽然在其他实现中可以使用其他系统,但这里的每个例子都利用了ShaderModel 3.0像素着色器系统。如上所述,一神经网络包括N层神经元,其中每个神经元都具有一个数值。在本节,称第v层为lv。lv是一向量,将其长度表示为nv,向量的第i个元素写作liv。每个lv+1层可利用“已知参数”Kv和bv并根据前一层lv计算出来。训练过程的目标是利用梯度下降法为这些参数寻找适合的值。为方便标记,使用条件算子I{c},当条件c为真时,该算子等于1,否则为0。这里所述的推导为神经网络训练提出了一些等式,为了减少在执行这些训练技术时对像素着色器程序的调用次数,所以这些等式用代数的方式简化和组合了。
4.1全连接网络——正向传递
为了帮助理解卷积神经网络的问题,将它与层数为2的相对简单的全连接网络相比较。这样,在正向传递中,每一层都根据前一层计算得出,lv+1可由以下公式计算出
lv+1=σ(?v)=σ(Kvlv+bv)(4.1)
其中,0≤v<N。这里,σ是一个tanh的一个元素级应用的“压缩函数”,Kv为一个表示两层间连接强度的nv+1×nv矩阵,bv是表示偏差的长度为nv+1的向量。
4.2全连接网络——误差函数
为了将输出层lN作为一字符的分类器使用,可以分辩nN类,并把liN当作输入属于i类的概率
的指示符。为使这些liN变成有效概率,可以利用“softmax”函数对它们进行标准化
如果知道当前输入下的正确的分类为t,那么理想的计算应得出距这一理想值的总偏差E可用“交叉熵”公式测得
4.3全连接网络——反向传递
如上所述,梯度下降法被用来训练神经网络的各种参数。这包括寻找误差函数E相对于每个参数Kv和bv的偏导数。为了简化标记,引入
其中,□表示元素级乘法运算,σ′是tanh′的一个元素级应用。将E的定义代入等式(4.4)中得
这样,对0≤v≤N有
其中,?表示外积。对0≤v≤N又有
ψv-1=(kv)Tψv□σ′(?v-1)(4.9)
其中,(kv)T为kv的矩阵转置。
利用以下所示的方法,前述等式可以通过更新参数来修正神经网络参数
当0≤v≤N时,γ为学习率。在一个实现中,学习率设为10-3。
4.4卷积神经网络——前向传递
与全连接神经网络相反,在卷积神经网络中,一个层的每一个元素liv不是标量,而是数字的pv×pv矩形片。相应地,Ki,jv用来表示大小为sv×sv的卷积核,biv为pv+1×pv+1的偏差片。各层、各偏差和各核的各个元素分别写作l&i&&x,y&v,K&i&&x,y&v和b&i&&x,y&v。
类似于全连接情形,计算lv+1的公式为
然而,这里使用的符号*表示一个有些不一般的运算。直观上,它类似于矩阵向量积,但它最内部的运算不是标量的乘法运算而是各片的卷积和次采样。更确切地,如果lv是pv×pv片的一个长度为nv的向量,且Kv是sv×sv核的一个nv+1×nv矩阵,那么,w=Kv*lv表示w为pv+1×pv+1片的一个长度为nv+1的向量,且
可以看出,上述是全连接情形下等式的泛化,因为当pv,sv=1时,那么等式(4.12),(4.13)和(4.14)会变成全连接网络的等式。
4.5卷积神经网络——误差函数
上述全连接网络中的误差函数的等式也可应用到卷积网络中。
4.6卷积神经网络——反向传递
如上所述,在反向传递过程中,利用E对网络中的每个变量求偏导数,求得E的梯度。首先计算
如前所述,其中,表示元素级乘法运算,σ′为用作“压缩函数”的tanh的元素级应用。由等式(4.15),导数可概括为
其中,(Kv)T为Kv的矩阵转置。
注意到,本申请所使用的算子*′和?′是非标准性的。算子?′类似于一个外积,但其中的卷积和次采样代替了最内部的乘法运算。如果
是pv+1×pv+1片的长度nv+1向量,且lv+1是pv×pv片的长度nv向量,那么
表示,M为sv×sv片的一个nv+1×nv矩阵,且有
sv=pv-2pv+1-2 (4.20)
算子*′类似于算子*的逆,因为它扩展了而非收缩卷积自变量。如果M是sv×sv核的一个nv×nv+1阵列,且
是pv+1×pv+1片的一个长度nv+1向量,那么,
表示u为pv×pv片的一个长度向量,且
pv=2pv+1+sv-2 (4.22)
其中,“*′cond”相当于满足以下四个条件
同上,当pv,sv=1时,这些反向传递公式则变成全连接网络的等式。
4.7其他层的建模
在实际应用中,卷积神经网络既有卷积也有全连接,也就是说,在有些层中pv,sv>1,在有些层中pv,sv=1。因为每一层都能作为卷积层进行数学建模(因为它是全连接层的泛化),所以把全连接层当作一个特例并使用更简单的公式,在计算上更有效。
此外,还有另一种特殊情况可称为“过渡”层。这时,pv,sv>1但pv+1=1。在这种情况下,正向传递简化为
同样地,反向传递简化为
4.8多级求和运算
像素着色器单元的数据并行性质使其很难进行加法运算。因为每个像素上的结果不能依赖于其他像素上的结果,要重新使之有效的一个方法就是在多次传播中进行加法运算,其中,每次传播都加上一些固定数量的水平相邻的片。如果A是p×p片的一个n×m阵列,那么函数Sr可定义为
图7例示了这种多级加法运算的一个例子。在图7中,一矩阵710需要在每行上相加。现给出一行做为示例。在图7的示例中,矩阵中的元素每四个分组相加,所以,第一组四个元素的和加入到一过渡和矩阵720中对应行的第一个元素。同样地,第二组的四个元素加入到对应行的第二个元素,依次类推。然后,在第二次传递中,过渡和矩阵的四个元素相加得到该行的总和。
4.9运行条件的实现
由于GPU的单指令、多数据(SIMD)的性质,运行条件可能成为影响性能的重大负担。在许多像素着色器程序编码模型中,有多种不同的方法可以对这些运行条件进行编码。然而,在测试中发现,指令if,指令cmp和(p0)predicate的运行速度都很慢。
为了避免这一点,当运行条件检查边界条件时,发现一种有效解决的方法是一起删除所有运行条件,并且将GPU的输入级设置为“border color sampling(边界颜色采样)”。这使纹理的定义域以外的所有访问返回零。对于非边界性限制条件,发现将运行条件编码至一浮点数中最有效,该浮点数当且仅当条件为真时,大于零。这个数可结合一足够大的因子通过指令mul_sat标准化为零或1。这将重新建立公式中所使用的I{c}。
4.10其他实现细节
除了执行计算所需的时间之外,GPU中的每次传递都有一个固定性能开支。此外,包含在GPU驱动程序中的编译器通常无法优化像素着色器程序。为了实现良好性能,这些因素使得合并每个像素着色器程序中尽可能多的计算显得非常重要。
现有的为CPU而设计的卷积神经网络的实现,把计算的每个概念组成部分视为一可分离函数,例如卷积、子采样以及它们的衍生物。前面的逐步推导公式的分析推导针对GPU提出了优化,减少了这项开支。
另外,因为在GPU上分配和解除分配的开支巨大,为将费用减到最小,在一个较佳实现中,在过程开始时就定义所有像素着色器程序,为所有纹理分配地址,一直重复使用直到过程结束。通常认为,CPU和GPU之间的数据传输开支昂贵,但是因为数据量相对较小,可以在不进行不牺牲大量时间优化的情况下完成。例如,在一个实现中,每个训练样本所需传递的仅仅是与输入(通常是29×29像素)相应的像素片和正确的分类。
5.计算环境
上述神经网络训练方法可以在执行数字媒体信号处理的各种设备中实施,包括计算机;图像和视频记录、传输和接收设备;便携式视频播放器;视频会议等。上述技术可在硬件电路中实施,也可用在计算机或其他计算环境中执行的数字媒体处理软件来实现,所述计算环境例如图8所示的环境。
图8例示了一个普遍的合适的计算环境(800)的示例,上述具体内容可以在该环境中实现。因为本发明可以实现于多样的通用或专用计算环境中,计算环境(800)不用来限制本发明的使用范围或功能范围。
参见图8,计算环境(800)包括至少一个处理单元(810)、一个GPU(815)和存储器(820)。在图8中,最基本的配置(830)包括在虚线内。处理单元(810)执行计算机可执行指令,该处理单元(810)可以是一真实或虚拟处理器。在一多处理系统中,多处理单元执行计算机可执行指令以增强处理能力。存储器(820)可以是易失性存储器(例如寄存器、高速缓存、RAM)、非易失性存储器(例如ROM、EEPROM、闪存等),或两者的组合。存储器(820)存储执行上述编码器/解码器和有效的转换系数编码/解码技术的软件(880)。GPU(815)与处理单元810整合在一单个电路板上或包含在不同电路板中。在一个实现中,GPU(815)有如图3所示的结构。
一计算环境可能有其他特征。例如,计算环境(800)包括存储器(800)、一个或多个输入设备(850)、一个或多个输出设备(860)和一个或多个通信连接(870)。像总线、控制器或网络这样的相互连接机构(图中未示出)相互连接计算环境(800)中的各组件。通常地,操作系统软件(图中未示出)为计算环境(800)中执行的其他软件提供一操作环境,并且协调计算环境(800)中的各组件的活动。
存储器(840)可以是可移动的或不可移动的,并且包括磁盘、磁带或磁带盒、CD-ROMs,CD-RWs,DVDs,或其他可用来存储信息并且能在计算环境(800)中访问的介质。存储器(840)存储执行上述神经网络训练方法的软件的指令(880)。
输入设备(850)可以是触摸输入设备如键盘、鼠标、笔或跟踪球、一声音输入设备、一扫描设备、或其他向计算环境(800)提供输入的设备。对于音频来说,输入设备(850)可以是一声卡或其他可接收模拟或数字形式音频输入的类似的设备,或一向计算环境提供音频样本的CD-ROM阅读器。输出设备(860)可以是一显示器、打印机、扬声器、CD记录器、或其他能在计算环境(800)中提供输出的其他设备。
通信连接(870)能通过通信介质与其他计算实体进行通信。通信介质传递信息,如计算机可执行指令、压缩音频或视频信息、或调制的数据信号中的其他数据。调制的数据信号通过设定或改变其一个或多个特征的方法来实现信号内信息的编码。作为例子而非限制,通信媒介包括应用了电、光、射频、红外、声,或其他载体的有线或无线技术。
这里的数字媒体处理技术可在计算机可读媒体的一般上下文中描述。计算机可读媒体是任何可在一计算机环境中被访问的可用媒体。作为例子而非限制,计算机可读媒体包括存储器(820)、存储器(840)、通信媒体和它们的任意组合。
这里的神经网络训练技术可以在计算机可执行指令的一般上下文中描述,例如包括在程序模块中的计算机可执行指令,在一目标真实或虚拟处理器上的计算环境中执行的计算机可执行指令。一般地,程序模块包括执行具体任务或实现具体抽象数据类型的例程、程序、程序库、对象、类、组件、数据结构等。程序模块的功能可以在上述各实施例中的程序模块中组合或分离。程序模块的计算机可执行指令可以在本地或分布式计算环境中执行。
为了便于表述,本具体实施方式
部分使用了如“确定”、“生成”、“调整”和“应用”之类的术语来描述一计算环境中的计算机运作。这些术语是对计算机运作的高度抽象,不应与人类的活动混淆。与这些术语对应的真实的计算机运作根据实现而改变。
由于这里描述的主题有多种可能的变形,因此本发明的所有实施例,以及等价的方法都在本发明所要求保护的范围之内。
1.一种训练卷积神经网络以利用图形处理单元(“GPU”)以及一个或多个GPU可执行程序可读的图形数据来识别图像的计算机实现的方法,所述图形数据表示所述卷积神经网络的状态,所述方法包括
在GPU上执行一个或多个GPU可执行程序,以在所述卷积神经网络中执行一正向传递;
在GPU上执行一个或多个GPU可执行程序,以在所述卷积神经网络中执行一反向传递;
在GPU上执行一个或多个GPU可执行程序,以基于反向传递的结果修正所述图形数据;以及
重复执行一个或多个GPU可执行程序,以执行正向传递、反向传递,并且修正所述图形数据,直到所述卷积神经网络得到训练。
2.如权利要求1所述的方法,其特征在于,所述图形数据包括表示一个或多个神经网络变量的一个或多个纹理。
3.如权利要求2所述的方法,其特征在于
所述一个或多个纹理包括二维纹理;以及
至少一个或多个所述纹理表示一个超过二维的神经网络变量,该神经网络变量已被扁平化为二维。
4.如权利要求2所述的方法,其特征在于一纹理中所表示的值的地址通过一输出纹理的左上角的x和y的偏移量坐标的线性组合来确定。
5.如权利要求1所述的方法,其特征在于
所述GPU可执行程序以一个或多个像素着色器程序的形式写入。
6.如权利要求1所述的方法,其特征在于,所述图形数据利用梯度下降来进行调整。
7.如权利要求6所述的方法,其特征在于
所述一个或多个程序利用公式来计算偏导数以确定一梯度;以及
所述公式用代数方法进行组合和简化以减少对像素着色器程序的调用。
8.如权利要求1所述的方法,其特征在于
所述神经网络包括一个或多个全连接层;以及
所述一个或多个GPU可执行程序包括利用了全连接层的单独公式的对于一个或多个全连接层特定的一个或多个GPU可执行程序。
9.如权利要求1所述的方法,其特征在于
所述神经网络包括一个或多个过渡层;以及
所述一个或多个GPU可执行程序包括利用了过渡层的单独公式的对于所述一个或多个过渡层特定的一个或多个GPU可执行程序。
10.如权利要求1所述的方法,其特征在于,所述图形数据描述覆盖视口的单一三角形。
11.如权利要求1所述的方法,其特征在于
所述一个或多个GPU可执行程序包括一个或多个求和运算;以及
所述一个或多个求和运算被分入到多次传递中。
12.如权利要求1所述的方法,其特征在于,所述卷积神经网络执行手写识别。
13.一种或多种包括描述由如权利要求1所述的过程训练的卷积网络的数据的计算机可读媒体。
14.一种或多种包括指令的计算机可读媒体,所述指令在一图形卡上执行时使所述图形卡执行一种训练神经网络的方法,所述方法包括
接收表示所述神经网络的多个纹理;
基于多个输入数据计算所述神经网络的多次正向传递;
对于所述多次正向传递中的每一次,用一梯度函数计算所述神经网络的反向传递;以及
对于每次反向传递,基于所述梯度函数的结果,改变包含在所述多个纹理中的信息以影响所述神经网络的训练。
15.如权利要求14所述的计算机可读媒体,其特征在于
所述神经网络被训练来识别手写字符;
所述多个纹理至少部分地表示卷积核;以及
所述卷积核对表示手写字符的输入数据进行处理。
16.如权利要求14所述的计算机可读媒体,其特征在于,所述多个纹理至少部分地表示一全连接神经网络层和一过渡层。
17.一种被配置成执行训练手写识别神经网络的方法的图形处理单元,所述图形处理单元包括
被配置成存储一个或多个图形纹理的数据存储器,所述图形纹理描述所述手写识别神经网络;
通过像素着色器程序来配置的多个像素着色器单元,用以
对手写输入数据执行所述神经网络的重复的正向传递和反向传递;
将结果存储到所述多个图形纹理中;以及
基于所述正向和反向传递的结果修正所述多个纹理来训练所述神经网络。
18.如权利要求17所述的图形处理单元,其特征在于,所述手写体识别神经网络至少部分地包括一卷积层和一全连接层。
19.如权利要求17所述的图形处理单元,其特征在于,所述一个或多个图形纹理被配置成描述一简化的三角形图像,以使所述图形处理单元所执行的所有处理只需对所述像素着色器单元的部分进行计算。
20.如权利要求17所述的图形处理单元,其特征在于,所述像素着色器单元被配置成使得所述神经网络的正向传递和反向传递中的求和运算分成多个更小的求和运算。
在图形处理单元上实现一卷积神经网络。然后,卷积神经网络通过一系列正向传递和反向传递来进行训练,其中卷积核和偏差矩阵在每一次反向传递中根据误差函数的梯度得到修正。该实现利用图形处理单元中的像素遮蔽单元的并行处理性能,并利用一组逐步推导的公式对像素遮蔽单元的计算进行编程。程序通过纹理来完成输入和输出,并且使用一多级求和运算过程对各像素遮蔽单元寄存器进行求和运算。
文档编号G06F15/18GKSQ
公开日日 申请日期日 优先权日日
发明者S·普里 申请人:微软公司

我要回帖

更多关于 卷积神经网络 训练 的文章

 

随机推荐