原理解析与基础知识
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值。如果输出值越
来越接近正确答案,即误差值越来越小,那么我们就不要做那么大的调整。使用这种方式,我们就可以避免像先前那样得到超调的结果。
无论你是否相信,我们刚刚所做的,就是走马观花地浏览了一遍神经网络中学习的核心过程。我们训练机器,使其输出值越来越接近正确的答案。