杀戮尖塔吧 关注:163,446贴子:2,201,009
  • 10回复贴,共1

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

取消只看楼主收藏回复

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
                  回复
                    抓牌确实要考虑很多东西。。。但是我的目标大概就是个进阶5能碎心的AI就行,因为我的同学还没碎过心,我能给他说我写的AI比你厉害(


                    IP属地:贵州来自Android客户端32楼2021-10-31 08:36
                    收起回复
                      我信息学奥赛又要打NOIP了。。。等我打完在写吧。。。所以等到两个星期后我再来写


                      IP属地:贵州来自Android客户端47楼2021-11-06 15:49
                      回复