在Python中发展的人工智能

use*_*935 5 python artificial-intelligence neural-network

所以我一直在考虑在Python 中创建一个与此类似的程序.问题是我对AI几乎一无所知.现在我正在阅读遗传算法和神经网络等等,但有很多东西需要吸收.

我现在最大的问题是我不知道整个事情是如何组合在一起的.所以,如果有人能告诉我这样一个程序的一般框架,我将非常感激.例如,生物如何"看到"周围环境中的东西,它们所拥有的"染色体"类型以及如何创造环境.

此外,有人可以为AI,任何引擎等建议合适的库吗?我一直在考虑使用neurolab,这是个好主意吗?

谢谢!

cor*_*zza 31

有趣的是,我用Python创建了你所描述的内容.

这是一张照片:

在此输入图像描述

绿点是食物,红点是生物需要进化并学习如何食用食物块.

这样的灵感和指导的最佳来源绝对是Polyworld:youtube.com/watch?v = _m97_kL4ox0 .

另一个帮助我了解反向传播的好例子,我建议你也应该学习,这里是:arctrix.com/nas/python/bpnn.py.

虽然这个问题太过模糊而无法正确回答,但一般的提示是,您首先要了解ANN的功能,然后使用这种通用算法构建程序:

  • 检查用户输入(相机应该移动吗?程序应该退出吗?)
  • 对于每个有机体:
    1. 检查它是否还活着等
    2. 接受来自世界的意见
    3. 评估其神经网络
    4. 将结果应用于身体
    5. 应用正面或负面反馈(如您所见,这一切都归结于此)
  • 更新世界(你可以使用物理引擎)
  • 可选地,画出世界

例如,您的输入神经元可能与物理或视觉刺激相对应.我面前有什么东西吗?然后将neuron X设置为1,否则设置为0.

你的输出神经元可以映射成力.神经元Y是否有效?如果是这样,在这个世界周期中对这个有机体施加冲动.

我还建议您不要将其他人的库用于神经网络计算,因为这是实际学习如何自己实现它们的好方法.你可以用Pygame进行渲染,然后用PyBox2D进行物理渲染.

现在,关于"看到"其他有机体......这些问题最好在孤立时解决.您需要一个良好的软件设计,这将使您能够将整个问题分成许多子问题,这些子问题更容易解决.

一般来说,观看可以通过光线投射来完成.创建一个方向化的标准化向量(其中长度为1个单位,即sqrt(x*x + y*y) == 1),然后对其进行缩放(x *= factor; y *= factor;).这样,你得到一条向外伸展的线.在缩放之前,您可以循环遍历世界上的所有生物(您必须优化它),并检查向量是否在它们内部.如果是,则计算其长度,并且您的有机体有一些关于其周围环境的信息.

有许多更简单的方法.例如,将每个生物周围的空间划分为四个象限,其中四个代表眼睛(X-向上,向右,向下,有机体的左侧).然后计算从生物体到每个其他生物体的长度(优化!).找到最近的有机体.找出它在哪个象限.瞧,活跃的眼睛!

我希望我能提供帮助,但是当你遇到实际问题时,你必须更精确并回来.阅读常见问题解答.

  • 谢谢!这非常有帮助.对不起,这不是一个非常具体的问题,我只是需要帮助找到一个起点. (3认同)

Cal*_*eng 6

http://scikit-learn.org/是一个很好的资源(和框架),供您在python中学习机器学习.

如果你想建立一个神经网络,http://pybrain.org/是一个很好的框架.