【深度学习-神经网络架构-通俗易懂的入门课程】

文章目录

    • 深度学习与AI的关系
    • 机器学习的流程
    • 机器学习的核心以及问题
    • 深度学习要解决的问题
      • 模型如何搭建?
      • 特征如何提取?
      • 为什么要深度学习?
    • 深度学习的应用
    • 深度学习的问题
    • 计算机视觉任务
      • 分类与检索
      • 如何实现分类
    • 神经网络基础
      • 线性函数
      • 损失函数
        • 防止过拟合
      • 前向传播
      • 反向传播
        • 反向传播的计算方法
      • 神经网络的架构
        • 输入层 输出层 隐藏层
        • 全连接层
        • 神经元
          • 神经元对网络的影响:
          • 惩罚粒度对结果拟合的影响
        • 激活函数
        • 数据预处理
        • 参数初始化
        • 过拟合解决方法

深度学习与AI的关系

【深度学习-神经网络架构-通俗易懂的入门课程】_第1张图片

AI 包括 机器学习 包括 深度学习
目前深度学习的算法表现更好

机器学习的流程

数据获取
特征工程
建立模型
评估与应用

机器学习的核心以及问题

特征、算法
特征决定了模型的上限,算法和参数决定了如何去逼近这个基线

问题:传统的机器学习算法,在数据规模上升时,效果无法提升
【深度学习-神经网络架构-通俗易懂的入门课程】_第2张图片

深度学习要解决的问题

模型如何搭建?

领域都有成型的模型,每年都有很多优秀的论文可以参考,反而特征提取更加重要

特征如何提取?

数值特征比较好提取
但是文本和图像 音视频等怎么提取呢?
留到下文详述

为什么要深度学习?

深度学习是一个黑盒子,能够提取出来最合适的特征,且能够自我学习更新,具备强大的学习能力

深度学习的应用

视觉类和自然语言类

  • 视觉类任务
    目标检测:无人驾驶汽车 怎么识别和检测目标
    【深度学习-神经网络架构-通俗易懂的入门课程】_第3张图片

医学 影像识别 基因检测
【深度学习-神经网络架构-通俗易懂的入门课程】_第4张图片

  • 自然语言处理
    聊天机器人,生成对话机器人

  • 人脸识别 人脸替换
    【深度学习-神经网络架构-通俗易懂的入门课程】_第5张图片

  • 超分辨率重构

深度学习的问题

计算量很大
计算中涉及的参数上千万 上亿,计算和更新耗时很长
因此移动端不能很好的支持

计算机视觉任务

分类与检索

分类是指:让程序分类图片是什么,
由斯坦福大学的李飞飞教授带领创建IMAGENET分类数据集。该数据集包合 14,197,122张图片和21,841个Synset索引,基本可涵盖大部分分类了。
【深度学习-神经网络架构-通俗易懂的入门课程】_第6张图片

如何实现分类

  • 传统的算法识别图片类别的方法:

比如K临近算法
【深度学习-神经网络架构-通俗易懂的入门课程】_第7张图片
以上图为例:
选择离目标最近的3个点,比如第一个圈部分,三角形居多,那这个图片的分类就很可能是三角形。
但是这也有问题,如果选择的K是5个呢? 那这个类别的判定就是正方形,分类截然相反

  • 以像素的近似点分类
    先看一下,图像在计算中的表现形式,以3通道为例:RGB 3通道,一个3维 0到255的图像(h, w, c)形式
    比如543的图片为例,在计算机中的表示

【深度学习-神经网络架构-通俗易懂的入门课程】_第8张图片

【深度学习-神经网络架构-通俗易懂的入门课程】_第9张图片
这样一个3维的像素数据如何判定出图片类别呢?
既然颜色的明亮程度可以用像素值类标识,最先想到的就是找出一些分类目标图片,计算输入图片与分类图片的像素差,哪两个个像素差最小,就归属于哪一类,最终分类的效果如下:
【深度学习-神经网络架构-通俗易懂的入门课程】_第10张图片
可以看出来部分图片的分类是正确,但是还有很大一部分是错误的,比如马被识别到了翻斗车的类别里
问题出在哪里呢?
首先无法区分背景和主题,对一幅图片来说,主题和背景的权重应该是不一样的,显然像素值的大小无法应对这种情况,另外还有如下所述的难点:

面临的挑战
比如照射的角度会导致像素变化
比如主体被别的东西遮蔽了
【深度学习-神经网络架构-通俗易懂的入门课程】_第11张图片
形状改变了
【深度学习-神经网络架构-通俗易懂的入门课程】_第12张图片
被挡住了一部分
【深度学习-神经网络架构-通俗易懂的入门课程】_第13张图片
背景混子在一起:
【深度学习-神经网络架构-通俗易懂的入门课程】_第14张图片
如何解决呢?
具体实现方式:
学习一次就知道了,比如遮蔽的情况,找一些类似的图片进行标注,进行学习
,通过学习后的网络就会记住这些特征也是属于这种分类的

神经网络基础

线性函数

(32,32,3)的图像 ,目标就是能计算它属于每个分类的得分。
这个猫是由3072个像素点决定的,也就是所谓的特征有3072个,记为x,怎么得出分值呢?
首先我们考虑一个问题,每个像素点对于这个猫的重要程度一样么?
答案是肯定不一样,比如背景的像素点是不相关的,重要程度低
比如眼睛,耳朵等等的像素点很重要,需要一个高的权重参数
所以需要3072个权重参数,来标注这个像素对于这个分类的重要程度
【深度学习-神经网络架构-通俗易懂的入门课程】_第15张图片

我们用一个w(3072)标识 每个像素是猫这个分类的权重
如果是判定十分类,就需要3072组w,10*3072大小的权重矩阵,分别去表示3073个像素分别对应10分类的权重。
【深度学习-神经网络架构-通俗易懂的入门课程】_第16张图片

矩阵中的数字的意义:
越大的权重数据说明,当前的这个像素,对这个类别比较重要
权重中的负数表示对这个类别是抑制的作用
0表示对这个类别没有作用

这个矩阵哪里来的?
初始是随机值
比如现在判定错了,说明是权重不太对,想出一种方法,不断的去优化权重矩阵,直至能够区分出这个分类。那么问题来了,这个优化方法是什么?答案是利用损失函数

损失函数

损失函数的作用是来衡量分类的结果的,神经网络可以分类可以回归等,相同的网络,配以不同的损失函数,就可以完成不同的任务。

举个例子:经过神经网络输出猫 狗 飞机的分数是22 56 48,损失函数sum(max(0, y_predict - y_true)),这样设计的损失函数,在分类正确时,损失就为0

另一个问题,损失函数有不同的类型,如果损失函数的值相同,意味着模型相同么?如下的例子:

比如输入数据 1,1,1,1
模型1最终w1 [1,0,0,0]
模型2最终w2 [0.25, 0.25, 0.25, 0.25]

答案肯定是否定的,这两个模型肯定是不同的,虽然这两个参数与输入矩阵相乘后损失相同的。第一个模型是一种突然的变化,就容易导致结果过拟合

防止过拟合

通常为了防止过拟合,损失函数都设计为加上正则化的惩罚项:
损失函数 = 数据损失 + 正则化的惩罚项

我们总是希望模型不要太复杂,过拟合的模型是没用的,神经网络太强大了,而越强大的模型,过拟合就越大

前向传播

【深度学习-神经网络架构-通俗易懂的入门课程】_第17张图片

f(w, x)计算损失的过程,就是所谓的前向传播。

更进一步,在神经网络中,最终到的是一个分数值,但如果给我们一个概率的话是不是更好?
【深度学习-神经网络架构-通俗易懂的入门课程】_第18张图片
这就是通常所说的 归一化f,在这里插入图片描述

【深度学习-神经网络架构-通俗易懂的入门课程】_第19张图片

e指数次幂可以放大变化,上述可以归为0.1区间的概率值,也是常说的softmax

反向传播

由输入一步步计算出损失,是正向传播
那么如何更新模型呢? 更新模型的实质就是更新权重w, 这就是所谓的反向传播(也叫梯度下降)

反向传播的计算方法

当我们得到了一个目标损失函数后,让损失尽可能的小,结果就越靠近真实值,那怎么去求解呢?
寻找一种方法,更新后的参数能使目标函数达到极值点,极值点又是怎么求?数学上已经证明了的是极值点导数为0的点,这就是所谓的更新的方向。

我们需要从损失出发,向前去寻找导数为0的点,这种从后向前传播的过程就是反向传播,具体来说的计算方法是用了导数的链式法则

【深度学习-神经网络架构-通俗易懂的入门课程】_第20张图片
传播就是根据这个法则一步步往后计算的,常见的梯度下降算法:

  • 批量梯度下降:
    容易得到最优解,但是考虑所有样本,速度很慢

  • 随机梯度下降SGD
    每次找一个样本,迭代速度快,但不一定是朝收敛的方向

  • 小批量梯度下降
    每一次更新选择一小部分数据来算

学习率(或步长):
梯度下降的粒度,它对结果产生巨大影响,一般都会选择小一点

另外每次批处理的数量: 32 64 128都可以,很多时候需要考虑内存和效率

神经网络的架构

【深度学习-神经网络架构-通俗易懂的入门课程】_第21张图片

输入层 输出层 隐藏层

除了输入和输出,其它层叫做隐藏层

全连接层

中间这些连接线,其实就是所谓的参数,被称为全连接层,实质上是权重矩阵,意义是什么呢?比如上述对于10分类的权重矩阵,是对3072个像素的每个像素点,10个分类的不同权重。

神经元

隐层中的特征个数

神经元对网络的影响:
  1. 参数个数
    举个例子 (800,600,3)的图片 100万个像素点,100w输入,增加一个神经元,1个隐层就增加100w个参数
  2. 拟合的程度
    斯坦福大学有一个网站,可以显示神经元个数对分类的影响 https://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html

【深度学习-神经网络架构-通俗易懂的入门课程】_第22张图片
上图分别是2和6个神经元的展示结果,6确实是更拟合

惩罚粒度对结果拟合的影响

【深度学习-神经网络架构-通俗易懂的入门课程】_第23张图片
显然这里,更大的惩罚力度,可以让模型更稳定

激活函数

非线性函数 sigmod RELU tanh 等
实际上几乎每个隐藏层后面都还包括一些激活函数,加入一些非线性特征,常用的激活函数及其优缺点:
【深度学习-神经网络架构-通俗易懂的入门课程】_第24张图片
如上所述,sigmod 一旦数值较大或者较小,sigmod函数获取不到了,也就是所谓的梯度消失
ReLU及变种,是当前最常用的激活函数

数据预处理

zero center 移动中心点 , normalized 缩小尺寸

【深度学习-神经网络架构-通俗易懂的入门课程】_第25张图片

参数初始化

一般都是随即策略进行参数初始化

过拟合解决方法

  1. 正则化
  2. 惩罚力度
  3. drop out 舍弃一部分神经元
  4. 其他

你可能感兴趣的:(深度学习,深度学习,人工智能)