8

正如我在前面的问题中提到的,我正在编写一个迷宫求解应用程序,以帮助我了解更多理论CS主题,可以演化一组规则(由布尔值处理),以便通过迷宫找到一个好的解决方案。即使我没有真正的神经网络工作知识(没有正式的理论CS教育),但我想用神经网络加强它。在对这个主题进行一些阅读之后,我发现可以使用神经网络来训练基因组以改善结果。比方说,我有一个基因组(基因组),如用神经网络和/或钢筋学习提高我的GA

1 0 0 1 0 1 0 1 0 1 1 1 0 0... 

我怎么会用一个神经网络(我假设MLP?),以培养和提高我的基因?

除了这一点,我对神经网络一无所知我一直在寻找实施某种形式的钢筋学习,使用我的迷宫矩阵(2维数组),虽然我有点卡在什么下面的算法从我又想:

(从http://people.revoledu.com/kardi/tutorial/ReinforcementLearning/Q-Learning-Algorithm.htm

1. Set parameter , and environment reward matrix R 
    2. Initialize matrix Q as zero matrix 
    3. For each episode: 
      * Select random initial state 
      * Do while not reach goal state 
       o Select one among all possible actions for the current state 
       o Using this possible action, consider to go to the next state 
       o Get maximum Q value of this next state based on all possible actions 
       o Compute 
       o Set the next state as the current state 

    End Do 

    End For 

对我来说正好是实施奖励矩阵R,什么Q矩阵,并获得Q值的大问题。我为我的迷宫和枚举状态使用多维数组来处理每一个动作。这将如何用于Q-Learning算法?

如果有人能够帮助解释我需要做什么来实现以下内容,最好在Java中,尽管C#也会很好,但可能有一些源代码示例,这将是值得赞赏的。

+1

这是一个非常复杂的课题。你在谈论的事情通常在AI的大学课程的整个学期中讨论。我不确定他们是否可以在Stackoverflow问题中得到很好的解答,但我肯定会对看到人们尝试的感兴趣。我从来没有把我的头围绕在这些算法中。 – 2010-03-17 14:57:12

+0

另一方面,如果你愿意花费一些现金在关于这个主题的真正好的教科书上,那么我可以建议:http://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597/ref = sr_1_1?ie = UTF8&s = books&qid = 1268837913&sr = 1-1 – 2010-03-17 15:12:38

+0

我已经瞥了几遍这本书,虽然它提供了一个体面的理论背景, 。如果有人能够写出一个基本的解决方案,根据我提供的信息来工作,即使它是伪代码,我也会很高兴尝试并实施它并给出一个可接受的答案。 – AlexT 2010-03-17 15:41:51

回答

3

正如在一些评论中指出的那样,您的问题确实涉及大量的背景知识和主题,而这些知识和主题几乎无法在stackoverflow上进行详细介绍。但是,我们可以在这里尝试的是提出解决问题的方法。

首先:你的GA做什么?我看到一组二进制值;他们是什么?我看到他们要么:

  • :的“右转”和“左转”的指令序列。为什么这不好?因为你基本上是在做一个随机的,蛮力的尝试来解决你的问题。你没有进化出一种基因型:你正在完善随机猜测。
  • 更好:每个基因(基因组中的位置)代表将在表型中表达的特征。基因组和表型之间不应该有1对1的映射!

让我举一个例子:在我们的大脑中有10^13个神经元。但是我们只有大约10^9个基因(是的,这不是一个确切的数值,只有我一秒钟)。这告诉我们什么?我们的基因型不编码神经元。我们的基因组编码这些蛋白质,然后去做我们身体的组成部分。

因此,通过选择表型的特征,进化对基因型直接起作用。如果我的每只手都有6个手指,并且这会让我成为更好的程序员,让我拥有更多的孩子,因为我在生活中更加成功,那么我的基因型就会被进化选中,因为它包含了的能力给我一个更健康的身体(是的,那里有一个双关语,考虑到这里大多数人的平均可重复性比率)。

现在,想想你的遗传算法:你试图完成什么?你确定演变规则会有所帮助吗?换句话说 - 你会在迷宫中表演吗?什么是最成功的事情可以帮助你:拥有一个不同的身体,或者拥有正确的出路的记忆?也许你可能想重新考虑你的基因型,并让它记忆记忆能力。也许在基因型中可以存储多少数据,以及你的代理人能够多快地访问它 - 然后衡量他们走出迷宫的速度。 另一种(较弱)的方法可能是编码代理用来决定去哪里的规则。回家的信息是,编码一旦表达过的特征可以通过健身来选择。


现在,对神经网络问题。有一点要记住,神经网络是过滤器。他们收到一个输入。对其执行操作并返回输出。这是什么输出?也许你只需要区分一个真/假的条件;例如,一旦你将一张迷宫地图提供给神经网络,它可以告诉你是否可以从迷宫中走出来。你会怎么做这样的事情?您将需要正确编码的数据。

这是关于神经网络的关键点:您的输入数据必须正确编码。通常人们对它进行规范化,也许可以对其进行缩放,也许可以对其应用一个西格玛函数以避免过大或过小的值;这些是处理错误措施和性能的细节。你现在需要了解的是NN是什么,以及你不能使用它。

现在就解决您的问题。您提到要使用神经网络,以及:怎么样,

  • 利用神经网络来引导剂,和
  • 使用遗传算法进化神经网络的参数?

改写像这样:

  • 让我们假设你有一个机器人:你NN是控制左右车轮,并作为输入接收到下墙的距离,有多少已经走过到目前为止(这只是一个例子)
  • 你首先产生一个随机基因型
  • 使基因型进入一个表型:第一个基因是网络的敏感性;第二个基因编码学习比率;第三基因..等等等等
  • 现在你有一个神经网络,运行仿真
  • 看它如何执行
  • 产生第二随机基因型,发展第二NN
  • 怎么看这第二个个别执行
  • 获得最佳的个体,那么无论其变异基因型或重组它与失败者
  • 重复

存在优秀在此阅读此事:Inman Harvey Microbial GA

我希望你能对这些问题有所了解。 NN和GA没有解决所有问题的灵丹妙药。在有些情况下,他们可以做得很好,而在另一些情况下他们只是错误的工具。现在(仍然),我们要得到最好的一个,并且要这样做,我们必须很好地理解它们。

玩得开心!我们很高兴地知道这样的事情,让每天的生活多一点有趣的:)

+0

稍作修改。人类基因组中有大约10^9个碱基对。大约有20,000到25,000个基因。我不能说有多少需要建立一个大脑, – Spike 2010-03-19 23:33:37

1

大概没有“迷宫基因”发现,

遗传算法正试图设置属性的载体和“过滤系统”通过某种算法“优胜劣汰的存活出现”决定找从哪套房产中做出最好的工作。

寻找迷宫方式的最简单方法是沿着墙壁向左(或向右)移动。

Q算法似乎有一个问题,local maxima这是解决方法,因为如果结果没有改善,我记得踢(添加随机值到矩阵)。

编辑:如上所述,回溯算法比GA或NN更适合这项任务。 如何结合两种算法描述如下:hereNeuroGen描述GA如何用于训练NN。

0
  • 尝试使用免费的开源NerounDotNet C#库,供您的神经网络,而不是执行它。

  • 对于强化学习的图书馆,我目前正在为一体,特别是对点NET框架..