算法与思想
文章平均质量分 78
Sumel
这个作者很懒,什么都没留下…
展开
-
神经网络入门连载之三
4. 聪明的扫雷机工程(Smart Minesweeper Project) 我要向你介绍的第一个完整例子,是怎么使用神经网络来控制具有人工智能的扫雷机的行为。扫雷机工作在一个很简单的环境中,那里只有扫雷机以及随机散布的许多地雷。图7 运行中的演示程序。 以下内容需要回复才能看到尽管书上图形画成了黑白色,但当你运行程序时性能最好的扫雷机将显现为红色。地雷,你可能已经猜转载 2008-11-04 15:24:00 · 1787 阅读 · 15 评论 -
遗传算法入门(连载之二)
不过,有些读者可能已经会想到,如果这是繁殖期生物机体内唯一发生的事情,那幺即使经历成千上万代后,适应能力最强的成员的眼睛也只能象初始群体中最大的眼睛一样大。而根据我们对自然界的观察中发现,人类或动物的眼睛尺寸实际存在一代大于一代的趋势。之所以会发生这种情况,是因为当基因传递给子孙后代的过程中,会有很小的概率发生差错,从而使基因得到微小的改变。这多少有点象中国古老的耳语传话游戏:在一队人中转载 2009-01-06 11:22:00 · 1263 阅读 · 0 评论 -
遗传算法入门(连载之三)
3.2二进制数速成(A Quick Lesson in Binary Numbers) 当进入更深层的学习之前,我必需确保你对二进制记数系统的理解。如果你已经知道二进制记数的工作原理,可以跳过这一小节。如果你还不了解,就让我来启发你... 我认为了解二进制数(基为2的数)的最容易的方法,就是首先查看一下十进制数:你为什么使用十进制数字(基为10的数)和怎样使用十进制计数?转载 2009-01-06 11:25:00 · 1172 阅读 · 0 评论 -
遗传算法入门(连载之一)
生物只有经过许多世代的不断进化(evolution,演化),才能更好地完成生存与繁衍的任务。遗传算法也遵循同样的方式,需要随着时间的推移不断成长、演化,最后才能收敛,得到针对某类特定问题的一个或多个解。因此,了解一些有关有生命的机体如何演化的知识,对理解遗传算法的演化机制是是有帮助的。本章的开始几页将扼要阐述自然演化的机制(通常称为“湿”演化算法),以及与之相关的术语。即使你当年在中转载 2009-01-06 10:54:00 · 1508 阅读 · 0 评论 -
遗传算法入门(连载之八)
我已把程序用到的所有参数存放在文件defines.h 中了。这些参数中大多数将是一目了然的,但有其中几个我想说明一下,即 #define CROSSOVER_RATE 0.7 #define MUTATION_RATE 0.001 #define POP_SIZE 140 #define转载 2009-01-06 15:13:00 · 4687 阅读 · 0 评论 -
遗传算法入门(连载之五)
3.4 帮助 Bob 回家( Helping Bob Home ) ....由于寻找路径问题被看成是游戏人工智能的一块神圣基石,我们下面就来创建一个遗传算法,用在一个非常简单的场景中解决寻找路径问题。为此,我们将创建一个迷宫,它的左边有一入口,右边有一出口,并有一些障碍物散布在其中。然后在出发点放置一个虚拟的人,我们叫他鲍勃(Bob),然后要为他解决如何寻找路径的问题,使他能找到出口,并避免转载 2009-01-06 11:56:00 · 4741 阅读 · 0 评论 -
遗传算法入门(连载之四)
3.3 计算机内的进化( Evolution Inside Your Computer ) 遗传算法的工作过程本质上就是模拟生物的进化过程。首先,要规定一种编码方法,使得你的问题的任何一个潜在可行解都能表示成为一个“数字”染色体。然后,创建一个由随机的染色体组成的初始群体(每个染色体代表了一个不同的候选解),并在一段时期中,以培育适应性最强的个体的办法,让它们进化,在此期间,染色体的转载 2009-01-06 11:32:00 · 1671 阅读 · 0 评论 -
神经网络入门连载之五
4.5 神经网络的编码(Encoding the Network) 在本书的开始几章中,你已经看到过怎样用各种各样的方法为遗传算法编码。但当时我并没有向你介绍过一个用实数编码的具体例子,因为我知道我要留在这里向你介绍。我曾经讲到,为了设计一个前馈型神经网络,编码是很容易的。我们从左到右读每一层神经细胞的权重,读完第一个隐藏层,再向上读它的下一层,把所读到的数据依次保存到一个向转载 2008-11-04 15:47:00 · 1240 阅读 · 0 评论 -
神经网络入门连载之二
3 数字版的神经网络 (The Digital Version) 上面我们看到了生物的大脑是由许多神经细胞组成,同样,模拟大脑的人工神经网络ANN是由许多叫做人工神经细胞(Artificialneuron,也称人工神经原,或人工神经元)的细小结构模块组成。人工神经细胞就像真实神经细胞的一个简化版,但采用了电子方式来模拟实现。一个人工神经网络中需要使用多少个数的人工神经细胞,差别转载 2008-11-04 14:52:00 · 1337 阅读 · 0 评论 -
神经网络入门介绍(连载一)
用平常语言介绍神经网络(Neural Networks in Plain English) 因为我们没有很好了解大脑,我们经常试图用最新的技术作为一种模型来解释它。在我童年的时候,我们都坚信大脑是一部电话交换机。(否则它还能是什么呢?)我当时还看到英国著名神经学家谢林顿把大脑的工作挺有趣地比作一部电报机。更早些时候,弗罗伊德经常把大脑比作一部水力发电机,而转载 2008-11-04 14:47:00 · 1874 阅读 · 2 评论 -
神经网络入门连载之六
4.10 功能的两个改进 (A Couple of Improvements) 尽管扫雷机学习寻找地雷的本领十分不错,这里我仍有两件事情要告诉你,它们能进一步改进扫雷机的性能。4.10.1 改进一(Improvement Number One) 首先,单点crossover算子留下了许多可改进的余地。按照它的规定,算子是沿着基因组长度任意地方切开的,这样常有可能使个别神转载 2008-11-04 15:49:00 · 1269 阅读 · 0 评论 -
神经网络入门连载之四
4.4 CNeuralNet.h(神经网络类的头文件) 在CNeuralNet.h 文件中,我们定义了人工神经细胞的结构、定义了人工神经细胞的层的结构、以及人工神经网络本身的结构。首先我们来考察人工神经细胞的结构。4.4.1 SNeuron(神经细胞的结构) 这是很简单的结构。人工神经细胞的结构中必须有一个正整数来纪录它有多少个输入,还需要有一个向量std:vector来表示转载 2008-11-04 15:36:00 · 1235 阅读 · 0 评论 -
遗传算法入门(连载之七)
3.4.2 Epoch (时代) 遗传算法类中最烩灵人口的内容就是 Epoch()方法。这就是我们前面3.3节讲过的遗传算法的那个循环。它是这个类的工作部门(workhorse)。这一方法与所有工作或多或少都有连系。下面就让我们来更近距离地考察它void CgaBob::epoch() { UpdateFitnessScores(); 在每一个 epo转载 2009-01-06 14:51:00 · 4698 阅读 · 1 评论