Machine learning Tic tac toe机器学习-有效移动

Machine learning Tic tac toe机器学习-有效移动,machine-learning,deep-learning,tic-tac-toe,torch,q-learning,Machine Learning,Deep Learning,Tic Tac Toe,Torch,Q Learning,我在玩弄机器学习。特别是Q-Learning,你有一个状态和行动,并根据网络表现给予奖励 现在,对于初学者来说,我给自己设定了一个简单的目标:训练一个网络,使其能够以动作的形式为井字游戏(对随机对手)发出有效的动作。我的问题是网络根本不学习,甚至随着时间的推移变得更糟 我做的第一件事就是与torch取得联系,并为此建立了一个深度q学习模块: 然后,我编写了一个简单的井字游戏,其中一个随机玩家与神经网络竞争,并将其插入该示例的代码中。网络输出由9个节点组成,用于设置相应的单元 如果网络选择空单元格

我在玩弄机器学习。特别是Q-Learning,你有一个状态和行动,并根据网络表现给予奖励

现在,对于初学者来说,我给自己设定了一个简单的目标:训练一个网络,使其能够以动作的形式为井字游戏(对随机对手)发出有效的动作。我的问题是网络根本不学习,甚至随着时间的推移变得更糟

我做的第一件事就是与torch取得联系,并为此建立了一个深度q学习模块:

然后,我编写了一个简单的井字游戏,其中一个随机玩家与神经网络竞争,并将其插入该示例的代码中。网络输出由9个节点组成,用于设置相应的单元

如果网络选择空单元格(其中没有X或O),则移动有效。根据这一点,我给正奖励(如果网络选择空单元)和负奖励(如果网络选择占用单元)

问题是它似乎永远也学不会。我尝试了很多变化:

  • 将tic tac toe字段映射为9个输入(0=单元格为空,1=玩家1,2=玩家2)或27个输入(例如,对于空单元格0[空=1,玩家1=0,玩家2=0])
  • 将隐藏节点数在10和60之间变化
  • 尝试了最多60k次迭代
  • 学习率在0.001和0.1之间变化
  • 对失败给予负面奖励或仅对成功给予奖励,不同的奖励值
什么都不管用:(

现在我有几个问题:

  • 由于这是我第一次尝试Q-Learning,我有没有根本上做错了什么
  • 哪些参数值得改变?大脑有很多东西:
  • 隐藏节点的数量是多少
  • 对于这个问题,在上定义的简单网络结构是否过于简单
  • 我是不是太不耐烦了,不得不训练更多的迭代
  • 谢谢,

    -马提亚斯

    马提亚斯

    似乎您正在使用一个输出节点?“前进步骤中网络的输出是一个介于1和9之间的数字”。如果是这样的话,那么我认为这就是问题所在。我不会将其视为一个输出节点,而是将其视为一个分类问题,并将每个棋盘位置对应九个输出节点。然后将这些节点的argmax作为预测移动。这就是玩围棋游戏的网络的设置方式(有361个输出节点,每个节点代表电路板上的一个交点)


    希望这有帮助!

    你能发布你的代码吗?我的建议是:第一步,忘记神经网络,坚持所有tic tac toe状态值的表格表示。它们的数字是
    3^9=19683
    。使用Q-Learning,由于@John Wakefield:我目前正在创建一个简化版本,你可以获得更多的状态(2x1网格而不是3x3网格以最小化状态空间)。完成后我会发送代码。@davidhigh:我会阅读线性回归(AI意义上的).然而,我的主要目标是建立一个学习Q-learning的小型试验台,然后将其应用到我想到的一个更难的问题上。谢谢你的回答。我实际上使用了9个输出节点,我在最初的问题中没有很好地表达这一点。为了清晰起见,我现在对其进行了编辑。