691 Star 3.4K Fork 659

drinkjava2 / 人工生命

 / 详情

重开第一个issue记录当前开发思路

已完成
拥有者
创建于  
2018-07-13 03:26

算了,懒得在issue里记笔记,还是以前的评论方便,还是关了这个issue吧,以后一个问题发一个新的issue即可。

2023-01-11 一直有人说人工生命有点象深度学习,我不理解。直到最近发现时间序列上声音信号的模式识别,类似于RNN。图象识别需要的动眼和变焦功能,类似于巻积。随机连线以及声音到图像的双向关联,类似于全连接网络。这是巧合,也说明同一个目标下(通用智能)要采用的技术是相通的。
另外打算采用分层的多个4叉树代替8叉树,牺牲一点灵活性以提高分裂效率,可以手工控制各层大小,虽然本质上是一样的,8叉树理论上可以分裂出任意多参数的三维结构,但效率太低了,时间上等不起。如果是处理可分层的结构,不如用多层的4叉树,分层结构虽然丢失z轴方向参数的自动分裂生成,要手工设计z轴上层之间关联,但分层带来的隔离性也是有好处的,可以简化思维,方便手工添加不限数量的层,打破8叉树正立体的限制。除非是必须产生3维结构,否则就用多层4叉树结构。
2023-01-05 声音信号的存储问题。 如果去除图像,只有声音/行为/奖惩这三种信号,声音信号的关联是怎么存储的? 这个好象不能用平面全息通过空间上的相位关系来存储了,需要想一想解决方案。声音不见得必须关联到图像,再通过平面全息反射的方式来存储来保存关联。比如盲人,从来就没有视觉信号输入,那他的声音信号是怎么存储的?
平面全息要改成球面全息的结构更恰当,所有信号都占球面的一个区,这样所有信号之间,包括不同的音区之间都互为入射和参考信号,这样就不是通过平面来反射,而是直接所有信号互相关联和存储。
球面不能通过简化成多个平面来代替,因为同一个平面上的信号不能互相关联,而球面不存在这个问题。

2022-12-22 今天可能想通了痛苦和快乐信号是如何导致条件反射链的形成:
1)先说快乐信号,这个简单一些。任意信号(导致脑核细胞活跃) + 任意脑核随机行为顺出 + 快乐细胞兴奋, 只要时间上形成关联,就会由快乐细胞通过群播的方式加强最近的信号和行为输出之间的关联,形成信号->行为的短路,这个关联强度大时直接输出行为,强度小时就是脑内的思考,没有外在行为表现。
2)痛苦信号,这个与上面类似,只不过在痛苦信号消失时大脑要产生快乐信号。也就是说,痛苦本身不会产生条件反射链,也不是抑制神经兴奋,而是痛苦消失时产生快乐信号,即符合1的规则。从外在表现看即为形成逃避痛苦的行为输出。或者说:
任意信号 + 痛苦信号 + 某随机行为输出 +痛苦信号消失(=快乐) 即可产生 任意信号->某随机行为输出的短路关联
下面要用4叉树分裂算法(面全息存储用4叉树也够了),加上痛苦和快乐信号来进行模式识别编程(即信号输入、正误训练、条件反射链的建立)。如果成功,将会是一个巨大的进展,因为这是一种新的更贴近生物脑的神经网络整体架构。最后要考虑多个信号并发和连续运行的情况。

2022-12-08 关于时序不同的信号识别,比如:"国王"和"王国"产生不同的脑内图像。是因为"国王"的"国"声音区先激活时,脑核会先激活与"国"相关的图像或声音存储细胞,如国家,国王,国土,国境等,第二个“王”出现时,因为存储细胞特性是重复信号激活强度最大,所以对应的与“国王”相关的图像等信息被快速匹配出来。
类似地,"王国"的"王"声音区先激活时,脑核会联想与"王"相关的图像或声音存储细胞,如王冠,王子,王八,王国等,第二个“国”出现时,对应的与“王国”相关的信号被匹配出来。
也就是说,脑核的工作模式是用全息信号检索全息信号, 信号时间上的细微差别也会造成检索信号的巨大差别。
这里不讨论声波本身形成的音调转折等特征,实际生物脑这些音调特征也会参与全息检索,而且可能作为主信号。

2022-12-07 声音信号是单维的,怎么在脑核表面形成声母韵母的输入输出流?方式是通过强度。信号不是从左到右从右到左传播,而是在原地通过细胞激活强度的变化形成一个时间上的信号流。 类似地,视觉信号是一个三维图像,通过细胞强度的变化形成一个三维的图像输入输出流。流象波一样互不干扰,同一个时间同一个细胞的激活可能支撑着多个流信号。

2022-12-01 因码云评论消失了,现重开这个issue来记录当前开发思路。
目前开发目标是脑核的技术实现,主要思路是:1.脑核只处理最简信号,用面存贮实现模式识别 2.实现时序信号模式识别或反射,比如1/3和3/1的结果是完全不同的,这个就需要在1的基础上,把脑核的工作模式改成不间断的连续运行模式。声音信号按时间顺序自动成为一个流信号,流信号相当于一个一维的图像信号可以参与模式识别。一维的声音信号可以唤醒时间上相关的其它一维声音信号或其它单维或多维图像等输入输出信号,简单说就是脑核时间上相关的信号不管维数多少都是双向关联的。 3.如果参数分布只是在平面上,比如面存储的实现,可以把8叉树改成4叉树,以实现细胞在一个平面上的分裂,以加快进化和筛选速度。

==========以下为已完成或已放弃的开发计划====================

  • 最近在从事三维脑的构思和编程
  • 将脑结构改为3D模型,引入记忆和模式识别功能,这是一个非常大的改动,工作量接近重写整个项目,而且有很多细节需要考虑,只能边干边试了。困难很大,但是如果有收获就值得了,因为它的目标是实现通用的模式识别、记忆功能,它利用波的干涉驻点逆向成像成像原理(类似全息存贮),这是一种小样本模式识别,无需大数据训练。(2019-11-18更新,已完成字母的模式识别演示)
  • 在转到3D脑模型这个工作之前,先做一个青蛙走跷跷板的演示。这需要利用分组测试功能,每次只出现一个青蛙。 (2019.8.5已完成)
  • 分组测试功能,允许屏幕上样本少到只有一个 (2019.8.4完成)
  • 重构程序,让现有的所有硬编码数值参与遗传变异,自动调整到合适的值。(2019.6.18)(部分实现,暂停,不急 2019.8.4)
    *. 引入记忆group器官,参考现有算法,让它排布出的脑细胞具有记忆功能,例如环形连接的脑细胞会循环激活,可以永久或持继一断时间激活。 (见新任务3D脑模型 2019.8.4)
    *. 引入记忆模式识别器官,参考现有算法,让它排布出的脑细胞具有从低到高汇总功能。(见新任务3D脑模型 2019.8.4)
    *. 将记忆能力和痛觉器官(pain)结合,让frog不再出界。(可以做到,2019.8.4)
    *. 将记忆能力和进食奖励(happy)器官结合,提高frog捕食能力,最终目标是吃光屏幕上所有食物。(暂停,先建3D脑模型引入模式识别和记忆能力再说 2019.8.4)
    *. 开始加强group器官的进化,一个脑结构是网状的,可以有两种方式形成:从上到下从粗到精,象一棵树一样器官不断分裂;另一种方式是从底到上,单个细胞(如感光细胞)不断分裂,最终汇集成一个大网。个人倾向于前一者方式,比较好理解。(见新任务3D脑模型 2019.8.4)
    *. 眼睛要能从少数感光细胞进化成一群感光细胞。(可实现,2019.8.4)
    *. 模式识别能力和联想能力。这是长远要实现的目标,例如分清食物和天敌的形状、记住食物和天敌的形状。 (见新任务3D脑模型 2019.8.4)
  • 加入一个“初学者入门介绍”,介绍一下程序的环境、运行、软件本身的架构和思路,好方便对Java编程零基础的同学们快速上手,看懂源码。 (2019.6.15) (已完成,2019.6.19更新)
  • 第一步目标已基本完成,草履虫优胜劣汰的环境搭建和演示已能够运行了,下面转入第二个目标:进化出眼睛,让它能看到食物后向其运动,主动觅食。(基本完成,用四个感光细胞代替眼睛,先暂时关闭这条。眼睛是个大的主题,要再仔细考虑。将来的眼睛要能从少数感光细胞进化成一群感光细胞。2019.6.15更新)
    *第一步开发目标变更为草履虫优胜劣汰的模拟,这个更有趣和更有成就感(如果搞出来的话)。基本的架构思路和目标详见这篇https://www.oschina.net/p/frog介绍。(2019.2.16更新)(已完成,2019.6.15更新)
    *先定一个基础的开发目标:100x100的点阵,在上面随机点一个点,人工生命也必须模仿在相似的位置点一个点,并具备遗传功能,不能做到这一点的人工生命都被自然淘汰,模仿最快、最精确的人工生命生存机率最高。 (作废,改成草履虫的模拟,见上 2019.2.16更新)
    *第二步开发目标: 在点阵上从左到右依次点中一横,不能模仿的人工生命大部分被淘汰(作废,改成草履虫的模拟,见上 2019.2.16更新)

评论 (2)

drinkjava2 创建了任务
drinkjava2 修改了标题
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述

建议补充一些基础文档和内容, 方便一些感兴趣的同学们学习和加入...同时吸引更多人...

好的,我会在根目录加一个“初学者入门介绍.md”,把需要的运行环境、项目的各个模块、以及整个项目的架构、设计思路介绍一下,但开始阶段也仅限于此了,因为这个项目的目标太高太远,大部分时间都卡住了停滞不前,必要时会做一些大的重构,推翻以前的尝试,总的来说,这是一个试验项目,就象一个苍蝇困在房子里四处乱飞寻找出路,就算有文档,也只能是大概方向的介绍,不能做的很详细。

drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 任务状态待办的 修改为已完成
drinkjava2 任务状态已完成 修改为进行中
drinkjava2 任务状态进行中 修改为待办的
drinkjava2 修改了描述
drinkjava2 修改了标题
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 修改了描述
drinkjava2 任务状态Backlog 修改为Closed
drinkjava2 任务状态Closed 修改为Done

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
599264 taadis 1578928795 920504 drinkjava2 1578935955
Java
1
https://gitee.com/drinkjava2/frog.git
git@gitee.com:drinkjava2/frog.git
drinkjava2
frog
人工生命

搜索帮助