深度学习前馈、卷积、循环神经网络介绍及pytorch实践

参考:
慕课《人工智能导论:模型与算法》
pytorch中文教程

历史

在这里插入图片描述

pytorch神经网络构建

神经网络可以通过 torch.nn 包来构建。

神经网络是基于自动梯度 (autograd)来定义一些模型。一个 nn.Module 包括层和一个方法 forward(input) 它会返回输出(output)。

一个典型的神经网络训练过程包括以下几点:

1.定义一个包含可训练参数的神经网络

2.迭代整个输入

3.通过神经网络处理输入

4.计算损失(loss)

5.反向传播梯度到神经网络的参数

6.更新网络的参数,典型的用一个简单的更新方法:weight = weight - learning_rate *gradient

代码:http://pytorch.panchuang.net/SecondSection/neural_networks/

前馈神经网络 理论


神经元:基于神经元细胞的结构特性与传递信息方式,神经科学家Warren McCulloch和逻辑学家Walter Pitts合作提出了“McCulloch–Pitts (MCP) neuron”模型[McCulloch 1943]。在人工神经网络中,MCP模型成为人工神经网络中的最基本结构。

在这里插入图片描述
神经元是深度学习模型中基本单位,功能如下:
在这里插入图片描述

激活函数:神经网络使用非线性函数作为激活函数(activation function),通
过对多个非线性函数进行组合,来实现对输入信息的非线性变换
常用softmax函数,一般用于多分类问题中,其将输入数据𝒙𝒊映射到第𝒊个类别的
概率。

在这里插入图片描述
其他激活函数:
在这里插入图片描述
损失函数/loss function:
用来计算模型预测值与真实值之间的误差。损失函数是神经网络设计中的一个重要组成部分。通过定义与任务相关的良好损失函数,在训练过程中可根据损失函数来计算神经网络的误差大小,进而优化神经网络参数。

两种最常用损失函数:
⚫ 均方误差损失函数
在这里插入图片描述

⚫ 交叉熵损失函数。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
感知机模型:早期的感知机结构和MCP模型相似,由一个输入层和一个输出层构成,因此也被称为“单层感知机”。感知机的输入层负责接收实数值的输入向量,输出层则能输出1或-1两个值。

在这里插入图片描述
单层感知机:被用来区分线性可分数据。在图6.5中,逻辑与(AND)、逻辑与非(NAND)和逻辑或(OR)为线性可分函数,所以可利用单层感知机来模拟这些逻辑函数。但是,由于逻辑异或(XOR)是非线性可分的逻辑函数,因此单层感知机无法模拟逻辑异或函数的功能。

多层感知机

在这里插入图片描述

梯度下降/Gradient Descent:优化参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
误差反向传播/error back propagation, BP:优化参数
⚫ BP算法是一种将输出层误差反向传播给隐藏层进行参数更新的方法。
⚫ 将误差从后向前传递,将误差分摊给各层所有单元,从而获得各层单元所产
生的误差,进而依据这个误差来让各层单元负起各自责任、修正各单元参数。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例子:通过一个三类分类的具体例子来介绍神经网络中参数更新过程。给定一个
包含输入层、一层隐藏层和输出层的多层感知机,其中隐藏层由两个神经元构成。网络使用Sigmoid函数作为神经元的激活函数,使用均方损失函数来计算网络输出值与实际值之间的误差。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

卷积神经网络CNN

背景:

原因:在前馈神经网络中,输入层的输入数据直接与第一个隐藏层中所有神经元相互连接。

结果/影响:如果输入数据是一幅图像,需要把灰度图像(二维矩阵)或彩色图像(三维矩阵)转换为向量形式。则给定一幅分辨率1000*1000的灰度图像,输入数据为一个1,000,000维的向量,如果输入数据与第一个隐藏层中所有神经元均相连,且第一个隐藏层维度和输入维度一致,则输入层到第一个隐藏层之间待训练参数数目为1012个,模型参数数量如此巨大不仅会占用大量计算机内存,同时也使神经网络模型变得难以训练收敛。

方案:对于图像这样的数据,不能直接将所构成的像素点向量与前馈神经网络神经元相连。1959年,David Hubel和Torsten Wiesel发现了人脑“视觉系统的信息处理”这一机制,即可视皮层对外界信息是分级感受的。受这一发现启发,1980年Kunihiko Fukishima将神经科学所发现的结构进行了计算机模拟,提出通过级联方式(cascade,即逐层滤波)来实现一种满足平移不变性的网络Neocognitron,
这就是卷积神经网络的前身。20世纪90年代,LeCun等人,设计了一种被称为LeNet-5的卷积神经网络用于手写体识别,初步确立了卷积神经网络的基本结构

重要性

如今,虽然针对不同应用场景的卷积神经网络结构已变得愈发复杂、性能也变得更加强健,但是究其本质,这些复杂网络结构仍是以卷积操作与池化操作为核心构建而成。

要点

⚫ 图像中像素点具有很强的空间依赖性,卷积(convolution)就是针对像素点的空间依赖性来对图像进行处理的一种技术。
⚫ 在图像卷积计算中,需要定义一个卷积核(kernel)。卷积核是一个二维矩阵,矩阵中数值为对图像中与卷积核同样大小的子块像素点进行卷积计算时所采用的权重。
⚫ 卷积核中的权重系数𝑤𝑖是通过数据驱动机制学习得到,其用来捕获图像中某像素点及其邻域像素点所构成的特有空间模式。一旦从数据中学习得到权重系数,这些权重系数就刻画了图像中像素点构成的空间分布不同模式。

卷积操作

给定一个权重分别为𝒘𝒊(𝟏 ≤ 𝒊 ≤ 𝟗)、大小为𝟑 × 𝟑的卷积核以及一个𝟓 × 𝟓大小灰度图像
在这里插入图片描述
在这里插入图片描述
77大小的图像,通过33大小卷积矩阵以1的步长进行卷积操作,可得到5*5大小的卷积结果

在这里插入图片描述

神经科学家发现,人的视觉神经细胞对不同的视觉模式具有特征选择性(Feature Selectivity),即不同视觉神经细胞对边界、运动和颜色等不同信息具有强弱不同的选择性。因此,不同卷积核可被用来刻画视觉神经细胞对外界信息感受时的不同选择性。同时也可以看到,卷积所得结果中,每个输出点的取值仅依赖于其在输入图像中该点及其邻域区域点的取值,与这个区域之外的其他点取值均无关,该区域被称为感受野(receptive field),正所谓“管中窥豹、见微知著”。在卷积神经网络中,感受野是卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图像上映射的区域大小。也就是说,感受野是特征图上一个点对应输入图像上的区域。

池化操作

由于图像中存在较多冗余,在图像处理中,可用某一区域子块的统计信息(如最大值或均值等)来刻画该区域中所有像素点呈现的空间分布模式,以替代区域子块中所有像素点取值,这就是卷积神经网络中池化(pooling)操 作。池化操作对卷积结果特征图进行约减,实现了下采样,同时保留了特征图中主要信息
在这里插入图片描述
在这里插入图片描述对于输入的海量标注数据,通过多次迭代训练,卷积神经网络在若干次卷积操作、接着对卷积所得结果进行激活函数操作和池化操作下,最后通过全连接层来学习得到输入数据的特征表达,即分布式向量表达(distributed vectorrepresentation)。

正则化

为了缓解神经网络在训练过程中出现的过拟合问题,需要采取一些正则化技术来提升神经网络的泛化能力(generalization)

• Dropout
• Batch-Normalization
• L1-Norm & L2-Norm
在这里插入图片描述

循环神经网络 RNN

循环神经网络/Recurrent Neural Network是:
1.一类处理序列数据(如文本句子、视频帧等)时所采用的网络结构.先前所介绍的前馈神经网络或卷积神经网络所需要处理的输入数据一次性给定,难以处理存在前后依赖关系的数据。
2.可以保存某种状态的神经网络。比如说, 神经网络中上个时刻的输出可以作为下个 刻的输入的一部分, 以此信息就可以 通过序列在网络中一直往后传递。对于LSTM (Long-Short Term Memory) 来说, 序列中的每个元素都有一个相应的隐状态, 该隐状态原则上可以包含序列当前结点之前的任一节点的信息。我们可以使用隐藏状态来预测语言模型中的单词, 词性标签以及其他。

本质:
希望模拟人所具有的记忆能力,在学习过程中记住部分已经出现的信息,并利用所记住的信息影响后续结点输出。

应用:自然语言处理,例如语音识别、情感分析、机器翻译等领域有重要应用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按照时间将循环神经网络展开后,可以得到一个和前馈神经网络相似的网络结构。这个网络结构可利用反向传播算法和梯度下降算法来训练模型参数,这种训练方法称为“沿时间反向传播算法(backpropagation through time,BPTT)”。由于循环神经网络每个时刻都有一个输出,所以在计算循环神经网络的损失时,通常需要将所有时刻(或者部分时刻)上的损失进行累加。

应用示例:
在这里插入图片描述
在这里插入图片描述
假设时刻𝑡隐式编码如下得到:在这里插入图片描述
使用交叉熵损失函数计算时刻𝑡预测输出与实际输出的误差𝐸𝑡。显然,整个序列产生的误差为在这里插入图片描述
下面介绍如何根据时刻𝑡所得误差来更新参数𝑊𝑥。在时刻𝑡计算所得𝑂𝑡不仅涉及到了时刻𝑡的𝑊𝑥,而且也涉及了前面所有时刻的𝑊𝑥,按照链式求导法则,𝐸𝑡在对𝑊𝑥求导时候,也需要对前面时刻的𝑊𝑥依次求导,然后再将求导结果进行累加,即:
在这里插入图片描述
由于𝑡𝑎𝑛ℎ函数的导数取值位于0到1区间,对于长序列而言,若干多个0到1区间的小数相乘,会使得参数求导结果很小,引发梯度消失问题。𝐸𝑡对𝑊ℎ的求导类似,这里就不列出了。
在这里插入图片描述
根据输入序列数据与输出序列数据中所包含“单元”的多寡,循环神经网络可以实现三种模式:
1.“多对多”(即输入和输出序列数据中包含多个单元,常用于机器翻译)、
2.“多对一”(即输入序列数据包含多个单元、输出序列数据只包含一个单元,常用于文本的情感分类)
3.“一对多”(即输入序列数据包含一个单元、输出序列数据包含多个单元,常用于图像描述生成)。

更多:
为了解决梯度消失问题,长短时记忆模型(Long Short-Term Memory,LSTM)被提出。LSTM详情了解,与LSTM类似的是GRU/门控循环单元神经网络,计算更少,但使用场景没有前者广,GRU网络结果如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值