二.嚼烂python神经网络编程理论篇-阅读笔记One简单预测器

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_35289736/article/details/93856484

原理解析与基础知识

1.宏观上:

人工智能与机器学习和深度学习的关系如下图所示:
关系描述
传统的程序与机器学习程序的差别:
机器学习:一种新的编程范式

1.1一个用于手写数字识别的神经网络模型实例拆分:

在这里插入图片描述
1.1.1通过初始化权重参数得到预测值
在这里插入图片描述
1.1.2损失函数衡量网络输出结果的质量
在这里插入图片描述
1.1.3通过损失函数调节权重参数
在这里插入图片描述

2.微观上:

2.1从一台简单的预测器开始:

一台简单的机器可能长成的样子:
在这里插入图片描述
换成更恰当的计算机的表现形式:
在这里插入图片描述
再具体点:
在这里插入图片描述
稍稍增加点复杂度,试想一下将千米转化为英里的一台机器:
在这里插入图片描述
千米和英里之间的这种线性关系,为我们提供了这种神秘计算的线索,即它的形式应该是“英里=千米×C”,其中C为常数。现在,我们还不知道这个常数C是多少?
我们拥有一些正确的千里、英里匹配数值对示例:
在这里插入图片描述
我们应该做些什么,才能计算出缺失的常数C呢?我们信手拈来一个随机的数值,让机器试一试!让我们试着使用C = 0.5,看看会发生什么情况。

这里,我们令:英里=千米×C,其中千米为100,当前,我们猜测C为0.5。这台机器得到50英里的答案
在这里插入图片描述嗯,鉴于我们随机选择了C = 0.5,这种表现还算不错。但是,编号为2的真实实例告诉我们,答案应该是62.137,因此我们知道这是不准确的。我们少了12.137。这是计算结果与我们列出的实例真实值之间的差值,是误差。即:
在这里插入图片描述
下一步,我们将做些什么呢?我们知道错了,并且知道差了多少。我们不需对这种误差感到失望,我们可以使用这个误差,指导我们得到第二个、更好的C的猜测值。让我们将C从0.5稍微增加到0.6,观察会发生什么情况;哇,误差值变得更小了,为2.137
在这里插入图片描述
这里,很重要的一点是,我们使用误差值的大小指导如何改变C的值。我们希望输出值从50增大一些,因此我们稍微增加了C的值。让我们再次重复这个过程。输出值60还是太小了。我们再次微调C,将其从0.6调到0.7。
在这里插入图片描述
糟糕!过犹不及,结果超过了已知的正确答案。先前的误差值为2.137,现在的误差值为-7.863。这个负号告诉我们,我们不是不足,而是超调了。请记住上面的公式,误差值等于真实值减去计算值。
如此说来,C = 0.6比C = 0.7好得多。那我们为什么不使用一个较小的量,微调C,将C从0.6调到0.61呢?
在这里插入图片描述
这比先前得到的答案要好得多。我们得到输出值61,比起正确答案62.137,这只差了1.137。因此,最后的这次尝试告诉我们,应该适度调整C值。如果输出值越
来越接近正确答案,即误差值越来越小,那么我们就不要做那么大的调整。使用这种方式,我们就可以避免像先前那样得到超调的结果。

无论你是否相信,我们刚刚所做的,就是走马观花地浏览了一遍神经网络中学习的核心过程。我们训练机器,使其输出值越来越接近正确的答案

猜你喜欢

转载自blog.csdn.net/qq_35289736/article/details/93856484
今日推荐