| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Datawhale~水很深的深度学习~Task 4: 卷积神经网络(CNN) -> 正文阅读 |
|
[人工智能]Datawhale~水很深的深度学习~Task 4: 卷积神经网络(CNN) |
卷积神经网络
回顾全连接神经网络,如下图,它的权重矩阵的参数非常多。
卷积神经网络也是一种前馈神经网络,是受到生物学上感受野(感受野主要是指听觉系统、本体感觉系统和视觉系统中神经元的一些性质)的机制而提出的(在视觉神经系统中,一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元)。 I CNN基本原理卷积神经网络的基本结构大致包括:卷积层、激活函数、池化层、全连接层、输出层等。 1.1 卷积基本介绍卷积:
(
f
?
g
)
(
n
)
(f*g)(n)
(f?g)(n)称为
f
f
f 和
g
g
g 的卷积,连续卷积和离散卷积可以表达为如下形式:
卷积有很多应用,经常用于处理一个输入,通过系统产生一个适应需求的输出。
卷积经常用在信号处理中,用于计算信号的延迟累积。 例如,假设一个信号发生器每个时刻
t
t
t 产生一个信号
x
t
x_t
xt? ,其信息的衰减率为
w
k
w_k
wk? ,即在
k
?
1
k?1
k?1 个时间步长后,信息为原来的
w
k
w_k
wk? 倍,假设
w
1
=
1
,
w
2
=
1
/
2
,
w
3
=
1
/
4
w_1 = 1,w_2 = 1/2,w_3 = 1/4
w1?=1,w2?=1/2,w3?=1/4,则时刻
t
t
t 收到的信号
y
t
y_t
yt? 为当前时刻产生的信息和以前时刻延迟信息的叠加,即: 给定一个输入信号序列
x
x
x 和滤波器
w
w
w,卷积的输出为: 下面引入滤波器的滑动步长S和零填充P: 卷积的结果按输出长度不同可以分为三类:
在早期的文献中,卷积一般默认为窄卷积。而目前的文献中,卷积一般默认为等宽卷积。 在图像处理中,图像是以二维矩阵的形式输入到神经网络中,因此我们需要二维卷积。下面给出定义:一个输入信息
X
X
X 和滤波器
W
W
W 的二维卷积为
Y
=
W
?
X
Y = W * X
Y=W?X,即
y
i
j
=
∑
u
=
1
U
∑
v
=
1
V
w
u
v
x
i
?
u
+
1
,
j
?
v
+
1
y_{ij} = \sum_{u =1}^U \sum_{v = 1}{V}w_{uv}x_{i-u+1,j-v+1}
yij?=∑u=1U?∑v=1?Vwuv?xi?u+1,j?v+1? .可以参考下面的算例。 下图直接表示卷积层的映射关系 多个卷积核的情况:下图是表示步长2、filter 3*3 、filter个数6、零填充 1的情形。 几乎很多实际应用都可以对应到这个问题上,都是在做这样一件事 1)输入对应着rgb图片 2)一旦输入的特征图个数是多个,这个时候每一组filter就应该是多个,而这里有两组filter 3)输入是三个特征图,输出为两个特征图,那么我们同样看看每个特征图怎么计算的。 典型的卷积层为3维结构 1.2 卷积层二维卷积运算:给定二维的图像I作为输入,二维卷积核K,卷积运算可表示为
S
(
i
,
j
)
=
(
I
?
K
)
(
i
,
j
)
=
∑
m
∑
n
I
(
i
?
m
,
j
?
n
)
K
(
m
,
n
)
S(i, j)=(I * K)(i, j)=\sum_{m} \sum_{n} I(i-m, j-n) K(m, n)
S(i,j)=(I?K)(i,j)=∑m?∑n?I(i?m,j?n)K(m,n),卷积核需要进行上下翻转和左右反转 卷积的步长(stride):卷积核移动的步长 卷积的模式:Full、Same和Valid 数据填充:如果我们有一个 𝑛×𝑛 的图像,使用𝑓×𝑓 的卷积核进行卷积操作,在进行卷积操作之前我们在图像周围填充 𝑝 层数据,输出的维度: 感受野:卷积神经网络每一层输出的特征图(featuremap)上的像素点在输 入图片上映射的区域大小,即特征图上的一个点对应输入图上的区 域。 那么如何计算感受野的大小,可以采用从后往前逐层的计算方法:
卷积层的深度(卷积核个数):一个卷积层通常包含多个尺寸一致的卷积核 1.3 激活函数激活函数是用来加入非线性因素,提高网络表达能力,卷积神经网络中最常用的是ReLU,Sigmoid使用较少。 1. ReLU函数
ReLU函数的缺点:
2. Parametric ReLU
PReLU函数的优点:
PReLU函数的缺点:需要再学习一个参数,工作量变大 3. ELU函数
ELU函数的缺点:计算量较大,收敛速度较慢
特征图
1.4 池化层池化操作使用某位置相邻输出的总体统计特征作为该位置 的输出,常用最大池化**(max-pooling)和均值池化(average- pooling)**。 池化层不包含需要训练学习的参数,仅需指定池化操作的核大小、操作步幅以及池化类型。 池化的作用:
1.5 全连接层
1.6 输出层对于分类问题:使用Softmax函数 1.7 卷积神经网络的训练Step 1:用随机数初始化所有的卷积核和参数/权重 Step 2:将训练图片作为输入,执行前向步骤(卷积, ReLU,池化以及全连接层的前向传播)并计算每个类别的对应输出概率。 Step 3:计算输出层的总误差 Step 4:反向传播算法计算误差相对于所有权重的梯度,并用梯度下降法更新所有的卷积核和参数/权重的值,以使输出误差最小化 注:卷积核个数、卷积核尺寸、网络架构这些参数,是在 Step 1 之前就已经固定的,且不会在训练过程中改变——只有卷 积核矩阵和神经元权重会更新。 和多层神经网络一样,卷积神经网络中的参数训练也是使用误差反向传播算法,关于池化层的训练,需要再提一下,是将池化层改为多层神经网络的形式 将卷积层也改为多层神经网络的形式 II 经典CNN网络
III 新型CNN网络deformable 可变形卷积 转置卷积/微步卷积:低维特征映射到高维特征 空洞卷积:为了增加输出单元的感受野,通过给卷积核插入“空洞”来变相地增加其大小。 IV 主要应用CNNs的应用领域主要集中在图像领域、语音类、NLP领域等,一般针对的任务类型为欧式空间的任务,如图片天然的结构就与卷积核一致,因此在图像分析领域,以下几种任务都可以用CNNs来建模:
在NLP领域,如情感分析:分析文本体现的情感(正负向、正负中或多态度类型)。一般将文本进行编码(可以使用one-hot编码方式),然后进行特征嵌入,可以得到如下图左侧部分所示的标准张量,将其当作图片来看,使用CNN建模,即使用卷积核提取原文本特征。 V 总结本文从“卷积”的概念到CNN的基本构成成分的解释,包含经典的CNN模型以及解决的任务,此外我引申了一些变形/特殊的CNN模型,从浅层了解各种CNN的应用,以加深对CNNs的理解。 学习内容参考自:水很深的深度学习文档~CNN |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 3:54:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |