深度学习笔记一

梯度下降小结

相关概念:

1、步长(Learning rate):步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。

2、特征(feature):指的是样本中输入部分,比如样本($x_0,y_0$),($x_1,y_1$),则样本特征为x,样本输出为y。

3、假设函数(hypothesis function):在监督学习中,为了拟合输入样本,而使用的假设函数,记为$h_\theta(x)$。比如对于样本($x_i,y_i$)($i=1,2,...,n$),可以采用拟合函数如下:$h_\theta(x) = \theta_0+\theta_1x$。

4、损失函数(loss function):为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。在线性回归中,损失函数通常为样本输出和假设函数的差取平方。比如对于样本($x_i,y_i$)(i=1,2,...,n),采用线性回归,损失函数为:

      $J(\theta_0, \theta_1) = \sum\limits_{i=1}^{m}(h_\theta(x_i) - y_i)^2$

 

方法分类:

$\theta_i = \theta_i - \alpha\sum\limits_{j=0}^{m}(h_\theta(x_0^{j}, x_1^{j}, ...x_n^{j}) - y_j)x_i^{j}$

1、批量梯度下降法(Batch Gradient Descent,BGD)

采用所有的样本。

2、随机梯度下降法(Stochastic Gradient Descent,SGD)

采用一个样本。

3、小批量梯度下降法(Mini-batch Gradient Descent)

采用X个样本。

 

存在的问题:梯度爆炸和梯度消失

原因是,由于在反向传播算法中使用梯度下降,计算时使用了矩阵求导的链式法则,

如:$\delta^l =\frac{\partial J(W,b,x,y)}{\partial z^l} = \frac{\partial J(W,b,x,y)}{\partial z^L}\frac{\partial z^L}{\partial z^{L-1}}\frac{\partial z^{L-1}}{\partial z^{L-2}}...\frac{\partial z^{l+1}}{\partial z^{l}}$

,若每一层的$\frac{\partial z^{l+1}}{\partial z^{l}}$都小于1,则最后的结果是梯度趋于0,称为梯度消失;若每一层的$\frac{\partial z^{l+1}}{\partial z^{l}}$都大于1,则最后的梯度越来越大,称为梯度爆炸。

目前这些问题还没有很好的解决办法,在卷积神经网络中,使用ReLU(Rectified Linear Unit)激活函数,可以部分解决梯度消失的问题。

ReLU的模型:$\sigma(z) = max(0,z)$

具体原因还没有在理论上证明。

 

感知机原理小结

 

深度学习模型与前向传播算法

 代数表达:

第$l-1$层的第k个神经元到第l层的第j个神经元的线性系数定义为$w_{jk}^l$

第二层的第三个神经元对应的偏倚定义为$b_3^2$

假设第$l-1$层共有m个神经元,则对于第l层的第j个神经元的输出$a_j^l$,有:

$a_j^l = \sigma(z_j^l) = \sigma( \sum\limits_{k =1}^m w_{jk}^l a_k^{l-1} +b_j^l ) $

矩阵表达:

假设第$l-1$层共有m个神经元,而第l层共有n个神经元,则第l层的线性系数w组成了一个$n \times m$的矩阵$w^l$,第l层的偏倚b组成了一个$n \times 1$的向量$b^l$,第$l-1$层的输出a组成了一个$m-1$的向量$a^l-1$,第l层的未激活倩线性输出z组成了一个$n \times 1$的向量$z^l$,第l层的输出a组成了一个$n \times 1$的向量$a^l$。则用矩阵法表示,第l层的输出为:

$a^l = \sigma(z^l) = \sigma(w^la^{l-1} + b^l)$

深度神经网络的反向传播算法

 

深度神经网络中损失函数和激活函数的选择

交叉熵损失函数:$J(W,b,a,y) = -y \bullet lna- (1-y) \bullet ln(1 -a)$

若使用了sigmoid激活函数,则损失函数选择交叉熵函数比选择均方差函数,更能避免反向传播收敛速度慢。

 

softmax激活函数:$a_i^L = \frac{e^{z_i^L}}{\sum\limits_{j=1}^{n_L}e^{z_j^L}}$

其中$n_L$是L层所有神经元的个数,可以看出,所有的$a_i^L$都是(0,1)之间的数,且所有$a_i^L$之和为1。这样对神经网络的输出进行softmax函数化,可以将神经网络转化为分类问题。

对数似然损失函数:$J(W,b,a^L,y) = - \sum\limits_ky_klna_k^L$,其中$y_k$的取值为0或1,只有当某一样本属于第i类时,$y_i$才等于1,即每个样本只属于一类,因此对数似然函数可以简化为:$J(W,b,a^L,y) = -lna_i^L$。对于用于分类的softmax激活函数,损失函数一般选择对数似然函数,

posted @ 2017-12-10 16:55  yanganling  阅读(84)  评论(0编辑  收藏  举报