【面试现场】如何设计可自学习的五子棋AI?

点击上方"Java学习之道",选择"关注"公众号

每天10:24,干货准时送达!


640?wx_fmt=jpeg


小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司。

640?wx_fmt=jpeg


今天他去了一家国内人工智能巨头公司面试了。


简单的自我介绍后,面试官开始发问了。


640?wx_fmt=jpeg



【面试现场】


640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg


640?wx_fmt=jpeg

题目:如何设计可自学习的五子棋AI


640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

【请教大神】


小史回到学校,把面试的情况和计算机学院的吕老师说了一下。


640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

【AlphaGO】


640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

吕老师:一开始的AlphaGO是什么都不知道的,它是随机落子。但是它并不是random一个点,而是根据现场的情况和自身的算法,来落子,只是算法中的参数是随机的,所以落下的子也是随机的。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

吕老师:这就要靠人去设计了,当然我们现在有一些比较成熟的神经网络模型,选好之后,所谓的训练啊,学习啊,其实都是在调节里面的参数。

640?wx_fmt=jpeg

【五子棋AI设计】


640?wx_fmt=jpeg

吕老师:首先我们来看你的算法,你会发现它的规则都是定死的,如果出现一种没有考虑到的情况,那么算法就不能进行堵截。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

吕老师:哈哈,如果这样做的话,这种情况是无穷无尽的。而且五子棋的玩法比较简单,你还能设计出这样的规则,像围棋这种复杂的棋类,你可能没办法去设计这些规则了。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

小编注:关于这种算法的具体实现,由于篇幅较大就不在文章中具体展开了。想了解具体实现的朋友可以观看我在慕课网录制的免费视频教程:JS实现人机大战之五子棋(AI篇),文末点击阅读原文可进入。


【AI】


640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

吕老师:小史,你看4个子的权重,你给10000,或者给50000,甚至给1个亿,对于其他值来说都是绝对高的值,所以最后效果应该是一样的。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

吕老师:我们刚刚设计的这个五子棋算法,其实还是很简单,所以搜索空间并不大,如果是围棋这种复杂棋类,搜索空间将巨大无比,那就要采用非常先进的AI算法了,里面可能有成千上万个参数,训练起来计算量也是非常大,会有很多降维算法在里面,这些等你真正遇到,我再给你讲吧。

640?wx_fmt=jpeg

640?wx_fmt=jpeg



现场是公众号【互联网侦察】推出的一个全新的板块,感兴趣的小伙伴可以直接搜索公众号名字关注哦!面试现场系列旨在回放真实的面试过程,并对面试题进行全面解析,提供多种思路,比较优劣,希望对大家的面试有所帮助。


640?往期回顾:

【面试现场】如何判断一个数是否在40亿个整数中?

【面试现场】如何实现可以获取最小值的栈?

【面试现场】为什么要分稳定排序和非稳定排序?

【面试现场】如何编程解决华容道问题?

【面试现场】如何找到字符串中的最长回文子串?

【面试现场】如何在500w个单词中统计特定前缀的单词有多少个?

【面试现场】如何在10亿数中找出前1000大的数

【面试现场】如何编程获得最多的年终红包奖?

【面试现场】如何编程解决朋友圈个数问题?

-END-

    喜欢本文的朋友们,欢迎关注订阅号Java学习之道,收看更多精彩内容!

640?

    一 起640?力吧!

640?wx_fmt=png

MobiusStrip CSDN认证博客专家 Java Java学习之道
欢迎关注微信公众号:【Java学习之道】-记录Java学习路上的点点滴滴;也欢迎来访我的博客:https://www.mmzsblog.cn
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页