一.DNN(深度神经网络)1.深度学习是以含有两个以上隐含层的神经网络对输入进行非线性变换或者表示学习的技术。深度学习包括多种结构:MLP(多层神经网络),CNN(深度卷积神经网络),RNN(循环神经网络),LSTM(时间递归神经网络)。(1)全连接层相当于內积运算,输出层的神经元和输入层的每个神经元都相连:得名“全”连接。forWord运算:mnnmTRwRxRbxwy,,y,11其中Backward运算:TyLwLyLWLx,x(2)卷积层2D卷积的数学形式:离散卷积:mnnymxKnmIyxKIyH,,,),x(Caffe实现:mnnmKnymIyxKIyxH,,x,,MCP神经元模型基础结构单元激活函数全连接层卷积层/反卷积层Pooling层Dropout层BN层RNN/LSTMSigmoid/TanhReLU/PReLU损失函数网络训练SoftmaxLoss欧式损失Sigmoid交叉时损失TripletLossMoonLossContrastiveLossBPAdaGrad/AdaDeltaMin-batchSGDNAGLRPolicyRMSprop梯度消失问题梯度溢出问题如上图所示:input是一个3*4的矩阵,Kernol是一个2*2的矩阵,经过卷积之后得到的结果output是一个2*3的矩阵。即:input:M*N,Kernol:A*B,则输出output:(M-A+1)*(N-B+1)。多层卷积运算:如上图所示为一个多维矩阵的卷积运算,input为一个7*7*3的矩阵,但是本次计算选取局部为一个5*5*3的样本矩阵,将样本矩阵经过3*3*3的滤波器处理(卷积运算)得到最终输出output是一个3*3*1的矩阵。如上图所示,有两个滤波器对同一个样本进行处理,所以得到一个3*3*2的结果。反卷积层:卷积的逆过程,实现图像的复原,实现上采样。(3)Pooling(池化)层一般配合卷积层使用,可以减少数据处理量,保持(局部特征)不变性;减小下一层输入大小,减小计算量和参数个数;获得定长输出,由于文本分类的时候输入是不定长的,可以通过池化获得定长输出;防止过拟合或可能会带来欠拟合。如上图所示,有一个4*4的输入矩阵input,Kernel为一个2*2的矩阵。(input=N*kernel,N为正整数)。Maxpooling获得的是Kernel矩阵覆盖区域的最大值,最后用作此次输出;meanpooling则是获得kernel矩阵覆盖区域的均值作为输出;概率矩阵是求取kernel矩阵覆盖区域每个元素在该区域内的概率大小,随机pooling则是在kernel覆盖区域随机取一个元素作为输出,具有不确定性。(4)激活函数激活函数,并不是要去激活什么,而是指如何把“激活的神经元特征”通过函数把特征保留并映射出来,即:保留特征,去除一些数据中的冗余。线性模型的表达力不够,激活函数就用来加入非线性因素,而这就是神经网络用来解决非线性问题的关键。Sigmoid函数:xex11)(fTanh函数:)tanh()(fxxReLU函数:)0,max()(fxxPReLU函数:),max()(fxaxx在特征相差较大时,使用tanh激活函数,循环过程中会不断扩大特征效果显示出来;在特征相差较小时,使用sigmoid函数,能更细微的分类判断。注:使用tanh或者sigmoid函数作为激活函数时,一定要注意对输入input进行归一化,否则激活后的值都会进入平坦区,使隐层的输出全部趋同,但是ReLU并不需要输入贵哦一花来防止它们达到饱和。(5)DropoutDropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了。dropout的意义是,由于随机的让一些节点不工作了,因此可以避免某些特征只在固定的组合下才生效,有意识的让网络去学习一些普遍的共性,而不是某些训练样本的一些特性。Dropout的随机意味着每次训练只训练了一部分,相当于训练了多个模型,实际使用时,采用了模型的平均作为输出。加入随机参数u,p,对输入进行加权,防止过拟合。)1,0(~,01yUuwhereotherwisepuifpxtrainxEpxEppEtrain110y(6)BN(BatchNormalization)层逐层尺度归一,避免了梯度消失和梯度溢出;加速收敛5x~20x,同时作为一种正则化技术也提高了泛化能力。对每个神经元作归一化处理。(7)RNN(循环神经网络)如上图所示,x为输入,s为隐含神经元,o为输出神经元,U,V为需要学习的参数。上面展开图中,Ot的计算流程,看到隐藏层神经元st的输入包含了两个:来时xt的输入、来自st-1的输入。于是RNN,t时刻的计算公式如下:(1)t时刻,隐藏层神经元的激活值为:)**(s11tbswxUftt(2)t时刻,输出层的激活值为:)*(o2bsVftt(8)CNN(卷积神经网络)卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。如上图:卷积神经网络的概念示范:输入图像通过和三个可训练的滤波器和可加偏置进行卷积,滤波过程如图一,卷积后在C1层产生三个特征映射图,然后特征映射图中每组的四个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数得到三个S2层的特征映射图。这些映射图再进过滤波得到C3层。这个层级结构再和S2一样产生S4。最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。如图:卷积和子采样过程:卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1。CNN训练:第一阶段,向前传播阶段:a)从样本集中取一个样本(X,Yp),将X输入网络;b)计算相应的实际输出Op。在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是计算(实际上就是输入与每层的权值矩阵相点乘,得到最后的输出结果):Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n))第二阶段,向后传播阶段a)算实际输出Op与相应的理想输出Yp的差;b)按极小化误差的方法反向传播调整权矩阵。(9)LSTM