深度学习算法/模型——深度学习基础(持续更新)

0. 深度学习的起源和发展

在这里插入图片描述
深度学习的起源包括感知器和玻尔兹曼机 。

起源于“感知器” 的深度学习中,最基本的结构是把多个感知器组合到 一起得到的多层感知器 。 在多层感知器的基础上加人类似人类视觉皮质的结构而得到的卷积神经网络被广泛应用于图像识别领域 。
起源于“基于图模型的 “玻尔兹曼机”的深度学习中,深度玻尔兹曼机以及深度信念网络是通过把多个受限玻尔兹曼机组合到一起而得到的 。

起源于感知器的深度学习是一种有监督学习,根据期望输出训练网络;而起源于受限玻尔兹曼机的深度学习是一种无监督学习,只根据特定的训练数据训练网络 。

1. 神经网络基础(概念)

一个神经元——>一层神经元——>神经网络

一个非线性复合函数——>一组接受同一批次信息的神经元——>层次不同、结构各异的神经元集成

1.0 基础

神经元

人工神经元(Artificial Neuron),简称神经元(Neuron),是构成神经网络的基本单元,其主要是模拟生物神经元的结构和特性,接受一组输入信号并产出输出

  • 输入:向量x = [x1; x2; · · · ; xd]

  • 输入和(净输入):z,表示一个神经元所获得的输入 信号 x 的加权和,

    在这里插入图片描述
    其中w = [w1;w2;··· ;wd] ∈ Rd是d维的权重向量,b ∈ R是偏置。

  • 激活函数:非线性函数 f (·)

  • 输出(激活值):活性值(Activation) a
    在这里插入图片描述

  • 典型的神经元结构
    在这里插入图片描述

激活函数

激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能力,激活函数需要具备以下几点性质:

  1. 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以 直接利用数值优化的方法来学习网络参数。
  2. 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。
  3. 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。

常见激活函数参见《神经网络与深度学习》

网络结构

在这里插入图片描述
一个神经元——>一层神经元——>神经网络

  • 前馈网络:一个函数
    前馈网络中各个神经元按接受信息的先后分为不同的组。每一组可以看作 一个神经层。每一层中的神经元接受前一层神经元的输出,并输出到下一层神 经元。整个网络中的信息是朝一个方向传播,没有反向的信息传播,可以用一 个有向无环路图表示。
    前馈网络可以看作一个函数,通过简单非线性函数的多次复合,实现输入 空间到输出空间的复杂映射。这种网络结构简单,易于实现。
    前馈神经网络包括全连接层前馈网络和卷积神经网络等。

  • 反馈网络:一个程序
    反馈网络中神经元不但可以接收其它神经元的信号,也可以接收自己的反馈信号。和前馈网络相比,反馈网络中的神经元具有记忆功能,在不同的时刻具有不同的状态。反馈神经网络中的信息传播可以是单向或双向传递,因此可用 一个有向循环图或无向图来表示。
    反馈网络包括循环神经网络、Hopfield 网络和玻尔兹曼即等。
    反馈网络可以看作一个程序,具有更强的计算和记忆能力。

  • 图网络
    图网络是定义在图结构数据上的神经网络。
    图中每个节点都一个或一组神经元构成。节点之间的连接可以是有向的,也可以是无向的。每个 节点可以收到来自相邻节点或自身的信息。
    图网络是前馈网络和记忆网络的泛化

1.1 前馈神经网络

在这里插入图片描述思考:
1. 这三个层他们具体都了什么?

  • 输入层:展平再输入一维数据(全连接网络)/输入二维或者三维数据(卷积神经网络)
  • 隐藏层:求和 + 激活
  • 输出层:一般是展平再输出

2. 全连接层和卷积层的区别?
卷积层处理多维(二维、三维)数据;
全连接层处理一维数据
(所以,CNN 末端接 Dense 层之前需要先 Flatten;所以FCNN 接入输入前需要 Flatten)

全连接神经网络(FCNN)

在这里插入图片描述

  • 输入
    若输入图像为(28,28,1)的灰度图,则意味着网络输入层有28 * 28 =784个神经元。
    本质:图像 - 像素- 矩阵(2828)- 展平为 2828=784 的一列向量 作为网络的输入

  • 参数量的计算
    7841510+15+10=117625
    本质:连接权重 + 隐层偏置+输出层偏置

  • 输出

  • 性能
    根据通用近似定理,对于具有线性输出层和至少一个使用“挤压”性质的激 活函数的隐藏层组成的前馈神经网络,只要其隐藏层神经元的数量足够,它可 以以任意的精度来近似任何从一个定义在实数空间 Rd 中的有界闭集函数 [Fu- nahashi and Nakamura, 1993, Hornik et al., 1989]。

在这里插入图片描述

应用到机器学习

参数学习

反向传播算法

1.2 卷积神经网络

思考
1. CNN 中三个层所起的作用?
(针对输入为三维的图像数据)

  • 卷积层:将上一个 depth/channel 为 d 的三维输入 变为 N 张特征图叠加的三维输出,其中 N 为卷积核的数量。

    理解:当 N=1 时,也就是说一个卷积核可以将三维的 “体” 状输入变为一个二维的 “片” 状数据,如下图所示:
    在这里插入图片描述
    若有多个卷积核就可以将这些片状数据叠加起来变为新的三维特征图,其 depth/channel 维度大小即为卷积核的数量。如何做到的?—— 参考:卷积

  • 池化层
    池化层的主要目的是通过降采样的方式,在不影响图像质量的情况下,压缩图片,减少参数。
    一般有两种池化:
    ① MaxPooling:取滑动窗口里最大的值
    ② AveragePooling:取滑动窗口内所有值的平均值

    以最大池化为例:

在这里插入图片描述

  • 全连接层
    思考:
  1. 为什么需要先展平?
    经过卷积层和池化层后的数据为多维特征图,无法输入到 Dense 层。
  2. 具体是如何展平的?
    对于如下图所示的单卷积后的特征图为二维数据,Flatten 似乎是以行为单位?那么多核卷积的三维特征图呢?
    在这里插入图片描述

基础概念

  • 感受野
    可以理解为模型顶端的数据所包含底层数据的范围,类似人眼所能看的范围。
  • 卷积 = 一种数学运算
    卷积(Convolution)是分析数学中一种重要的运算。在信号处理或图像处理中,经常使用一维或二维卷积。

一维卷积:
在这里插入图片描述(下面为输入,上面为输出)
注:滤波器为 [−1, 0, 1],连接边上的数字为滤波器中的权重。

二维卷积:
在这里插入图片描述

  • 卷积核 = filter(过滤器)= 滑动窗口

    卷积层的基本原理就是图像的二维卷积,即将一个二维卷积模板先翻转(旋转180°),再以步长stride进行滑动,滑动一次则进行一次模板内的对应相乘求和作为卷积后的值。

  • 卷积核的尺寸/大小 = 长 x 宽

  • 卷积核的形状 = 三个维度(长、宽、深)

  • 卷积核的深度 = 当前图像的深度(feather map的张数)相同

  • 卷积核的个数 = 卷积后输出的通道数

  • 一个 feature map = 一个二维片状的数据

    输入层:在输入层,如果是灰度图片,那就只有一个 feature map;如果是彩色图片,一般就是3个feature map(红绿蓝)。

    其它层:层与层之间会有若干个卷积核(kernel)(也称为过滤器),上一层每个feature map跟每个卷积核做卷积,都会产生下一层的一个feature map,有N个卷积核,下层就会产生N个feather map。

例如:28x28x3 (三通道W-H-D)的输入图片,经过 6 个 filter(深度也必须为 3)之后变为了深度为 6 的 feature map(28x28x6)

那么”通道(数)“这个东西为什么被卷积核(数)完全给”抹去不见“了?——其实没有不见,通道数一直存在,那就是特征图的深度,只不过第一层的输出为输入图片的三通道而已!

  • 输出大小的计算

① 无填充的情况:
在这里插入图片描述
② 有填充的情况
在这里插入图片描述
更详细的总结:
在这里插入图片描述参考:CNN中卷积层参数量与输出特征图(feature map)尺寸的计算公式

  • 卷积层的参数
    图像本身不含有参数,参数来自于filter,即卷积核。一个3x3的卷积核,它的参数就是9。

    如果有多通道,则用单通道卷积核的参数量乘以通道数。

    如果一个卷积层有多个filter,则再乘以当层filter 数量

  • 参数量 = (filter size * 前一层特征图的通道数 )* 当前层filter数量

  • 池化层
    池化层(Pooling Layer)也叫子采样层(Subsampling Layer),其作用是
    进行特征选择降低特征数量,并从而减少参数数量。

注意理解区分:虽然卷积和池化操作的结果都大大减少了参数的数量,但是其在本质是不一样的:池化是减少特征数量(特征图中神经元的个数),而卷积是减少神经元之间连接的数量。

卷积神经网络

卷积神经网络一般由卷积层池化层(汇聚层)全连接层构成。

用卷积代替全连:(理解)
全连接网络中,每一个神经元会接受上一层每一个神经元的输出信息;如果让每一个神经元不再接受上一层所有的信息,而是使用卷积的结果来代替成为它的输入,则会大大减少网络的参数(权重),提升训练效率。

在全连接前馈神经网络中,如果第 l 层有 nl 个神经元,第 l − 1 层有 n(l−1) 个神经元,连接边有n(l) x n(l−1)个,也就是权重矩阵有n(l) × n(l−1)个参数。

卷积层的两个很重要的性质:

  • 局部连接:窗口内的下一层才能连接
    卷积层(l层)和下一层之间的连接数将会由原来的 n(l) x n(l−1)个个连接变为 nl × m 个连接,m 为滤波器大小。

  • 权重共享:同层参数(滤波器)相同
    作为参数的滤波器 w(l) 对于第 l 层的所有的 神经元都是相同的。如图,所有的同颜色连接上的权重是相同的。(上层的每一个神经元所携带的权重是一样-这里权重的维度为3,因为局部范围就是”3“)

在这里插入图片描述

卷积层的作用提取一个局部区域的特征不同的卷积核相当于不同的特征提取器。

CNN典型结构

  • 卷积 + 池化

1.3 循环神经网络

1.4 小结/本质理解

神经元和网络

  • 一个神经元——>一层神经元——>神经网络

一个非线性复合函数——>一组接受同一批次信息的神经元——>层次不同、结构各异的神经元集成

  • 三种网络结构

1.前馈网络
2. 反馈网络
3. 图网络

本质

  • 神经元:简单的非线性函数

  • (连接数 = 参数数量)

  • 前馈神经网络(MLP):简单非线性函数的复合

前馈神经网络也经常称为多层感知器(Multi-Layer Perceptron,MLP)。但 多层感知器的叫法并不是十分合理,因为前馈神经网络其实是由多层的 Logistic 回归模型(连续的非线性函数)组成,而不是由多层的感知器(不连续的非线 性函数)组成 [Bishop, 2007]

前馈网络包括全连接前馈网络和卷积神经网络等

(前馈)全连接网络:通用近似定理的应用——拟合近似 ——参数巨大(神经元多,权重多)
(前馈)卷积网络:互相关/特征抽取——优化(轻量)版拟合近似——参数大(神经元多,减少参数数量)

互相关(Cross-Correlation)是一 个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现。
互相关和卷积的区别在于卷积核仅仅是否进行翻转。因此互相关也可称为不翻转卷积

在神经网络中使用卷积是为了进行特征抽取,卷积核是否进行翻转和其特征抽取的能力无关。特别是当卷积核是可学习的参数时,卷积和互相关是等价的。
很多深度学习工具中卷积操作其实都是互相关操作。

(互相关-当然就近似了啊-也就相当于最大程度的提取了特征信息)

池化层:特征选择——继续优化/精简网络(减少神经元数量-也就减少了参数数量)

之后的Dropout等不也是一个思路么?——
优化(精简结构,减少参数)模型

  • Dropout:

神经网络结构

2. 深度学习模型(架构)

3. 深度学习应用

3.1 CV

3.2 NLP

参考:

  1. CNN中feature map、卷积核、卷积核个数、filter、channel的概念解释
  2. Deep Learning(深度学习)学习笔记整理系列之(七)
  3. 深度学习笔记五:卷积神经网络CNN(基本理论)
  4. CNN卷积层、全连接层的参数量、计算量
  5. 《神经网络与深度学习》-邱锡鹏
  6. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理
  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于关注和分享TensorFlow深度学习算法设计的人工智能学习者来说,《深入理解人工智能算法设计》这本书是一本非常宝贵的学习资源。TensorFlow是一个开源的机器学习框架,它提供了丰富的工具和库,可以帮助开发者设计和训练高效的深度学习模型。 这本书对于TensorFlow深度学习的算法设计提供了详细、系统的解读,对于想要深入学习和掌握TensorFlow的人来说非常有帮助。书中包含了各种不同的算法设计案例,从基础的神经网络模型到复杂的深度学习网络,涵盖了各个方面的知识。 通过关注和分享《深入理解人工智能算法设计》这本书,可以帮助更多的人了解和学习TensorFlow深度学习的算法设计。同时,分享这本书也可以推广和宣传TensorFlow这个强大的工具,让更多的人受益于人工智能算法设计的知识。 为了方便更多人获取这本书,《深入理解人工智能算法设计》的PDF版本可以通过下载来获得。PDF格式的书籍可以在各种电子设备上阅读,包括电脑、平板和手机。通过下载PDF版本,学习者可以随时随地地查阅这本书,提高学习效率。 因此,我鼓励大家关注和分享《深入理解人工智能算法设计》这本书,通过深入学习TensorFlow深度学习的算法设计,提升自己在人工智能领域的技能和能力。同时,也希望更多人可以通过下载PDF版本的方式获取这本书,便捷地进行学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值