SC AI设计的强力纠错

昨天熬了一夜之后,在非常兴奋以及脑袋糊掉的状态下写了最近的工作进展和思路。。可惜大多数都是语无伦次。。
今天在仔细读过之后,发现,大多数的想法,都是在写前面几个段落的时候和快要写完的时候不一样,结果导致前后很多矛盾,再加上使用了很多似是而非的术语,让整篇文章几乎没有说对的地方。。

这里也不可能把所有的毛病都改掉了,不过也好上一篇文章成了只有我自己才能看懂了胡言乱语。。。

先说说神经网络吧。上一篇文章多次提到神经网络,其实是指的几个不同的东西。并且这几处都没有给出神经网络的构造。而真正给出构造的一处,即采取各单位相连以广播行为等的那个构造,其实不是神经网络,最多只能说是一个参考神经网络而设计的通信模型。在Holland的一本叫做emergence的书中曾经提到过一种称之为元胞结构的构造,可能这个设计更近似于那个构造,但也还是有很多不同之处。应该说这是一个实验性的构造,也只是我的一时想象,暂时不能说他能够给AI设计起多大的帮助。

而至于使用神经网络结构来学习几项重要的特征,比如是否被封闭(能否逃离),目标健康程度能否在一击内消灭(计算护甲、hp、shield等),同理也可用上述原理计算自身是否安全。这些特征采用神经网络学习是有可能的。神经网络是一个相对静态的结构,必须用于学习能直接得到结论的结果。当然这里我说的神经网络是指没有环路的单馈三层神经网络了。这是一种成熟的技术,可以在AI学习中有很多应用。但也正是这个原因,使得他无法应用于博弈模型这样的无法立即得到反馈的机器学习中来。

昨天文章中说到的“估值函数”也是笔误,其实我想说的只是找到了几个重要的特征值,而没有希望直接设计估值函数。其实我昨天的想法是,通过设置神经网络或者类似于神经网络的其他模型,只要找到了估值特征值,令模型自行学习权值,则估值函数可以通过机器学习得到。这点也是昨天没有说清楚的。。

总之目前的状态是初步的想法有了,但是很多具体细节还没有想清楚。并且前面提到的最重要的部分,也就是类似于“元胞结构”的部分,还有很多没有明确定义的东西。这些地方还需要继续想清楚。

以上

SC AI 神经网络模型和遗传编程

今天wp升级,手欠顺便升级了一下theme,结果忘记备份导致原先的更改全部消失,又重新折腾了好久。bo的外观稍稍有点变。。

昨天由于一整天没有干正事,导致晚上相当悲剧。。熬了一整夜,不过 SC AI的神经网络模型基本上有了框架了。接下来就可以根据各种YY往里面增加参数、估值函数和各种加权了。

目前仍然以考虑zealot为主,不过我发现对zealot适用的模型,对dragoon同样适用,只是需要让他重新适应一次估值函数的权值就可以了。因此这里还是继续仅讨论zealot。首先,确定每个单位拥有进攻和溃逃两套互不相干的策略机,然后给定一个决定是进攻还是溃逃的决策机制,就可以了。

这个决策机制我称之为勇气。当估值函数超过阈值的时候,认为这个单位士气高涨,会继续进攻,而当估值函数低于阈值的时候,这个单位士气低落,会决定溃逃。如果以zealot的攻击范围为单位,将zealot周围区域分成8个方格,则可将每个方格内是否有敌军或友军单位,作为一个神经元输入,更远的敌军或友军单位,通过更多的神经元相连间接得到,任何单位决定进攻任何目标或溃逃都需要作为一个信号向外部发送并引起这个神经网络内的其他神经元的策略改变。参考神经网络模型的疲劳机制,当单位持续士气高涨的时候,会将阈值按照一定的因子提高,使之勇气下降,同理,当单位持续溃逃的时候,会将阈值相应降低,使之变得较为容易参战。这个可变的阈值,可称为单位的勇气。

勇气的估值参数主要有如下几点:自身hp和shield,正在攻击自己的敌对单位数量(以及他们的被攻击情况和健康情况),自己正在攻击的敌对单位hp和shield。考虑这些的目的主要是为了估算自己能否在生存情况下消灭正在攻击的敌人。当然这个逻辑我不准备放入估值函数中,而令其通过神经网络训练学习得到。通过给定不同的加权估值,经过训练应该能得到和人思考出的相似的结论。

假如勇气决策为进攻,则选取攻击决策机,并令其给出一个攻击指令。攻击指令可以是:攻击最近的敌人,攻击hp和shield按照某种权值计算后健康程度最差的敌人(这和需要几次攻击才能消灭敌人有关系,需要折算护甲,攻击类型和目标体积的关系等复杂内容,例如Dragoon拥有20的damage,可是攻击被打光shield的zealot时一次攻击只能造成9hp左右的伤害,这是因为dragoon的爆炸攻击类型对zealot的小型单位只能造成一半伤害,而同时未升防御的zealot拥有1的armor,会抵消10%左右的伤害),攻击盟友正在攻击的敌人,攻击威胁最高的敌人,以及保持目前攻击目标不变。而得到这个攻击指令的效果,又可以采用:攻击单位命令,移动攻击命令,巡逻命令,移动/待命等命令来实现。因此想要使用一个模型来模拟全部的可能性,实在不可能。这里必须采用遗传编程的方式,令不同的策略模型在竞争中互相杂交和进化,最后得到较优的结果。

溃逃机制主要需要考虑的是两种特殊情况,即被友军封闭和被敌军封闭。假如溃逃单位被友军封闭,最好的策略是能够通过该单位向四周发送一条信号,而使合适的单位为其让路。这个信号同样可以用于保持阵型,即“最佳防御位置”的确定。而假如溃逃单位被敌军封闭,则应该立刻变为英勇,因为无论如何也逃不出去了,应该给敌人以最后的伤害。但如何确定某单位是否被封闭了?BWAPI似乎提供了函数,但我暂时还没有测试。否则使用周围单位的位置和权值,让神经网络自己去学习也是可行之道,不过似乎大材小用了……

以上就是最近一段时间测试和思考的内容。另外经过很多测试,对BWAPI和星际争霸游戏的各种特点也慢慢熟悉了,相信对接下来的开发会有帮助吧……

欢乐的标点

偶然在推上跟人聊起了标点符号,忽然引起了我的文艺欲…于是又手机爬上来写博…

标点符号其实是一个大家庭。

逗号和句号是一对白发夫妻。逗号是老奶奶,还有点唠叨,句号是老爷爷,喜欢沉默。他们两个相处得最久,平平淡淡的相守。

问号和叹号是小姑娘小伙子。一个精神!一个美貌?他们喜欢三三两两地吵闹!!?也许让人震惊!!!也许莫明奇妙???

括号是个闷骚的宅男(虽然他肚里有千言万语,也从没说出过半句)。

引号是”火星人”,他喜欢重复别人说过的话,因为他还在练习”地球语”。另外他喜欢”阴阳怪气”地强调什么”东西”,结果连”天才”也变成了”蠢驴”。

省略号也挺闷骚…关键他喜欢装酷…身批西装,戴着墨镜,你问他什么,他都一脸酷样地说:”……”。当你怕麻烦的时候,还有不想说出口的话的时候,就会需要这个保镖…那些烦恼就可抛之脑后。

如果你不喜欢省略号那小样,你还可以选择——破折号。破折号也能表达语言的——断续——他还能当括号用——也能表示话没说完的纠结——
当然啦,他比括号省略号冒号更有魄力——否则怎么说是破折号呢——

好吧,还有好多标点就不一一登场了…总之文无定法咱就把语言文字还有标点符号都活用起来呗,让他们更加欢乐,充满生机多好~

寻找第四维

今天想了很久,感觉我们世界的维度不只有三个维度应该是一个相当合理而自然的事情。反倒是这个世界仅有三个维度,是一种令人难以信服的说法。

当然了,这其实是早就有人证明的了。比如因为引力导致的空间扭曲,会让光线的运行轨迹发生弯曲,就是一个好证据。根据广义相对论,引力导致空间扭曲。这句话我一直没有好好理解过。假如三维的平坦空间被扭曲,可以认为一定存在一个包含这个三维空间的四维空间,而那个三维空间是在这第四个维度上发生扭曲。当然这也仅仅是一种看法了。你也可以认为由于引力的影响,导致根本不存在平坦的空间体系。因此所有三维空间都是不平坦的。但是,假如这两种说法都是合理的,我认为前一种说法更简单。虽然多了一个维度,却让空间扭曲变得形象而自然了。

是不是说,其实我们的宇宙包含很高的维度都有可能(比如弦论推算的),只是人的感官没有感受更高纬度的能力呢?又比如,我们的宇宙应该被推断为“有限无边”的,这样的宇宙的体积是有限的,但是假如你驾驶飞船,无论如何也不可能飞到宇宙之外。这样的推断是合理的,因为宇宙体积若是无限的,将导致无穷大的质量和无穷大的引力,这是不可能的。而有限大的宇宙,假如有一个边界,那么“宇宙之外是什么”,将对前面的理论形成矛盾。因为“宇宙之外”假如还有物质,那就应该认为那些物质还属于宇宙,反复提出这个问题的结果是推出“宇宙无限”。所以“有限无边”的宇宙是一个在逻辑上较为靠谱的假设。而在这个假设下,宇宙是一个四维球体又是一个较好的解释。因为你无法想象一个三维球体或任何其他形状可以实现“有限无边”。假如是四维球体,就如同三维球体的表面实现了二维的有限无边一样,四维球体的“表面(其实应该叫做“表体”更合适)”则应该能够满足三维的“有限无边”。

以前有种说法是,更高的维度收缩了,以至于无法被发现。是否其实是反过来的,其实更高的维度是在更大的尺度上展现出来的,反倒是我们的感官可以观察的尺度太小了,以至于发现不了更高的维度呢?

寻找高纬度的好例子是古人证明地球是圆的的步骤。他们发现纬度不同的两个地区的正午日影并不等长(其实他们是观察日光是否直射到水井里啦)。地球表面是二维曲面。证明这个面在第三个维度上发生弯曲的方法,是通过考察距离遥远的两个地区。假如我们相信第四个维度是存在的,仅仅是因为尺度过大而无法发现,我们应该可以通过更大尺度的测量来得出吧。

但是,最令人担心的就是第四个维度无法通过人的感官察觉。以二维事物为例,假设存在一种无法感知第三个维度的物种,其中的两个生物叫做a和b。当a将一个二维茶杯送给b的时候,a感知到茶杯的二维移动。也就是在水平的前后左右四个方向的移动。他感觉到茶杯向b移动,并最后送到b的手中。但其实a和b是存在于三维空间中的,其实a和b在第三个维度上并不在同一个高度上。其实茶杯还略微向上移动了一点点距离。但是由于a和b都不具备感知第三个维度的能力,以至于他们没有察觉到茶杯的高度上的位移。在他们看来,茶杯经历了水平位移之后准确交给了b,一切都符合逻辑,没有存在第三个维度的可能性(结果a和b就都杯具了。。)。

假如是这样,假如由于这个缘故导致我们无法发现更高的维度,是不是我们就完全无法设计实验证实第四个维度的存在了呢?

应该还是有机会的。因为假如是那样的话,我们的世界应该是高维世界的一个三维投影。当我们在较高维度上变换角度的时候,这个投影应该会发生某种变形。只要能找到一种方式,使得我们能够观测到的东西,在更高的维度发生旋转,我们就应该能够抓住机会,发现这个新的维度。

当然了,我这里只是空谈空想而已。假如世界真的有更高的维度,我希望我能用我的双眼证实它的存在。