人工神经网络

2019-04-12  本文已影响0人  7NIC7

(一)感知器

简单介绍

    感知器是一个输入层,一个输出层的单层神经网络,通常是给定输入,经过一个线性权重的连接后,输出1或者-1。这样的网络的拟合能力是有限的,例如:我们不能找到一条直线可以把图上的四个点区分开。


单层神经网络的缺点.png

权重更新

    更新法则如下,\eta学习率,通常是一个很小的数。
w_i = w_i + \eta(y_i - \hat{y}_i)x_i

(二)多层神经网络

简单介绍

Forward Propagation 前向传播

    设\hat{y}_i是NN的输出,下标代表处于该层的第几个元素,上标代表处于NN的第几层。
\begin{align*} & z^l_{i} = w ^l a^{l-1} + b^{l-1} \\ & a^l_i = \sigma(z^l_i) \\ \end{align*}
    损失函数用的是回归问题常用的Mean Square Error
l = \frac{1}{2}\sum_{i=1}^{N}(y_i - \hat{y}_i)^2

Back Propagation 反向传播

    根据求导的链式法则,我们有:
\begin{align*} \frac{\partial l}{\partial w_{i j}^l} = \frac{\partial l}{\partial z_i^l} \frac{\partial z_i^l}{\partial w_{ij}^l} \end{align*}
其中,对于sigmoid激活函数来说,\frac{\partial z_i^l}{\partial w_{ij}^l}=a_j^{l-1}
    所以接下来只要计算\frac{\partial l}{\partial z_i^l}即可。
1)如果l是输出层
\frac{\partial l}{\partial z_i^l} = \frac{\partial l}{\partial a_i^l}\frac{\partial a_i^l}{\partial z_i^l} = -(y_i - \hat{y}_i)\sigma(z^l_i)(1-\sigma(z^l_i))
2)如果l-1是最后一个隐藏层,即输出层的前一层
\begin{align*} &\frac{\partial l}{\partial z_j^{l-1}} \\=& \sum_{i=1}^{l_n} \frac{\partial l}{\partial a_i^l}\frac{\partial a_i^l}{\partial z_j^{l-1}} \\ =& \sigma(z^{l-1}_j)(1- \sigma(z^{l-1}_j))\sum_{i=1}^{l_n}-(y_i - \hat{y}_i)\sigma(z^l_i)(1-\sigma(z^l_i))w_{ij} \end{align*}
其中,l_n代表l层的神经元个数。
3)l-2,\dots,1,这些都和2)中的过程一致

Gradient Descend —— 梯度下降

    梯度下降就是应用BP算法,对每个样本点都计算\Delta w_kk=1,2,\dots,N,利用下式更新权重
w_i = w_i + \eta\sum_{k=1}^{N}\Delta w_k

Stochastic Gradient Descend —— 随机梯度下降

    梯度下降在更新权重的时候,需要计算所有的样本点的梯度,当样本量非常大的时候,将大大降低算法的效率,因此,随机梯度下降算法应运而生。
    其想法也很简单,就是在更新权重的时候我们可以每次只算一部分样本的梯度,这部分样本称为batch,设其大小为K\ (0 \leq K <N),那么权重更新用下式
w_i = w_i + \eta\sum_{k=1}^{K}\Delta w_k

注意:上述的每一个权重更新方法都不能保证NN可以收敛到全局最优点,有可能会陷入局部最优点。

上一篇 下一篇

猜你喜欢

热点阅读