←上一篇 ↓↑ 下一篇→
3.2 神经网络表示 回到目录 3.4 多个例子中的向量化

神经网络输出 (Computing a Neural Network’s Output)

在上一节的视频中,我们介绍只有一个隐藏层的神经网络的结构与符号表示。在这节的视频中让我们了解神经网络的输出究竟是如何计算出来的。

首先,回顾下只有一个隐藏层的简单两层神经网络结构

其中, xxx 表示输入特征, aaa 表示每个神经元的输出, WWW 表示特征的权重,上标表示神经网络的层数(隐藏层为1),下标表示该层的第几个神经元。这是神经网络的符号惯例,下同。

神经网络的计算

关于神经网络是怎么计算的,从我们之前提及的逻辑回归开始,如下图所示。用圆圈表示神经网络的计算单元,逻辑回归的计算有两个步骤,首先你按步骤计算出 zzz ,然后在第二步中你以sigmoid函数为激活函数计算 zzz (得出 aaa ),一个神经网络只是这样子做了好多次重复计算。

回到两层的神经网络,我们从隐藏层的第一个神经元开始计算,如上图第一个最上面的箭头所指。从上图可以看出,输入与逻辑回归相似,这个神经元的计算与逻辑回归一样分为两步,小圆圈代表了计算的两个步骤。

第一步,计算 z1[1]:z1[1]=w1[1]Tx+b1[1]z_1^{[1]}: z^{[1]}_1=w^{[1]T}_1x+b^{[1]}_1z1[1]​:z1[1]​=w1[1]T​x+b1[1]​ 。

第二步,通过激活函数计算 a1[1]:a1[1]=σ(z1[1])a^{[1]}_1:a^{[1]}_1=\sigma(z^{[1]}_1)a1[1]​:a1[1]​=σ(z1[1]​) 。

隐藏层的第二个以及后面两个神经元的计算过程一样,只是注意符号表示不同,最终分别得到 a2[1]、a3[1]、a4[1]a^{[1]}_2、a^{[1]}_3、a^{[1]}_4a2[1]​、a3[1]​、a4[1]​ ,详细结果见下:

z1[1]=w1[1]Tx+b1[1],a1[1]=σ(z1[1])z^{[1]}_1=w^{[1]T}_1x+b^{[1]}_1,a^{[1]}_1=\sigma(z^{[1]}_1)z1[1]​=w1[1]T​x+b1[1]​,a1[1]​=σ(z1[1]​)z2[1]=w2[1]Tx+b2[1],a2[1]=σ(z2[1])z^{[1]}_2=w^{[1]T}_2x+b^{[1]}_2,a^{[1]}_2=\sigma(z^{[1]}_2)z2[1]​=w2[1]T​x+b2[1]​,a2[1]​=σ(z2[1]​)z3[1]=w3[1]Tx+b3[1],a3[1]=σ(z3[1])z^{[1]}_3=w^{[1]T}_3x+b^{[1]}_3,a^{[1]}_3=\sigma(z^{[1]}_3)z3[1]​=w3[1]T​x+b3[1]​,a3[1]​=σ(z3[1]​)z4[1]=w4[1]Tx+b4[1],a4[1]=σ(z4[1])z^{[1]}_4=w^{[1]T}_4x+b^{[1]}_4,a^{[1]}_4=\sigma(z^{[1]}_4)z4[1]​=w4[1]T​x+b4[1]​,a4[1]​=σ(z4[1]​)

向量化计算

如果你执行神经网络的程序,用for循环来做这些看起来真的很低效。所以接下来我们要做的就是把这四个等式向量化。向量化的过程是将神经网络中的一层神经元参数纵向堆积起来,例如隐藏层中的 www 纵向堆积起来变成一个 (4,3) 的矩阵,用符号 W[1]W^{[1]}W[1] 表示。另一个看待这个的方法是我们有四个逻辑回归单元,且每一个逻辑回归单元都有相对应的参数——向量 www ,把这四个向量堆积在一起,你会得出这4×3的矩阵。 因此, 公式3.8:

z[n]=w[n]x+b[n]z^{[n]}=w^{[n]}x+b^{[n]}z[n]=w[n]x+b[n]

公式3.9:

a[n]=σ(z[n])a^{[n]}=\sigma(z^{[n]})a[n]=σ(z[n])

详细过程见下: 公式3.10:

a[1]=[a1[1]a2[1]a3[1]a4[1]]=σ(z[1])a^{[1]}=\left[ \begin{matrix} a^{[1]}_1\\a^{[1]}_2\\a^{[1]}_3\\a^{[1]}_4 \end{matrix} \right]=\sigma(z^{[1]})a[1]=⎣⎢⎢⎢⎡​a1[1]​a2[1]​a3[1]​a4[1]​​⎦⎥⎥⎥⎤​=σ(z[1])

公式3.11:

[z1[1]z2[1]z3[1]z4[1]]=[⋯W1[1]⋯⋯W2[1]⋯⋯W3[1]⋯⋯W4[1]⋯]⏞W[1]∗[x1x2x3]⏞input+[b1[1]b2[1]b3[1]b4[1]]⏞b[1]\left[ \begin{matrix} z^{[1]}_1\\z^{[1]}_2\\z^{[1]}_3\\z^{[1]}_4 \end{matrix} \right]= \overbrace{ \left[ \begin{matrix} \cdots & W^{[1]}_1 & \cdots \\\cdots & W^{[1]}_2 & \cdots\\\cdots & W^{[1]}_3 & \cdots\\\cdots & W^{[1]}_4 & \cdots \end{matrix} \right]}^{W^{[1]}} * \overbrace{ \left[\begin{matrix}x_1\\ x_2\\ x_3\end{matrix}\right] }^{input} + \overbrace{ \left[\begin{matrix}b_1^{[1]}\\ b^{[1]}_2\\ b^{[1]}_3\\b^{[1]}_4\end{matrix}\right] }^{b^{[1]}}⎣⎢⎢⎢⎡​z1[1]​z2[1]​z3[1]​z4[1]​​⎦⎥⎥⎥⎤​=⎣⎢⎢⎢⎡​⋯⋯⋯⋯​W1[1]​W2[1]​W3[1]​W4[1]​​⋯⋯⋯⋯​⎦⎥⎥⎥⎤​​W[1]​∗⎣⎡​x1​x2​x3​​⎦⎤​​input​+⎣⎢⎢⎢⎡​b1[1]​b2[1]​b3[1]​b4[1]​​⎦⎥⎥⎥⎤​​b[1]​

对于神经网络的第一层,给予一个输入 xxx ,得到 a[1]a^{[1]}a[1] , xxx 可以表示为 a[0]a^{[0]}a[0] 。通过相似的衍生你会发现,后一层的表示同样可以写成类似的形式,得到 a[2]a^{[2]}a[2] , y^=a[2]\hat{y}=a^{[2]}y^​=a[2] ,具体过程见公式3.8、3.9。

图3.3.3

如上图左半部分所示为神经网络,把网络左边部分盖住先忽略,那么最后的输出单元就相当于一个逻辑回归的计算单元。当你有一个包含一层隐藏层的神经网络,你需要去实现以计算得到输出的是右边的四个等式,并且可以看成是一个向量化的计算过程,计算出隐藏层的四个逻辑回归单元和整个隐藏层的输出结果,如果编程实现需要的也只是这四行代码。

总结 通过本视频,你能够根据给出的一个单独的输入特征向量,运用四行代码计算出一个简单神经网络的输出。接下来你将了解的是如何一次能够计算出不止一个样本的神经网络输出,而是能一次性计算整个训练集的输出。

课程板书





←上一篇 ↓↑ 下一篇→
3.2 神经网络表示 回到目录 3.4 多个例子中的向量化

3.3 神经网络的输出-深度学习-Stanford吴恩达教授相关推荐

  1. 1.3 用神经网络进行监督学习-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.2 什么是神经网络 回到目录 1.4 为什么深度学习会兴起 用神经网络进行监督学习 关于神经网络也有很多的种类,考虑到它们的使用效果,有些使用起来恰到好处,但事实表明,到 ...

  2. 2.14 向量化 Logistic 回归的梯度输出-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.13 向量化 Logistic 回归 回到目录 2.15 Python 中的广播 向量化 Logistic 回归的梯度输出 (Vectorizing Logistic R ...

  3. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  4. 4.4 为什么使用深层表示-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 4.3 核对矩阵的维数 回到目录 4.5 搭建深层神经网络快 为什么使用深层表示 (Why Deep Representation?) 我们都知道深度神经网络能解决好多问题, ...

  5. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  6. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...

  7. 3.10 直观理解反向传播-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.9 神经网络的梯度下降法 回到目录 3.11 随机初始化 直观理解反向传播 (Backpropagation Intuition (Optional)) 这个视频主要是推 ...

  8. 4.1 深层神经网络-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.12 总结习题 回到目录 4.2 深层网络中的前向传播 深层神经网络 (Deep L-layer Neural Network) 目前为止我们学习了只有一个单独隐藏层的神 ...

  9. 3.9 神经网络的梯度下降法-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.8 激活函数的导数 回到目录 3.10 直观理解反向传播 神经网络的梯度下降法 (Gradient Descent for Neural Networks) 在这个视频中 ...

最新文章

  1. java io在文件结尾持续添加内容
  2. python教材目录,python 目录
  3. matlab批量修改txt内容_MATLAB作图实例:18:为饼图添加文本标签和百分比
  4. 【OpenJ_Bailian - 2711 】 合唱队形(dp,枚举中间顶点)
  5. GitHub Trending 长期被国人“霸榜”,国外开发者 SAY NO
  6. python菜单栏添加子菜单_python添加菜单图文讲解
  7. docker容器别人访问很卡_docker容器下远程访问jupyter的方式
  8. flutter 加载gif图片
  9. java dvr_java – 如何设置与DVR的连接并解码数据?
  10. windows在cmd中用cl、link工具编译生成dll与lib
  11. 数分下(第1讲):一阶微分方程的三类模型求解
  12. java 假币问题_减治法解决假币问题
  13. 地图可视化绘制 | R-tanaka/metR包 绘制3D阴影效果地图
  14. pytorch指定版本更新
  15. Python笔记day04(基础)|列表、元组
  16. 如何成为一名优秀的技术Leader?
  17. 人脸识别经典开源项目
  18. QT: 为自己的QT程序添加一个登录界面
  19. 持安应用层零信任,开启数据安全上帝视角
  20. 计算圆、圆球和圆锥的面积和体积

热门文章

  1. 【NOI2014】动物园 kmp性质
  2. bootstrap modal垂直居中(简单封装)
  3. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析
  4. GEEK学习笔记— —程序猿面试宝典笔记(二)
  5. 递归求最值(分治递归)
  6. 在程序中设置最小化、最大化、关闭按钮
  7. UA MATH567 高维统计I 概率不等式11 Azuma不等式
  8. UA MATH564 概率论 计算至少有一个发生的概率:Boole不等式
  9. VC++ 显示对话框
  10. IOS树视图学习总结