Python神经网络编程 - (EPUB全文下载)
文件大小:0.19 mb。
文件格式:epub 格式。
书籍内容:
Python神经网络编程
第1章 神经网络如何工作
第2章 使用Python进行DIY
第3章 趣味盎然
附录A 微积分简介
附录B 使用树莓派来工作
欢迎来到异步社区!
第1章 神经网络如何工作
“从你身边所有的小事情中,找到灵感。”
1.1 尺有所短,寸有所长
计算机的核心部分就是计算器。这些计算器做算术非常快。
对于执行与计算器相匹配的任务而言,如对数字进行相加算出销售额、运用百分比算出税收、绘制现存数据的图表,这是很不错的。
即使是在计算机上观看网络电视节目或听流媒体的音乐,也只涉及一次又一次地执行简单的算术指令。在互联网上通过管道将1和0输送到计算机,重建视频帧,所使用的算术也不会比你在中学所做的加法运算复杂,这一点也许令你颇为惊奇。
计算机可以以相当快的速度,在1秒钟内进行4位数甚至10位数的相加,这也许给人留下了深刻的印象,但是这不是人工智能。人类可能发现自己很难快速地进行加法运算,然而进行加法运算的过程不需要太多的智慧。简单说来,这只要求计算机拥有遵循基本指令的能力,而这正是计算机内的电子器件所做的事情。
现在,让我们转到事情的背面,掀开计算机的底牌。
让我们观察下面的图片,看看你能认出图片中包含哪些内容。
你和我都看到了人脸、猫和树的图片,并识别出了这些内容。事实上,我们可以以非常高的精确度快速地做到这一点。在这方面,我们通常不会出错。
我们可以处理图像中所包含的相当大量的信息,并且可以成功地识别图像中有哪些内容。但这种任务对计算机而言,并不是那么容易,实际上,是相当困难的。
问题
计算机
人类
快速地对成千上万的大数字进行乘法运算
简单
困难
在一大群人的照片中查找面孔
困难
简单
我们怀疑图像识别需要人类智能,而这是机器所缺乏的。无论我们造出的机器多么复杂和强大,它们依然不是人类。但是,由于计算机速度非常快,并且不知疲倦,我们恰恰希望计算机能更好地进行求解图像识别这类问题。人工智能所探讨的一切问题就是解决这种类型的难题。
当然,计算机将永远使用电子器件制造,因此研究人工智能的任务就是找到新方法或新算法,使用新的工作方式,尝试求解这类相对困难的问题。即使计算机不能完美地解决这些问题,但是我们只要求计算机足够出色,给人们留下一种印象,让人觉得这是智能在起作用。
关键点
有些任务,对传统的计算机而言很容易,对人类而言却很难。例如,对数百万个数字进行乘法运算。
另一方面,有些任务对传统的计算机而言很难,对人类而言却很容易。例如,从一群人的照片中识别出面孔。
1.2 一台简单的预测机
让我们先从构建超级简单的机器开始。
想象一下,一台基本的机器,接受了一个问题,做了一些“思考”,并输出了一个答案。与我们在上面的例子中进行的操作一样,我们从眼睛输入图片,使用大脑分析场景,并得出在场景中有哪些物体的结论。
下面就是这台机器看起来的样子。
记住,计算机不是真的思考,它们只是得到包装的计算器,因此让我们使用更恰当的词语来形容这个过程。
一台计算机接受了一些输入,执行了一些计算,然后弹出输出。下列的内容详细说明了这一点。一台计算机对“3×4”的输入进行处理,这种处理也许是将乘法运算转化为相对简单的一组加法,然后弹出答案“12”。
你可能会想“这也没什么了不起的吧!”,没关系。这里,我们使用简单和熟悉的例子来引出此后我们将看到的更有趣的神经网络的概念。
让我们稍微增加一点复杂度。
试想一下将千米转化为英里的一台机器,如下所示。
现在想象一下,我们不知道千米和英里之间的转换公式。我们所知道的就是,两者之间的关系是线性的。这意味着,如果英里数加倍,那么表示相同距离的千米数也是加倍的。这是非常直观的。如果这都不是真理,那么这个宇宙就太让人匪夷所思了。
千米和英里之间的这种线性关系,为我们提供了这种神秘计算的线索,即它的形式应该是“英里=千米×C”,其中C为常数。现在,我们还不知道这个常数C是多少。
我们拥有的唯一其他的线索是,一些正确的千米/英里匹配的数值对示例。这些示例就像用来验证科学理论的现实世界观察实验一样,显示了世界的真实情况。
真实示例
千米
英里
1
0
0
2
100
62.137
我们应该做些什么,才能计算出缺失的常数C呢?我们信手拈来一个随机的数值,让机器试一试!让我们试着使用C = 0.5,看看会发生什么情况。
这里,我们令:英里=千米×C,其中千米为100,当前,我们猜测C为0.5。
这台机器得到50英里的答案。
嗯,鉴于我们随机选择了C = 0.5,这种表现还算不错。但是,编号为2的真实示例告诉我们,答案应该是62.137,因此我们知道这是不准确的。
我们少了12.137。这是计算结果与我们列出的示例真实值之间的差值,是误差。即:
误差值=真实值-计算值
= 62.137-50
= 12.137
下一步,我们将做些什么呢?我们知道错了,并且知道差了多少。我们无需对这种误差感到失望,我们可以使用这个误差,指导我们得到第二个、更好的C的猜测值。
再看看这个误差值。我们少了12.137。由于千米转换为英里的公式是线性的,即英里= 千米×C,因此我们知道,增加C就可以增加输出。
让我们将C从0.5稍微增加到0.6,观察会发生什么情况。
现在,由于将C设置为0.6,我们得到了英里=千米×C = 100×0.6 = 60,这个答案比先前50的答案更好。我们取得了明显的进步。
现在,误差值变得更小了,为2.137。这个数值甚至可能是我们很乐于接受的一个误差值。
这里,很重要的一点是,我们使用误差值的大小指导如何改变C的值。我们希望输出值从50增大一些,因此我们稍微增加了C的值。
我们不必尝试使用代数法计算出C需要改变的确切量,让我们继续使用这种方法改进C值。如果你还不能被我说服,还是认为计算出确切的答案才够简单,那么,请记住,更多有 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Python神经网络编程 - (EPUB全文下载)