什么是深度学习

简单来说,深度学习就是一种包括多个隐含层(越多即为越深)的多层感知机。它通过组合低层特征,形成更为抽象的高层表示,用以描述被识别对象的高级属性类别或特征。能自生成数据的中间表示(虽然这个表示并不能被人类理解),是深度学习区别于其它机器学习算法的独门绝技。所以,深度学习可以总结成:通过加深网络,提取数据深层次特征

深度神经网络

  • 深度神经网络(及其变种)是深度学习中心模型

QQ截图20230630105700.jpg

  • 人工智能学科体系

QQ截图20230630105736.jpg

  • 人工智能、机器学习、深度学习三者的关系,可以认为深度学习是机器学习的“高级阶段”

QQ截图20230630105754.jpg

深度学习的特点

  • 优点
  1. 性能更优异

QQ截图20230630110018.jpg 2. 不需要特征工程,传统机器学习需要人进行特征提取(特征工程),机器性能高度依赖于特征工程的质量。在特征很复杂的情况下,人就显得无能为力。而深度学习不需要这样的特征工程,只需将数据直接传递给深度学习网络,由机器完成特征提取。 3. 在大数据样本下有更好的性能,深度学习在大样本数据下有更好的性能和扩展性

QQ截图20230630110059.jpg

  1. 能解决某些传统机器学习无法解决的问题,深度学习能解决传统机器学习无法解决的问题(如深层次特征提取)

QQ截图20230630110139.jpg

  • 缺点
  1. 小数据样本下性能不如机器学习
  2. 模型复杂
  3. 过程不可解释

深度学习与传统机器学习对比

  • 目的相同:都是利用机器自我学习能力,解决软件系统的难题
  • 基本问题相同:回归问题、分类问题、聚类问题
  • 基本流程相同:数据准备 --> 模型选择 --> 模型构建/训练-->模型评估-->预测
  • 问题领域相同
  1. 样本是否有标签:监督学习、非监督学习、半监督学习
  2. 应用领域:推荐引擎、计算机视觉、自然语言处理、强化学习
  • 评价标准相同
  1. 回归问题:均方误差;R2值
  2. 分类问题:交叉熵;查准率、召回率、F1综合系数
  3. 模型泛化能力:过拟合、欠拟合

QQ截图20230630111404.jpg

深度学习的应用

  • 照片上色

QQ截图20230630134703.jpg

  • 换脸

QQ截图20230630134722.jpg

  • 图像风格转换

QQ截图20230630134745.jpg

  • 虚拟主播

QQ截图20230630134806.jpg

  • 声音模仿

QQ截图20230630134905.jpg

课程内容与特点

QQ截图20230630135052.jpg

深度学习发展史

  • 从1940年起,首先提出了MP模型(McCulloch和Pitts提出的人工神经元的简易数学模型)Hebb(海布)学习规则.这是神经网络的起源,也奠定了神经网络的基础模型。
  • 1960年,提出了感知机模型,感知机模型可以对简单的数据节点进行分类,这个发现引起了第一波的AI浪潮,因为人们认为简单的感知机可以实现分类功能,那通过组合可以实现更复杂的功能,但后面发现感知机无法模拟异或运算,无法处理非线性的问题,第一波浪潮就这样沉入了低谷。
  • 1980年Hopfiled网络,Boltzmann机和BP算法的提出,人们发现可以增加网络的深度来实现非线性的功能,所以开始了第二次浪潮。但是在80年代,计算机的计算能力十分有限,很难训练出一个有效的模型来使用,所以导致了这种方式始终处于鸡肋的状态。再加上同一时期浅层方法的成功,如SVM(1995),使得人们转为研究浅层的方法。
  • 1998年CNN被提出,也应用到了邮政局的邮政编码识别,但是因为当时并不重视这种深度网络,导致并没有火起来。
  • 2006年,Hinton提出了DBN(深度信念网络),解决了更深层次的网络是可以通过一些策略更好的训练和实现,所以就引起了现在深度学习的第三次浪潮。

QQ截图20230630135831.jpg

  • 相比而言,区别于传统的浅层学习,深度学习强调模型结构的深度,隐含层远远不止一层。通常来说,层数更多的网络,通常具有更强的抽象能力(即数据表征能力),也就能够产生更好的分类识别的结果。
  • 2012年,杰弗里·辛顿(Geoffery Hinton)教授团队在ImageNet中首次使用深度学习完胜其他团队,那时网络层深度只有个位数。2014年,谷歌团队把网络做了22层,问鼎当时的ImageNet冠军。到了2015年,微软研究院团队设计的基于深度学习的图像识别算法ResNet,把网络层做到了152层。很快,在2016年,商汤科技更是叹为观止地把网络层做到了1207层。

ImageNet Top5错误率和网络深度

  • 2012年冠军(AlexNet, top-5错误率16.4%,使用额外数据可达到15.3%,8层神经网络)
  • 2014年亚军(VGGNet,top-5错误率7.3%,19层神经网络),2014年冠军(InceptionNet,top-5错误率6.7%,22层神经网络)
  • 2015年的冠军(ResNet,top-5错误率3.57%,152层神经网络)

QQ截图20230630140155.jpg

深度网络进化过程

QQ截图20230630140210.jpg

  • 时至今日,深度学习网络越来越深,应用越来越广,解决的问题越来越难,扮演的角色越来越重要。但万丈高楼平地起,让我们追根溯源,探索如何深度学习究竟是如何由一个简单的“单细胞”演化成复杂神经网络系统的。

感知机与神经网络

感知机

生物神经元

QQ截图20230630140404.jpg

生物神经网络

QQ截图20230630140422.jpg

什么是感知机

  • 感知机(Perceptron),又称神经元(Neuron,对生物神经元进行了模仿)是神经网络(深度学习)的起源算法,1958年由康奈尔大学心理学教授弗兰克·罗森布拉特(Frank Rosenblatt)提出,它可以接收多个输入信号,产生一个输出信号。
  • 其中,x1和x2称为输入,w1和w2为权重,θ为阈值,y为输出

QQ截图20230630140453.jpg

  • 神经元更通用的图形表示和表达式

QQ截图20230630140623.jpg

感知机的功能

  • 神经元作为回归器 / 分类器

QQ截图20230630141038.jpg

  • 实现逻辑与

QQ截图20230630141148.jpg

  • 代码实现
def AND(x1,x2):
    w1,w2,theta = 0.5,0.5,0.7
    res = x1 * w1 + x2 * w2
    if res >= theta:
        return 1
    else:
        return 0

# print(AND(1,1))# 1
# print(AND(1,0))# 0
# print(AND(0,1))# 0
# print(AND(0,0))# 0
  • 实现逻辑或

QQ截图20230630141212.jpg

  • 代码实现
def OR(x1,x2):
    w1,w2,theta = 0.5,0.5,0.2
    res = x1 * w1 + x2 * w2
    if res >= theta:
        return 1
    else:
        return 0

# print(OR(1,1))# 1
# print(OR(1,0))# 1
# print(OR(0,1))# 1
# print(OR(0,0))# 0

感知机的缺陷

  • 感知机的局限在于无法处理“异或”问题(非线性问题)

QQ截图20230630143803.jpg

多层感知机

  • 1975年,感知机的“异或”难题才被理论界彻底解决,即通过多个感知机组合来解决该问题,这种模型也叫多层感知机(Multi-Layer Perceptron,MLP)。如下图所示,神经元节点阈值均设置为0.5

QQ截图20230630143950.jpg

多层感知机解决异或门实现

def AND(x1,x2):
    w1,w2,theta = 0.5,0.5,0.7
    res = x1 * w1 + x2 * w2
    if res >= theta:
        return 1
    else:
        return 0

def OR(x1,x2):
    w1,w2,theta = 0.5,0.5,0.2
    res = x1 * w1 + x2 * w2
    if res >= theta:
        return 1
    else:
        return 0

def XOR(x1, x2):
    s1 = not AND(x1, x2) # 与非门
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    return y

print(XOR(1, 0))
print(XOR(0, 1))
print(XOR(1, 1))
print(XOR(0, 0))

def XOR1(x1,x2):
    res11 = not AND(x1,x2)
    res21 = not AND(x1,res11)
    res22 = not AND(res11,x2)
    res = not AND(res21,res22)
    if res:
        return 1
    else:
        return 0

print(XOR1(1,1))# 0
print(XOR1(1,0))# 1
print(XOR1(0,1))# 1
print(XOR1(0,0))# 0

神经网络

什么是神经网络

  • 感知机由于结构简单,完成的功能十分有限。可以将若干个感知机连在一起,形成一个级联网络结构,这个结构称为“多层前馈神经网络”(Multi-layer Feedforward Neural Networks)。所谓“前馈”是指将前一层的输出作为后一层的输入的逻辑结构。每一层神经元仅与下一层的神经元全连接。但在同一层之内,神经元彼此不连接,而且跨层之间的神经元,彼此也不相连

QQ截图20230704093003.jpg

神经网络的功能

  • 1989年,奥地利学者库尔特·霍尼克(Kurt Hornik)等人发表论文证明,对于任意复杂度的连续波莱尔可测函数(Borel MeasurableFunction)f,仅仅需要一个隐含层,只要这个隐含层包括足够多的神经元,前馈神经网络使用挤压函数(Squashing Function)作为激活函数,就可以以任意精度来近似模拟f。如果想增加f的近似精度,单纯依靠增加神经元的数目即可实现。
  • 这个定理也被称为通用近似定理(Universal ApproximationTheorem),该定理表明,前馈神经网在理论上可近似解决任何问题。

通用近似定理

  • 现有目标函数 \(f(x)=x^3+x^2-x-1\),可以使用6个神经元进行模拟:

QQ截图20230704093550.jpg

QQ截图20230704134555.jpg

QQ截图20230704134613.jpg

  • 其实,神经网络的结构还有另外一个“进化”方向,那就是朝着“纵深”方向发展,也就是说,减少单层的神经元数量,而增加神经网络的层数,也就是“深”而“瘦”的网络模型。
  • 微软研究院的科研人员就以上两类网络性能展开了实验,实验结果表明:增加网络的层数会显著提升神经网络系统的学习性能。

多层神经网络计算公式

QQ截图20230704134853.jpg

QQ截图20230704134935.jpg

激活函数

在神经网络中,将输入信号的总和转换为输出信号的函数被称为激活函数(activation function)

QQ截图20230704135838.jpg

  • 激活函数将多层感知机输出转换为非线性,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
  • 如果一个多层网络,使用连续函数作为激活函数的多层网络,称之为“神经网络”,否则称为“多层感知机”。所以,激活函数是区别多层感知机和神经网络的依据。

常见激活函数

  • 阶跃函数(Step Function)是一种特殊的连续时间函数,是一个从0跳变到1的过程,函数形式与图像:

QQ截图20230704140124.jpg

  • sigmoid函数也叫Logistic函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类,表达式:\(\sigma(x) = 1 / (1 + e-x)\)
  • 优点:平滑、易于求导
  • 缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练

QQ截图20230704140652.jpg

  • tanh双曲正切函数
  • 优点:平滑、易于求导;输出均值为0,收敛速度要比sigmoid快,从而可以减少迭代次数
  • 缺点:梯度消失
  • 用途:常用于NLP中

QQ截图20230704140900.jpg

  • ReLU(Rectified Linear Units,修正线性单元)
  • 优点:计算过程简单,更加有效率的梯度下降以及反向传播,避免了梯度爆炸和梯度消失问题
  • 缺点:小于等于0的部分梯度为0
  • 用途:常用于图像

QQ截图20230704141034.jpg

  • Softplus
  • Softplus 是对ReLU的平滑逼近解析形式,更巧的是,Softplus函数的导数恰好就是Sigmoid函数。但实际应用效果不如ReLU好

$$f(x) =ln(1+ex)$$

QQ截图20230704141624.jpg

  • Softmax
  • Softmax函数定义如下,其中Vi 是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为C。Si 表示的是当前元素的指数与所有元素指数和的比值。通过Softmax函数就可以将多分类的输出数值转化为相对概率,而这些值的累和为1,常用于神经网络输出层。表达式:\(S_i=\frac{e^(V_i)}{\sum_{i}^Ce^(V_i)}\)

QQ截图20230704142328.jpg

  • 感知机。接收多个输入信号,产生一个输出信号,无法解决异或问题ü
  • 多层感知机。将多个感知机组合
  • 多层前馈网络。若干个感知机组合成若干层的网络,上一层输出作为下一层输入ü 激活函数。
  • 将计算结果转换为输出的值,包括阶跃函数、sigmoid、tanh、ReLU

损失函数与梯度下降

损失函数

  • 损失函数(Loss Function),也有称之为代价函数(Cost Function),用来度量预测值和实际值之间的差异。

损失函数的作用

  • 度量决策函数f(x)和实际值之间的差异。
  • 作为模型性能参考。损失函数值越小,说明预测输出和实际结果(也称期望输出)之间的差值就越小,也就说明我们构建的模型越好。学习的过程,就是不断通过训练数据进行预测,不断调整预测输出与实际输出差异,使的损失值最小的过程。

常用损失函数

  • 均方误差(Mean square error)损失函数。均方误差是回归问题常用的损失函数,它是预测值与目标值之间差值的平方和,其公式和图像如下所示:

$$MSE=\frac{\sum_{i=1}^{n}(y_i - y_i^p)^2}{n}$$

QQ截图20230704150734.jpg

为什么使用误差的平方

  • 曲线的最低点是可导的
  • 越接近最低点,曲线的坡度逐渐放缓,有助于通过当前的梯度来判断接近最低点的程度(是否逐渐减少步长,以免错过最低点)

QQ截图20230704150804.jpg

  • 交叉熵(Cross Entropy)。交叉熵是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息,在机器学习中用来作为分类问题的损失函数。假设有两个概率分布,tk与yk ,其交叉熵函数公式及图形如下所示:

$$E=-\sum_{k}t_k\log{y_k}$$

QQ截图20230704150945.jpg

梯度下降

什么是梯度

  • 梯度(gradient)是一个向量(矢量,有方向),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大。损失函数沿梯度相反方向收敛最快(即能最快找到极值点)。当梯度向量为零(或接近于零),说明损失函数到达一个极小值点,模型准确度达到一个极大值点。

QQ截图20230704151312.jpg

QQ截图20230704151305.jpg

  • 通过损失函数,我们将“寻找最优参数”问题,转换为了“寻找损失函数最小值”问题。寻找步骤:
  1. 损失是否足够小?如果不是,计算损失函数的梯度。
  2. 按梯度的反方向走一小步,以缩小损失。
  3. 循环到步骤1。
  • 这种按照负梯度不停地调整函数权值的过程就叫作“梯度下降法”。通过这样的方法,改变每个神经元与其他神经元的连接权重及自身的偏置,让损失函数的值下降得更快,进而将值收敛到损失函数的某个极小值。

导数与偏导数

  • 所谓导数,就是用来分析函数“变化率”的一种度量。其公式为:

QQ截图20230704151906.jpg

  • 导数的含义:反映变化的剧烈程度(变化率)

QQ截图20230704151929.jpg

  • “偏导”的英文本意是“partial derivatives“(表示局部导数)。对于多维变量函数而言,当求某个变量的导数时,就是把其他变量视为常量,然后对整个函数求其导数(相比于全部变量,这里只求一个变量,即为“局部”)。例如有函数:

$$f = x^2+ 3xy + y^2+ z^3$$

  • 则,对x, y, z分别求偏导公式为:

QQ截图20230704152142.jpg

学习率

  • 学习率是梯度下降过程中,在梯度值前面的系数,用来控制调整的步幅大小

QQ截图20230704152203.jpg

梯度递减训练法则

  • 神经网络中的权值参数是非常多的,因此针对损失函数E的权值向量的梯度如以下公式所示:

QQ截图20230704152223.jpg

  • 损失函数E的梯度,它本身也是一个向量,它的多个维度分别由损失函数E对多个权值参数wi求偏导所得。当梯度被解释为权值空间中的一个向量时,它就确定了E陡峭上升的方向,那么梯度递减的训练法则就如下公式所示:

QQ截图20230704152253.jpg

梯度下降算法

  • 批量梯度下降法(Batch Gradient Descent,BGD)是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新。

优点:

  • 一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。
  • 由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,BGD一定能够得到全局最优。

缺点:

  • 当样本数目 m 很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。

  • 随机梯度下降法(Stochastic Gradient Descent,SGD)每次迭代使用一个样本来对参数进行更新,使得训练速度加快。

优点:

  • 由于不是在全部训练数据上的损失函数,而是在每轮迭代中,随机优化某一条训练数据上的损失函数,这样每一轮参数的更新速度大大加快。

缺点:

  • 准确度下降。由于即使在目标函数为强凸函数的情况下,SGD仍旧无法做到线性收敛。
  • 可能会收敛到局部最优,由于单个样本并不能代表全体样本的趋势。
  • 不易于并行实现。

  • 小批量梯度下降(Mini-Batch Gradient Descent, MBGD)是对批量梯度下降以及随机梯度下降的一个折中办法。其思想是:每次迭代使用指定个(batch_size)样本来对参数进行更新。

优点:

  • 通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。
  • 每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。

缺点:

  • batch_size的不当选择可能会带来一些问题。

  • 几种梯度下降算法收敛比较
  1. 批量梯度下降稳健地向着最低点前进的
  2. 随机梯度下降震荡明显,但总体上向最低点逼近
  3. 小批量梯度下降位于两者之间

QQ截图20230704152659.jpg

小结

  • 损失函数。用于度量预测值和期望值之间的差异,根据该差异值进行参数调整
  • 梯度下降。用于以最快的速度、最少的步骤快速找到损失函数的极小值

反向传播算法

反向传播算法

什么是正向传播网络

  • 前一层的输出作为后一层的输入的逻辑结构,每一层神经元仅与下一层的神经元全连接,通过增加神经网络的层数虽然可为其提供更大的灵活性,让网络具有更强的表征能力,也就是说,能解决的问题更多,但随之而来的数量庞大的网络参数的训练,一直是制约多层神经网络发展的一个重要瓶颈。

什么是反向传播

  • 反向传播(Backpropagation algorithm)全称“误差反向传播”,是在深度神经网络中,根据输出层输出值,来反向调整隐藏层权重的一种方法。

为什么需要反向传播

  • 为什么不直接使用梯度下降而使用反向传播方式更新权重呢?
  • 梯度下降应用于有明确求导函数的情况,或者可以求出误差的情况(比如线性回归),我们可以把它看做没有隐藏层的网络。但对于多个隐藏层的神经网络,输出层可以直接求出误差来更新参数,但隐藏层的误差是不存在的,因此不能对它直接应用梯度下降,而是先将误差反向传播至隐藏层,然后再应用梯度下降。

图解反向传播

  • 问题:Tom在超市买了2个苹果,每个10元,消费税10%,请计算应该支付的金额

QQ截图20230704161709.jpg

  • 问题:Tom在超市买了2个苹果,3个橙子,其中苹果每个10元,橙子每个15元,消费税10%,请计算应该支付的金额

QQ截图20230704161728.jpg

  • 问题:Tom在超市买了2个苹果,每个10元,消费税10%,请计算苹果价格上涨会在多大程度上影响支付金额(即求“支付金额关于苹果的价格的导数”)。设苹果的价格为x,支付金额为L,则相当于求\(\frac{L}{x}\)。这个导数的值表示当苹果的价格稍微上涨时,支付金额会增加多少。

QQ截图20230704162219.jpg

QQ截图20230704162231.jpg

QQ截图20230704162245.jpg

  • 苹果价格的导数为2.2,苹果个数导数为11,消费税导数为20,可以解释为:苹果价格、苹果个数或消费税增加相同的值,分别对支付金额产生2.2倍、11倍、20倍的影响

QQ截图20230704162303.jpg

反向传播计算

  • 考虑函数 y = f(x) , 输出为E,反向传播的计算顺序是,将信号E乘以节点的局部导数(偏导数),传递给前面的节点,这样可以高效地求出导数的值。

QQ截图20230704162332.jpg

  • 加法节点反向传播计算

QQ截图20230704162519.jpg

  • 乘法节点反向传播计算

QQ截图20230704162541.jpg

链式求导法则

  • 考虑如下复合函数

$$z = t^2$$ $$t = x + y$$

  • z 关于 x 的导数(x 变化对 z 的影响率)可以表示为:

QQ截图20230704162732.jpg

QQ截图20230704162745.jpg

通过反向传播计算偏导数

  • 问题:苹果、橙子价格和个数以及税率如下图所示,利用反向传播算法,在方框处计算填入导数

QQ截图20230704163119.jpg

卷积神经网络

卷积函数

  • “卷积”其实是一个数学概念,它描述一个函数和另一个函数在某个维度上的加权“叠加”作用。函数定义如下:

QQ截图20230704163833.jpg

  • 其中,函数 f 和函数 g 是卷积对象,a 为积分变量,星号“*”表示卷积。公式所示的操作,被称为连续域上的卷积操作。这种操作通常也被简记为如下公式:

QQ截图20230704163902.jpg

离散卷积与多维卷积

  • 一般情况下,我们并不需要记录任意时刻的数据,而是以一定的时间间隔(也即频率)进行采样即可。对于离散信号,卷积操作可用如下表示:

QQ截图20230704163926.jpg

  • 当然,对于离散卷积的定义可推广到更高维度的空间上。例如,二维的公式可表示为公式:

QQ截图20230704163943.jpg

生活中的卷积

  • 在一根铁丝某处不停地弯曲,假设发热函数是f(t),散热函数是g(t),此时此刻的温度就是f(t) 跟g(t) 的卷积
  • 在一个特定环境下,发声体的声源函数是f(t),该环境下对声源的反射效应函数是g(t),那么在这个环境下感受到的声音就是f(t) 的和g(t) 的卷积
  • 记忆也是一种卷积

QQ截图20230704164023.jpg

卷积神经网络

全连接神经网络的局限

  • 之前介绍的神经网络,相邻层所有神经元之间都有连接,这称为全连接(fully-connected)。全连接神经网络有以下几个问题:
  1. 未考虑数据的“形状”,会破坏数据空间结构。例如,输入数据是图像时,图像通常是高长通道 方向上的3维形状。但是,向全连接层输入时,需要将3维数据拉平为1维数据。
  2. 全连接网络层次深度受限,一般不超过七层。
  3. 全连接网络参数量庞大,需要降低参数量。

QQ截图20230704164109.jpg

什么是卷积神经网络

  • 卷积神经网络(Convolutional Neural Network,CNN)针对全连接网络的局限做出了修正,加入了卷积层(Convolution层)和池化层(Pooling层)。

卷积神经网络的用途

  • CNN被广泛应用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以CNN为基础(比如,AlexNet、VGGNet、Google Inception Net及微软的ResNet等)上。近几年深度学习大放异彩,CNN功不可没。

卷积运算

  • 单通道、二维卷积运算示例

QQ截图20230704164214.jpg

QQ截图20230704164244.jpg

QQ截图20230704164249.jpg

QQ截图20230704164253.jpg

  • 单通道、二维、带偏置的卷积运算示例

QQ截图20230704164323.jpg

  • 带填充(padding)的单通道、二维卷积运算示例

QQ截图20230704164343.jpg

  • 步幅(stride)为2的卷积运算示例

QQ截图20230704164402.jpg

  • 卷积运算输出矩阵大小计算公式

QQ截图20230704164419.jpg

  • 其中,输入大小为(H, W),滤波器大小为(FH, FW),输出大小为(OH, OW),填充为P,步幅为S。例如:输入大小(28,31);填充2;步幅3;滤波器大小(5,5),则输出矩阵大小为:

QQ截图20230704164435.jpg

  • 多通道卷积会按通道进行输入数据和滤波器的卷积运算,并将结果相加,从而得到输出

QQ截图20230704164516.jpg

  • 多通道、多卷积核卷积
  • 每个通道先与第一组卷积核执行卷积,然后多通道结果叠加,产生一个输出
  • 每个通道与下一组卷积核执行卷积,产生另一个输出
  • 有多少组卷积核,就有多少个通道输出(如右图,两组卷积核,产生两个通道的输出数据)

卷积运算-动图.gif

卷积运算的效果

  • 通过卷积运算,能对输入数据起到加强或平滑效果。在图像处理中,通过选取合适的卷积核(或称算子),可以对图像进行锐化、去噪、模糊、加强边沿。

QQ截图20230704164645.jpg

  • 卷积运算能提取深层次复杂特征

QQ截图20230704164708.jpg

QQ截图20230704164724.jpg

卷积神经网络结构

  • 通常情况下,卷积神经网络由若干个卷积层(Convolutional Layer)、激活层(Activation Layer)、池化层(Pooling Layer)及全连接层(FullyConnected Layer)组成。

QQ截图20230704164755.jpg

  • 卷积层
  • 它是卷积神经网络的核心所在,通过卷积运算,达到降维处理和提取特征两个重要目的

QQ截图20230704165024.jpg

  • 激活层
  • 其作用在于将前一层的线性输出,通过非线性的激活函数进行处理,这样用以模拟任意函数,从而增强网络的表征能力。前面章节中介绍的激活函数,如挤压函数Sigmoid也是可用的,但效果并不好。在深度学习领域,ReLU(Rectified-Linear Unit,修正线性单元)是目前使用较多的激活函数,主要原因是它收敛更快,次要原因在于它部分解决了梯度消失问题。
  • 池化层(Pooling Layer)
  • 也称子采样层或下采样层(Subsampling Layer),目的是缩小高、长方向上的空间的运算,以降低计算量,提高泛化能力。如下的示例,将4*4的矩阵缩小成2*2的矩阵输出

QQ截图20230704165132.jpg

  • 池化层计算
  • 对于每个输入矩阵,我们将其切割成若干大小相等的正方形小块,对每一个区块取最大值或者平均值,并将结果组成一个新的矩阵
  • Max池化:对各个参与池化计算的区域取最大值,形成的新矩阵。在图像识别领域,主要使用Max池化
  • Average池化:对各个参与池化计算的区域计算平均值
  • 池化层的特征
  • 没有要学习的参数。池化层和卷积层不同,没有要学习的参数。池化只是从目标区域中取最大值(或者平均值),所以不存在要学习的参数
  • 通道数不发生变化。经过池化运算,输入数据和输出数据的通道数不会发生变化

QQ截图20230704165318.jpg

  • 对微小的位置变化具有鲁棒性(健壮)。输入数据发生微小偏差时,池化仍会返回相同的结果
  • 全连接层
  • 这个网络层相当于多层感知机(Multi-Layer Perceptron,简称MLP),其在整个卷积神经网络中起到分类器的作用
  • 通过前面多个“卷积-激活-池化”层的反复处理,待处理的数据特性已有了显著提高:一方面,输入数据的维度已下降到可用传统的前馈全连接网络来处理了;另一方面,此时的全连接层输入的数据已不再是“泥沙俱下、鱼龙混杂”,而是经过反复提纯过的结果,因此输出的分类品质要高得多。

经典CNN介绍(LeNet)

结构

  • LeNet是 Yann LeCun在1998年提出,用于解决手写数字识别的视觉任务。自那时起,CNN的最基本的架构就定下来了:卷积层、池化层、全连接层

QQ截图20230731093918.jpg

主要参数

  • 输入:输入32*32大小单通道图像
  • 两个“卷积-池化层”
  • 第一个全连接层神经元数目为500,再接激活函数– 第二个全连接层神经元数目为10,得到10维的特征向量,用于10个数字的分类训练,送入softmaxt分类,得到分类结果的概率

典型CNN介绍(AlexNet)

AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的,把CNN的基本原理应用到了很深很宽的网络中。其特点有

  • 使用ReLU作为激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题
  • 使用Dropout(丢弃学习)随机忽略一部分神经元防止过拟合
  • 在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果
  • 提出了LRN(Local Response Normalization,局部正规化)层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力
  • 使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算

网络结构

QQ截图20230731094058.jpg

主要参数

-AlexNet网络包含8层,其中前5层为卷积-池化层,后3层为全连接层;输入224×224×3的图像,第一卷积层用96个11×11×3的卷积核对进行滤波,步幅4像素;全连接的每层有4096个神经元,最后一个完全连接的层的输出被馈送到1000路SoftMax,它产生超过1000个类别标签的分布;整个网络共650000个神经元

典型CNN介绍(VGG)

概要介绍

  • VGG是Visual Geometry Group, Department of EngineeringScience,University of Oxford(牛津大学工程科学系视觉几何组)的缩写,2014年参加ILSVRC(ImageNet Large Scale Visual RecognitionChallenge)2014大赛获得亚军(当年冠军为GoogLeNet,但因为VGG结构简单,应用性强,所以很多技术人员都喜欢使用基于VGG的网络)

主要参数

  • 网络深度:16~19层
  • 5组卷积-池化层,3个全连接层
  • 三个全连接层,前两层都有4096通道,第三层共1000路及代表1000个标签类别;最后一层为softmax层
  • 所有卷积层有相同的配置,即卷积核大小为3x3,步长为1,填充为1ü 池化层区域大小2x2,步长为2

模型结构

VGGNet.png

QQ截图20230731094237.jpg

典型CNN介绍(GoogLeNet)

GoogLeNet

GoogleLeNet.jpg

典型CNN介绍(ResNet)

介绍

  • ResNet是ILSVRC 2015大赛冠军,在ImageNet测试集上取得了3.57%的错误率
  • 更深的网络结构,采用残差结构来缓解深度CNN的梯度消失问题

QQ截图20230731094847.jpg

结构

QQ截图20230731094926.jpg