神经网络基础概念理解

得分函数

小狗例子

假设我们拥有一张32×32×3的图片,我们现在的目标是需要得到这张图片是各个类别的得分。

上图中我们的图片便是函数中的x,对于这张图片中的每一个像素点而言,有些像素点对判定其为狗起到正向作用,相反有些像素点例如旁边的草坪则对判定为狗起抑制作用。基于此我们对于每一个像素点给定一个不同的权重即函数中的w。

所以每个像素点所对应的权重参数w也是不同的,那么对于每一个类别而言32×32×3=3072个像素点也就对应着3072个权重参数。

对于函数中还有一个偏置参数b用来对函数进行微调。

假设我们现在是一个十分类任务,那么W将是10×3072的矩阵,x展平处理为3072×1的矩阵,b为10×1的矩阵,通过wx+b的简单矩阵计算最终得到该张图片对于每个类别的得分。

损失函数

具体计算
这里我们首先举例计算一下得分函数,如上图所示我们将图片简化为4个像素点,我们做一个简单的三分类任务,假设从上到下为猫,狗,青蛙的三个分类,我们通过上述公式进行计算后得到最终的三个得分值。

权重参数矩阵中为正数的表示该像素点对判定正确起到正向作用,反之亦反。

那么这时候新的问题就出现了,我们如何判断我们判断的是好是坏呢?这里就引入了损失函数。

这里引用唐宇迪博士课上的例子(自己画图太麻烦了)
在这里插入图片描述
现在我们需要做一个三分类任务,以第一个分类猫图片为例子,在这一列中汽车的得分最高为5.1,显然这样的分类并不是我们想要的,那么我们带入损失函数5.1-3.2+1=2.9,这里加1可以先简单的认为是加一个偏置项,我们希望损失函数的值越小越好,越小便意味着我们的分类任务做得越好。

反过来讨论这里加1的意义,假设车的概率为3.1,但是我们损失函数并没有加1的偏置项,那么我们最终这一项的损失值便是0,但其实我们可以观察到这两者区分度并不好,这时我们将最终的结果加1,可以理解为至少要比正确的分类结果值少1才可以。我们可以理解为这是一个容忍程度,值越大容忍程度越小,例如我们这里如果加10,那么损失值将会非常大代表着我们对于最终分类的结果非常不满意。

前向传播

在这里插入图片描述

神经网络前向传播从输入层到输出层:前向传播就是从输入层开始(Layer1),经过一层层的Layer,不断计算每一层的神经网路得到的结果及通过激活函数的本层输出结果,最后得到输出y的过程。

反向传播

我们最终训练出来的权重参数矩阵多数情况下并不是一次性就可以训练完成的,通常情况下我们会根据最终的结果与损失函数之对权重参数矩阵进行调整,多次进行调整之后才可以得到最终的参数矩阵,那么这个调整的过程我们就用到了反向传播的思路。

依旧拿唐老师课程中的图片举例:
在这里插入图片描述

在这个例子中我们的函数是:(x+y)z,我们可以理解为x代表检测小狗的胡须,y代表检测小狗的眼睛,z代表检测小狗的鼻子,那么我们如何知道每一个模块对于最终结果的贡献值是多少呢?运用数学方法便是求偏导,我们对z求偏导便可以得到该鼻子部分模块对于正确检测为小狗结果的贡献值。

具体求偏导方法不再展开描述。

正则化与激活函数

正则化

机器学习中的一个核心问题是设计不仅在训练数据上表现好,并且能在新输入上泛化好的算法。在机器学习中,许多策略显式地被设计来减少测试误差(可能会以增大训练误差为代价)。这些策略被统称伪正则化。
深度学习模型具有很高的灵活性和能力,如果训 练数据集不够大,将会造成一个严重的问题–过拟合。尽管它在训练集上效果很好,但是学到的网络不能应用到测试集中,所以在深度学习模型中使用正则化是必要的。

正则化能够减少过拟合的原因

首先给出一个过拟合的例子:
在这里插入图片描述

我们以L2正则化为例,我们通过惩罚权重参数,在参数进行更新的时候达到权重衰减的目的。权重的衰减意味着衰减的神经元对神经网络的影响减小,使得原本复杂的神经网络变得简单,甚至简单到像Logistic回归一样,每层只具有一个神经元。

神经元作用的衰减让原本非线性的分类趋于线性分类,这样就一定程度避免了过拟合。

下图反映了神经网络正则化的过程,以及分类效果。

在这里插入图片描述
在这里插入图片描述
如图红色传播路线,正则化的神经网络变得简单化,最后得到的分类效果也更合理,具有更好的泛化效果。

激活函数

首先,当我们不用激活函数时,网络中各层只会根据权重w和偏差b进行线性变换,就算有多层网络,也只是相当于多个线性方程的组合,依然只是相当于一个线性回归模型,解决复杂问题的能力有限。如果希望神经网络能够处理复杂任务,但线性变换无法执行这样的任务,使用激活函数就能对输入进行非线性变换,使其能够学习和执行更复杂的任务。

常用激活函数

(1)Sigmoid函数
在这里插入图片描述
在这里插入图片描述

(2)Tanh函数

在这里插入图片描述

在这里插入图片描述
(3)Relu函数
在这里插入图片描述
在这里插入图片描述

神经网络过拟合解决方法

方法一:增加数据

增加数据量, 大部分过拟合产生的原因是因为数据量太少了. 如果我们有成千上万的数据, 红线也会慢慢被拉直, 变得没那么扭曲 .

方法二:运用正则化

运用正则化. L1, l2 regularization等等, 这些方法适用于大多数的机器学习, 包括神经网络., 我们简化机器学习的关键公式为 y=Wx . W为机器需要学习到的各种参数. 在过拟合中, W 的值往往变化得特别大或特别小. 为了不让W变化太大, 我们在计算误差上进行一系列的操作。例如原始的误差是这样计算, cost = 预测值-真实值的平方。如果 W 变得太大, 我们就让 cost 也跟着变大, 变成一种惩罚机制。所以我们把 W 自己考虑进来。用这些方法,我们就能保证让网络学习出来的线条不会过于扭曲.

方法三:dropout

在训练的时候, 我们随机忽略掉一些神经元和神经联结 , 是这个神经网络变得”不完整”. 用一个不完整的神经网络训练一次.
到第二次再随机忽略另一些, 变成另一个不完整的神经网络. 有了这些随机 drop 掉的规则, 我们可以想象其实每次训练的时候, 我们都让每一次预测结果都不会依赖于其中某部分特定的神经元. 像l1, l2正规化一样, 过度依赖的 W , 也就是训练参数的数值会很大, l1, l2会惩罚这些大的 参数. Dropout 的做法是从根本上让神经网络没机会过度依赖.
这种方法也仅仅是在训练过程中使用,并不会在测试阶段使用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值