杀戮尖塔吧 关注:160,003贴子:2,129,689

关于人工智能在杀戮尖塔中的应用

只看楼主收藏回复

RT,本人高一学生看《深度学习》自学了一下深度学习,MNIST手写数字识别效果不错,用杀戮尖塔来实战一下(专业知识可能有所不足。。。如果有计算机专业的学人工智能的吧友应该能看的懂)具体数学运算还有算法什么的我就不赘述了,就讲建模方法吧。。。


IP属地:江苏来自Android客户端1楼2021-10-30 15:45回复
    我打算用我下文所述的第一种方法做这个程序。。。不过可能要等很久。。。等我写完了我就可以和我的信息学奥赛班的同学炫耀说我写的AI玩杀戮尖塔都比你好了。。。


    IP属地:江苏来自Android客户端2楼2021-10-30 15:45
    回复
      这次我想做的就是输入当前卡组的构筑和三选一或商店多选一的卡牌有哪些,然后输出对于其中选择哪个卡牌或者不选的推荐度。输出为经过softmax处理的归一化概率(其实不是推荐度,根据我下文会讲的训练数据的来源,其实是预测在这种情况下玩家会做出什么选择)


      IP属地:江苏来自Android客户端3楼2021-10-30 15:45
      回复
        所以现在我有两个方法,先讲第一个:用猎人举例,将每种牌按1~150编号。猎人共有75张牌,升级的也算上就是150张牌(不考虑有棱镜碎片这类的情况。。。要考虑也不是不可以,但是我懒得想了。。。再说遇见棱镜碎片的时候太少了,收集训练数据可能会变得异常困难)用前馈神经网络将向量映射到向量,输入向量a的前150个元素表示当前卡组的构成,a[i]表示当前卡组中编号为i的牌的个数。


        IP属地:江苏来自Android客户端4楼2021-10-30 15:45
        收起回复
          而输入向量后150个元素就是当前三选一/商店多选一的数据了。(本文中向量索引从1开始)a[150 + i]为1表示当前有这个牌可以选/买,为2表示三选一或者商店多选一没有这个牌。然后a[301]表示卡组的牌数。我知道牌数这个信息已经隐含在前150个元素里了,但是神经网络不知道。。。牌数这个特征可能需要神经网络花费额外的训练才能提取出来。。。既然它对于卡组的构筑选择有巨大影响而且很容易就可以提取出来,那么不如就放在最后一个元素吧。考虑到计算问题,可以在初始化该节点与下一层连接的权重时初始化小一些或者将该节点的值改为卡组牌数*0.01。


          IP属地:江苏来自Android客户端5楼2021-10-30 15:46
          收起回复
            隐藏层就随便放几个节点和几层。。。不要弄0层什么的就行。。。然后激活函数我选择tanh函数。


            IP属地:江苏来自Android客户端6楼2021-10-30 15:46
            回复
              接下来就是输出层了。输出向量o是一个151维的向量,对于前150个元素,o[i]表示选择编号为i的牌的概率。当然,对于任意i≤150,若a[i + 150] = 0,那么o[i]应为0。在实际应用时我们应该将那些a[i + 150] = 0的o[i]的值都忽略(即,预测选择的概率为0。因为根本就不可能选那个不存在的卡),只将剩余的输出通过softmax再输出。但是在训练时我们不应该忽略他们。然后o[151]表示不选牌的推荐程度。


              IP属地:江苏来自Android客户端7楼2021-10-30 15:46
              回复
                最后就只剩训练过程了。初始化什么的随便初始化为小正值即可。损失函数遵循最大似然原则,使用负对数似然函数。训练使用传统的BP算法计算梯度和传统的SGD进行参数调整。超参数随便填。。。比如说学习率设为0.01。。。然后训练数据的获取是通过游玩杀戮尖塔获得。具体过程如下:将当前卡组转化为a的前150个元素输入,然后将选卡选项如上文所述输入,期望输出为一个one-hot向量,表示你的选择,然后再执行BP与SGD即可。当然,这样的话会训练一个水平和你差不多的而且只会选牌的AI。。。不过也不错了


                IP属地:江苏来自Android客户端8楼2021-10-30 15:46
                回复
                  。。。表述可能不准确。。。


                  IP属地:江苏来自Android客户端9楼2021-10-30 15:51
                  回复
                    这也没人看得懂啊


                    来自Android客户端10楼2021-10-30 16:38
                    回复
                      支持ai抓牌,牌在特定时刻的价值可以量化了吗


                      IP属地:广东来自Android客户端11楼2021-10-30 17:12
                      收起回复
                        想多了 哪来的数据给你训练


                        IP属地:上海12楼2021-10-30 17:17
                        收起回复
                          ai玩尖塔比不上ai下围棋那么快吧?比如人下1把的时间ai能下100把,但是玩尖塔的话ai这方面还有优势吗?要是和人玩的速度一样,我感觉还是人厉害。


                          IP属地:浙江来自Android客户端13楼2021-10-30 17:36
                          收起回复
                            训练ai自己打牌还是单纯抓牌


                            IP属地:广东来自Android客户端15楼2021-10-30 18:01
                            收起回复
                              你这个问题就在于只靠自己打牌的话样本提供效率太低了,不是运算量的问题而是没那么多数据喂给你的ai,毕竟卡组结构,选手水平,进阶数量以及血量遗物情况都是有影响的(你之前提出的模型里好像血量,遗物x,跳过都没提到)


                              IP属地:上海来自Android客户端16楼2021-10-30 18:35
                              收起回复