神经网络和深度学习(五) ——深层神经网络基础

神经网络和深度学习(五)——深层神经网络基础

(原创内容,转载请注明来源,谢谢)

一、概述

本文是对深层神经网络的基础,主要讨论深层神经网络的算法、公式推导以及一些注意事项。

首先,符号表示上和之前的一样,用L表示总层数,上标[l]表示第l层,n表示数量,a表示每一层的输出,w、b是参数,输入层是第0层。

二、前向传播

前向传播,目的是计算出预测的输出结果。实际上,多层的神经网络,也是一步步向前进行计算,主要在于要把前一层的输出,当作下一层的输入。

这里每层,可以考虑用之前说的激活函数,对wTx+b的结果进行变换。现在仅考虑所有层都使用sigmoid,其他激活函数,区别在于计算结果不一样、反向传播的导数不一样,但是本质是一样的。

第一层,输入是3个x,则z[1]=w[1]Tx+b[1],且a[1]=g(z[1])=1/(1+e-z[1])。

第二层,输入则是第一层计算的结果a[1],则z[2]=w[2]T a[1]+b[2],且a[2]=g(z[2])=1/(1+e-z[2])。

后面的层同理。最后一层计算出来的a,即最终的预测结果y。

如果使用向量化,则是一次计算一层,把一层的神经元,整合在一起,进行矩阵运算,整合方式,例如A[1],是将第一层每个神经元计算出来的a[1],纵向并排在一起,形成一个大的矩阵A[1],参与运算。

三、参数w与b的维度

根据上面的讨论,可以看出,每一层的w和b,其维度是会变化的。w和b是为了辅助更好的预测结果的,故其数量是需要根据输入、输出的数量决定的。

1、w

先不考虑b,假设z=wx。考虑第一层,以下图为例。x的维度是(2,1),维度即行、列元素个数。

由于输出的a只是对z进行一层函数的处理,因此z的维度即a的维度,对于第一层而言,即第一层的神经元的数量(因为每个神经元就是一个输出),下图来看是(3,1)。

由wx=z,即(?,?) *(2,1)=(3,1),根据矩阵运算的原则,可以看出(?,?)=(3,2),即第一层的w,其是一个三行两列的矩阵。

再看第二层,(?,?)*(3,1)=(5,1),故(?,?)=(5,3),即第二层的w是一个五行三列的矩阵。以此类推,可以确定后面的w。

2、b

b是在wx的基础上,进行相加的,且由z=wx+b,可以看出,b和z的维度是一样的,即b的维度就是输出的维度。如第一层的b,即(3,1),第二层的b,即(5,1)。

3、确认维度的意义

在明确维度的情况下,后续调试代码、查找问题的时候,可以先清晰的看出,每一层的参数在个数上是否有误。

4、向量化的维度

上面提到的,都是一个样本的情况下,实际情况,输入的x的样本个数是m,即有m个x1、x2的输入,此时,输入的维度x变为(2,m),输出的维度a变成(3,m),则可以看出,w的维度是不需要变化的,仍是(3,2)。b的维度跟随a的维度,也变成(3,m)。

5、通用公式

设n[l]表示第l层神经元个数,m表示样本数量:

W的维度:(n[l],n[l-1]),b的维度=Z的维度=A的维度:(n[l], m)。

四、使用多层神经网络的原因

这个主要和业务场景有关,考虑到人脸照片处理。

人脸照片处理,过程大致为:接收图片;图片边界分析;边界组成(组成五官);组成人脸;输出。

这里每一步的处理结果,都是需要输出给下一步,因此,多层的情况下,每一层可以全责清晰,而且利于计算处理。

如果不用多层网络,只用1层的话,那一层需要非常多的神经元,这样计算量大而且不易调试。

五、搭建神经网络

1、反向传播

多层神经网络的反向传播,和单层没有本质上的区别,处理方式还是一个很长的链式求导法则,这里不细说,可以看上一篇文章,有详细的描述。建议大家都手工推导一遍,基本上就理解了。

2、构建网络

实际上,即针对输入(无论是样本输入,还是上一层网络的输出),结合本层的参数,整理成z=wx+b,再套用上激活函数,例如sigmoid、tanh、relu等,即可完成本层的计算输出。

在前向传播计算时,通常会缓存本层的z、w、b的结果,以便后面反向传播时使用,不用再次计算。

对于反向传播,最后一层的导数,要先考虑到损失函数L(a,y)=-(yloga + (1-y)log(1-a)),求出y对a的导数da=-y/a +(1-y)/(1-a),再计算本层的dw、db。然后再将da的结果往前一层传,逐层计算da、dw、db。

接着,将每一层的w、b减去本层对应的dw、db,即完成一次的优化。

重复上面的工作多次,直到整个系统足够优化。

六、参数与超参数

这个是个概念的说明,参数即实际参与需要优化的内容,即每一层的w、b。

而超参数,是协助优化w、b的参数,比如学习速率α、神经网络层数L、每一层的神经元的个数、激活函数的选择、正则化项系数等。这些参数,本身大部分不在设定后就不会变化(如L、神经元个数、激活函数等设定后不会变化,α可以变化但是变化也是为了优化更快)。

七、总结

前向和反向传播,最终的公式如下:

学习深层神经网络,实质就是浅层神经网络的堆叠,因此主要要学好单层、双层网络的推导和运用,后面多层的网络自然就融会贯通。

——written by linhxx 2018.02.03

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-02-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

【干货】走进神经网络:直观地了解神经网络工作机制

【导读】1月4日,Mateusz Dziubek发布了一篇基础的介绍神经网络的博文,作者用一种直观的方法来解释神经网络以及其学习过程,作者首先探讨了导致神经网络...

36113
来自专栏企鹅号快讯

吴恩达机器学习学习笔记05

建议阅读时间:5-8min 类型:机器学习基础教程 适应人群:大数据、人工智能 一、The problem of overfitting What is ove...

2276
来自专栏大数据挖掘DT机器学习

面试整理:关于代价函数,正则化

3067
来自专栏ATYUN订阅号

27个问题测试你对逻辑回归的理解

逻辑回归可能是最常用的解决所有分类问题的算法。这里有27个问题专门测试你对逻辑回归的理解程度。 ? 1)判断对错:逻辑回归是一种有监督的机器学习算法吗? A)是...

4376
来自专栏Brian

深度学习笔记-深度学习实战

1846
来自专栏目标检测和深度学习

深度 | 语义分割网络DeepLab-v3的架构设计思想和TensorFlow实现

选自Medium 作者:Thalles Silva 机器之心编译 参与:Nurhachu Null、刘晓坤 深度卷积神经网络在各类计算机视觉应用中取得了显著的成...

3177
来自专栏深度学习

图像分类 | 深度学习PK传统机器学习

图像分类,顾名思义,是一个输入图像,输出对该图像内容分类的描述的问题。它是计算机视觉的核心,实际应用广泛。 图像分类的传统方法是特征描述及检测,这类传统方法可能...

3859
来自专栏计算机视觉战队

CNN的全面解析(带你简单轻松入门)

亲爱的关注者您好!真的是好久不见,上次与您相见还是8月18日的晚上,不知道35天的时间不见,你们都有了哪些成果?有了哪些成就?有了哪些offer?但是,本平台的...

3037
来自专栏目标检测和深度学习

卷积神经网络工作原理直观的解释

742
来自专栏机器之心

深度 | 语义分割网络DeepLab-v3的架构设计思想和TensorFlow实现

选自Medium 作者:Thalles Silva 机器之心编译 参与:Nurhachu Null、刘晓坤 深度卷积神经网络在各类计算机视觉应用中取得了显著的成...

3295

扫码关注云+社区