深度学习入门知识总结

news/2024/11/20 9:10:42/

0、前言:学习了深度学习入门的鱼书,很多基础概念有了大概了解,及时总结,方便日后查找


1、神经网络(深度学习)的起源算法——感知机:

  • 定义:感知机接收多个输入信号,输出一个信号,这里的信号理解为电流或者河流具备流动性的东西。感知机信号只有1/0两种取值(流/不流)
    在这里插入图片描述
    在这里插入图片描述

  • 用感知机可以实现“与门、与非门、或门”,但是无法直接实现“异或门”

  • 感知机的局限性就在于它只能表示由一条直线分割的空间

  • 可以通过“与门、与非门、或门”叠加实现异或门,以下是2层感知机实现“异或”门
    在这里插入图片描述

  • 多层感知机的作用巨大:理论上用两层感知机就可以实现计算机的功能,感知机通过叠加层能够实现非线性表示。多层感知机就可以看作是神经网路了。

  • 激活函数:将输入信号的总和转换为输出信号,在神经网络中,使用的除阶跃函数以外的其他函数作为激活函数,激活函数是连接感知机和神经网络的桥梁。

    • sigmoid函数:具有平滑性,对神经网络的学习具有重要作用!
    • Relu函数
    • 阶跃函数
  • 神经网络中使用的激活函数是平滑变换的sigmoid函数,感知机中使用的激活函数是阶跃函数。


2、神经网络:

  • 如下图所示是一个三层神经网络:
    在这里插入图片描述
  • 在神经网络中每一层传递的都是数组,借助python中数组运算的特性(numpy库)就可以实现数组在每一层的运算和传递。
  • 输出层激活函数的设计:二元分类问题使用sigmoid函数,多元分类问题使用softmax函数,回归问题使用恒等函数。
  • 求解机器学习问题的步骤分为:
    • 学习:进行模型的学习
    • 推理:用学到的模型对未知的数据进行推理(分类)
    • 注意:一般在推理阶段输出层不用加激活函数,只有在学习阶段才需要给输出层加激活函数
  • 手写数字识别的神经网络模型:
    • 1、输入:因为数据集中每个图片大小是28X28=784个像素,所以输入层就是784个
    • 2、输出:因为分类结果是从图片中识别结果是0-9,所以输出层为10个
  • 批处理:每次输入的数据是通过批处理实现的,上面的例子已经可以理解输入到手写数字识别中的数据是784个,这是一张图片的数据压缩为了一个一维数组输入的,一次输入到模型中的如果只有一张数据是比较缓慢的,所以有了数组的概念,就可以一次输入一批图片进去,比如一次输入100张图片,那么输入数据就是一个100行784列的二维数组。最后结果就是一个100行10列的二维数组,如下图所示是数据进入模型之后的运算过程(变形过程):
    在这里插入图片描述
    通过批处理就能实现高效的运算。

3、神经网络的学习阶段:

  • 定义:神经网络的学习指的是从训练数据中自动获取最优权重参数的过程,为了使神经网络能进行学习,就需要应用到损失函数作为指标。学习的目的就是找出使损失函数达到最小的权重参数,这个过程就可以用梯度法来实现。找到了合适的权重参数,模型就算是训练完成,就可以用来解决分类或者回归问题了。
  • 神经网络(深度学习)的优点:通过机器来学习特征,减少了人工参与,神经网络是端到端的学习。
  • 机器学习中的数据划分为两部分:
    • 训练数据:也叫做监督数据,用来寻找最优参数。
    • 测试数据:用来评价模型的泛化能力,也就是说通过训练数据训练的模型(有了最优参数),如果在训练数据中准确率很高,但换成测试数据之后,准确率就下降了,这种现象叫做过拟合。如果得到的模型不光在训练数据中准确率高,在测试数据中准确率也很高,那就可以说模型的泛化能力很好。
  • 损失函数:可以使用任意函数,但一般是均方误差和交叉熵误差。举个例子,用均方误差作为损失函数,如下图,可以明显看到,损失函数越小,模型输出的结果越接近真实值。
    在这里插入图片描述
  • mini-batch学习:要判断模型的损失函数,就需要求出所有训练数据损失函数的平均值,如果训练数据比较多,那计算一次损失函数很慢,不现实,所以可以从全部训练数据中选出一部分来近似。例如从60000个训练数据中随机选100个,然后用100个进行学习,这种学习方式就叫做mini-batch学习。
  • 总结:在神经网络学习中,寻找最优参数(权重和偏置)时,要找到使损失函数值尽可能小的参数。为了找到使损失函数尽可能小的地方,就要计算参数的导数(梯度),通过导数作为指引,逐步更新参数的值。
  • 对权重参数的损失函数求导原理:将参数视为变量,对关于参数的函数求导,如果导数为负数,说明损失函数关于参数递减,所以参数值增加,损失函数的值变小。如果导数为正数,说明损失函数关于参数递增,所以参数值减小,损失函数的值变小。注意,当导数的值为0时,权重参数不影响损失函数的变化。

  • 两种求导方式在深度学习中的应用:
    • 数值微分:通过导数的定义求导数
      在这里插入图片描述
    • 第二种用误差反向传播法,相当于用了导数计算公式(可以高效地计算))
    • 一般数值微分用来检验误差反向传播是否计算正确,这个过程也叫“梯度确认”。
    • 注意在深度学习中参数很多,所以一般是采用链式法则求偏导。
  • 梯度:由全部变量的偏导数汇总而成的有方向的向量称为梯度。梯度的大小就是函数减小的缓慢程度,梯度的方向就是函数减小的方向。梯度表示的是各个点函数值减小最多的方向,
    在这里插入图片描述
    • 函数的取值沿梯度方向前进一定距离,然后在新的地方重新求梯度,再沿着梯度方向前进,如此反复,逐渐减小函数值的过程就是“梯度法”,找函数最大值的梯度法叫做“梯度下降法”,找函数最小值的方法叫做“梯度上升法”。在深度学习中常用“梯度下降法”。用数学式来表示梯度法如下,下面的x0和x1就可以看作两个参数,如果有多个参数,道理也是一样:
      在这里插入图片描述
  • 学习过程的实现:
    1、从训练数据中随机选择一部分数据(mini-batch),目标是减小mini-batch的损失函数的值。
    2、计算损失函数关于各个权重参数的梯度。
    3、将权重参数沿梯度方向进行微小的更新。
    4、重复1,2,3
    注意:随机梯度下降算法(SGD)中随机指的是mini-batch的数据是随机选择的。

4、相关学习技巧:

  • 参数更新
    • “最优化”:神经网络的学习目的是找到使损失函数的值尽可能小的参数,这是寻找最优参数的问题,解决这个问题的过程就是最优化。
    • 常见的参数最优化方法:
      • “随机梯度下降法”:简称SGD,这个方法就是为了寻找最优参数,将参数的梯度(导数)作为线索,沿着梯度方向更新参数。
        -“Momentum”:模仿物理学中加速度概念的方法
      • “AdGrad”:会随着参数变化调整学习率
      • “Adam”:结合了Momentum和AdGrad两种方法的优点
  • 权重初始值
    • 在神经网络学习中,权重初始值的设置非常重要。
    • 权重初始值的生成必须随机化,但要合理,初始值设置不当,就会出现梯度消失的问题,一般在深度学习框架中,Xavier初始值已被作为标准使用。
    • 小结:实践表明,当激活函数使用ReLU时,权重初始值使用He初始值,当激活函数为sigmoid或tanh等S型曲线函数时,初始值使用Xavier初始值。
  • 添加Batch Normalization层
    • Batch Normalization层定义:向神经网络中插入对数据分布进行正规化的层
    • 优点:
      • 可以使学习快速进行(可以增大学习率)
      • 不那么依赖初始值
      • 抑制过拟合
  • 超参数:
    • 定义:超参数包括(各层中神经元的数量、batch大小、参数更新时的学习率或权值衰减等。),超参数也可以影响模型的效果
    • 验证数据可以用来评估超参数的好坏,如果使用测试数据来评估超参数的好坏,就可能会造成过拟合,验证数据是验证超参数专用,不同于训练数据和测试数据
    • 数据划分:
      • 训练数据:用于参数(权重和偏置)的学习
      • 测试数据:用于测试模型准确度
      • 验证数据:先从训练数据中获取20%的数据作为验证数据,目的是用于测试超参数
  • 过拟合解决办法:
    • 定义:过拟合指的是只能拟合训练数据,但不能很好的拟合不包含在训练数据中的其他数据的状态。
    • 抑制过拟合的方法:
      • 1、权值衰减:通过在学习过程中对大的权重进行惩罚,来抑制过拟合。
      • 2、Dropout:在学习的过程中随机是删除神经元的方法。
  • 卷积神经网络:
    • 简称CNN,常被用于图像识别、语音识别等各种场合。
    • CNN相对于之前介绍的全连接层,优点是可以利用与形状相关的信息,之前通过全连接层对手写数字图片识别时,是将图片的每个像素组成的二维数组拉伸为了一维数组,然后进行深度识别,这种就是全连接层的方法,而CNN可以输入一个二维或者三维数组来保持形状相关的信息。
    • CNN中滤波器的参数就相当于全连接的神经网络中的权重,CNN中的偏置通常只有一个
    • 卷积:卷积(Conv)运算就是输入数据与滤波器进行的对应相乘后求和的运算,也会变小
    • 池化:池化(Pooling)就是从目标窗口获取最大值(或平均值),池化处理之后,高和长方向都会变小


http://www.ppmy.cn/news/803608.html

相关文章

一行代码让校友邦网页版出错(无法发表)

正在疯狂补周志,然后刚写第二篇死活不能提交,转个圈圈就没了 一看控制台好家伙 然后就开始测试我的内容哪里会引起bug 结果真是给我整笑了 没错,一行代码直接网页js乱了,这网页写的太好了(◕ᴗ◕✿) 如下也可以造成无响应 …

#VCS# 关于VCS 编译选项:+vcs+initreg+random的理解(3)回头是岸

前段时间,有时间整理了一下关于+vcs+initreg+random 编译和仿真选项的心得,草草写了两篇笔记。自觉得对该选项已经掌握了,后来实际应用中再次触及到了该知识点,不想又卡壳了。今天,继续追加一篇,希望对大家能有所帮助!不正之处,请指正。 对于上述规则rule#2和 rule#3,…

OpenCV 入门教程:中值滤波和双边滤波

OpenCV 入门教程:中值滤波和双边滤波 导语一、中值滤波二、双边滤波三、示例应用3.1 图像去噪3.2 图像平滑 总结 导语 在图像处理和计算机视觉领域,中值滤波和双边滤波是两种常见的滤波方法,用于平滑图像、去除噪声等。 OpenCV 提供了中值滤…

[SSD核心技术:FTL 1] 谁“偷“走了固态硬盘的容量? 预留空间 (OP )图文全解

声明 主页: 元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言。 个人辛苦整理,付费内容,禁止转载。 内容摘要 前言 1. 预留空间OP是什么? 2. 预留空间OP有什么好处? 3. OP 为何能提高 SSD 性能 4. OP 为何能改善固态硬盘使用寿命

用python模拟轮盘抽奖游戏

1 问题 如何用python程序模拟轮盘抽奖游戏,解决日常问题。 问题:轮盘分为三部分: 一等奖,二等奖和三等奖;轮盘转的时候是随机的,如果范围在[0,0.08)之间,代表一等奖,如果范围在[0.08,0.3)之间,代表2等奖,如果范围在[0.3, 1.0)之间,代表3等奖。 2 方法 首…

oracle的rowid到底是什么

rowid 说明 rowid是伪列(pseudocolumn),伪列的意思是实际上这一列本身在数据字典中并不存在,在查询结果输出时它被构造出来的。 rowid并不会真正存在于表的data block中,但是他会存在于index当中,用来通过rowid来寻找表…

5种快速查找容器文件系统中文件的方法

5种快速查找容器文件系统中文件的方法 如果你经常使用容器,那么你很有可能希望在某个时刻查看正在运行的容器的文件系统。也许容器无法正常运行,你想读取一些日志,也许你想检查容器内部的一些配置文件…或者,你可能像我一样&…

Nginx如何上传大文件

总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(…