一文读懂神经网络

目录

1前向传播

1.1由简单函数到复杂函数

1.2复杂函数衍生到神经网络

2激活函数

2.1softmax激活函数

2.2softmax函数求导

2.3sigmoid激活函数

2.4sigmoid函数求导

3代价函数

3.1二次代价函数

3.2交叉熵代价函数

4反向传播


1前向传播

1.1由简单函数到复杂函数

                                         

                                                                                图1 正比例函数图像

<x标量,y标量>一维简单函数:e.g.y=a_{(1,1)}x_{(1,1)}+b_{(1,1)}(此为一个一维标量x,对应一个一维标量y值)

<x向量,y向量>多维复杂函数:e.g.y=a_{(4,3)}x_{(3,1)}+b_{(4,1)}(此公式表示,一个三维向量x,对应一个三维向量y值)

<多维,多值向量>多维多值复杂函数:e.g.y=a_{(4,3)}x_{(3,n)}+b_{(4,n)}(此公式表示,n个三维向量x,对应n个三维向量y)

1.2复杂函数衍生到神经网络

                                 

                                                                                  图2 神经网络图像

      图2为一个四层的神经网络,分别为输入层,隐藏层*2,和输出层。神经网络主要由输入层,输出层和隐藏层组成。

先上公式:

                                                                              z_{j}^{l}=\sum _{k}\omega _{jk}^{l}a_{k}^{l-1}+b_{j}^{l}                                                                 (1-1)

      再解释:在这个公式中,和y=ax+b是一样的,只不过标量统一变成向量,符号对应(a->wx->a,b->b)。

a_{k}^{l-1}代表第l-1层的输入(ps.第0层的输入是x,随着神经网络的向后进行,第1层的输出就为a^{ 1},然后第2层的输入就是a^{ 1});

\omega _{jk}^{l}代表第l-1层的第k个神经元连接到第l层第j个神经元的权重;

b_{j}^{l}代表第l层的第j个神经元的偏置;

z_{j}^{l}代表第l层的第j个神经元的输入。

                                                                               a_{j}^{l}=\sigma (\sum_{k}\omega _{jk}^{l}a_{k}^{l-1}+b_{j}^{l} )                                                           (1-2)

a_{j}^{l}代表第l层的第j个神经元的输出;

\sigma代表sigmoid激活函数,下面有专门一章将激活函数。

2激活函数

2.1softmax激活函数

                                                                                         a_{j}^{l}=\frac{e^{z_{j}^{l}}}{\sum _{k}e^{z_{k}^{l}}}                                                                     (2-1)

z_{j}^{l}代表第l层(通常为最后一层)第j个神经元输入,a_{j}^{l}代表第l层第j个神经元输出,{\sum _{k}e^{z_{k}^{l}}}代表第l层所有神经元输入之和。

                                      

                                                                                                 图3 softmax函数图解

        从图3可以看出,softmax函数将每个神经元的输入占当前所有神经元输入之和的比值,将多个神经元的输出映射到(0,1)区间,当做该神经元的输出,这也就可以理解为,神经元输出值越大,该神经元对应的类别是真是类别的可能性越高,进而用来进行多分类。

2.2softmax函数求导

                                                      

                                                                                       图4 softmax函数求导步骤

2.3sigmoid激活函数

                                                                                           a_{j}^{l}=\frac{1}{1+e^{-z_{j}^{l}}}                                                           (2-2)

z_{j}^{l}代表第l层(通常为最后一层)第j个神经元输入,a_{j}^{l}代表第l层第j个神经元输出。

sigmoid激活函数可以作为输出单元用来解决二分类问题。

                                     

                                                                                           图5 sigmoid函数图像

2.4sigmoid函数求导

                                                                          

                                                                                      图6 sigmoid函数求导步骤

 

3代价函数

3.1二次代价函数

一元二次函数:

                                                                             y=a_{(1,1)}x_{(1,1)}{}^{2}+b_{(1,1)}x_{(1,1)}+c_{(1,1)}                                         (3-1)

当a>0时候,y有最小值;

由此来看二次代价函数:

                                                                                 C=\frac{1}{2n}\sum _{x}\parallel y(x)-a^{l}(x)\parallel^{2}                                            (3-2)

这个是多值(多样本)的时候代价函数。简单起见,用一个样本为例说明:

                                                                              C=\frac{(y-a^{l})^{2}}{2}=\frac{\sum _{j}(y_{j}-a_{j}^{l})^{2}}{2}                                            (3-3)

此函数二次项系数必大于0,所有C有最小值。

3.2交叉熵代价函数

                                                                        C=-\frac{1}{n}\sum _{x}\left [ ylna+(1-y)ln(1-a) \right ]                                      (3-4)

参数\omega的梯度计算:

                                                     

                                                                                              图7 梯度计算步骤

4反向传播

反向传播就是从代价函数开始对权重w和偏值b求导。

https://www.zhihu.com/question/27239198?rf=24827633

http://www.cnblogs.com/charlotte77/p/5629865.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值