人工生命 - 开源项目初稿


Apache
跨平台
Java

软件简介

人工生命 v1.0

这是一个以“造人”为终极目标的项目,并不是一个实用的、可以马上在实际中使用的项目,目前还处于初始阶段,作者本人也处于探索中,希望有兴趣者能加入,早日在码云上创造出一个真正意义上的人工生命。

简介 | Introduce

目前人工智能的研究主要集中在算法上,下面这张图看了有什么感觉:

绝对是四个字: 一脸 懵逼。(原贴位于[这里])
对于普通程序员来说,是不可能学会上述知识树的所有、甚至是一小部分的知识的,但好在目前神经网络研究还有另一条路可以走,就是模拟大自然,利用优胜夯汰、随机变异、用进废退这三大原则,用计算机的高速度来让电脑自动生成最优神经网络脑模型,而不是手工从算法着手来模拟人脑,这是一个捷径,因为不用花太多时间去研究算法(模式识别的成果可以引用,但仅限于此,人类的算法不应该干涉电脑生成的网络模型),只需要花时间在模拟环境和编制简单的用进废退逻辑即可,这是程序员所擅长的。大自然从来就不懂什么是算法,聪明如我等程序员,难道还不如蠢笨的大自然?
从单细胞进化到多细胞、从青蛙进化到人类,这是一个漫长的、随机的进化过程,但在超级电脑上跑可能只要几天时间,就可能得到一个相当不错的脑模型。当然电脑速度越快、容量越大、环境模拟的越真实,则优胜夯汰后形成的脑结构就越复杂,错的脑模型都被自然淘汰掉了。
从算法着手搭建,还是从模拟环境着手自动进化,这是创建人工生命的两个大方向,第一个方向可以说是一条死路,因为它不具备算法自改进、变异、遗传(算法的压缩)功能。模拟环境的难点在于环境本身必须足够复杂、正确。而且必须循序渐进,与脑的进化同步,如果把一群青蛙扔到猴子的模拟环境中,则所有青蛙都会被自然淘汰掉,项目就无法进行下去了。
目前的项目只是搭建了一个框架,语言为Java,利用Swing作图环境,构建一个500x500象素点的虚拟环境、并模拟一群草履虫的优胜夯汰,来获取第一个具备自进化功能的人工生命体,具体脑(即电脑生成的神经网络)的实现算法还需要以后加入。现诚心邀请有兴趣加入的同学一起来加入,完成第一个初步目标:造出一个真正意义上的人工生命:草履虫。

短期目标 | Sort-term Goals

第一个初步目标:造出一个真正意义上的人工生命:草履虫。它必须具备以下前四个特点:

  • 脑结构由电脑生成 :神经网络由电脑算法生成,但是电脑算法仅限于模拟环境,而不是直接参与搭建神经网络,就好象大自然只负责拍死不合格的生命,它从不主动参与设计大脑。

  • 脑结构可遗传 :类似于生物的DNA,电脑生成的脑结构(神经网络),可通过简单的算法规则描述,并且此算法规则可以压缩成较短的片段存储,并参与到下一代草履虫的构建。

  • 脑结构可变异 :算法规则可以变异,下一代生成的草履虫在脑结构上与上一代总体相似,但存在部分变异。

  • 适应环境 :草履虫能够在模拟的虚拟环境下存活下来,环境有微小的变化,能够自适应环境,并一代代生存将适应这种环境的能力遗传下来。

  • 用进废退 :这是一个假想,对于生物来说,存在这样一种现象,就是用的多的器官,容易发生变异(例如经常嚼槟榔,容易发生口腔癌变),有理由相信这不是偶然现象,而是生物在进化过程中的一个有用的功能,以便于更快地变异,以适应环境,并很可能这种变异会通过遗传细胞(变异的算法规则)影响到下一代。

理论 | Theory

为什么明明是个电脑程序,只要满足上述四个特点就可以称之为”真正”的人工生命? 这一点我不想多说,大家可以百度一下”zhangrex
人工生命”就知道我的观点了: _ 意识从来就不存在,意识只是一种现象_
。风吹、树动和风吹、添衣,都只是一种现象而已,生命本质上是一种现象,换句话说,只要表现出生命现象的事物,就可以称其为生命了,不管它是高等还是低等,不管它的物质存在基础是怎样的。作为一个二十年前就思考人工智能(可能比在座的各位年龄都长)者的话,请仔细思考一下这个观点。哲学上、理论上对智能、意识的研究是很无聊的,相当于在研究“无”到底是什么,不必多纠缠在理论和算法上。是的,用模拟环境得到的人工神经网络模型,我们确实无法掌控它的算法是怎样生成的,但是我们知道,这符合大自然创造生命的规律。

项目架构 | Architecture

这是一个Java项目,分为Application、Env、Frog三个模块:
Application模块: 用于项目的启动、关闭等基础服务。
Env模块: 目前是一个500x500象素点的虚拟空间,由Swing生成画像,这是程序员唯一可以控制的区域。
Frog: 这是人工生命的主体,目前起名叫青蛙,其实叫什么都一样。它具备以下器官:
Leg: 与运动神经元相连,Leg的激活将导致Frog移动,Leg有五个方向:上下左右停
Mouth: 只有一个动作:eat
用来食用虚拟空间出现的虚拟食物,它是一个感觉器官,而不是一个运动器官,Frog本身具有一个能量字段,进食后能量字段会增加,运动或随时间流逝能量将减少,能量耗尽则Frog死亡。
Brain: 有眼、脑细胞、脑区、基因等对象

文档 | Documentation

见项目主页

作者其它开源项目 | Other Project

期望 | Futures

欢迎发issue提出更好的意见或提交PR,帮助完善人工生命项目。

版权 | License

Apache 2.0

关注我 | About Me

GitHub
码云