目录

浅层神经网络

神经网络的表示

计算神经网络的输出

单个样本前向传播

多个样本前向传播

激活函数

sigmoid函数与tanh函数

Relu函数和Leaky Relu函数

使用非线性激活函数原因

神经网络的梯度下降(反向传播)

随机初始化

深层神经网络

深层神经网络前向传播

核对矩阵的维数

搭建深层神经网络块

参数和超参数


浅层神经网络

神经网络的表示

  • 用上标[i]代表神经网络的第i层,用上标(i)代表第i个样本;
  • 代表第i-1层和第i层之间的权重参数矩阵,维度为代表第i层的单元数);代表第i-1层和第i层之间的偏置参数向量,维度
  • 一般输入层为第0层,不算在神经网络的层数内。

计算神经网络的输出

单个样本前向传播

整合为一个列向量记做,把整合为一个矩阵

      

多个样本前向传播

把m个样本的特征向量堆叠在一起构成特征矩阵X()作为输入,可以同时实现m个样本的前向传播,此时中间结果(向量或标量)都相应的扩展为(矩阵或向量)。扩展的矩阵横向指标对应不同的训练样本,竖向指标对应神经网络中的不同节点。

激活函数

sigmoid函数与tanh函数

    

在实际应用中几乎不使用sigmoid激活函数,tanh函数几乎在所有方面都优于sigmoid函数。

sigmoid激活函数使用情形(导数为a(1-a)):

  • 使用神经网络进行2分类时,此时输出层只有一个单元且输出需介于0-1之间

sigmoid函数缺点:

  • 当输入z太大或太小时,梯度会接近于0,算法优化速度会非常慢
  • 输出以0.5为中心,不是以0为中心,输出值没有中心化的效果(输出数据以0为中心化可以方便下一层的学习)

tanh函数(导数为1-a^2):

  • 优点:输出值以0为中心,有数据中心化的效果。方便下一层的学习。
  • 缺点:当输入z太大或太小时,梯度会接近于0,算法优化速度会非常慢(与sigmoid类似)。

Relu函数和Leaky Relu函数

Relu函数:

  • 优点:不存在梯度接近于0的情况,算法优化速度比sigmoid和tanh函数快很多。
  • 缺点:当输入时,梯度=0,但是这影响不大,对于大部分隐藏层的单元来说,输入,此时梯度都是不为0的(=1)。

Leaky Relu函数:在Relu函数的基础上增加了一个超参数,当时的系数需要手动设置,一般设为0.01,实际操作中,可以进行尝试然后选出最优的。

使用非线性激活函数原因

使用非线性激活函数可以让神经网络得到有趣的输出。

无论使用多少个隐层,如果每个隐层和输出层都采用线性激活函数,那么最后的输出可以表示为输入特征的线性组合。也就是说,此时的隐层是没有意义的,不需要任何隐层也可以得到该输出。但如果机器学习的是线性回归问题,比如房价预测,输出层用线性激活函数也许可以。

神经网络的梯度下降(反向传播)

随机初始化

权重参数W应该随机初始化,而偏置参数b可以初始化为0,因为只要W保证随机初始化,就可以破坏隐藏单元对称性。一般随机初始化权重参数时,还要乘以一个非常小的数,如0.01。因为如果采用sigmoid或tanh激活函数时,不至于使z过大或过小,导致计算梯度时接近于0,降低算法的优化速度。

深层神经网络

深层神经网络前向传播

其中是对单个样本前向传播的向量进行堆叠(一列代表一个样本),形成相应的矩阵。

核对矩阵的维数

以5层神经网络为例进行核对矩阵的维数

单个样本 vs. m个样本

    

搭建深层神经网络块

先由前向传播得到,计算损失函数;再反向传播,先计算出,再继续利用链式法则(以及前向传播中缓存的中间结果,和参数)逐步计算出,其他层依次进行。

参数和超参数

参数

超参数:学习率、梯度下降迭代次数、隐层数、各个隐层单元数、激活函数的选择等等需要自己来设置的参数,实际上超参数的不同取值可以影响模型的实际参数。

(1-2)神经网络与深度学习 | 浅层和深层神经网络相关推荐

  1. 吴恩达神经网络与深度学习——浅层神经网络

    吴恩达神经网络与深度学习--浅层神经网络 神经网络概述 神经网络表示 计算神经网络的输出 m个样本的向量化 for loop 向量化 向量化实现的解释 激活函数 sigmoid tanh函数 ReLu ...

  2. 神经网络与深度学习(五)前馈神经网络(2)自动梯度计算和优化问题

    注:本次使用的数据集依旧是前两章的Moon1000数据集  from nndl.dataset import make_moons [详细代码见 神经网络与深度学习(五)前馈神经网络(1)--二分类任 ...

  3. 深度学习(三)——深层神经网络

    深层神经网络 深层神经网络中的前向传播 训练单个样本: 第一层: z[1]=w[1]x+b[1]a[1]=g(z[1])\begin{array}{l} {z^{[1]}} = {w^{[1]}}x ...

  4. 图像处理神经网络python_深度学习使用Python进行卷积神经网络的图像分类教程

    深度学习使用Python进行卷积神经网络的图像分类教程 好的,这次我将使用python编写如何使用卷积神经网络(CNN)进行图像分类.我希望你事先已经阅读并理解了卷积神经网络(CNN)的基本概念,这里 ...

  5. 神经网络与深度学习(五)前馈神经网络(3)鸢尾花分类

    目录 4.5实践:基于前馈神经网络完成鸢尾花分类 深入研究鸢尾花数据集 4.5.1 小批量梯度下降法 4.5.1.1 数据分组 4.5.2 数据处理 4.5.2.2 用DataLoader进行封装 4 ...

  6. 神经网络与深度学习(一):神经网络与数字识别

    人类视觉系统是比较神奇的存在之一.考虑下面的数字手写体: 大部分人可以毫不费力的识别出这些数字:504192.其实这个识别的过程并没有想象的那么简单容易.人类大脑的两个半球,各有一个主要的视觉皮层,被 ...

  7. [翻译] 神经网络与深度学习 第三章 提升神经网络学习的效果 - Chapter 3 Improving the way neural networks learn

    目录: 首页 译序 关于本书 关于习题和难题 第一章 利用神经网络识别手写数字 第二章 反向传播算法是如何工作的 > 第三章 提升神经网络学习的效果 第四章 可视化地证明神经网络可以计算任何函数 ...

  8. 神经网络与深度学习 Class 13:卷积神经网络

    目录 13.1 深度学习基础 13.2 图像识别与深度学习 13.3 图像卷积 13.4 卷积神经网络 13.1 深度学习基础 特征工程:尽可能选择和构建出好的特征,使得机器学习算法能够达到最佳性能 ...

  9. [2022-10-06]神经网络与深度学习第3章-前馈神经网络(part2)

    contents 前馈神经网络(part 2) 写在开头 自动梯度计算 torch中自动梯度的封装 简介 过程内容 对比 模型简化 直接创建 利用预定义算子重新实现前馈神经网络 使用pytorch预定 ...

最新文章

  1. @Mapper和@Repository的区别
  2. 吴恩达深度学习课程deeplearning.ai课程作业:Class 2 Week 3 TensorFlow Tutorial
  3. VMWare 黑苹果卡在Logo页面
  4. 【MyBatis】Mybatis实现分页效果
  5. JacksonUtils Jackson的JSON序列化反序列化
  6. 边缘检测robert原理_机器视觉尺寸检测基础
  7. 日均 61 亿次攻击、挖矿病毒“卫冕”安全威胁之最,云上安全防御如何“战”?...
  8. 20200203_knn分类算法
  9. Python代码: 把几个PDF文件拼接为一个 Merge PDF files
  10. oracle同义词表不存在,同义词什么时候失效呢?
  11. AI如何实现自立自强?属于百度飞桨的“耐心”
  12. 计算机2.0培训心得,教育信息化20培训心得体会
  13. 用MySQL数据库来处理中英文取首字母排序
  14. world 字体 选取高亮_Word2003选取文字的N种方法
  15. java读取pdf签名_Java 获取PDF中的数字签名信息
  16. R实战 | NGS数据时间序列分析(maSigPro)
  17. LPC845-BRK开发板开箱
  18. 年度矫情大剧-2017回忆文
  19. c++ TSan(Thread Sanitizer)线程检测工具
  20. python软件测试面试题2020_【面试】2020软件测试面试题及答案汇总

热门文章

  1. 微孔塑料的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. ckc交易什么意思_黄金TD交易保值是什么意思?炒黄金如何盈利?
  3. 【算法修炼】台球碰撞 C
  4. Attention机制的总结笔记
  5. 【20211008】为什么分布式服务框架越来越火
  6. 【Flink实时数仓】数据仓库项目实战 《四》日志数据分流 【DWD】
  7. 计算机网络-实验5:网络层-IP协议分析
  8. clamav Java_杀毒软件包clamav部署-CentOS6.5
  9. 2022年陕西省中级工程师职称评审流程及申报条件
  10. 关于中级工程师职称评审有什么用?有必要办理中级工程师吗?