人类简史 txt 《智能简史——谁会替代人类成为主导物种》我正在进行的工作3



基因算法

基因算法(Genetic Algorithm)是一种达尔文进化的程序模拟形式,用来优化任何被进化的性能。实际应用中,我把基因算法用于神经网络的进化。具体通过以下的方式来模拟神经网络的运行。首先要考虑如何描述神经网络本身。我使用16个神经元并且让它们和自身以及其他神经元连接,因此,总共有16×16=256个连接。输入信号的强度,以普通的十进制数字来表示,例如10.47,再乘以一个权值,例如0.537,然后相加。作为这个概念的一个例子,想象一个非常简单的只有两个神经元的网络,因此,有4个连接。神经元1输出的信号通过连接或形成神经突起C11发送到自身,并且通过连接或形成神经突起C12发送到神经元2。 神经元2输出的信号通过连接或形成神经突起C22发送到自身,并且通过连接或形成神经突起C21发送到神经元1。假设在某个时刻的强度是S1和S2(例如,10.54和7.48)。

每一个连接Cij(或者形成神经突起)拥有一个相应的权值Wij,用来和通过该连接输入的信号强度相乘。因此,输送到神经元2的信号总强度应该是(W12* S1 + W22* S2 )。对于神经元1计算也类似。总共有4个这样的权值。假设每一个权值的范围在–1到+1之间。因此,每一个权值可以用二进制小数来表示,比如说8个比特(二进制数字,0或者1)。4个这样的数字可以用4×8=32个比特来表示,可以排列成有32个比特的一行。对于16个神经元,我们将用一个有16×16×8=2 048个比特的行或串来表示我将用来进化的神经网络的16×16个权值。

如果我知道2 048个比特的值(0或者1),我将可以计算所有的256个权值,并且可以通过它们建立一个完全连接的神经网络。相反,如果知道所有的权值,并且知道输入信号的初始值,我们就可以计算出每一个神经元发射时候的信号强度。如果知道了每一个神经元是怎么发射的,就会知道整个神经网络是怎么发射信号的或是怎么运转的。我们可以提取某些神经元的信号,并且把这些信号当作控制信号,来控制一些活动,比如说,通过控制机器人腿的角度来让它行走。

为了解释基因算法是怎么运用于此的,想象一下产生了100个随机的比特串,每个长2 048个比特。从每一个比特串我们可以构造一个相应的神经网络。对于每一个网络都采用同样的初始信号来让网络的信号传输启动。提取其中的某些输出信号并且使用它们,比如,通过控制构成棍形腿的4个线条的角度来让棍形腿走路。我们可以测出在一定时间内腿的走动距离。

那些走更长距离的神经网络的比特串,可以存活到下一代。那些走的距离短一些的比特串则会死亡,这就是所谓的达尔文定律,即“适者生存”。比特串越适应,即具有更高性能分数或“高适应值”的就越会复制自己,产生所谓的“孩子”或后代。然后,这些孩子和它们的父辈一起被“变异”,也就是说,每一个比特有一个很小的概率来改变相应的值(0变成1,1变成0)。两个比特串可以“交配”,即一个称为“特征交换”的过程。它有很多方式。一个简单的方式就是,选取两个父比特串或者通常所谓的“染色体”,在同样的位置把它们分成两部分,然后交换相应的部分。这等价于性,基本上来说就是混合来自父辈的基因来产生后代。

越适应的父辈就拥有越多的后代。每一代基因算法拥有一定的总体数量,例如100。大多数的变异和特征交换会让染色体拥有更低的适应值,所以它们将被从总体中清除。偶尔的一次变异或一次特征交换则会增加一点染色体的适应值,以至于在某个时候它会把自己的父亲或者其他低适应值的染色体挤出总体。通过对这样的过程循环几百次,就有可能进化出性能更好的神经网络,或者任何需要进化的目标。

  

爱华网本文地址 » http://www.413yy.cn/a/9101032201/360547.html

更多阅读

声明:《人类简史 txt 《智能简史——谁会替代人类成为主导物种》我正在进行的工作3》为网友遹柏景分享!如侵犯到您的合法权益请联系我们删除