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

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

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

一、概述

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

首先,符号表示上和之前的一样,用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 条评论
登录 后参与评论

相关文章

来自专栏机器之心

机器视角:长文揭秘图像处理和卷积神经网络架构

选自 Analyticsvidhya 机器之心编译 作者:DISHASHREE GUPTA 近日,Dishashree Gupta 在 Analyticsvid...

3496
来自专栏SeanCheney的专栏

《Scikit-Learn与TensorFlow机器学习实用指南》 第4章 训练模型

在之前的描述中,我们通常把机器学习模型和训练算法当作黑箱来处理。如果你动手练习过前几章的一些示例,就能惊奇地发现优化回归系统、改进数字图像的分类器、甚至可以零基...

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

机器学习、深度学习 知识点总结及面试题

1、反向传播思想: 计算出输出与标签间的损失函数值,然后计算其相对于每个神经元的梯度,根据梯度方向更新权值。 (1)将训练集数据输入到ANN的输入层,经过隐藏...

8808
来自专栏机器学习原理

机器学习(4)——逻辑回归Logistic回归softmax回归

前言:这里是分类问题,之所以放到线性回归的下面介绍,是因为逻辑回归的步骤几乎是和前面一样的,写出目标函数,找到损失函数,求最小值,求解参数,建立模型,模型评估。...

4108
来自专栏专知

【干货】对于回归问题,我们该怎样选择合适的机器学习算法

本文分别介绍:线性回归和多项式回归、神经网络、决策树和决策森林,并分别列出了其各自优缺点,相信有助于指导我们在特定工作中选择合适的算法。

4367
来自专栏小鹏的专栏

YOLO

YOLO核心思想:从R-CNN到Fast R-CNN一直采用的思路是proposal+分类 (proposal 提供位置信息, 分类提供类别信息)精度已经很高,...

3936
来自专栏机器学习算法与Python学习

线性分类器-中篇

导读: 神经网络 反向传播算法 线性分类器-上篇 1 损失函数 在上一节定义了从图像像素值到所属类别的评分函数(score function),该函数的参数是权...

3499
来自专栏书山有路勤为径

深度卷积网络:实例探究

介绍几种经典的卷积神经网络结构,分别是LeNet、AlexNet、VGGNet。 LeNet-5 LeNet-5主要是针对灰度设计的,所以其输入较小,为32...

874
来自专栏深度学习

机器学习、深度学习 知识点总结及面试题

一、反向传播思想: 1、计算出输出与标签间的损失函数值,然后计算其相对于每个神经元的梯度,根据梯度方向更新权值。 (1)将训练集数据输入到ANN的输入层,经过隐...

3767
来自专栏李智的专栏

斯坦福CS231n - CNN for Visual Recognition(2)-lecture3(上)线性分类器、损失函数

  由于之前KNN分类器的缺点,让我们很自然地去寻找有更加强大地方法去完成图像分类任务,这种方法主要有两部分组成: 评分函数(score function)...

921

扫码关注云+社区