1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 读书笔记——《解析卷积神经网络 ——深度学习实践手册(魏秀参)》

读书笔记——《解析卷积神经网络 ——深度学习实践手册(魏秀参)》

时间:2021-09-23 15:01:35

相关推荐

读书笔记——《解析卷积神经网络 ——深度学习实践手册(魏秀参)》

#卷积神经网络(CNN)基本概念#

##发展历程##

1959 加拿大神经科学家提出感受野概念1980日本科学家福岛邦彦提出神经认知模型,S-cells抽取局部特征—>卷积convolution层,C-cells抽象和容错—>池化pooling层1998 Yann LeCun 基于梯度学习的卷积神经网络LeNet 手写字体识别 Hinton AlexNet在ImageNet夺冠 改进激活函数,预测能力超过人类

##基本结构

原始数据raw data representation—>卷积、池化、非线性激活函数(不同操作层的“堆叠”)—>映射为高级语义表示—>向任务目标映射==>“端到端”学习或“表示学习”前馈运算:对样本进行推理和预测反馈运算:将预测误差反向传播逐层更新参数两种运算交替以训练网络模型

##基本部件

“端到端”学习,替代特征表示+分类器网络某一层的输入通常是一个四维张量(高度,宽度,维度,mini-batch)

卷积层

卷积核f可视为学习到的权重w,对不同位置的所有输入都是相同的,即卷积层的“权值共享”特性。可加入偏置项b。超参数:卷积核大小filter size、卷积步长stride作用:获取图像的局部信息,如边缘、颜色、形状、纹理等。

汇合层(池化层)超参数:汇合类型(average-pooling、max-pooling等)、核大小、步长。作用:特征不变性(容错)、特征降维(降采样)、一定程度防止过拟合。

(stride convolutional layer 可代替汇合层降采样)

激活函数(非线性映射层)作用:增加网络的表达能力(即非线性)ReLU函数

全连接层作用:将学习到的特征表示映射到样本的标记空间,类似于“分类器”

目标函数作用:衡量该预测值与真实样本标记之间的误差 。最常用的目标函数:交叉熵损失函数——分类问题,l2损失函数——回归问题

备注:

1、单层感知机属于线性分类器,由于异或问题非线性可分,故无法解决疑惑问题。而多层感知机计算复杂,无法直接求解隐藏层参数,故直到Hinton等提出BP算法,基于链式求导法则,解决了多层感知机中间层参数计算的问题。

2、神经网络模型是非凸函数且复杂,优化求解困难,因此采用随机梯度下降SGD和误差反向传播进行模型参数更新。批处理mini-batch SGD 每次不放回随机抽样,遍历一次训练集为一轮epoch,避免局部最优更新。

##三个重要概念

感受野

小卷积核的多层堆叠可取得大卷积核同等规模的感受野,加深网络(增强容量和复杂度)、减少参数个数。

分布式表示“语义概念”到神经元是一个多对多映射 。

深度特征的层次性随着若干卷积、汇合等操作的堆叠,各层得到的深度特征逐渐从泛化特征过渡到高级语义表示。

##四种经典网络

Alex-Net

VGG-Nets

Network-In-Network

Residual Network深度残差网络

##数据扩充

水平翻转、随机扣取(0.8-0.9倍)、尺度变换(分辨率变为原图0.8-1.3等倍)、旋转变换、色彩抖动(对RGB色彩分布轻微扰动、HSV颜色空间随机改变S饱和度和V明度通道的值)

Fancy PCA:“可以近似的捕获自然图像 的一个重要特性,即物体特质与光照强度和颜色变化无关 。”对所有训练数据的R,G,B像素值进行主成分分析,得到对应的特 征向量 pi 和特征值 λi i = 1, 2, 3 ,然后根据特征向量和特征值可以计算一组随机值 [p1, p2, p3] [α1λ1, α2λ2, α3λ3]⊤,每一个epoch重新选取αi计算新的随机值,将其作为扰动加到原像素值中即可。

监督式数据扩充:根据原数据训练一个分类的初始模型,利用该模型对每张图生存对应的特征图或热力图(可指示图像区域与场景标记间的相关概率),选择较强相关的图像区域作为扣取的图像块。

##数据预处理

卷积神经网络中的数据预处理通常是计算训练集图像像素均值,之后在处理训练集验证集和测试集图像时分别减去该均值。原理:我们默认自然图像是一类平稳的数据分布(即数据每一个维度的统计都服从相同分布),此时,在每个样本上减去数据的统计平均值(逐样本计算)可以移除共同部分,凸显个体差异。

##网络参数初始化

通过合理的数据预处理和规范化,当网络收敛到稳定状态时,参数(权值)在理想情况下应基本保持正负各半的状态(此时期望为0 ) 。随机初始化:随机参数服从高斯分布或均匀分布。w=0.001*randn(n_in,n_out)

不足:方差会随输入神经元的个数改变。Xavier参数初始化方法:加入了 方差规范化。w=0.001*randn(n_in,n_out)/sqrt(n)

不足:并未考虑非线性映射函数对输入 s 的影响He方法:将非线性映射造成的影响考虑进参数初始化中,方差规范化分母sqrt(n/2)利用预训练模型

##激活函数

Sigmoid型函数

tanh(x)型函数

在 型函数基础上为解决均值并非为0而是全为正的问题提出的激活函数: tanh(x)=2sigmiod(2x)-1

依然会发生“梯度饱和”现象 。

修正线性单元( ReLU)

Leaky ReLU

参数化ReLU

随机化ReLU

指数化线性单元(ELU)

##目标函数

分类任务

-交叉熵cross entropy损失函数(Softmax)

-合页损失函数hinge loss

-坡道损失函数ramp loss

交叉熵损失函数是最为常用的分类目标函数,且效果一般优于合页损失函数;大间隔损失函数和中心损失函数从增大类间距离、减小类内距离的角度不仅要求分类准确,而且还有助提高特征的分辨能力;坡道损失函数是分类问题目标函数中的一类非凸损失函数,由于其良好的抗噪特性,推荐将其用于样本噪声或离群点较多的分类任务。

回归任务

l1 损失函数和 l2 损失函数是两个直观且常用的 回归任务目标函数,实际使用中 l2 损失函数略优于 l1 损失函数; 损失函数为回归问题中的一类非凸损失函数,同样具有良好的抗 噪能力;

##网络正则化

目的:防止过拟合。正则化是机器学习中通过显式的控制模型复杂度来避免模型过拟合、确保泛化能力的一种有效方式 。

A. l1正则化

B. l2正则化

C. 最大范数约束

D. 随机失活dropout

原理:对于某层的每个神经元,在训练阶段 均以概率 p 随机将该神经元权重置 (故被称作“随机失活”),测试阶段所有神经元均呈激活态,但其权重需乘 (1 − p) 以保证训练和测试阶段各自权重拥有相同的期望 。

工程实现时使用“倒置随机失活” ,训练阶段:(1/(1-p))w 测试阶段w

E. 利用验证集判断模型过拟合、欠拟合

“早停”:取验证集 准确率最高的那一轮训练结果作为最终网络。

##超参数设定和网络训练

输入数据大小一般为a*2^n的正方形,便于GPU并行计算。卷积层推荐使用3x3,5x5的小卷积核,还可以对图像边缘做填充操作。汇合层常用2x2,步长为2。训练数据随机打乱,确保模型不同epoch相同batch看到的数据是不同的。初始学习率不宜过大(0.01或0.001),学习率应随轮数增加而减缓。批规范化batch normalization:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。