聊一聊深度学习--包括计算前馈网络的反向传播和卷积的反向传播(二)

简介: 聊一聊深度学习--包括计算前馈网络的反向传播和卷积的反向传播

Sigmoid型函数


17.png

sigmoid是两端饱和函数:

18.png


Logistic


19.png

“挤压”函数,将把一个实数域的输入“挤压”到 (0, 1).

当输入值在0附近时,Sigmoid型函数近似为线性函数;

当输入值靠近两端时,对输入进行抑制.输入越小,越接近于 0;输入越大,越接近于 1.

导数:y’ = y(1 - y)


Tanh


 非零中心化也是不好的性质:抑制和兴奋不明显,转换成零中心化使有兴奋有抑制。

20.png

两端饱和的激活函数好吗?

不好,应该找不饱和的,因为饱和是导数为0,梯度更新速度变慢,不利于更新


Hard-Logistic

解决以上两个开销较大的问题,采用分段函数来近似:

21.png

Relu


22.png

优点:

1.计算高效:仅进行加、乘和比较操作

2.一半进行抑制一半激活,具有生物学合理性(兴奋可以很高,又具有稀疏性)

3.相比于sigmoid函数,relu是左饱和函数,且在右半边导数为1,缓解梯度消失问题,加速收敛速度(缓解梯度消失和爆炸问题)


缺点

1.非零中心化,影响梯度下降效率

2.容易死亡:某一个神经元在一次不恰当更新后(w1很小会导致所有的求和后死亡下去),所有的训练数据都不能被激活,自身梯度也会永远是0(不仅会发生在第一层,有可能会发生在其他隐藏层)

23.png

24.png

为解决左饱和的问题提出带泄露的Relu


带泄露的Relu


25.png

其中γ是一个很小的常数,比如0.01.当γ < 1时,带泄露的

ReLU也可以写为LeakyReLU(x) = max(x, γx)


带参数的Relu


26.png

27.png


Swish


在深层模型上优于Relu

可作为自控们模型

28.png


万能近似定理


 万能近似定理(universal approximation theorem):一个前馈神经网络如果具有线性输出层和至少一层具有任何一种 “挤压” 性质(非线性)的激活函数的隐藏层,只要给予网络足够数量的隐藏单元,它可以以任意的精度来近似任何从一个有限维空间到另一个有限维空间的 Borel 可测函数。在 Rn 的有界闭集上的任意连续函数是 Borel 可测的, 因此可以用神经网络来近似。

29.png

解决贡献度的过程:

先了解一下前馈网络符号定义:

30.png

w更新:

31.png

32.png

我写的是以一个神经元为例的微观计算,宏观的应该是列成这样的式子:

33.png

 反向传播含义:第L层的一个神经元的误差项是所有与该神经元相连的第L+1层的神经元的误差项权重和,然后再乘上该神经元激活函数的梯度。


梯度不稳定


34.png

初始化W时,通常使W绝对值在1附近,太大爆炸,太小就消失。

激活函数的导函数也会影响,例如logistic值域(0,0.25] 大部分趋于0


梯度不稳定的缓解方法


1.使用合适的参数初始化方法。例如使用服从标准正态分布的随机数初始化。

2.使用合适的学习率。

3.使用更好的激活函数。

4.梯度裁剪,对过大的梯度进行限制

5.使用批规范化(Batch Normalization, BN)技术。


输出层和代价函数


以恒等映射为例的均方误差代价函数:h-y

35.png

以logistic函数的均方误差代价函数:(h-y)* logistic函数导数

36.png

以logistic函数和对数似然代价函数:

37.png

38.png

计算过程不难,可以计算得到。

39.png

交叉熵应用于多分类问题


Softmax


40.png

通过ex 的函数曲线,可以看出将大于0的值扩大(x到y的映射)

多分类概率问题:softmax+交叉熵代价函数

作用:输出二分类或多分类任务中某一类的概率。

意义:将输入排序,并转换为概率表示。


卷积神经网络


使用不同的卷积核(即“边”)可以得到不同的特征图。

不同的特征图代表了不同特征(“边”)在原图中的分布情况。

n个卷积核卷积之后可以得到n个特征图,也被称为n个通道的特征图。

为了表述方便,使用“通道”代替图片与特征图,例如:

1个通道通过3次卷积生成3个通道。


特征图与原图的关系


卷积核保留了原图的局部特征信息。

特征图保留了局部特征的强弱和位置信息。

卷积核与特征图可以看做原图的另一种表达形式。


特征图与原图的大小关系


原图大小大于等于卷积得到特征图的大小

原图 i * i **卷积核 k ***

特征图大小 = (i - k + 1)/ s (s是步长)


卷积的本质是 利用特征(卷积核)进行局部特征提取,得到特征分布图的过程。


池化


特征图作为模型输入的优缺点

👍 提取到了局部特征作为输出。

👍 卷积使得图像特征具有了一定的平移不变性。

👎 特征图展开破坏了高维的位置(全局)信息。

👎 直接使用特征图输入全连接神经网络时参数规模较大。

平移不变性:抖动或微微变动,移动一个像素 对于两次卷积效果基本不变,影响不大(影响没有那么大)


特征图下采样:

最大池化:取一个区域最大值


卷积运算


卷积核要素:

1.卷积核shape

2.卷积核的值

3.卷积核滑动

对于卷积,通常外面套一个非线性激活函数

池化核要素:

1.池化核shape

2.滑动步长

3.池化方式 (最大池化 平均池化)

对于池化,外面无激活函数或线性激活函数


卷积计算量


计算量 = 卷积核大小 * 特征图大小

对特征图卷积的意义

特征提取:提取到了相对宏观的特征。

数据降维:多次卷积、池化使得数据的维度进一步降低。


卷积与池化的问题


1.卷积中不同元素参与卷积计算的次数不同 (与当初设计网络的初衷不符)

2.卷积与池化的步长不同时,边界处如何计算?(填充0值)

边界处理方法:

valid边界,只利用有效数据,盛不下就不卷了

i - k + 1 / s = 个数

SAME边界,pad填充,使完全卷到

41.png

42.png

为了不卷到垃圾数!比如下图,左边填充两个值的时候,卷到的前两个数都是0,没有意义,都是垃圾数。

43.png

44.png

45.png

卷积网络的反向传播:

与全连接神经网络相比:

1.池化层的前一层残差计算

2.卷积层的前一层残差计算

3.卷积核中的参数的偏导数计算

46.png

47.png

48.png

有问题希望大家不吝赐教!!

后边没来得及整理完,求老师让过了吧!!


相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
海洋生物识别系统。以Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经网络算法,通过对22种常见的海洋生物('蛤蜊', '珊瑚', '螃蟹', '海豚', '鳗鱼', '水母', '龙虾', '海蛞蝓', '章鱼', '水獭', '企鹅', '河豚', '魔鬼鱼', '海胆', '海马', '海豹', '鲨鱼', '虾', '鱿鱼', '海星', '海龟', '鲸鱼')数据集进行训练,得到一个识别精度较高的模型文件,然后使用Django开发一个Web网页平台操作界面,实现用户上传一张海洋生物图片识别其名称。
84 7
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
|
6天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
121 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
6天前
|
机器学习/深度学习 人工智能 算法
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
球类识别系统,本系统使用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集 '美式足球', '棒球', '篮球', '台球', '保龄球', '板球', '足球', '高尔夫球', '曲棍球', '冰球', '橄榄球', '羽毛球', '乒乓球', '网球', '排球'等15种常见的球类图像作为数据集,然后进行训练,最终得到一个识别精度较高的模型文件。再使用Django开发Web网页端可视化界面平台,实现用户上传一张球类图片识别其名称。
101 7
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
|
7天前
|
机器学习/深度学习 算法
神经网络的反向传播
梯度下降是神经网络中的优化算法,用于找目标函数最小值,通过梯度指示的最速下降方向调整参数。学习率η控制步长,过大可能导致震荡,过小则收敛慢。初始点随机选择,可能影响找到的最小值。梯度下降有三种方式:批量(BGD)、随机(SGD)和小批量(MBGD),主要区别在于Batch Size。SGD速度快但波动大,BGD准确但慢,MBGD是折中。在训练中,Epoch是完整遍历数据集的次数,Batch是每次处理的数据子集,Iteration是参数更新的次数。反向传播利用链式法则计算损失函数梯度,更新权重。
神经网络的反向传播
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的自适应神经网络
【6月更文挑战第24天】在深度学习的浪潮中,自适应神经网络以其独特的灵活性和高效性引起了研究者的广泛关注。本文将深入探讨自适应神经网络的设计原理、优化算法以及在不同领域的应用案例,揭示其在处理复杂数据模式时的优势与挑战。
|
1天前
|
机器学习/深度学习 算法
**反向传播算法**在多层神经网络训练中至关重要,它包括**前向传播**、**计算损失**、**反向传播误差**和**权重更新**。
【6月更文挑战第28天】**反向传播算法**在多层神经网络训练中至关重要,它包括**前向传播**、**计算损失**、**反向传播误差**和**权重更新**。数据从输入层流经隐藏层到输出层,计算预测值。接着,比较预测与真实值计算损失。然后,从输出层开始,利用链式法则反向计算误差和梯度,更新权重以减小损失。此过程迭代进行,直到损失收敛或达到训练次数,优化模型性能。反向传播实现了自动微分,使模型能适应训练数据并泛化到新数据。
8 2
|
2天前
|
机器学习/深度学习 存储 算法
使用Python实现深度学习模型:强化学习与深度Q网络(DQN)
使用Python实现深度学习模型:强化学习与深度Q网络(DQN)
16 2
|
4天前
|
机器学习/深度学习 自然语言处理 搜索推荐
深度学习之分类网络
深度学习的分类网络(Classification Networks)是用于将输入数据分配到预定义类别的神经网络。它们广泛应用于图像分类、文本分类、语音识别等任务。以下是对深度学习分类网络的详细介绍,包括其基本概念、主要架构、常见模型、应用场景、优缺点及未来发展方向。
35 4
|
2天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:图神经网络(GNN)
使用Python实现深度学习模型:图神经网络(GNN)
11 1
|
7天前
|
机器学习/深度学习 算法 PyTorch
神经网络反向传播算法
神经网络中的反向传播算法是用于训练的关键步骤,通过计算损失函数梯度更新权重。它始于前向传播,即输入数据通过网络得出预测输出,接着计算预测与实际值的误差。反向传播利用链式法则从输出层开始逐层计算误差,更新每一层的权重和偏置。例如,一个包含隐藏层的网络,初始权重随机设定,通过反向传播计算损失函数梯度,如sigmoid激活函数的网络,调整权重以减小预测误差。在Python的PyTorch框架中,可以使用`nn.Linear`定义层,`optimizer`进行参数优化,通过`backward()`计算梯度,`step()`更新参数。