(一)神经网络和深度学习

一、引言

  1. 什么是深度学习?什么是神经网络?
    我们常常用深度学习这个术语来指训练神经网络的过程。有时它指的是特别大规模的神经网络训练。如下就是一个神经元。中间的函数被称作ReLU激活函数,它的全称是Rectified Linear Unit。
    在这里插入图片描述
  2. 神经网络的分类及其应用?
    目前几乎所有由神经网络创造的经济价值,本质上都离不开一种叫做监督学习的机器学习类别。在能处理结构化数据的同时,神经网络使得非结构化数据也能被更好解释。
    标准神经网络:点击预测在线广告、房地产……
    卷积(Convolutional Neural Network):图像应用如计算机视觉……
    递归神经网络(Recurrent Neural Network):语音识别……
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

二、神经网络的编程基础

2.1 二分类和逻辑回归

简单回顾:
在这里插入图片描述
代价函数
在这里插入图片描述
梯度下降

  1. 初始化w和b
  2. 朝最陡的下坡方向走一步,不断地迭代
  3. 直到走到全局最优解或者接近全局最优解的地方
    在这里插入图片描述

2.2 计算图

例如:
通过一个从左向右的过程,你可以计算出J的值。为了计算导数,从右到左(红色箭头,和蓝色箭头的过程相反)的过程是用于计算导数最自然的方式(结合图和链式公式求导)。
在这里插入图片描述
使用python计算时变量命名的简化如图:
如db实际上是python代码中的变量名,表示dJ/db。
在这里插入图片描述

2.3 逻辑回归中的梯度下降

在这里插入图片描述
针对单个训练样本的逻辑回归的梯度下降算法:
在这里插入图片描述得:在这里插入图片描述
在这里插入图片描述在这里插入图片描述得:在这里插入图片描述
所以在这里插入图片描述
在这里插入图片描述得:
在这里插入图片描述
则dw1则可表示为在这里插入图片描述,dw2表示为在这里插入图片描述,db表示为在这里插入图片描述
在这里插入图片描述

2.4 m 个样本的梯度下降

在这里插入图片描述

2.5 向量化

将向量化运用在逻辑回归的梯度下降上,设有n个特征:
在这里插入图片描述

2.6 向量化逻辑回归

计算wTx+b:在这里插入图片描述
则z=np.dot(w,x)+b(其中b为实数,运用了广播技巧)
在这里插入图片描述
向量化逻辑回归:
计算前向和后向传播,也实现了对所有训练样本进行预测和求导:
在这里插入图片描述
梯度下降更新参数:
在这里插入图片描述

2.7 Python 中的广播

矩阵和实数进行运算时,自动对实数进行行或列的维度扩展

2.8 关于 python _ numpy 向量的说明

不要使用一维数组。总是使用n×1维矩阵(基本上是列向量),或者1×n维矩阵(基本上是行向量),这样你可以减少很多assert语句来节省核矩阵和数组的维数的时间。另外,为了确保你的矩阵或向量所需要的维数时,不要羞于 reshape 操作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.9 (选修)logistic 损失函数的解释

约定在这里插入图片描述,即算法的输出是给定训练样本x条件下y等于1的概率。

在这里插入图片描述公式合并可得:
在这里插入图片描述
在这里插入图片描述可得:
在这里插入图片描述
在这里插入图片描述
由于训练模型时,目标是让成本函数最小化,所以我们不是直接用最大似然概率,要去掉这里的负号,最后为了方便,可以对成本函数进行适当的缩放,我们就在前面加一个额外的常数因子1/m,则:在这里插入图片描述

三、浅层神经网络

3.1 神经网络概述

如下是一个神经网络:
在这里插入图片描述
正向传播:
在这里插入图片描述在这里插入图片描述
反向传播:
在这里插入图片描述

3.2 神经网络的表示

输入层:包含了神经网络的输入。
隐藏层:这些中间结点的准确值我们是不知道的,也就是说你看不见它们在训练集中应具有的值。
输出层:负责产生预测值。
当我们计算网络的层数时,输入层是不算入总层数内,所以隐藏层是第一层,输出层是第二层。

3.3 计算一个神经网络的输出

3.4 多样本向量化

向量化X、Z、A:
从水平上看,矩阵A代表了各个训练样本。从竖直上看,矩阵A的不同的索引对应于不同的隐藏单元。
对于矩阵Z,X情况也类似,水平方向上,对应于不同的训练样本;竖直方向上,对应不同的输入特征,而这就是神经网络输入层中各个节点。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
从非向量化到向量化:
(i表示第i个样本)
在这里插入图片描述
将从X到Z的计算过程用矩阵表示出来:
在这里插入图片描述

3.5 激活函数

使用一个神经网络时,需要决定使用哪种激活函数用隐藏层上,哪种用在输出节点上。
三个激活函数

  1. sigmoid激活函数:除了输出层是一个二分类问题基本不会用它。
  2. tanh激活函数:tanh是非常优秀的,几乎适合所有场合。
  3. ReLu激活函数:最常用的默认函数,如果不确定用哪个激活函数,就使用ReLu或者Leaky ReLu。
    ReLu:当Z是负值的时候,导数等于0。
    Leaky ReLu:当Z是负值时,这个函数的值不是等于0,而是轻微的倾斜。

在这里插入图片描述
优缺点对比

  1. 在实践中,使用ReLu激活函数神经网络通常会比使用sigmoid或者tanh激活函数学习的更快。
  2. sigmoid和tanh函数的导数在正负饱和区的梯度都会接近于0,这会造成梯度弥散,而Relu和Leaky ReLu函数大于0部分都为常数,不会产生梯度弥散现象。(同时应该注意到的是,Relu进入负半区的时候,梯度为0,神经元此时不会训练,产生所谓的稀疏性,而Leaky ReLu不会有这问题)
  3. Z在ReLu的梯度一半都是0,但是,有足够的隐藏层使得z值大于0,所以对大多数的训练数据来说学习过程仍然可以很快。
    经验法则
  4. tanh函数在除二分类问题外所有场合都优于sigmoid函数。
  5. 二分类问题在输出层选择sigmoid函数,然后其它的所有单元都选择Relu函数。
  6. 如果在隐藏层上不确定使用哪个激活函数,那么通常会使用Relu激活函数。有时,也会使用tanh激活函数,但Relu的一个优点是:当Z是负值的时候,导数等于0。
  7. Leaky ReLu函数通常比Relu激活函数效果要好,尽管在实际中Leaky ReLu使用的并不多。

为什么需要非线性激活函数?

因为采用线性的激活函数如恒等激活函数,无论神经网络有多少层,计算的结果都是简单的线性组合。 线性隐层无用。
回归问题中输出层才可能采用线性激活函数。

3.6 激活函数的导数

  1. sigmoid activation function
    在这里插入图片描述
    在这里插入图片描述

  2. Tanh activation function
    在这里插入图片描述
    在这里插入图片描述

  3. Rectified Linear Unit (ReLU)
    在这里插入图片描述
    在这里插入图片描述
    通常在Z=0的时候给定其导数1,0(当然Z=0的情况很少)

  4. Leaky linear unit (Leaky ReLU)
    在这里插入图片描述在这里插入图片描述通常在Z=0的时候给定其导数1,0.01(当然Z=0的情况很少)

3.7 神经网络的梯度下降

正向传播公式:
在这里插入图片描述
反向传播公式:
在这里插入图片描述
这些都是针对所有样本进行过向量化,Y是1×m的矩阵;这里np.sum是python的numpy命令,axis=1表示水平相加求和,keepdims是防止python输出那些古怪的秩数(n,),加上这个确保阵矩阵db[2]这个向量输出的维度为(n,1)这样标准的形式。

还有一种防止python输出奇怪的秩数,需要显式地调用reshape把np.sum输出结果写成矩阵形式。

3.8(选修)直观理解反向传播

3.9 随机初始化

对于神经网络,将权重全部初始化为0则会导致对称问题,则每一个隐藏层单元都在进行相同的计算。
在这里插入图片描述

解决办法:把W[1]设为np.random.randn(2,2)(生成高斯分布),通常再乘上一个小的数,比如0.01,这样把它初始化为很小的随机数。
在这里插入图片描述

四、深层神经网络

4.1 深层神经网络

算神经网络的层数时,我们不算输入层,我们只算隐藏层和输出层。
对于任何给定的问题很难去提前预测到底需要多深的神经网络,所以先去尝试逻辑回归,尝试一层然后两层隐含层,然后把隐含层的数量看做是另一个可以自由选择大小的超参数,然后再保留交叉验证数据上评估,或者用你的开发集来评估。

4.2 前向传播和反向传播

前向传播:
在这里插入图片描述
在这里插入图片描述
反向传播:
在这里插入图片描述
在这里插入图片描述
总结:
在这里插入图片描述

4.3 核对矩阵的维数

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

4.4 为什么使用深层表示?

深度神经网络的这许多隐藏层中,较早的前几层能学习一些低层次的简单特征,等到后几层,就能把简单的特征结合起来,去探测更加复杂的东西。比如你录在音频里的单词、词组或是句子,然后就能运行语音识别了。同时我们所计算的之前的几层,也就是相对简单的输入函数,比如图像单元的边缘什么的。到网络中的深层时,你实际上就能做很多复杂的事,比如探测面部或是探测单词、短语或是句子。深层的网络隐藏单元数量相对较少,隐藏层数目较多,如果浅层的网络想要达到同样的计算结果则需要指数级增长的单元数量才能达到。

4.5 搭建神经网络块

在这里插入图片描述

4.6 参数VS超参数

超参数:比如算法中的learning rate (学习率)、iterations(梯度下降法循环的数量)、(隐藏层数目)、(隐藏层单元数目)、choice of activation function(激活函数的选择)都需要你来设置,这些数字实际上控制了最后的参数和的值,所以它们被称作超参数。
应用深度学习领域,一个很大程度基于经验的过程,凭经验的过程通俗来说,就是试直到你找到合适的数值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值