人工智能网

 找回密码
 立即注册
查看: 10805|回复: 31

话说程序如何自我进化,如何自己给自己写代码

[复制链接]
发表于 2013-9-9 08:38:00 | 显示全部楼层 |阅读模式
拿个例子说,大家不妨看看自己手机里的百度论坛,只有你在不断的向上划帖子,帖子就会不断的向下排列,这就是最简单的程序进化,那么为什么你不认为这是个会自我进化的程序哪,因为这是人的心里作用,认为自己创造的东西自己知道原理,有规律可循,所以会认为没有生命力,没有智能,其实我们自己都无法给生命、智能做定义。在得不到真相的时候小孩甚至会认为一个布娃娃拥有生命,知道痛,会说话,难道说小孩不具备智能。
就拿让电脑产生一个随机数来说,都认为电脑无法产生真正的随机数,因为每一个随机数都有自己对应的密钥,哪如果我们人类在不知道数据是有电脑产生的会不会认为这就是随机数哪,难道我们就能产生随机数,难道上帝不知道我们在想什么。
为了两分我容易吗我,大家快来顶贴

   --嗯嗯嗯又水了一贴好开心啊。
回复

使用道具 举报

发表于 2013-9-9 08:39:00 | 显示全部楼层
这不是进化,只是从数据库读取帖子罢了,这样误人子弟的贴该删除并收回经验
回复 支持 反对

使用道具 举报

发表于 2013-9-9 08:53:00 | 显示全部楼层
通过硬件获取噪声的方式还是能产生真随机数的
回复 支持 反对

使用道具 举报

发表于 2013-9-9 09:51:00 | 显示全部楼层
说到进化,太遥远了。
不过程序给自己做一些升级的话,还是可以做到的
程序自动编辑代码是从计算机发明之初就具有的
但是主要定位是辅助,既然按照使用者的思路做一系列的延伸和完善。
在高度自动化的今天。程序如果稍微想给自己升级一下性能是完全没问题的。
方案是数列配比
既你可以预留一些参数,但是你不知道具体设置成多少好。
就让程序生成 多个去对比,然后预留下最好的
关于随机的问题不想在重复说明了
虽然不是完全随机, 但是某些生成方面足够用就行了。或者使用一些时间抓取外加网页新闻抓取的方法即可。
也许你无法让计算机完全自主的去编程,但是只要设定好了大体方向,还是可以有非常优秀的成果的
比如说一个做花纹的美工,用计算机,让一个简单的线条按照一定规律变化,在一定程度后在随着另一个规律变化。就能很方便的生成一些绝美的图案。你可以说这个不是完全的智能,你也可以说这个不是完全的手工,但是你不得不承认这些产生的结果行之有效。
回复 支持 反对

使用道具 举报

发表于 2013-9-9 10:00:00 | 显示全部楼层
好的智能是改出来的,绝非空穴来风。
具体话来说
比如说一个沙盘,一个模拟经营的游戏,甚至一个砍树该房子的游戏。
你可以为其编制AI
不要死盯着创造力思考,有些东西你都想不到,为何要逼着程序能做到呢。他可以超越你一点,或者某个方向很多,或者完全不是你希望的那个样子。所以,你要学会控制他,来完成你所需要的产品。
回到刚才的话题,例如一个沙盘,你的智能是不知道什么是房子,什么是美观。无所谓,你可以将一些好的模型输入给他,并让他在这个基础上触类旁通,调用排列,组合,融合,重复等方式。让其高速的生成房子,街区,甚至城市,国家。
有一个科幻小说叫《微宇中的上帝》他是养了一些小人在他实验室的小型宇宙内,然后让他们去发明一些东西,他来用。这可是不折不扣的真正智能生物,但是他如果不加以控制的话,就生成出来一些奇怪的东西,还会把这个实际搞砸。但是他有意引导他们使用自己的语言,发明自己需要的东西的时候,效果就大大提升了。
回复 支持 反对

使用道具 举报

发表于 2013-9-9 10:07:00 | 显示全部楼层
让我们开始落实,看程序如何给自己写代码
首先你的程序要写代码,无非就是打印一个文本文档出来对吧
然后把这个文本文档复制到自己的程序目录里
然后加载上一起运行就行了。
那么这个文本文档如何写呢,那就要从书架上取回你的一些初级程序书了
你当时是如何学会编程的,你就让你的程序如何打印这个文档。
包括语法啊,逻辑啊,都不能错
加载之前还可以在测试一下,如果达到目标了就加载,如果达不到就重写
错误处理机制比较复杂,你可以一开始先加一些简单的,比如说标点不对什么的。虽说也不可能不对,不过可能由于你设计的问题,让顺序搞反什么的。所以这类能排出的先排除了。排除不了的统统抛出异常给编辑员,就是你了。解决不了的就丢给人类解决。
你可以总结一下,那些错误居多,然后写个逻辑自动修正这类错误。

回复 支持 反对

使用道具 举报

发表于 2013-9-9 10:17:00 | 显示全部楼层
接下来我们说简单的设计思路
你一开始不要让他去写太复杂的东西,就像你让一个初级程序员去开发操作系统是不现实的。
你可以先按照最简单的计算机考题,让他挨个过
这里你可以先不加载汉语语法分析什么的。
你设计一套简单的标准
让你的程序和你达成默契,用这个告诉他他需要打印什么样的代码
这样你就可以把各种考题变成简单的一些符号,输入给他,让他知道你要让他干什么
然后就是按照标配来走。所有的程序无非两个东西,循环,判断。
你就可以按照这个思路让他跑流程:
得到程序输出任务
扫描其是否需要循环处理?
是,处理。
否,跳过
看是否达成目标。
是,结束
否,继续扫描,进入“逻辑判断”
看是否需要逻辑处理?
是,需要几个?开始插入逻辑
否,跳过
看是否达成目标。
是,结束
否,继续扫描,进入“循环判断”
这样就行了
当然我这是简单思路,大家可以自由发挥让其更加合理化,效率化
你的程序会建立这颗树,然后根据需求往各种节点上插接各种逻辑。
可以解决一部分程序的问题
对于递归啊,函数啊,这些还要在这个基础上改造才能解决。
最好是加载一些可以画逻辑图的先决,然后根据图来生成程序
不用去加什么画图软件。动态生成一个数列或者多纬数列,然后加节点和映射就行了。
好好看看《数据结构》这本书。这个其实不难的。
回复 支持 反对

使用道具 举报

发表于 2013-9-9 10:24:00 | 显示全部楼层
后面你可以在上面加更多的高级货,比如说模块啊,函数啊,子系统啥的。
还可以加还原功能。可以预先让智能程序给自己存档。如果发生了意外的事情就销毁当前激活存档,可能的话把黑匣子之类的错误报告一并发回去。
问题求解和数理逻辑上,也可以把各个部件分开分类。根据需要调用和组合。至于分类方法大家可以自行定义,也可以用通用的标准配置。
在控制方面,最好不要给他弄成全自动的,高度半自动就不错了。因为我们的机器毕竟是家用山寨机,不是蓝光银河。
回到帖子主题内容上来,如何进化。我们还是改成优化好了。。。
那么如何优化呢,当然要你让他怎么优化他就怎么优化了。
你要让他随便优化,就是变大变强。最终结果只有,要么cpu或者内存硬盘耗尽死机,要么给你弄一堆毫无作用的东西,比如说给你电脑上下一大堆歌曲什么的。或许智能认为知识拥有量就是强力的一部分,并在下载音乐上没限制,而成了死循环。
回复 支持 反对

使用道具 举报

发表于 2013-9-9 11:02:00 | 显示全部楼层
周期与升级
如果你的电脑性能还行的话,不妨试试这个
不要死做一个智能,做那种群居式的智能。也就是多个小智能
智能之间可以组合并生成子程序,类似于繁衍,根据双方的优点来集合。当然了由于你无法确定什么是优点,也许现在的优点在以后是缺点,所以随机组合的。
然后适者生存,根据环境的不同留下合适的,删除掉一些不合适的。你就可以控制他们的方向了。别笑,双个体是效率非常高的优化方式。当然了,这里我们的智能程序无需区分性别。
让智能发挥最大功率的方法之一,是确定存在周期。
你可以理解成人类的生老病死,可是又不太一样。
如果做成这样,最大的优点是,你可以将智能程序从全开放方式,做成半闭合方式。
既一段新程序可以是全开放的,学习任意知识。主要是从父程序那里继承。继承方式类似与java,但是不是复制的,而是记录成功案例,既成功运行成效以后才会被记录,可以跑去一些无用的理论冗余。
随着时间周期的延续,他学习新知识的速度会逐渐下降。而使用一些固有的老程序,比例随着时间而增大。比如说20%的周期后,他有20%的程序被固化,像个新孩子。80%周期后,80%的程序都被固化,看起来像个老顽固。
这个模型可以一扫之前电脑喜新厌旧的毛病,让新的东西无法完全替换掉老的。保证系统的安全有效,更加稳定。同时,也不会由于固化,而让系统丧失更新能力,他的刷新还是有的,而且新一代的子程序会更加完善。而老的则在一定周期后被删除。释放空间,这样完美的解决了更新问题,效率分配问题,系统资源不足三个大问题。

回复 支持 反对

使用道具 举报

发表于 2013-9-9 11:26:00 | 显示全部楼层
可以说用大脑来控制你身体行为,那么你拿什么来控制你的大脑?
   大脑通过对自身活动的记忆和目的反馈来实现自控的。程序自我进化,也是在于它要能记忆自己做过什么,和认识到为什么要这么去做。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|人工智能实验室

GMT+8, 2024-4-26 11:46 , Processed in 0.017488 second(s), 8 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表