神经网络学习2【分类器+升华至神经元 搭建神经网络】

1.训练简单的分类器

基于上一篇文章神经网络学习1【原理初解】末尾的问题:对于花园里小虫子的分类问题,我们如何得到正确的斜率?
在这里插入图片描述
用以上真实正确的训练数据帮我们调整分类函数的斜率:
在这里插入图片描述
由于分界线是一条直线,因此我们可以设: y =Ax。
尝试从A = 0.25开始,分界线为y = 0.25x 。绘制直线,观察情况:
在这里插入图片描述
我们大概理解,分类器与之前的预测器之间的差别就在于误差的表示。预测时,误差就是输出与真实值之间的差值,但对于预测,我们没办法具体的用已知的真实值来表示。但如上图,我们可以从图像上确定出期望直线所在的大致区域,看下图:在这里插入图片描述
修正后的A值为(A+ΔA),训练两个数据:
在这里插入图片描述
将上述过程代入数据,完整地推一遍:
在这里插入图片描述
根据以上结果,我们观察图像可以发现,用这种方法时,曲线的改变好像有点“极端”,它展现出来的情况过分地依赖于最后一个数据。我们可以想象,如果仅用这两个数据进行训练,测试集数据会集中但却不完全一定在已知点非常近的范围内,这种情况下,这条分类曲线实际上是不能很好地发挥它的作用的。实际上,再梳理一遍原理,我们可以敏锐地感觉到:最终改进的直线不会顾及到所有先前训练的样本,而是抛弃了所有先前训练的样本的学习结果,只是对最近的一个实例进行了学习。
我们在上文末尾猜测过,分类器的训练方式与预测器有异曲同工之妙,误差反馈我们用到了,但持续细化误差的思想还没有体现到。预测器中,为了防止矫枉过正,在误差足够小的时候我们会细化调整的精度,其实思想是相同的,在这里我们也是为了防止分类器过多的偏向某一类数据,同样可以采用细化的概念——适度改进。也就是说,我们不要使改进过于激进,采用ΔA的几分之一的变化值而不是用整个的ΔA。
可以想象,这样去做会将我们的分类曲线调整在比较中间的位置,这就会带来一个极大的好处:抗错误和噪声的能力明显增强!

当训练数据本身不能确信为完全正确并且包含在现实世界测量中普遍出现的错误或噪声这两种情况时,有节制的调整可以抑制这些错误或噪声的影响。这种方法使得错误或噪声得到了缓和和调解。

改进公式中,将添加一个调节系数:ΔA= L(E / x ),调节系数通常被称为学习率(learning rate)。
将L设为0.5:
在这里插入图片描述

1.理解了线性分类器输出误差值和可调节斜率参数之间的关系。
2.改进后的模型只与最后一次训练的样本最匹配,解决的办法是使用学习率,调节改进速率。
3.适度更新有利于提高容错率。

2.一个分类器无法解决的情况

对于逻辑函数:
下图,这幅图在坐标系中显示了两个输入值A和B与逻辑函数的关系。

在这里插入图片描述
一条直线将绿色区域和红色区域划分开来。这条直线是线性分类器可以学习到的一个线性函数。对于形如y = ax + b的简单的线性分类器,确实可以学习到布尔AND函数。同理:
在这里插入图片描述
但对于另一种布尔函数称为XOR:
在这里插入图片描述
我们发现,不可能使用一条单一的直线成功地将红色区域和蓝色区域划分开来。但如果使用两条直线就会理想很多:
在这里插入图片描述
也就是说,可以使用多个分类器一起工作。这是神经网络的核心思想。多条直线可以分离出异常形状的区域,对各个区域进行分类。

3.神经元

理解完了分类器,神经网络计算的核心原理我们也就大概了然于胸。
在这里插入图片描述

但是那与神经元有什么联系呢?前面我们提过神经网络名称的来源是想让计算机也具有看起来像人一样的智能。对于计算机而言,它们不存在模糊性或不确定性。但模糊性却是我们大脑计算的一种特征。我们就是致力于将神经网络搭建的像神经元一样工作。
观察表明,神经元在接受到输入(更专业一点应该叫刺激)后,不会立即反应,而是会抑制输入,直到输入增强,强大到触发输出。这反映出——神经元不希望传递微小的噪声信号,而只是传递有意识的明显信号。

只有输入超过了阈值,足够接通电路,才会产生输出信号。
在数学上,有许多激活函数可以达到这样的效果。一个简单的阶跃函数可以实现这种效果。
在这里插入图片描述
在输入值较小的情况下,输出为零。然而,一旦输入达到阈值,输出就一跃而起。

S函数(sigmoidfunction)更自然、更接近现实。有时也称为逻辑函数:
在这里插入图片描述
生物神经元可以接受许多输入,而不仅仅是一个输入。对于所有这些输入,我们只需对它们进行相加,
得到最终总和,作为S函数的输入,然后输出结果。这实际上反映了神经元的工作机制。
在这里插入图片描述
如果组合信号不够强大,那么S阈值函数的效果是抑制输出信号。如果总和x 足够大,S函数的效果就是激发神经元。在这里就可以体现出模糊的意义了,有很多个输入,加和后送入阈值函数,如果只有一个输入是比较大的,其他都非常小,但这也足够触发神经元,或者这些输入单个都不足以触发,在组合之后,超过阈值,神经元可以被激发。即这些神经元也可以进行一些相对复杂、在某种意义上有点模糊的计算。
多个神经元连接起来:
在这里插入图片描述
每个神经元接受来自其之前多个神经元的输入,并且如果神经元被激发了,它也同时提供信号给更多的神经元。
将这种自然形式复制到人造模型的一种方法是,构建多层神经元,每一层中的神经元都与在其前后层的神经元互相连接。如下图就是我们构造的人工神经网络:
在这里插入图片描述
三层神经元,每一层有三个人工神经元或节点。每个节点都与前一层或后续层的其他每一个节点互相连接。

回想之前所学的,这样的体系中,哪一部分能够执行学习功能呢?针对训练样本我们应该如何调整做出反应呢?
在这里插入图片描述
观察上图,最明显的一点就是调整节点之间的连接强度,这与调整输入的总和或S函数的形状相比,要方便许多。权重就是图中的w,也就是我们训练过程中不断优化的对象。
采用这种一致的完全连接形式,有两点原因:一是可以相对容易地编码成计算机指令,二是神经网络的学习过程将会弱化这些实际上不需要的连接(也就是这些连接的权重将趋近于0),因此对于解决特定任务所需最小数量的连接冗余几个连接,也无伤大雅。
神经网络通过调整优化网络内部的链接权重改进输出。

思考:至此,我们已经由浅入深的大致了解了神经网络的计算原理,一步步地,从预测器 —> 分类器 —> 多输入分类器 —> 神经网络,在之前的推导中我们都能大致掌握其确定数学模型,那么引深到神经网络后,我们也知道该优化权重,但这数学计算,有没有什么表示相对简单的方法呢?再仔细观察一下上面的图片,仔细看w字母的角标,已经给了我们很大的提示。
——矩阵!这真是一个方便的工具。下次我们将从计算和程序方面入手开始真正搭建神经网络啦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值