Deep learning的历史
Neural network简述
如下图所示,NN也分为三个步骤,第一步是定义一个神经网络,这里对于神经网络而言,其权重w和偏置bias是参数,每一层都有自己特殊的参数。定义好这些参数后,输入一个变量后,可以输出一组变量。因此神经网络也可以看成是一个函数。
一种常见的神经网络结构为 fully connect feedforward network。如下图所示。输入的地方称为 input layer,该层并没有神经元作用,只是一个输入;输出层称为output layer;其余称为hidden layer。
由于存在多个并排的神经元,因此可以通过矩阵运算表示更加方便,整体参数包括了 W1,b1,W2,b2,...,WL,bL W 1 , b 1 , W 2 , b 2 , . . . , W L , b L ,其运算如下式所示。存在大量的矩阵运算,因此GPU加速较为明显。
对于隐藏层,本质是进行feature extractor,隐藏层输出可以看作是进行feature变换后的新feature,Output layer可以看作是multi-class classifier,因此最后一层会加上softmax函数。一个例子是手写辨识,如下图所示,输入是一个256维的向量,输出为一个10维的向量,中间的定义对应着神经网络的结构(这是需要仔细设计的,hidden layer的层数和每一个layer的neuron个数),中间的hidden layer需要靠试错和经验来进行。 (传统的machine learning重点在于feature energing,而deep learning的重点在于设计神经网络结构)
一些常见的问题如下:
第二步,定义neural network的好坏
对于预测得到的值,采用交叉熵的方式定义评价函数(cross entropy)。对于每一组data的cross entropy进行累加,得到最终的评价函数。因此,神经网络的目标是 找到一组参数(包括各层的) θ∗ θ ∗ 去最小化total loss。
第三部,如何找到最佳的参数
使用的方法是gradient descent,唯一的区别是函数变得比较复杂。可以采用backpropogation方法计算梯度下降。如何计算,可以参考1。
任何一个连续函数, f:RN→RM f : R N → R M ,可以使用一个hidden layer表示。可以参考2flat神经网络推导。
Back propogation推导
首先,定义给定的training set,包含R组,然后对于R组数据,定义评价函数。对于评价函数进行梯度下降求解,可以得到迭代的变量。
如何计算 ∂Cr/∂wli,j ∂ C r / ∂ w i , j l , wli,j w i , j l 指的是(l-1)到l层连接的某一个weight,具体是第(l-1)层第j个神经元到第l层第i个神经元的权重。可以将该偏微分分解为计算两项乘积,
首先考虑l>1,即求解hidden layer的情况,则
如果l=1,对应输入层,则
接下来,求解第二项 ∂Cr/∂zli ∂ C r / ∂ z i l 记为 δli δ i l 。对于同一个Layer的 δli δ i l ,可以定义向量 δl δ l 。最终,可以通过 δL→δL−1→...→δ1 δ L → δ L − 1 → . . . → δ 1 得到各个参数的更新部分。
然后,计算输出层的微分,如下所示,包含了两项,第一项是神经元输出对输入的微分,第二项是评价函数的微分。
接下来计算hidden layer的偏微分,这里需要利用链式法则。
可以得到如下更新公式,如下图所示,这会构成一种新的神经网络。

最终可以得到反向传播的网络,如下图所示,可以看到这也是一种网络,其中输入为评价函数对于输出的微分向量,经过每一级输出的放大作用,并且与原来网络的W矩阵转置,最终可以得到输入。