围棋

强化学习

大憨熊 提交于 2020-03-07 11:22:45
2016年3月有件大事,人工智能围棋机器人AlphaGo与围棋世界冠军、职业九段棋手李世石进行围棋人机大战,以4比1的总比分获胜,AlphaGo一举成名,人工智能吸粉无数。 接下来一年,AlphaGo版本机器人更是在围棋界所向披靡,2017年5月,在中国乌镇围棋峰会上,AlphaGo Master与排名世界第一的世界围棋冠军柯洁对战,以3比0的总比分获胜。围棋界公认阿尔法围棋的棋力已经超过人类职业围棋顶尖水平。 一年后,AlphaGo的研发团队Deepmind又推出了最强版的围棋机器人AlphaGo Zero。AlphaGo Zero是自学能力超强的机器人,经过短短3天的自我训练,自我对弈的棋局数量为490万盘,就强势打败了此前战胜李世石的旧版AlphaGo。然后继续自我训练,40天后出关,击败了打败柯洁的AlphaGo Master。 AlphaGo Zero的一大核心就是强化学习。 最近很多正在学习 flare老师的实战课程 的小伙伴都对强化学习感兴趣,那flare老师今天就来和大家说说听上去高大上的强化学习,也就是 reinforcement learning 。 1、基本概念 强化学习,根据机器行动给予奖励或惩罚,让机器对外部环境做出反应自己决定接下来做什么: 做对了,奖励一下,给颗糖; 做错了,惩罚一下,拿走糖。 嗯,核心就这么简单。我们来看个简单的例子:小朋友学走路

围棋

岁酱吖の 提交于 2020-01-22 13:10:20
笑傲江湖 天下风云出我辈, 一入江湖岁月催。 皇图霸业笑谈中, 不胜人间一场醉。 围棋 中国历史上夺冠最多的围棋职业棋手,是古力九段,也曾被称为李世石的一生之敌,八个世界冠军,非常了不起。但跟李世石的十四个相比,还是少了不少。 2014年古力,李世石的十番棋大战以李世石6:2获胜结束,如果按照吴清源时代的规则,古力应该是被打降格了。当然,2014年双方均已不在巅峰期,这一比赛无法代表双方的巅峰实力,实际上两人生平对局胜率基本持平,在各个场合也经常体现出英雄间的惺惺相惜,只能说比起李世石,古力的状态衰落似乎更早了一点。 现役最强的棋手柯洁,世界冠军数七个,只有李世石的一半,鉴于新一代00后年轻棋手已经快速成长,攻城略地,柯洁九段未来成就超越李世石的难度极大。 2016年,AlphaGo 4:1战胜李世石,AI正式征服围棋,从此役开始。但李世石的惊天一挖,测出了AI的盲点,依然努力的捍卫着人类最后的尊严。 18岁时,开始在世界大赛决赛挑战当时如日中天的石佛李昌镐九段。李昌镐九段以一人之力压制中日韩三国围棋多年,用江湖人物形容绝对是独孤求败一般的存在。然而年少轻狂的李世石竟然一上来就2:0压制李昌镐,并公然说李昌镐战斗力不行。大李默默无言,却在0:2落后的情况下绝地反击,3:2逆转李世石,给小李上了一堂成长课。 但岁月何曾饶过谁,江湖已经不再是大李可以只手遮天的

了解游戏编程与 AI

亡梦爱人 提交于 2020-01-17 16:41:01
噫语系列。。。 闲话 最近在重写我的一个 QQ 群机器人项目,并尝试将它改成更通用的结构,以方便在未来加入对 Wechat 和 Telegram 的支持。 在查资料的过程中,发现很多人认为一个群内多人游戏,不好写。 仔细想想,这个东西难不难写,不在群 robot 本身,而在 多人游戏 这个词上。 然后就专门了解了一下这个。游戏编程,和通常的 Web 后端差别很大。 Web 后端很多操作都是无状态的,操作基本都直接和数据库关联。 而通用的 session、验证码等东西,基本都有现成的库可用,而且这些东西只有两个状态,根本不需要去做复杂的设计。 但是对于游戏,就不一样了。就算只是一个简单的多人文字游戏,也需要维持多个状态: 需要先收到 /start,才能开始游戏。状态是游戏中。 参与游戏的用户,每个人都需要一个状态。游戏进行时,每个人的状态都会不断发生迁移。 需要一个全局的状态:谁是胜利者,或者别的什么。 群聊机器人一般都会服务多个群,每个群的全局状态需要分开。 什么时候游戏结束? 显然游戏编程,需要维护各种状态。状态和行为是核心。根据用户发出的命令,程序需要按情况更改整个游戏中的各种状态。 按我的想法的话,我需要一个游戏池来存放正在进行的游戏,用群id 来区分各群的游戏。然后每个游戏就会有一个对象来存放各种状态,全局的和各用户的都放在里边。 一个游戏,就是一个群会话

人工智能在麻将领域能够战胜人类吗?

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-05 22:20:23
一. 麻将和围棋有什么不同? 从博弈论的角度来讲,围棋是完全信息动态博弈,而麻将属于非完全信息动态博弈。围棋中对局双方所掌握的信息是对称的,而麻将中各对局者间所掌握的信息不对称。虽然大家都能看到每位牌手打过什么牌,但你不知道我的手牌是什么,我也不知道你的手牌是什么。这种信息不对称的产生的根本原因是牌墙的随机性。 围棋与麻将(或者说棋与牌,弈与博)的上述区别,决定了它们获胜策略的根本不同。棋类项目本质上就是蒙特卡洛树,获胜策略就是选择或迫使对手选择一个分支,这个分支下面所有的结局都是自己胜。只不过由于棋类变化很多,连 AlphaGo 也远不可能遍历整个树,所以 AlphaGo 会通过价值网络来估计某一分支下胜结局的概率。其实人类的思维也是类似的,在围棋里平白被对手屠掉一条大龙,或者在象棋里平白送给对手一个车总是不好的——在这些分支下,胜结局的概率大大降低了。 而牌类的获胜策略在于尽可能增大自己的得分期望(EV)。我并不知道我接下来要摸什么牌,或我的对手有什么牌,但所有可能的情形组成一个概率空间,我只需做出一个选择,使得自己的得分函数的期望最大。牌类策略的难点在于,影响这一概率空间的因素过多,且具体影响很难确定,比如对手打牌的习惯。 下图选自《科学化麻雀》,闲家愚形听牌打 10% 危险度的牌对攻,x 轴为自己和牌时得分,y 轴为牌局巡次,z 轴为自己的得分期望。 二. 何谓「获胜」?

四大围棋实战技巧

会有一股神秘感。 提交于 2019-11-29 08:21:13
围棋之所以经久不衰,它的长生秘诀就在于“耐玩”,不过会玩的人不多,玩的精的就更少了。小编之前在亲朋围棋和棋友们下棋的时候就学到了四句有用的棋谚,感觉对围棋技艺的提升有很大的帮助,下面小编就为大家介绍一些围棋技巧,希望对大家有所帮助。 1.腾挪自靠始 围棋技巧之腾挪自靠始:腾挪,是指在敌强我弱的情况下,处理己方孤子的一种手段。应注意的是: 腾挪的一方是在逆境中作战,正面硬拼必然会遭受较大的损失,而东碰西靠往往能求得较好的行棋步调。在某些时候,为了及时转身弃掉一些棋子也不足为惜。爱好者若能恰如其分地掌握腾挪技巧,做到弃取自如,围棋技巧将得到显著的提高。 2.敌之要点即我之要点 围棋技巧之敌之要点即我之要点。实战中,各种棋形都有其特定的要点,发现要点主要是凭借一定的实力和良好的感觉。但是,对于一些爱好者来说,则必须算清各种变化,从中领悟到要点之所在,若能正确运用"敌之要点即我之要点"这条棋谚,就等于为发现要点找到了一条捷径。 3.二子头必扳 围棋技巧之二子头必扳,这是关于棋形的棋谚,它是众所周知的名句。它说明的棋理是: 在双方短兵相接的作战中,为了使己方立于不败之地,对待对方的"二子头"应该毫不迟疑的扳住。只要自己能控制住大势,即使实地上有所损失也应扳头,此棋谚解起来较为容易,落实到行动上却不是很简单的。 4.势分入腹路皆公 围棋技巧之势分入腹路皆公,这句谚语要说明的棋理是: