发明名称 一种计算机智能识别的深层神经网络结构设计方法
摘要 一种计算机智能识别的深层神经网络结构设计方法,对于图像而言,由于相邻像素间的相关性,这就使得可以使用更少的数据表示同一个事物,降低数据维度。选定网络初始层数;输入层神经元个数为训练样本维数;是否需要归一化;训练样本做主成分分析确定第一个隐含层神经元个数;确定第二层隐含层神经元个数;训练网络,测评网络结构;结果不理想时增加一个隐含层,将上一层降维后的矩阵经过非线性变换函数作用后做主成分分析确定该隐含层神经元个数并训练网络,重复试验,直到取得良好效果。本发明解决了深层神经网络中结构设计的随机性、盲目性和不稳定性,大大提高了深层神经网络训练的速度和学能力,为深层神经网络的发展奠定基础。
申请公布号 CN105787557A 申请公布日期 2016.07.20
申请号 CN201610100209.4 申请日期 2016.02.23
申请人 北京工业大学 发明人 李玉鑑;杨红丽;时康凯
分类号 G06N3/04(2006.01)I;G06N3/08(2006.01)I 主分类号 G06N3/04(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 沈波
主权项 一种计算机智能识别的深层神经网络结构设计方法,主成分分析是一种能够极大提升无监督特征学习速度的数据降维算法;对于图像而言,由于相邻像素间的相关性,主成分分析算法可以将输入矩阵转换为一个维数低很多的近似矩阵,而且误差非常小;这就使得可以使用更少的数据表示同一个事物,降低数据维度;同时可以最大限度的保留原有数据的内部结构和分布;深度学习的基本思想就是假设有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为:I=&gt;S1=&gt;S2=&gt;…..=&gt;Sn=&gt;O,如果输出O等于输入I,即输入I经过这个系统变化之后保持不变,这意味着输入I经过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另外一种表示;所以在深层神经网络中,通过调整系统中参数,使得它的输出O仍然是输入I,那么就可以自动地获取得到输入I的一系列层次特征,即S1,…,Sn;通过这种方式,就可以实现对输入信息进行分级表达了;所以,对图片和语音数据多次进行主成分分析的思想和深度学习的思想在一定程度上是吻合的,每次对数据进行主成分分析后得到的新的矩阵和深层神经网络中每层神经元都是对输入数据的不同表示形式,两者有很大的相似性;本方法正是基于此原理提出了一种应用在计算机视觉和语音识别领域中深层神经网络的结构设计方法;其特征在于:该方法包括以下步骤,步骤1,人工选定计算机智能识别的深层神经网络初始层数L为4,即包括输入层、第一个隐含层、第二个隐含层和输出层,所述智能识别包括计算机视觉识别和语音识别;步骤2,计算机视觉识别的图片或计算机语音识别的语音作为训练样本集,将训练样本集转化为矩阵的形式即Y<sub>0</sub>={Y<sub>01</sub>,Y<sub>02</sub>,...,Y<sub>0p</sub>},其中Y<sub>01</sub>,Y<sub>02</sub>,...,Y<sub>0p</sub>分别代表一个样本,共p个样本,p取正整数,每个样本维数为d;步骤3,定义输入层神经元个数为训练样本的维数d;步骤4,如果训练样本集是图片且取值范围在(0,255)之间,需要将训练样本进行归一化操作,否则直接进行下一步操作;如果训练样本集是语音,则直接进行下一步操作;步骤5,训练样本集Y<sub>0</sub>为第一个隐含层的输入矩阵,通过对输入矩阵Y<sub>0</sub>做主成分分析确定第一个隐含层神经元的个数HN<sub>1</sub>,主成分分析算法的具体计算过程如下:S5.1输入矩阵表示为Y<sub>i</sub>={Y<sub>i1</sub>,Y<sub>i2</sub>,...,Y<sub>ip</sub>}(0≤i≤L‑1),其中Y<sub>i</sub>代表不同隐含层的输入矩阵,Y<sub>i</sub>的维数为变量n;S5.2输入矩阵去均值化:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>Y</mi><mi>i</mi></msub><mo>=</mo><msub><mi>Y</mi><mi>i</mi></msub><mo>-</mo><mover><mi>Y</mi><mo>&OverBar;</mo></mover><mo>,</mo></mrow>]]></math><img file="FDA0000928216110000021.GIF" wi="230" he="70" /></maths>其中<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mover><mi>Y</mi><mo>&OverBar;</mo></mover><mo>=</mo><mfrac><mn>1</mn><mi>p</mi></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>p</mi><mo>=</mo><mn>1</mn></mrow><mi>p</mi></munderover><msub><mi>Y</mi><mi>p</mi></msub><mo>,</mo><mrow><mo>(</mo><mi>i</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mi>p</mi><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000928216110000022.GIF" wi="574" he="134" /></maths>S5.3计算输入矩阵Y<sub>i</sub>的协方差矩阵:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>S</mi><mrow><mi>n</mi><mo>&times;</mo><mi>n</mi></mrow></msub><mo>=</mo><msub><mi>&Sigma;</mi><msub><mi>Y</mi><mi>i</mi></msub></msub><mo>=</mo><mfrac><mn>1</mn><mi>P</mi></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>P</mi></munderover><mrow><mo>(</mo><msub><mi>Y</mi><mrow><mi>i</mi><mi>k</mi></mrow></msub><mo>-</mo><mover><mi>Y</mi><mo>&OverBar;</mo></mover><mo>)</mo></mrow><msup><mrow><mo>(</mo><msub><mi>Y</mi><mrow><mi>i</mi><mi>k</mi></mrow></msub><mo>-</mo><mover><mi>Y</mi><mo>&OverBar;</mo></mover><mo>)</mo></mrow><mi>T</mi></msup><mo>,</mo><mrow><mo>(</mo><mn>1</mn><mo>&le;</mo><mi>k</mi><mo>&le;</mo><mi>p</mi><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000928216110000023.GIF" wi="1004" he="134" /></maths>其中Y<sub>i</sub>={Y<sub>i1</sub>,Y<sub>i2</sub>,...,Y<sub>ip</sub>},Y<sub>ik</sub>∈Y<sub>i</sub>,T为矩阵的转置操作;S5.4计算Y<sub>i</sub>的协方差矩阵的特征根和特征向量:求得特征根λ<sub>i1</sub>,λ<sub>i2</sub>,...,λ<sub>in</sub>及相应的单位化特征向量ξ<sub>i1</sub>,ξ<sub>i2</sub>,...,ξ<sub>in</sub>;S5.5根据各个特征根(主成分)累计贡献率的大小选取前m个最大特征根,这里贡献率就是指某个特征根占全部特征根合计的比重,即<img file="FDA0000928216110000024.GIF" wi="796" he="278" />λ<sub>ij</sub>代表矩阵Y<sub>i</sub>的协方差矩阵求得的各个特征根,贡献率越大说明该主成分所包含的原始数据的信息越强,一般要求累计贡献率达到85%——100%以保证原始数据的绝大多数信息,选择的m个最大特征根对应的单位化特征向量ξ<sub>i1</sub>,ξ<sub>i2</sub>,...,ξ<sub>im</sub>生成投影矩阵:M<sub>i</sub>=(ξ<sub>i1</sub>,ξ<sub>i2</sub>,...,ξ<sub>im</sub>)<sup>T</sup>,M<sub>i</sub>∈R<sup>m×n</sup>,其中ξ<sub>i1</sub>,ξ<sub>i2</sub>,...,ξ<sub>im</sub>代表Y<sub>i</sub>的协方差矩阵的前m个最大特征向量;S5.6对输入矩阵Y<sub>i</sub>进行投影得到降维后的矩阵<img file="FDA0000928216110000025.GIF" wi="82" he="63" />矩阵的维数m即为第(i+1)层隐含层神经元的个数HN<sub>i+1</sub>=m:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msubsup><mi>Y</mi><mi>i</mi><mo>*</mo></msubsup><mo>=</mo><msub><mi>M</mi><mi>i</mi></msub><mo>&times;</mo><msub><mi>Y</mi><mi>i</mi></msub><mo>;</mo></mrow>]]></math><img file="FDA0000928216110000026.GIF" wi="261" he="62" /></maths>步骤6,降维后的矩阵<img file="FDA0000928216110000027.GIF" wi="49" he="70" />经过非线性变换函数f作用产生第一层隐含层的输出矩阵Y<sub>1</sub>,f为sigmoid函数或tanh函数或ReLu函数:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msub><mi>Y</mi><mn>1</mn></msub><mo>=</mo><mi>f</mi><mrow><mo>(</mo><msubsup><mi>Y</mi><mn>0</mn><mo>*</mo></msubsup><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000928216110000028.GIF" wi="238" he="63" /></maths>步骤7,第二个隐含层输入矩阵即为第一个隐含层的输出矩阵Y<sub>1</sub>,通过对输入矩阵Y<sub>1</sub>做主成分分析(步骤S5.1至S5.6)确定第二个隐含层神经元的个数HN<sub>2</sub>;步骤8,输出层神经元的个数为标记类的个数;步骤9,利用图像或语音的训练数据对深层神经网络进行训练,对网络结构进行测评;步骤10,如果测评结果不理想,调整深层神经网络的层数L=L+1,(4≤L≤1000),增加一层隐含层,第i层降维后的矩阵<img file="FDA0000928216110000031.GIF" wi="52" he="68" />经过非线性变换函数f作用产生第(i+1)层隐含层的输入矩阵Y<sub>i+1</sub>,公式表达为<img file="FDA0000928216110000032.GIF" wi="550" he="63" />通过对输入矩阵Y<sub>i+1</sub>做主成分分析(步骤S5.1至S5.6)即可确定第(i+1)层隐含层神经元的个数HN<sub>i</sub>;步骤11,重复步骤9和10,不断调整网络层数并训练深层网络,直到取得良好的实验效果,确定深层神经网络的结构为输入层、第一个隐含层、第二个隐含层...、第(L‑2)个隐含层、输出层。
地址 100124 北京市朝阳区平乐园100号