IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 吴恩达深度学习课程-第三周 -> 正文阅读

[人工智能]吴恩达深度学习课程-第三周

1.神经网络概述和表示

在下图中,上标 [ 1 ] 、 [ 2 ] [1]、[2] [1][2]表示当前神经网络的层数,并不是前面提到的样本个数。 a [ 1 ] a^{[1]} a[1]表示第一层的激活值,图中可以表示为 a [ 1 ] = [ a 1 [ 1 ] 、 a 2 [ 1 ] 、 a 3 [ 1 ] ] T a^{[1]}=[a^{[1]}_1、a^{[1]}_2、a^{[1]}_3]^T a[1]=[a1[1]?a2[1]?a3[1]?]T,以此类推。该网络被称为双层神经网络(因为一般不把输入层视为其中一层):

在这里插入图片描述

部分细节可以参考吴恩达机器学习课程-第四周中第2

2.神经网络的输出计算

2.1 单个样本的输出

对于上述的双层神经网络,输入层到第一层的前向计算过程如下:

在这里插入图片描述

如果采用for循环去计算明显效率低下,此时需要将等式向量化。此时将 w w w堆积为 4 ? 3 4*3 4?3的矩阵(每一行可以视为一个神经元的向量表示), b b b则为 4 ? 1 4*1 4?1的向量:

在这里插入图片描述

最终整个神经网络可以全部表示为向量运算,其中输入 x x x可以表示为 a [ 0 ] a^{[0]} a[0]

在这里插入图片描述

2.2 多个样本的输出

首先明确符号 a [ 2 ] ( i ) a^{{[2]}(i)} a[2](i)中的 ( i ) (i) (i)表示第 i i i个样本, [ 2 ] [2] [2]表示该单元处于神经网络的层数。如果使用for循环去计算训练集所有样本在神经网络中的输出:

在这里插入图片描述

进行向量化的话就可以不需要写 ( i ) (i) (i),而是直接将输入 x x x和输出 z 、 a z、a za从向量拼接为矩阵:

在这里插入图片描述

3.激活函数

3.1 激活函数种类

在前面使用到的激活函数全是 s i g m o i d sigmoid sigmoid函数,即 σ ( z ) = 1 1 + e ? z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+e?z1?,值域在 ( 0 , 1 ) (0,1) (0,1)之间。但有时其他的激活函数效果会更好:

  • t a n h ( z ) = e z ? e ? z e z + e ? z tanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}} tanh(z)=ez+e?zez?e?z?,该函数的值域在 ( ? 1 , 1 ) (-1,1) (?1,1)之间。该函数均值是更接近零(因为值域介于 ( ? 1 , 1 ) (-1,1) (?1,1)),所以使用该函数总要优于 s i g m o i d sigmoid sigmoid

  • R e L u ( z ) = m a x ( 0 , z ) ReLu(z)=max(0,z) ReLu(z)=max(0,z)。上述两个函数当 z z z较大或较小时,梯度会接近于0进而导致梯度下降速度变得很慢,而 R e L u ReLu ReLu函数在 z z z为正值时导数恒为1,负值时恒为0(尽管在 z = 0 z=0 z=0时导数没有定义,但是实际 z = 0 z=0 z=0这样情况几乎不存在)

  • L e a k y R e L u ( z ) = m a x ( 0.01 z , z ) LeakyReLu(z)=max(0.01z,z) LeakyReLu(z)=max(0.01z,z)。该函数相较于 R e L u ReLu ReLu函数就是将 z < 0 z \lt 0 z<0时的直线进行了一定的倾斜,它通常比** R e L u ReLu ReLu**函数效果要好,但在实际中使用的不多(0.01并不是固定的,可以设置为学习参数)

在这里插入图片描述

综上所述:

  • 输出层一般还是使用 s i g m o i d sigmoid sigmoid,因为结果要介于 ( 0 , 1 ) (0,1) (0,1),其他层就不使用了
  • R e L u ReLu ReLu L e a k y R e L u LeakyReLu LeakyReLu因为 z > 0 z \gt 0 z>0时梯度为固定值1,不会造成梯度弥散,都可以加快梯度下降速度。但是 R e L u ReLu ReLu在负半区时梯度为0,意味着神经网络不训练(但是有足够的隐藏层使得 z z z值大于0的情况下,学习过程仍然可以很快)

3.2 为什么使用非线性激活函数?

假设激活函数使用线性函数 g ( z ) = z g(z)=z g(z)=z,此时 a [ 1 ] = z [ 1 ] = W [ 1 ] x + b [ 1 ] , a [ 2 ] = z [ 2 ] = W [ 2 ] a [ 1 ] + b [ 2 ] a^{[1]}=z^{[1]}=W^{[1]}x+b^{[1]},a^{[2]}=z^{[2]}=W^{[2]}a^{[1]}+b^{[2]} a[1]=z[1]=W[1]x+b[1],a[2]=z[2]=W[2]a[1]+b[2],将上面式子结合形成 a [ 2 ] = z [ 2 ] = W [ 2 ] W [ 1 ] x + W [ 2 ] b [ 1 ] + b [ 2 ] = W ′ x + b ′ a^{[2]}=z^{[2]}=W^{[2]}W^{[1]}x+W^{[2]}b^{[1]}+b^{[2]}=W'x+b' a[2]=z[2]=W[2]W[1]x+W[2]b[1]+b[2]=Wx+b,神经网络只是把输入线性组合再输出,这些隐藏层就失去作用

所以在输出层在某些情况可以使用线性激活函数(比如 y y y输出房价),但是在隐藏层则不行(除非涉及到压缩)

3.3 激活函数的导数

  • s i g m o i d sigmoid sigmoid函数: g ′ ( z ) = g ( z ) ( 1 ? g ( z ) ) g'(z)=g(z)(1-g(z)) g(z)=g(z)(1?g(z)),其中 g ( z ) = 1 1 + e ? z g(z)=\frac{1}{1+e^{-z}} g(z)=1+e?z1?
  • t a n h tanh tanh函数: g ′ ( z ) = 1 ? ( g ( z ) ) 2 g'(z)=1-(g(z))^2 g(z)=1?(g(z))2,其中 g ( z ) = e z ? e ? z e z + e ? z g(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}} g(z)=ez+e?zez?e?z?
  • R e L u ReLu ReLu函数:在 z = 0 z=0 z=0时通常指定导数为1或0

在这里插入图片描述

  • L e a k y R e L u LeakyReLu LeakyReLu函数:在 z = 0 z=0 z=0时通常指定导数为1或0.01

在这里插入图片描述

4.神经网络的反向传播

对于单层神经网络中单样本的反向传播过程如下所示:

在这里插入图片描述

下图为双层神经网络中多个样本和多样本经过反向传播后的梯度:

在这里插入图片描述

5.随机初始化

逻辑回归把权重初始化为0是可以的(具体原因可参考博文为什么逻辑回归训练时参数可以初始化为0?),但是对于神经网络把参数都初始化为0,则梯度下降将不起作用。如下图所示,如果将 W [ 1 ] W^{[1]} W[1] b [ 1 ] b^{[1]} b[1]都初始化为0,则 a 1 [ 1 ] = a 2 [ 1 ] a^{[1]}_1=a^{[1]}_2 a1[1]?=a2[1]?,意味着在反向传播时 d z 1 [ 1 ] = d z 2 [ 1 ] dz_1^{[1]}=dz_2^{[1]} dz1[1]?=dz2[1]?,无论迭代多少次都是如此(隐藏单元再多计算的结果都是一样就毫无意义了):

在这里插入图片描述

对于上面的神经网络,一般会进行以下初始化,其中常数 0.01 0.01 0.01是为了避免当激活函数为 t a n h tanh tanh s i g m o i d sigmoid sigmoid时, W W W很大会导致 Z Z Z很大,意味着梯度值很小,学习速度就变得很慢:

在这里插入图片描述

6.参考

https://www.bilibili.com/video/BV1FT4y1E74V?p=25-35

http://www.ai-start.com/dl2017/html/lesson1-week3.html

https://blog.csdn.net/qq_41398418/article/details/125106291

https://zhuanlan.zhihu.com/p/149183964

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-06-20 23:00:25  更:2022-06-20 23:01:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:47:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码