神经网络在分类问题中的应用(反向传播算法)

目录

 1、W初始值的设定

2、反向传播算法

反向传播的实例:


        在其他的一些算法中对于分类问题易出现项数过多、过度拟合的情况,所以这里用一个新的方法来神经网络来解决问题,神经网络可以很好的适用特征空间n很大的情况。

        用图像来做一些名词解释。在图像中,我们通常称Xo,X1,X2,X3为输入层input layer,中间不对用户输出结果的层我们称为隐藏层hidden layer,最后输出结果的为输出层output layer。像Xo,ao我们称为偏置单元,通常默认值为1。

        在神经网络中,我们可以很好的解决多分类问题。如下图所示,我们可以利用下图的四个输出单元来判断到底属于什么类型的图片。

       

        训练神经网络的步骤:

        ①构建一个神经网络、随机初始化权重

        ②正向传播,计算出相应的输出值Y的向量

        ③计算出代价函数

        ④通过反向传播算法,求出偏导数项

        ⑤将用数值方法得到的偏导数的预估值与反向传播算法得到的偏导数的值进行比较

        ⑥使用一个优化算法(例如梯度下降算法)

 1、W初始值的设定

        我们是否可以跟以前一样直接把所有W(在吴恩达教授的课程里面用θ来表示,都是一样的)设置为0呢?在这下面这个图中,如果我们把W13,W14,W23,W24,W35,W45全部都设置为0,会怎么样呢?我们可以得到W13,W23对X3的影响权重是一样的,在进行一次更新之后W13,W23的值不会为0,但是一定的是W13=W23,所有的都是如此,他们的权重都是一样的,对于这种情况,我们称之为高度冗余。

                

        我们通常采用的方法是随机初始化W的值。初始化一个为10*11的矩阵(根据需要自己设定)。

2、反向传播算法

        这里首先要讲解一下反向传播算法。什么是反向传播算法,说实话,我搞了一两天看着网上的一堆公式实在是看的晕乎乎的,只知道反向传播算法是链式求导,但是却不明白具体是什么东西,这里我将用一个实际的例子来说明什么是反向传播算法。

        定义:反向传播算法就是用更新权值来最小化损失函数;

                ①正向传播;

                        正向传播计算出来的预测值Y

                ②损失函数;

                        C=(1/2)*(Yout-Y)^2     (这里的1/2是为了方便求偏微分)

                ③反向传播计算偏微分;

                        这里最难理解,看下面的实例解释。

反向传播的实例:

        将用一个简单的两层神经网络来解释(我赋予了他们一些具体的数值):

                

        ①正向传播:

         以下的f(x)为激活函数,f(x)=1/(1+{e^{-x}})

         以后会用到对激活函数它的导数,f'(x)=f(x)*[1-f(x)],可自己对f(x)求导证明。

         言归正传,首先对于第一层隐藏层(3、4)

                        f(W1*\binom{x1}{x2})\\=f(\begin{pmatrix} w13 &w23 \\ w14 & w24 \end{pmatrix}*\binom{x1}{x2}) \\=f(\binom{w13*x1+w23*x2}{w14*x1+w24*x2})\\=f(\binom{z3}{z4})\\=\binom{y3}{y4}

             然后对于第二层隐藏层(5)

                        f(W1*\binom{y3}{y4})\\=f(\begin{bmatrix} w35 &w45 \end{bmatrix}*\binom{y3}{y4})\\=f(w35*y3+w45*y4)\\=f(z5)\\=y5

        这里我们得到的y5就是我们的预测值Y

        ②损失函数;

                 C=(1/2)*(Yout-Y)^2     (这里的1/2是为了方便求偏微分)

        ③反向传播计算偏微分;

                我们计算w13,w14,w23,w24,w35,w45的偏微分是为了更新其值,将

w35=w35-\partial C/\partial w35,以此类推更新,然后减小C误差函数。

                我们应该怎么求得\partial C/\partial w35呢? 首先我们整理关于C,w35的公式有:

                        C=(1/2)*(Y-Yout)^2

                         Y=y5=f(z5)

                        z5=w35*y3+w45*y4

                然后根据链式求导

                \partial C/\partial w35\\=\partial C/\partial y5 * \partial y5/\partial z5 *\partial z5/\partial w35 \\=(Y-Yout)*(f(z5)-(1-f(z5)))*(y3)

                现在我们来求\partial C/\partial w13,整理出公式

                        y3=f(z3)

                       z3=w13*x1+w23*x2

                同理,根据链式求导得:

\partial C/\partial w35\\=\partial C/\partial y5 * \partial y5/\partial z5 *\partial z5/\partial y3*\partial y3/\partial z3*\partial z3/\partial w13 \\=(Y-Yout)*(f(z5)*(1-f(z5)))*(w35)*(f(z3)*f(1-f(z3)))*(x1)

         已经可以求得所有的W的偏微分了,然后令W=W-\partial C/\partial W

        至此,“反向传播算法”及公式推导的过程总算是讲完了啦!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值