自学围棋的AlphaGoZero,你也能用PyTorch造一个|附代码实现(8)
2023-05-04 来源:飞速影视
训练用的损失函数表示如下:
1class AlphaLoss(torch.nn.Module):2 def __init__(self): 3 super(AlphaLoss, self).__init__() 4 5 def forward(self, pred_winner, winner, pred_probas, probas): 6 value_error = (winner - pred_winner) ** 2 7 policy_error = torch.sum((-probas * 8 (1e-6 pred_probas).log()), 1) 9 total_error = (value_error.view(-1) policy_error).mean()10 return total_error
三是评估(Evaluation) ,看训练过的智能体,比起正在生成数据的智能体,是不是更优秀了 (最优秀者回到第一步,继续生成数据) 。
1def evaluate(player, new_player):2 results = play(player, opponent=new_player) 3 black_wins = 0 4 white_wins = 0 5 6 for result in results: 7 if result[0] == 1: 8 white_wins = 1 9 elif result[0] == 0:10 black_wins = 11112 ## Check if the trained player (black) is better than13 ## the current best player depending on the threshold14 if black_wins >= EVAL_THRESH * len(results):15 return True16 return False
第三部分很重要,要不断选出最优的网络,来不断生成高质量的数据,才能提升AI的棋艺。
三个环节周而复始,才能养成强大的棋手。
年幼的SuperGo
小笛用学校的服务器训练了AI棋手一星期。
SuperGo还年幼,是在9x9棋盘上训练的。
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号