神经网络复习--卷积神经网络及其扩展

文章目录

  • 卷积
  • 卷积网络反向传播
    • 已知池化层误差,反向求上一层隐藏层误差
    • 已知卷积层的误差,推导该层的W, b的梯度
  • 注意力机制
  • Transformer
  • 卷积变体

卷积

卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,每个平面由多个独立神经元组成

卷积神经网络基本组成:输入层、卷积层、池化层(降维)、全连接层、输出层

卷积运算:两个步骤1. 矩阵内积乘法(两个矩阵相同位置的元素进行乘法运算,得到一个新的矩阵),2. 将内积乘法的结果进行全加

对于实际的卷积,一方面他需要输入图像,这些图像被称为特征图像,另一方面还需要卷积核。卷积核的值是人为设定的,它是可调节的,在实际的卷积神经网路中,卷积核的值就是网络的参数。对卷积网络进行训练,就是在调节这些卷积核的参数。实际用不到太大的卷积核,常见的卷积核大小为3x3, 5x5, 1x1的
随着网络层数的加深后面一个点就能代表前面一个图像的大部分像素点,当卷积核太大,没几层就把前面全部点给覆盖了,层数不深,丢失信息更多,因此卷积核不会太大

卷积参数

  • 卷积核大小(Kernel Size):卷积和大小定义了卷积的视野。2维中常见选择3x3的像素矩阵
  • 步长(Stride) : 步长定义遍历图像时卷积核的移动的步长。虽然它的默认值通常为1,但我们可以使用值维2的步长来进行类似于MaxPooling的图像进行采样(可以对图像进行降维)
  • 填充(Padding):填充定义如何处理样本的边界。Padding的目的是保持卷积操作的输出尺寸等于输入尺寸,因为如果卷积核大于1,则不加Padding会导致卷积操作的输出尺寸小于输入尺寸,填充了为same-conv, 未填充为valid-conv, 而如果要进行填充使图像的尺寸不变则 p = ( f − 1 ) / 2 p = (f - 1) / 2 p=(f1)/2
    通过解公式 得到padding的大小
  • 输入和输出通道(Channels): 卷积层通常需要一定数量的输入通道,并计算一定数量的输出通道

假设有nxn的矩阵输入,fxf的卷积核,p的填充padding, 步长s,则输出的矩阵长为为 ( n + 2 p − f s + 1 ) ∗ ( n + 2 p − f s + 1 ) (\frac{n + 2p - f}{s} + 1)*(\frac{n + 2p - f}{s} + 1) (sn+2pf+1)(sn+2pf+1)
最终向下取整,意味着卷积核只能在输入图像内部移动,不可以移动出边缘

可训练参数的数量
在这里插入图片描述
在这里插入图片描述

池化操作通常叫做子采样或降采样,通过池化来降低卷积层输出的特征维度,池化一般通过简单的最大值、最小值或平均值操作完成。主要功能有:

  1. 抑制噪声
  2. 提升模型的尺度不变性、旋转不变性
  3. 降低模型计算量
  4. 防止过拟合

卷积网络反向传播

全连接中的w,b和神经网络中的推导一致,池化层没有w,b参数,所以不用进行w,b梯度的推导

已知池化层误差,反向求上一层隐藏层误差

在前向传播时,池化层我们会用MAX或者Average对输入层进行池化,池化的区域大小已知。现在我们反过来,要从缩小后区域的误差,还原前一层较大区域的误差。这个过程叫做upsample(上采样)。假设我们池化区域大小位2x2。第 l l l 层的第 k k k 个子矩阵 δ k l \delta_k^l δkl 为:
在这里插入图片描述
首先对其进行扩展进行还原:
在这里插入图片描述
如果是MAX,假设我们之前在前向传播时记录的最大值位置分别是左上,右下,右上,左下,则转换后的矩阵为:
在这里插入图片描述
如果是Average,则进行平均,转换后的矩阵为:
在这里插入图片描述

已知卷积层的误差,推导该层的W, b的梯度

up主讲解

  1. 求解对应 W W W 的梯度
    在这里插入图片描述
    将这层的输入与链式求导对应的上层矩阵进行对应相乘再相加得到对应位置的w的偏导矩阵

  2. 求解对应 x x x 的梯度
    在这里插入图片描述
    将这层的输入与链式求导对应的上层矩阵进行卷积(翻转180度后对应相乘相加)得到对应位置的 x x x 的偏导矩阵

总结:
α L α w = c o n v ( I n p u t X , L o s s g r a d i e n t α L α O ) \frac{\alpha L}{\alpha w} = conv (Input X, Loss gradient \frac{\alpha L}{\alpha O}) αwαL=conv(InputX,LossgradientαOαL)
α L α x = c o n v ( L o s s g r a d i e n t α L α O , 18 0 o R O T w ) \ \ \ \ \ \ \frac{\alpha L}{\alpha x} = conv(Lossgradient \frac{\alpha L}{\alpha O}, {180^o ROT\ w})       αxαL=conv(LossgradientαOαL,180oROT w)

卷积神经网络优缺点
优点:

  • 共享卷积核,对高维数据处理无压力
  • 无需手动选取特征,训练好权重,即得特征
  • 分类效果好

缺点:

  • 需要调参,需要大样本量,训练最好要gpu
  • 物理含义不明确

注意力机制

在这里插入图片描述

Transformer

Transformer是一个纯基于注意力机制的结构,并将自注意力机制和多头注意力机制的概念运用到模型中;
由于缺少RNN模型的时序性,Transformer引入了位置编码,在数据上而非模型中添加位置信息;
从而带来的优点:

  1. 更容易并行化,训练更下高效
  2. 在处理长序列的任务中表现优秀,可以快速捕捉长距离中的关联信息

注意力机制在判断词在句子中的重要性,我们通过注意力分数来表达某个词在句子中的重要性,分数越高,说明该词对完成该任务的重要性越大。
计算注意力分数时,我们主要参考三个因素:query、key和value

  • 查询(Query):指的是查询的范围,自主提示,即主观意识的特征向量
  • 键(Key): 指的是被比对的项,非自主提示,即物体的突出特征信息向量
  • 值(Value):则是代表物体本身的特征向量,通常和Key成对出现

注意力机制是通过Query与Key的注意力汇聚(给定一个Query,计算Query与Key的相关性,然后根据Query与Key的相关性去找到最合适的Key)实现对Value的注意力权重分配,生成最终的输出结果。
用一个比较直观的例子来说,每次登录视频网站搜索视频时,搜索的内容为query,搜索结果中显示的视频名称为key,它与任务内容相关,并可以引导我们至具体的视频内容(value)

计算注意力分数,即为计算query与key的相似度。常用的计算注意力分数的方式有两种:additive attention和scaled dot-product attention

Transformer结构
Transformer同样是encoder-decoder的结构,只不过这里的“encoder”和“decoder”是由无数个同样结构的encoder层和decoder层堆叠组成。

在进行机器翻译时,encoder解读源语句(被翻译的句子)的信息,并传输给decoder。decoder接收源语句信息后,结合当前输入(目前翻译的情况),预测下一个单词,直到生成完整的句子。
在这里插入图片描述
位置编码(Positional Encoding)

卷积变体

  1. 组卷积
    分组卷积,最早在AlexNet中出现,由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合

    在AlexNet的Group Convolution当中,特征的通道被平均分到不同组里面,最后再通过两个全连接层来融合特征,这样以来,就只能在最后时刻融合不同组之间的特征,对模型的泛化性是相当不利的。

    为了解决这个问题,ShuffleNet在每一次层叠这种Group conv层前,都进行一次channel shuffle(通道打乱),shuffle过的通道被分配到不同组当中。进行完一次group conv之后,再一次channel shuffle, 然后分到下一层组卷积当中,依次循环。
    请添加图片描述

  2. 可分离卷积
    在可分离卷积中,通常将卷积操作拆分成多个步骤
    在这里插入图片描述
    在这里插入图片描述

  3. 膨胀卷积
    在这里插入图片描述
    在这里插入图片描述

  4. 全卷积网络
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/700697.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Llama 3 超级课堂 -笔记

课程文档: https://github.com/SmartFlowAI/Llama3-Tutorial 课程视频:https://space.bilibili.com/3546636263360696/channel/series 1 环境配置 1.1 创建虚拟环境,名为:llama3 conda create -n llama3 python3.10 1.2 下载、安装 pyt…

Prosys OPC UA Simulation Server工程文件备份方法

Prosys OPC UA Simulation Server是一款免费的OPC UA服务器仿真软件,具体的使用和下载参考官网: Prosys OPC - OPC UA Simulation Server Downloads 他的免费版本不提供工程文件的备份、导入导出功能,每次退出时保存。如果需要工程备份&a…

Java框架精品项目【用于个人学习】

源码获取:私聊回复【项目关键字】获取 更多选题参考: Java练手项目 & 个人学习等选题参考 推荐菜鸟教程Java学习、Javatpoint学习 前言 大家好,我是二哈喇子,此博文整理了各种项目需求 此文下的项目用于博主自己学习&#x…

vue2人力资源项目8员工详情

页面结构 <template><div class"dashboard-container"><div class"app-container"><div class"edit-form"><el-form ref"userForm" label-width"220px"><!-- 姓名 部门 --><el-row…

树莓派发送指令控制FPGA板子上的流水灯程序

文章目录 前言一、树莓派简介二、整体实现步骤三、树莓派设置四、树莓派串口代码五、Verilog代码5.1 串口接收模块5.2 流水灯模块 六、quartus引脚绑定七、 运行效果总结参考 前言 ​ 本次实验的目的是通过树莓派和FPGA之间的串口通信&#xff0c;控制FPGA开发板上的小灯。实验…

《无畏契约》游戏画面出现“撕裂感“,你清楚背后的原理吗?

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

基于Springboot的校园疫情防控信息管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园疫情防控信息管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层…

RK3566(泰山派):3.1寸屏幕D310T9362V1SPEC触摸驱动(竖屏)

RK3566&#xff08;泰山派&#xff09;&#xff1a;3.1寸屏幕D310T9362V1SPEC触摸驱动&#xff08;竖屏&#xff09; 文章目录 RK3566&#xff08;泰山派&#xff09;&#xff1a;3.1寸屏幕D310T9362V1SPEC触摸驱动&#xff08;竖屏&#xff09;电路配置i2c1设备树创建驱动编写…

(深度估计学习)Win11复现DepthFM

目录 1. 系统配置2. 拉取代码&#xff0c;配置环境3.开始深度预测4.运行结果 论文链接&#xff1a;https://depthfm.github.io/ 讲解链接&#xff1a;https://www.php.cn/faq/734404.html 1. 系统配置 本人系统&#xff1a;Win11 CUDA12.2 python3.11.5 这里附上几个CUDA安装链…

文字转成活码的3步操作,手机扫码即可查看文本信息

现在经常会通过二维码的方式来传递通知的文字信息&#xff0c;只需要分享文字生成二维码的图片到微信群或者印刷出来&#xff0c;其他人就可以通过扫码来查看文字内容&#xff0c;有利于其他人更快速的获取信息。 目前文本静态码无法通过微信来扫码展示&#xff0c;那么想要解…

力扣例题(循环队列)

链接 . - 力扣&#xff08;LeetCode&#xff09; 描述 思路 我们使用数组来创建循环队列 数组的大小我们就额外对开辟一块空间 MyCircularQueue(k) 开辟一个结构体&#xff0c;存放队列的相关数据 分别为size,数组指针_a,起始位置head,结束位置tail 注意&#xff1a;我们…

(四)Spring教程——控制反转或依赖注入与Java的反射技术

IoC的底层实现技术是反射技术&#xff0c;目前Java、C#、PHP 等语言均支持反射技术。 在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够获取到这个类的所有属性和方法&#xff1b;对任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff08;包括私有的方法…