机器学习深度学习——从全连接层到卷积

news2024/11/19 2:20:25

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er
🌌上期文章:机器学习&&深度学习——非NVIDIA显卡怎么做深度学习(坑点排查)
📚订阅专栏:机器学习&&深度学习
希望文章对你们有所帮助

我们之前讨论的多层感知机十分适合处理表格数据,其中行对应样本,列对应特征。对于表格数据,我们寻找的模式可能涉及特征之间的交互,但是我们不能预先假设任何与特征交互相关的先验结构。

之前猫狗分类的例子中:假设我们有一个足够充分的照片数据集,数据集中是拥有标注的照片,每张照片具有百万级像素,这意味着网络的每次输入都有一百万个维度。如果我们将隐藏层的维度降低到1000,也会有109个参数,用多层感知机训练这玩意,这还不如直接记忆得了。
现如今的卷积神经网络可以帮助实现这个问题,是机器学习利用自然图像中一些已知结构的创造性方法。

从全连接层到卷积

  • 不变性
  • 多层感知机的限制
    • 平移不变性
    • 局部性
  • 卷积
  • 沃尔多在哪里
    • 通道

不变性

假设我们想从一张图片中找到某个物体,无论哪种方法找到这个物体,都应该和物体的位置无关。
我们可以从儿童游戏”沃尔多在哪里”得到灵感:尽管沃尔多的装扮很有特点,但是在混乱场景中找到他也不容易。然而沃尔多的样子并不取决于他潜藏的地方,因此我们可以使用一个“沃尔多检测器”扫描图像。该检测器将图像分割成多个区域,并为每个区域包含沃尔多的可能性打分,卷积神经网络就是将空间不变性的这一概念系统化。
总结一下两个原则:
1、平移不变性:不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应。
2、局部性:神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系。

多层感知机的限制

首先,多层感知机的输入是二维图像X,隐藏表示H(也就是第一层的输出)在数学上是一个矩阵,在代码中表示为二维张量。
使用X(i,h)和H(i,j)分别表示输入图像和隐藏表示中位置(i,j)的像素。为了使每个隐藏神经元都能接收到每个输入像素的信息,我们将参数从权重矩阵替换为四阶权重张量W。假设U包含偏置参数,我们可以将全连接层表示为:
[ H ] i , j = [ U ] i , j + ∑ k ∑ l [ W ] i , j , k , l [ X ] k , l = [ U ] i , j + ∑ a ∑ b [ W ] i , j , a , b [ X ] i + a , j + b [H]_{i,j}=[U]_{i,j}+\sum_k\sum_l[W]_{i,j,k,l}[X]_{k,l}\\ =[U]_{i,j}+\sum_a\sum_b[W]_{i,j,a,b}[X]_{i+a,j+b} [H]i,j=[U]i,j+kl[W]i,j,k,l[X]k,l=[U]i,j+ab[W]i,j,a,b[X]i+a,j+b
其中,从W到V是希望索引a和b通过在正偏移和负偏移之间移动覆盖了整个图像,只是形式上的转换。

平移不变性

检测对象在输入X中的平移,仅导致隐藏表示H中的平移。也就是说V和U实际上不依赖于(i,j)的值(这当然也是我们的目的),即:
[ V ] i , j , a , b = [ V ] a , b [V]_{i,j,a,b}=[V]_{a,b} [V]i,j,a,b=[V]a,b
因此我们可以简化H为:
[ H ] i , j = u + ∑ a ∑ b [ V ] a , b [ X ] i + a , j + b [H]_{i,j}=u+\sum_a\sum_b[V]_{a,b}[X]_{i+a,j+b} [H]i,j=u+ab[V]a,b[X]i+a,j+b
这就是卷积了,使用系数V(a,b)对位置(i,j)附近的像素(i+a,j+b)进行加权得到H(i,j)。注意:V(a,b)的系数比V(i,j,a,b)少很多,前者不再依赖于图像的位置了。

局部性

我们为了收集训练参数H(i,j)的相关信息,不应该偏离他很远。因此我们做个限制:令|a|>△和|b|>△的范围的V都置0,这样就可以把偏离它很远的地方都去掉了。所以我们可以把H重写为:
[ H ] i , j = u + ∑ a = − △ △ ∑ b = − △ △ [ V ] a , b [ X ] i + a , j + b [H]_{i,j}=u+\sum_{a=-△}^△\sum_{b=-△}^△[V]_{a,b}[X]_{i+a,j+b} [H]i,j=u+a=b=[V]a,b[X]i+a,j+b
上式就是一个卷积层,而卷积神经网络是包含卷积层的一类特殊神经网络,V被称为卷积核。

卷积

为啥上面操作被称为卷积,从数学中的卷积说起,两个函数f,g的卷积被定义为:
( f ∗ g ) ( x ) = ∫ f ( z ) g ( x − z ) d z (f*g)(x)=∫f(z)g(x-z)dz (fg)(x)=f(z)g(xz)dz
对于二维张量,则为:
( f ∗ g ) ( i , j ) = ∑ a ∑ b f ( a , b ) g ( i − a , j − b ) (f*g)(i,j)=\sum_a\sum_bf(a,b)g(i-a,j-b) (fg)(i,j)=abf(a,b)g(ia,jb)
和之前写的i+a、j+b其实一个意思的。

沃尔多在哪里

在这里插入图片描述
如图所示,卷积层根据滤波器V选取给定大小的窗口,并加权处理图片。

通道

这个方法有一个问题,我们忽略了一个图像一般包含三个通道(R、G、B)。实际上,图像不是二维的,而是一个由高度、宽度和颜色组成的三维张量,前两个轴与像素的空间位置有关,而第三个轴可以看作每个像素的多维表示。因此我们将X索引为X(i,j,k),由此卷积相应地调整为V(a,b,c)。
由于输入图像是三维的,我们的隐藏表示H也最好采用三维张量(对于每一个空间位置,我们想要采用一组而不是一个隐藏表示)。这样一组隐藏表示可以想象成一些互相堆叠的二维网格。我们可以把隐藏表示想象为一系列具有二维张量的通道。这些通道有时被称为特征映射(因为每个通道都向后续层提供一组空间化的学习特征)。
为支持输入X和隐藏表示H中的多个通道,我们可以在V中添加第四个坐标即V(a,b,c,d),则:
[ H ] i , j , d = ∑ a = − △ △ ∑ b = − △ △ ∑ c [ V ] a , b , c , d [ X ] i + a , j + b , c [H]_{i,j,d}=\sum_{a=-△}^△\sum{b=-△}^△\sum_c[V]_{a,b,c,d}[X]_{i+a,j+b,c} [H]i,j,d=a=b=c[V]a,b,c,d[X]i+a,j+b,c
其中H中的索引d表示输出通道,随后的输出将继续以三维张量H作为输入进入下一个卷积层。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

D. Different Arrays

Problem - 1783D - Codeforces 思路: 这是一个计数问题,我们要统计不同数组的个数,可以用dp,让f[i][j]表示只考虑前i个,并且结尾为j的情况,那么转移方程为我们枚举i,与枚举前一个是多少&#xf…

电脑安装新系统不知道去哪里下载,看我就够了

大家在日常生活中肯定都会遇到电脑安装系统的需求,如果去微软官方购买正版的系统又很贵,又不太想花这个冤枉钱,这个时候我们就不得不去网上查找一些免费好用的系统,可是百度一下,或者Google一下,各种下载系…

【css】css设置表格样式-边框线合并

<style> table, td, th {border: 1px solid black;//设置边框线 }table {width: 100%; }td {text-align: center;//设置文本居中 } </style> </head> <body><table><tr><th>Firstname</th><th>Lastname</th><t…

【uniapp】样式合集

1、修改uni-data-checkbox多选框的样式为单选框的样式 我原先是用的单选&#xff0c;但是单选并不支持选中后&#xff0c;再次点击取消选中&#xff1b;所以我改成了多选&#xff0c;然后改变多选样式&#xff0c;让他看起来像单选 在所在使用的页面上修改样式即可 <uni-d…

1-搭建一个最简单的验证平台UVM,已用Questasim实现波形!

UVM-搭建一个最简单的验证平台&#xff0c;已用Questasim实现波形 1&#xff0c;背景知识2&#xff0c;".sv"文件搭建的UVM验证平台&#xff0c;包括代码块分享3&#xff0c;Questasim仿真输出&#xff08;1&#xff09;compile all&#xff0c;成功&#xff01;&…

kubernetes 集群利用 efk 收集容器日志

文章目录 [toc]前情提要制作 centos 基础镜像准备 efk 二进制文件部署 efk 组件配置 namespace配置 gfs 的 endpoints配置 pv 和 pvc部署 elasticsearchefk-cmefk-svcefk-sts 部署 filebeatfilebeat-cmfilebeat-ds 部署 kibanakibana-cmkibana-svckibana-dp使用 nodeport 访问 …

免费快速下载省市区县行政区的Shp数据

摘要&#xff1a;一般非专业的GIS应用通常会用到省市等行政区区划边界空间数据做分析&#xff0c;本文简单介绍了如何在互联网上下载省&#xff0c;市&#xff0c;区县的shp格式空间边界数据&#xff0c;并介绍了一个好用的在线数据转换工具&#xff0c;并且开源。 一、首先&am…

图卷积网络(GCN)和池化

一、说明 GCN&#xff08;Graph Convolutional Network&#xff09;是一种用于图形数据处理和机器学习的神经网络架构。GCN 可以在图形中捕获节点之间的关系&#xff0c;从而能够更好地处理图形数据。GCN 可以沿着图形上的边缘执行滤波器操作&#xff0c;将每个节点的特征向量进…

OA是什么意思?OA系统是什么

阅读本文您可以了解&#xff1a;1、OA是什么&#xff1b;2、OA系统是什么&#xff1b;3、OA系统有什么功能 一、OA是什么 当提到OA&#xff0c;我们通常指的是"Office Automation"&#xff08;办公自动化&#xff09;。 办公自动化指的是在办公室环境中使用计算机技…

培训系统中的技术创新与发展趋势

随着互联网和信息技术的快速发展&#xff0c;培训系统也进入了一个全新的时代。传统的面对面培训逐渐被在线培训所取代&#xff0c;培训系统中的技术创新和发展成为了推动整个行业发展的关键因素。 1. VR和AR技术的应用 虚拟现实&#xff08;VR&#xff09;和增强现实&#x…

并查集和哈希表的实现

并查集和哈希表的实现 文章目录 并查集和哈希表的实现1.并查集的功能2.并查集的基本原理3.并查集的实现 哈希表&#xff08;hash&#xff09;1.拉链法2.开放寻址法方法流程代码演示 3,字符串哈希 1.并查集的功能 1.将两个集合进行合并 2.询问两个元素是否在一个集合里面 2.并…

js中exec与match的区别

const regex1 RegExp(f(o.?),g); const str1 table foatball, fobsball; let array1; let array2; array1 regex1.exec(str1) array2 str1.match(regex1)console.log(array1, array1); console.log(array2, array2); //没有g的情况下,都是找到第一个匹配,并且如果有分组,…

SPSS数据分析--假设检验的两种原假设取舍决定方式

假设检验的两种原假设取舍决定方式 在t检验&#xff0c;相关分析&#xff0c;回归分析&#xff0c;方差分析&#xff0c;卡方检验等等分析方法中&#xff0c;都需要用到假设检验。假设检验的步骤一般如下&#xff1a; 提出假设&#xff1a;H0 vs H1 ;假设原假设H0 成立的情况…

Java课题笔记~ 动态SQL详解

一、动态 sql 是什么&#xff1f; 1、动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中&#xff0c;开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。 例如&#xff0c;拼接时要确保添加了必要的空格&#xff0c;还要…

AWS多账户单点登录 IAM Identity Center(AWS SSO)

需求场景 多个aws账户&#xff0c;登陆麻烦且不安全&#xff0c;SSO单点功能并且外部身份提供者 — 如果您要管理外部身份提供者&#xff08;IdP&#xff09;&#xff08;例如 Okta 或 Active Directory&#xff09;中的用户。 官方文档&#xff1a;https://docs.aws.amazon.c…

Maven引入本地jar包

maven做为一种强大的依赖管理工具&#xff0c;可以帮助我们更方便的管理项目中的依赖&#xff1b;而在使用过程中我们难免会有需要引入本地jar包的需求&#xff0c;这里踩过坑之后我分享俩种引入方式&#xff1b; 1.上传jar到本地maven仓库&#xff0c;再引入 使用此方法后可…

基于Translators的多语言翻译解决方案

当Translators库,一个用Python为个人和学生提供免费、多样、愉快翻译的库。 文章目录 Translators支持的翻译服务安装与入门参数和功能支持的语言调试和运行环境API服务Translators Translators库是一个强大的Python库,旨在为个人和学生提供免费、多样、愉快的翻译体验。它支…

文件传输协议FTP与托管文件传输MFT有什么区别?

传输敏感数据是日常业务中不可或缺的一环。但是&#xff0c;在把敏感数据从A点搬到B点的过程中&#xff0c;保证该敏感数据的安全是组织的重要任务&#xff0c;因此最好选择一种能够确保文件安全的方案。 FTP与MFT有什么不同&#xff1f; FTP&#xff08;文件传输协议&#xf…

考研408 | 【计算机网络】概述

计算机网络体系结构 计算机网络概述&#xff1a;1.概念&#xff0c;组成&#xff0c;功能&#xff0c;分类2.标准化工作及相关组织3.性能指标体系结构&参考模型&#xff1a;1.分层结构2.协议&#xff0c;接口&#xff0c;服务3.ISO/OSI模型4.TCP/IP模型 目录 计算机网络体…

SpringBoot+AOP+Redission实战分布式锁

文章目录 前言一、Redission是什么&#xff1f;二、使用场景三、代码实战1.项目结构2.类图3.maven依赖4.yml5.config6.annotation7.aop8.model9.service 四、单元测试总结 前言 在集群环境下非单体应用存在的问题&#xff1a;JVM锁只能控制本地资源的访问&#xff0c;无法控制…