他实现了AlphaGo Zero的算法,发现可能还得训练1700年 | 代码

简介:
本文来自AI新媒体量子位(QbitAI)

AlphaGo退隐,留下身后一众你追我赶的围棋AI。

比如说前些天在野狐上连斩多名职业选手的新版绝艺“符合预期”,又比如说多年研究国际象棋和围棋AI的gcp,最近又把AlphaGo Zero的算法实现出来放到了GitHub上,起名叫Leela Zero

8897379df25c288fa3c9e3070c3e34394d2a2c9c

地址:https://github.com/gcp/leela-zero

gcp是谁?

Gian-Carlo Pascutto,这是他的全名。

b3ca65fc2aaec8caa1069d791d9937db6b0e3d5f

这位比利时程序员小哥,研究用计算机下棋已经不是一年两年了。早在上个世纪,他就开始在Adrien Regimbald的开源象棋引擎Faile基础上开发自己的国际象棋软件了。

他所开发的国际象棋软件名叫Sjeng,苹果Mac电脑自带的国际象棋软件,所用的计算引擎就是开源版Sjeng。2003年,这位小哥还开发了一个商业版的Deep Sjeng。

Sjeng赢得过2008年世界快速计算机国际象棋锦标赛冠军、2009年世界计算机国际象棋锦标赛冠军,以及2010和2011年的网络计算机国际象棋锦标赛。

后来,gcp的兴趣转向了围棋。

他所开发的围棋软件Leela也可以说是很厉害了,2008年,Leela获得了Computer Olympiad(计算机奥林匹克)19×19围棋比赛的第三名和9×9围棋的第二名。

2017年2月,他与时俱进地发布了新版Leela,在其中用上了深度学习技术。今年8月,这个围棋软件在首届世界智能围棋公开赛中排名第8,排在它前边的,有中国大陆的绝艺、天壤,台北的CGI,日本的DeepZenGo、Rayn、AQ和韩国的石子旋风。

对了,你用过强大的音频播放器foobar2000吗?这位小哥也是作者之一。

自学版AlphaGo Zero发布之后,gcp显然要再与时俱进一次。

Leela Zero

这一次与时俱进的成果,就是Leela Zero。

Leela Zero是AlphaGo Zero论文Mastering the Game of Go without Human Knowledge的实现,据gcp在GitHub上介绍,这个实现非常忠于原文,目标就是搞一个开源的AlphaGo Zero。

作为AlphaGo Zero的忠实实现,Leela Zero使用了蒙特卡洛树搜索(MCTS)和深度残差卷积神经网络堆栈,不需要输入人类棋谱,可以在自我对弈中提升。

但是,Leela Zero和真正的AlphaGo Zero还差一个很重要的东西:网络权重。

gcp在Leela Zero的GitHub说明中称,这份实现中不包含网络权重,如果能搞到AlphaGo Zero的权重,这个程序能和真的狗一样强。

但问题在于,他算了一下,如果要在普通消费级硬件上重新计算一遍AlphaGo Zero的权重,也就是让Leela Zero进化到AlphaGo Zero退隐时候的水平,需要1700年。

这个普通消费级硬件,指的是一块英伟达GTX 1080 Ti。

所以,Leela Zero现在应该算是个没有灵魂的躯壳,等着来自大规模GPU的计算力赋予它真正的生命。gcp把这个算法实现出来之后,就开始到处发帖征集志愿者来一起贡献GPU算力训练它。

如果你不想贡献GPU,只想试试这个围棋软件的话,gcp也提供了一版用人类棋谱训练的小型网络供下载:https://sjeng.org/zero/best_v1.txt.zip。

当然,还是一起训练完整版Leela Zero更exciting。

41f1ebf0deb3760ef195a2e42eaabdb3e51738a0

本文作者:夏乙
原文发布时间:2017-11-27
相关文章
|
14天前
|
算法
分享一些提高二叉树遍历算法效率的代码示例
这只是简单的示例代码,实际应用中可能还需要根据具体需求进行更多的优化和处理。你可以根据自己的需求对代码进行修改和扩展。
|
1月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
64 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
26天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
30 3
|
25天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
1月前
|
存储 缓存 算法
如何通过优化算法和代码结构来提升易语言程序的执行效率?
如何通过优化算法和代码结构来提升易语言程序的执行效率?
|
1月前
|
搜索推荐
插入排序算法的讲解和代码
【10月更文挑战第12天】插入排序是一种基础的排序算法,理解和掌握它对于学习其他排序算法以及数据结构都具有重要意义。你可以通过实际操作和分析,进一步深入了解插入排序的特点和应用场景,以便在实际编程中更好地运用它。
|
1月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
1月前
|
算法 Java C++
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
|
1月前
|
缓存 分布式计算 监控
优化算法和代码需要注意什么
【10月更文挑战第20天】优化算法和代码需要注意什么
18 0
|
1月前
|
算法 C++
蓝桥 算法训练 共线(C++)
蓝桥 算法训练 共线(C++)
下一篇
无影云桌面