人工生命 2.0.2 更新,模拟体全息存贮的模式识别

2019年11月12日

Frog | 人工生命 (https://gitee.com/drinkjava2/frog)

这是一个人工生命试验项目,最终目标是创建“有自我意识表现”的模拟生命体,技术架构基于02年提出的 一个人工脑模型。 这个项目永远没有结束的时候,开始于模拟一个简单的生命体,然后是青蛙、狗......, 结束于有“自我意识表现”的人工脑,或者说,结束于被机器人代替人类的那一天。

(接上回 给青蛙找个工作:走跷跷板),以下为本次项目更新内容 : 

2019-11-11  第一版字母的模式识别演示 
这是个比较重要的更新,也是青蛙切换到3D脑的第一个正式版本更新,它实现了ABCD四个字母的识别。测试时分别用ABCD四个字母,并同时加上一个声音信号进行训练,识别时只激活视网膜区,采用变形后的字体,即小一号的斜体字,从显示结果来看,识别效果还是很好的。另外这个模式识别是双向的,如果只单单激活听力区,也会在视网膜区成像。(如果要演示这点,需要将LetterTester.java中的seeImage和hearSound两行注释互换一下,并去除Cell.java中的59和60两行,这两行代码的作用是阻止光子逆向传播到视网膜上)。以下是这个模式识别的截图,黑色的小点表示视网膜发出的视觉波信号,蓝色的表示耳朵发出的听力波信号:在它们交汇的地方,有可能产生新的光子并逆向传播,用红色小点来表示,最终在波源处逆向成像。这个工作原理在细胞级别将相关的信号关联起来,也就是以前所说的体全息存贮的模拟实现,可以在三维空间实现信息的高密度存贮:
result6
这个模式识别的原理比较简单,不需要高等数学知识,每个人都能看懂,而且它可能更符合人脑的工作模式,它可以进行图像到声音的关联,也可以实现声音到图像成像的逆关联,另外还有两个重要优点:1.它可以同时处理多维的信号,也就是说可以同时处理多个图片、声音等信号。 2.它的训练速度非常快,没有采用什么海量的大数据来进行训练,只要任意有关联的信号,哪怕信号只出现一两次,它都会自动将它们关联起来,这个关联是动物的条件反射能够建立的基础。 
目前这个更新只是个基本原理的演示,还没有进行多个字母同时训练并通过比较信号强度进行分辨的功能,这个需要对声音信号进行编码。今后将在这个模式识别原理上进行扩展,进行声音的编码、多参数优化自动生成器官、把小蛇引入到虚拟环境等等一系列更复杂的任务。    

另外,在脑图上,本次更新添加了t、f、l、r、x五个快捷键,可以在脑图上选择顶视、前视、左视、右视、斜视这5个方向的视图。   

附录— 可以比较形象地解释这个模式识别的工作原理的比喻:
可以把具备动态触突的神经元比作一个果冻,光子来了,在上面撞了一个坑(动态触突)就被陷进去了(能量存储),如果来的多,或者速度快(能量大),一小部分的光子就被从果冻的另一头撞出去了(光直线传播,寻找下一个神经元,增加信息存储单元,实现体全息存贮)。如果在另一个角度又来了新的光子,同样的过程在发生,只不过在撞击的过程中,以前陷在其它坑里的光子有可能被撞出来,沿着撞击坑的路径直线逆向返回(即波的逆向成像,两个撞击事件,在神经元级别就被关联起来,关联的相关度取决于它们撞击坑的大小),原来的光子陷入的越多,则被撞出来的机率就越大(短期发生的事最先被回忆出来),随时间流逝,光子被果冻吸收(果冻变肥,有可能遗传),被撞出来的机率就越小(信息的遗忘),撞击坑也会自动修复(动态触突消失,脑神经又可以接收新的信息了)。如果反复地有光子撞击在同一个坑,这个坑就会变大,这个修复的过程会变得很慢,坑变大了后果就是,即使只有轻微的撞击,也可以很容易将大坑里的光子撞出来(即记忆曲线,复习的效果优于单次长时间学习)。 在某些位置,撞击太频繁、太强烈,不是在果冻上撞出坑,而是撞出一条通路,光子可以无损耗地通过,就形成了一个个传导通道(神经纤维),直到光子被某个果冻拦截为止。另外,撞球也遵守动量守恒原理,同一个方向运动的光子,最有可能将逆向的坑里的光子撞出来,也就是说同一个器官产生的相邻的两个信号不容易产生互相干拢。思考和意识,就好象一场撞球游戏。 

另外说明一下,本项目是一个外行根据自已的理解进行的神经网络探索试验项目,学术性和严谨性不够,项目设计思路仅供参考,欢迎指出问题。 

展开阅读全文
20 收藏
分享
加载中
精彩评论
太强了 👍
2019-11-12 11:47
2
举报
不明觉厉
2019-11-12 11:08
2
举报
最新评论 (16)
慢慢完善吧
2019-11-13 07:33
0
回复
举报
希望作者早日切换语言,java真不适合,不仅代码量大,启动也慢,也更消耗资源
2019-11-12 17:43
0
回复
举报
这是个探索项目,还在摸索中,目前不是性能瓶颈,而是根本路都没走通,过早优化,切换到C会干拢思维,拖慢开发效率,在开发效率和运行效率之间我选前者,因为更熟悉Java,而且平时大部分时间都浪费在开发上,而不是等待它运行。从长远看如果摸索出什么有用的成果,它的逻辑是要移植到并行蕊片上运行的。短期看,如果遇到性能瓶颈,可以通过提高硬件水平来解决。Java比C慢1~3倍左右,消耗资源在1~10倍之内,暂时还可以忍受。
2019-11-13 00:28
0
回复
举报
没说用c啊,用go也行啊
2019-11-13 13:59
0
回复
举报
喔,差不多,道理见上,关建是我本人对其它语言不熟。Go感觉就是带了垃圾回收的C。
2019-11-13 22:34
0
回复
举报
其他语言写起来都比java舒服,你试一下就知道了,按你的水平,学习go语言估计3天搞定,C#语法糖让你升天,node.js可以让你代码压缩10倍
2019-11-14 11:25
0
回复
举报
不急,等有了成果再说,如果有了成果,移植到其它语言是很简单的事,甚至都不需要我来做,如果没有突破,就算辛辛苦苦用C、用Go写也是没人看了,关键是思路和算法。
2019-11-14 12:17
0
回复
举报
回复 @yong9981 : 程序语言本身包含了思路,java这种纯OO语言表达力非常有限,会限制人的思路
2019-11-15 14:18
0
回复
举报
太强了 👍
2019-11-12 11:47
2
回复
举报
👍好厉害!
2019-11-12 11:13
0
回复
举报
不明觉厉
2019-11-12 11:08
2
回复
举报
这个模式识别的原理比较简单,不需要高等数学知识,每个人都能看懂

。= 。 为啥我还是没看懂
2019-11-12 10:46
0
回复
举报
这个灵感我是从体全息存贮的介绍中找到的,用两组光线照射介质,其中主光线组携带图像信息,另一个光线是参考光,参考光的入射角度或相位不同,会对介质造成不同的影响,当需要调出某组图像时,只需要使用与写入时对应的参考光照射介质即可。这个模拟只是把参考光的相位和角度换成了空间上的不同分布,也就是说两组信息互为参考光。这个更新比较仓促,只是个大概的原理,还有很多细节工作要做。
2019-11-12 12:06
0
回复
举报
6666666666666
2019-11-12 10:43
0
回复
举报
我看过,竟然更新了!666
2019-11-12 08:54
0
回复
举报
哇,终于又看到了这个更新,支持
2019-11-12 08:39
0
回复
举报
更多评论
16 评论
20 收藏
分享
返回顶部
顶部