深度学习丨卷积神经网络CNN
多层感知机适合用来处理表格数据,但当数据维度提升,多层感知机会丢失数据的结构特征。例如,我们在进行图片处理时,需要满足两条性质:
- 平移不变形。不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应。例如在手写体识别中,无论数字出现在图片的哪个角落,我们都应该能够准确识别它。
- 神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系。最终,可以聚合这些局部特征,以在整个图像级别进行预测。
很显然,多层感知机已经无法满足我们的需要。
卷积层
卷积层的主要作用是进行特征提取。它通过使用一组可学习的滤波器(或称卷积核、权重矩阵)对输入图像进行滑动窗口式的操作,卷积窗口从输入张量的左上角开始,从左到右、从上到下滑动。 当卷积窗口滑动到新一个位置时,包含在该窗口中的部分张量与卷积核张量进行按元素相乘,得到的张量再求和得到一个单一的标量值。然后将结果汇总形成一个特征图(或称为特征映射、激活图)。这个过程可以捕获图像中的局部空间关系和特征,比如边缘、角点、颜色纹理等。例如:
在上图中,0×0+1×1+3×2+4×3=19,依次类推计算出其余位置的值,组成输出矩阵。
可以观察到,只要卷积核大小大于1,输出的矩阵大小便会小于输入,为了避免矩阵不断变小,我们可以对矩阵边缘进行填充。除此之外,我们在移动卷积核时,每次不一定只能移动一格,我们将每次移动的长度称为步长。
步长:控制滤波器在图像上移动的步幅。
填充:在输入图像边缘添加额外的像素来控制输出特征图的大小和保持某些空间信息。
当我们使用一个二维卷积核对一张图片进行运算,我们可以理解为抽取出图片的某种特征,例如边缘、纹理等。很显然,我们处理一张图片需要分析它的多种特征。当我们需要实现多输入多输出时,便引入了通道的概念。
例如,当我们需要实现n个输入时,我们可以给每个输入分配一个x*y大小的卷积核,这n个卷积核并在一起,便形成一个n×x×y大小的三维卷积核。同理,当我们需要实现m个输出,便可创建一个m×n×x×y的卷积核。其中m称为输出通道数,n称为输入通道数。我们可以使用1×1大小的卷积核来改变通道数。
随着卷积层的堆叠加深,每一层能够捕获越来越复杂和抽象的特征,从底层的边缘、线条到高层的物体部件、整体形状乃至语义概念。
卷积层相较于全连接层的优势在于参数共享(每个滤波器在整个图像上重复使用)、稀疏连接(只考虑局部区域而不是全局连接),这大大减少了模型所需的参数数量,并且增强了模型对于平移不变性的学习能力。
池化层
池化层是CNN中的一个重要组成部分,它的作用可以被通俗理解为“降采样”或“特征抽样”。在图像处理的上下文中,池化层通过执行一种称为池化操作的过程,对上一层(通常是卷积层)输出的特征图进行下采样。
具体来说,池化层会在输入的特征图上滑动一个固定大小的窗口(比如2x2),并在每个窗口内执行某种聚合操作,最常见的是最大值池化和平均值池化:
最大值池化:取窗口内所有数值的最大值作为该窗口的输出。这样做的好处是可以保留最重要的激活信息,忽略掉不那么显著的特征。
平均值池化:取窗口内所有数值的平均值作为输出。这有助于保持背景信息或局部区域的整体灰度水平。
通过池化层的操作,特征图的尺寸会减小,同时保持住关键的、不变形的特征表达。这样做有几个主要的好处:
减少计算量:降低后续层需要处理的数据量。
控制过拟合:通过减少参数数量和引入某种程度的平移不变性来提高模型的泛化能力。
增加鲁棒性:由于池化层对小范围内的变化不敏感,它可以帮助模型在一定程度上抵御微小的位置变化带来的影响。
ResNet
随着深度学习模型层数的增加,传统的深度神经网络往往会遇到梯度消失或梯度爆炸的问题,这使得训练极深的网络变得非常困难。
为了解决这个问题,残差网络引入了一种叫做“残差块”的设计。在残差块中,除了常规的前馈路径(即输入经过一系列卷积层和非线性激活函数),还引入了“跳跃连接”。跳跃连接直接将输入信号传递到较深的网络层,然后将这个原始输入与经过多层非线性变换后的输出相加。这样一来,网络可以更容易地学习残差映射,也就是从输入到输出之间的变化,而不是直接学习输入到输出的整体映射。
数学上,对于一个残差块,假设我们想要学习的映射是H(x),那么网络实际优化的是F(x) = H(x) - x,这样就简化为了学习一个残差F(x),而网络的输出则变为x + F(x)。通过这种设计,即使F(x)近似于零,信息也能顺利通过网络,避免了梯度消失问题。
由于残差网络的这一创新设计,模型可以有效地训练超过100层甚至更深的网络,而且不会出现明显的退化现象,反而随着网络深度的增加,准确率能够进一步提升,这让残差网络成为图像分类、物体检测、语义分割等多个计算机视觉任务中的标准模型之一。
使用DHCP中继代理(给路由器配置DHCP服务器的IP地址)可以不用在每个网络上都设置一个DHCP服务器。
## 二、域名系统DNS
域名系统DNS是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名转化为便于机器处理的IP地址。
因特网采用层次树状结构的域名结构:······.三级域名.二级域名.顶级域名。
- 顶级域名TLD分为国家顶级域名nTLD、通用顶级域名gTLD、反向域arpa;
域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
-
域名服务器可分为根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器;
域名解析过程查找方式:递归查询和迭代查询;
域名服务器中广泛使用了高速缓存,同来存放最近查询过的域名以及从何处获得域名映射信息的记录,以提高DNS查询效率。
- 域名服务器应为每项内容设置计时器并删除超过合理时间的项; -
用户主机中也很需要高速缓存; ## 三、文件传输协议FTP
文件传送协议FTP是因特网上使用得最广泛的文件传送协议。 -
提高交互式的访问,允许客户指明文件的类型、格式、存取权限; -
屏蔽了各计算机系统的细节,适合在各异构网络中任意计算机之间传送文件;
基本工作原理: - FTP客户和服务器之间要建立以下两个并行的TCP连接: -
①控制连接,整个会话期间一直打开,用于传送FTP相关控制命令; -
②数据连接,用于文件传输,每次文件传输时才建立,传输结束就关闭; -
默认情况下,FTP使用TCP21端口进行控制连接,TCP20端口进行数据连接。但是TCP20端口建立数据连接与传输模式有关,主动方式使用TCP20端口,被动方式由服务器和客户端自行协商决定;
## 四、电子邮件
电子邮件采用C/S方式。三个组成构件:用户代理、邮件服务器,以及电子邮件所需要的协议。
-
用户代理是用户与电子邮件系统的接口,又称电子邮件客户端软件;
-
邮件服务器是电子邮件系统的基础设施,因特网上所有的ISP都要邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱;
-
协议包括邮件发送协议(如SMTP)和读取协议(如POP3);
#### 邮件发送协议
常用的邮件发送协议是简单邮件传送协议SMTP; -
基于TCP连接,端口号25; - 只能传送ASCII码文本; -
用于用户代理向邮件服务器发送邮件以及邮件服务器之间的邮件发送;
为解决SMTP传送非ASCII码文本的问题,提出了多用途因特网邮件扩展MIME;
#### 邮件读取协议
常用的邮件读取协议有邮局协议POP3和因特网邮件访问协议IMAP;
-
邮局协议POP3:非常简单、功能有限,不允许用户在邮件服务器上管理自己的邮件;
-
因特网邮件访问协议IMAP:用户在自己的计算机上就可以操控邮件服务器的中的邮箱,IMAP是一个联机协议;
-
POP3和IMAP4都采用基于TCP连接的C/S方式,端口号分别为110和143;
#### 基于万维网的电子邮件
通过浏览器登录邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件,这种工作模式与IMAP很类似。
用户浏览器与邮件服务器网站之间使用HTTP协议,邮件服务器之间使用SMTP协议。
## 五、万维网WWW
万维网是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。
- 万维网利用网页之间的超链接 -
万维网使用统一资源定位符URL来指明因特网上任何种类“资源”的位置;
#### 万维网文档 超文本标记语言HTML,使用多种标签来描述网页的结构和内容。
层叠样式表CSS,从审美角度来描述网页的样式。
脚本语言Javascript控制网页的行为。 #### 超文本传输协议HTTP
定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。
-
HTTP/1.0采用非连续连接方式,每次浏览器要请求一个文件都要与服务器建立TCP连接(80端口),收到响应后立即关闭连接;
-
HTTP/1.1采用持续连接方式,万维网服务器在发送响应后仍然保持连接,以便传送后续HTTP请求和响应报文。为了进一步提高效率,还可采用流水线方式,浏览器在收到响应报文前就可连续发送多个请求报文;
HTTP有两类报文:请求报文和响应报文 -
报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的; ####
Cookie和缓存机制
Cookie提高一种机制使得万维网服务器能够记住用户,而无需用户主动提供用户标识信息。Cookie是一种对无状态的HTTP进行状态化的技术。
