对神经网络进行学习

仅用于个人学习记录
1.对神经网络进行学习
1.1从数字电路逻辑的角度理解感知机
感知机接收多个输入信号,输出一个信号。图1.1.1是一个接收两个输入信号的感知机的例子。x1、x2是输入信号,y是输出信号,w1、w2是权重。图中的○称为“神经元”或者“节点”。输入信号被送往神经元时,会被分别乘以固定的权重(w1x1、w2x2)。神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1。这也称为“神经元被激活”。这里将这个界限值称为阈值,用符号θ表示。

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

图1.1.1 感知机
使用感知机表示或门电路,与门的真值表如图1.1.2所示。很明显当(w1, w2, θ) = (0.5, 0.5, 0.4) 时就可以实现表中所示现象。
在这里插入图片描述
图1.1.2 或门电路真值表
同理与非门和与门也可以通过感知机很容易的实现。但是对于异或门逻辑来说使用一个神经元无法实现。将真值表转换为二维坐标,三角形表示1,圆形表示0。如图1.1.3所示左图为或门二维坐标表示,右图为异或门二维坐标表示。通过图我们可以发现或门、与非门和与门都是线性问题,异或门则变成了非线性问题。通过神经元的输出表达公式也可以看出,单个神经元公式就是一个线性公式,这就不难理解为什么无法使用单个神经元表示异或门逻辑。
在这里插入图片描述
在这里插入图片描述

图1.1.3 左图为或门二维坐标表示、右图为异或门二维坐标表示
受数字电路启发,可以使用与非门、或门、与门组合实现异或门。我们这里已经可以实现与非门、或门、与门,则理论上也可以通过对其进行组合实现异或门的逻辑表达。于是便有了多层感知机概念。如图1.1.4为异或门数字电路实现以及真值表,图1.1.5为多层感知机表示异或门。感知机其实就是在解决分类问题,单层的感知机可以很好的解决线性分类问题,多层感知机对多个神经元进行组合分层可以有效的解决非线性分类问题。
在这里插入图片描述
在这里插入图片描述
图1.1.4 异或门数字电路实现以及真值表
在这里插入图片描述
图1.1.5 多层感知机表示异或门逻辑
1.2神经网络激活函数以及权重学习
由上一节可知,多层的感知机可以有效解决非线性问题,并使用两层感知机实现异或门逻辑。那么随着感知机层数增多理应可以解决更加复杂的非线性问题。神经网络可以看作是复杂的多层感知机。如图1.2.1所示为神经网络例子。神经网络可以简单的分成输入层、中间层、输出层。
在这里插入图片描述

图1.2.1 神经网络例子
下面,我们将仔细介绍激活函数。激活函数是连接感知机和神经网络的桥梁。激活函数简单的理解就是,每个神经元输出结果的规则。如上文介绍,y的输出规则就是将前面计算结果与阈值θ对比,大于阈值输出1,小于阈值则输出0。这样的函数称为“阶跃函数”。除了这种函数,激活函数还有很多,如Sigmoid激活函数、Tanh / 双曲正切激活函数、ReLU 激活函数、Leaky ReLU激活函数等。以最常用的Sigmoid激活函数为例进行介绍,如图1.2.2所示为该激活函数计算公式以及曲线图。可以明显的看出相比于阶跃函数该函数可以更好的保留数据细节信息。
在这里插入图片描述

在这里插入图片描述

图1.2.2 Sigmoid激活函数以及曲线图
下面将展示一下数据在一个三层神经网络中的计算过程。需要注意的是在实际网络设计过程中通常会因为网络功能对输出层激活函数区别使用,比如完成分类任务,输出层可能会使用softmax函数,将输出结果转换为属于某一类的概率。

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

在这里插入图片描述

图1.2.3 前向传播过程
通过上述介绍,我们知道了数据在神经网络中传递流程,这个过程我们通常叫做前向通道或者正向传播。理论上只要权重合适,输入数据经过神经网络就会输出一个我们想要的结果。那么问题来了如何得到合适的权重。对于前面门电路逻辑实现我们尚可自己手动设计,对于多层复杂的网络依靠人工设计基本不可能。因此我们需要让网络自己学习层数,这个过程也就是所谓的训练过程。
神经网络的训练过程是有监督学习过程。以手写数字识别为例子,首先你需要有大量的手写数字照片,同时每一张照片你需要告诉计算机这张照片中的数字是多少。使用我们现有的神经网络知识,我们需要将这些照片分别展成一维的向量,并将这一维向量送入网络的输入层。假设我们的图片尺寸为2828,展成一维向量为1784,输入接口就需要有784个神经元。数字种类共有10个,输出层就需要10个神经元。中间层暂时不去管。因此将图片送入网络经过权重计算就会输出一个1*10的向量,10分别表示0—9类别。向量中每一位数字表示属于哪一个类别的概率。将向量结果与真实结果进行对比。这个时候就需要引入损失函数。使用损失函数去评价输出结果与真实结果的偏差情况。以均方误差为例,如图1.2.4所示。输出结果与正确结果一致性越好,损失结果越小,反之越大。除了均方误差,交叉熵也是常用的损失函数。
在这里插入图片描述

图1.2.4 损失函数计算结果
神经网络的学习也要求梯度。这里所说的梯度是指损失函数关于权重参数的梯度。通过计算不同权重对损失函数值的偏导,反应权重变化对损失函数的影响情况。通过训练不断的对权重进行修改使得损失函数到达较小值,这个过程就是网络学习过程。当然在实际计算过程中会通过一些优化算法使得计算效率更高。比如计算图、链式法则等。篇幅关系不具体介绍。
1.3卷积神经网络
上文介绍的神经网络相邻层的所有神经元之间都有连接,通常称为全连接神经网络。并且使用该网络解决图像问题,需要将图像展开成一维向量,这将破坏图片中的空间信息。卷积神经网络通过卷积核直接对图形进行卷积操作实现对图片信息进行提取,很好的保留了图像的空间信息,同时也大大减少了权重数量。
卷积神经网络分为卷积层、池化层、全连接层。全连接层和上述一致。卷积层进行的处理就是卷积运算,卷积运算相当于图像处理中的“滤波器运算”。卷积层计算细节如图1.3.1所示。
在这里插入图片描述

图1.3.1卷积层计算细节
池化是缩小高、长方向上的空间的运算。比如,如图1.3.2所示,进行将2 × 2的区域集约成1个元素的处理,缩小空间大小。池化层和卷积层不同,没有要学习的参数。池化只是从目标区域中取最大值(或者平均值),所以不存在要学习的参数。经过池化运算,输入数据和输出数据的通道数不会发生变化。计算是按通道独立进行的。
在这里插入图片描述

图1.3.2池化层计算细节
1.4残差神经网络
添加神经网络的隐藏层,模型可以处理更加复杂的分类函数,但是随着网络的层数越深,可能会有梯度衰减等问题使得模型的性能大幅度的下降。对于卷积神经网络来说,每一层在通过卷积核之后都会产生类似有损压缩的效果。但是有损压缩到一定程度之后,分不清楚原本清晰可辨的两张照片。为了避免过度的有损压缩,我们将前面层较为“清晰”的向量数据会和后面被进一步“有损压缩”过的数据共同作为后面的数据的输入。输出为 H (x) = F (x) + x,权重层实际上是学习一种残差映射:F (x) = H (x) - x,即使权重层的梯度消失了,我们仍然始终具有标识 x 可以转移回较早的层。有效避免了梯度爆炸。
在这里插入图片描述

图1.4.1 残差网络主要优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰机的记录本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值