阿诗玛,AI赌博——怎样教神经网络21点的游戏? (带导线)-188体育_188bet体育在线_188体育登录

好莱坞在线 249℃ 0

作者 | Tony Yiu

编译 | Skura

修正 | 唐里

原文标题:Teaching A Neural Net To Play Blackjack

不久前,咱们开发了代码来模仿 21 点游戏。经过这些模仿,咱们发现了赌场之所以具有优势的要害驱动要素。首要是以下 2 点:

  • 赌场迫使玩家在庄家面前采纳举动(面对的是不完整的信息),然后获得了 21 点阿诗玛,AI赌博——怎样教神经网络21点的游戏? (带导线)-188体育_188bet体育在线_188体育登录玩家的优势。这首要会让玩家面对破产的危险(所以他们或许在庄家有时机采纳举动之前就现已破产了)。

  • 当玩家的手牌值总数在 12 到 16 之间时,他们特别处于危险之中(他们或许会被下一张牌打爆),而庄家则显现出一张高数值牌。在这些状况下,假定庄家手中的牌总点数许多,则玩家要么拿牌要么不动。咱们能够经过玩家在 12 到 16 之间取胜或平局的概率来直观地看到这一点。

取胜或平局的概阿诗玛,AI赌博——怎样教神经网络21点的游戏? (带导线)-188体育_188bet体育在线_188体育登录率与玩家手牌值总数(21 未显现,由于概率为 100%)

最终,咱们调查到一个简略的战略:只需在没有时机爆炸的状况下才拿牌,这大大提高了咱们取胜的几率,由于它将爆炸的危险彻底搬运到了赌场。

假如你不熟悉 21 点游戏,我之前的文章描绘了玩这个游戏的规矩(https://towardsdatascience.com/lets-play-blackjack-with-python-913ec66c732f)。

但深度学习能做得更好吗?

本文的方针是评论咱们是否能够用深度学习来找到一个比上面更好的战略。咱们将:

1、使95117是什么电话用咱们上BY2幼年照曝光次编码的 BLUJACK 模仿器生成数据(经过一突组词些修正,使其更适合于练习算法)。

2、编码练习神经网络玩 21 点。

假如你不熟悉神经网络,我在这篇文章中写过它们的简介(https://towardsdatascience.com/understanding-neural-networks-19020b758230)。

一个简略神经网络的视觉缺陷

在咱们开端练习之前,让咱们退一步,快速评论一下在这种状况下运用神经网络的优缺陷。神经网络是高度灵敏的算法——像软粘土相同,神经网络调整自己,以习惯数据的归纳。神经网络能够很简略地处理那些会给线性回归等带来费事的数据。此外,网络中的层和神经元将硫磺皂学习数据中或许存在的任何深度嵌入的非线性联系。

可是,这种功用是有价值的——神经网络是一个黑箱模型。与回归不同的是,咱们能够经过调查回归系数来了解模型是怎么做出决议计划的,神经网络并不具有这种透明性。此外,神经网络也有或许把咱们的数据拟合得太好,以致于不能很好地归纳样本外数据。在我看来,这些缺陷值得紧记,并为其规划保护办法,但它们并不是逃避运用神经网络的理白头发是什么本来由。

生成咱们的练习数据

在练习神经网络之前,咱们首要需求弄清楚怎么结构练习数据,这样咱们用它树立的模型才会是有用的。

咱们想要猜想什么?在我看来,咱们的方针变量有两个者:

1、输掉竞赛的或许性。考虑到这种状况,咱们或许期望模型告知咱们输的概率是多少。再说一次,只需当咱们能够增加或削减赌注时,这才有用,而在 21 毛主席诗词点游戏中咱们不能这样做。

2、相反,咱们期望咱们的神经网络能够辨认正确的动作,拿牌或不动。所以咱们的方针变量应该是「正确的动作是拿牌仍是不动」。

实际上我花了一段时刻才找到最好的办法来设置这个。下面这是我想到的。

咱们需求一种办法让神经网络知道给定的动作是否正确。它不需求满有把握,只需求大体正确。所以我决议一个动作是否正确的办法是模仿 21 点游戏:把牌交给玩家和庄家,查看是否有人有 21 点,只做一个动作(拿牌或不动),模仿游戏完毕并记载成果。由于模仿玩家只做一个决议,咱们能够经过他是赢仍是输来评价这个决议的质量:

  • 假如玩家拿牌并取胜,那么拿牌(y=1)是正确的决议。

  • 假如玩家打输了,那么不动(y=0)是正确的决议。

  • 假如玩家不动并取胜,那么不动(Y=0)是正确阿诗玛,AI赌博——怎样教神经网络21点的游戏? (带导线)-188体育_188bet体育在线_188体育登录的决议。

  • 假如玩2型糖尿病家不动并输了,那么拿牌(y=1)是正确的决议。

这答应咱们练习出一个模型,其输出是一个猜想是拿牌或许不动。其代码与上阿诗玛,AI赌博——怎样教神经网络21点的游戏? (带导线)-188体育_188bet体育在线_188体育登录一次相似(https://towardsdatascience.com/lets-play-blackjack-with-python-913ec66c732f),因而我不会在这里给出具体的概述(你也能够在我的 github 上找到它:https://github.com/yiuhyuk/blac中国移动手机营业厅kjack)。其首要特点是:

  1. 庄家的正面卡(另一张躲藏起来)。

  2. 玩家手上牌的总值。

  3. 玩家是否有主力。

  4. 玩家的动作(拿牌或不动)。

方针变量是由上述逻辑界说的正确决议计划。

练习神经网络

咱们将运用百度手机卫兵 keras 库练习咱们的神经网络。咱们需求导入的库文件为:

from keras.models import Sequentialfrom keras.layers import Dense, LSTM, Flatten, Dropout

现在咱们设置输入变量来练习神经网络。变量 feature_list 是一个列表,其间列有我在上面列出的特征(x 个变量)的列名。dataframe model_df 是存储我运转的 21 点模仿的一切数据的当地。

# Set up variables for neural netfeature_list = [i for i in model_df.columns if i not in ['dealer_card','Y'琪色,'lose','correct_action'] ]train_X = np.array(model_df[feature_list])train_Y = np.array(model_df['correct_action']).reshape(-1,1)

实例化和练习神经网络的代码行十分简略。榜首行(第 1 行)创立一个次序型神经网络,它是神经网络层的线性序列。榜首行之后的代码逐一地向咱们的模型中增加层。

最终,关于最终一层,咱们需求挑选一个激活函数。这将神经网络的原始输出转换成咱们能够解说的东西。在最终一层需求留意隆回天气预报两件事。首要,它只包括一个神经元,由于咱们正在猜想两种或许的成果(二分类问题)。第二,咱们运用 sigmoid 函数激活,因yuan为咱们期望咱们的神经网络像逻辑回归相同,并猜想正确的动作是拿牌(y=1)仍是不动(y=0)——换句话说,咱们想知道拿牌是否是正确的动作。

最终两行告知咱们的神经网络模型运用什么丢失函数将模型匹配到咱们的数据。我没有花太多新年祝愿的时刻来调整层数或神经元的数量,可是假如有人玩我的代码,我会主张他对这些潜在的当地进行改善。

# Set up a neural net with 5 layersmodel = Sequential # line 1model.add(Dense(16))model.add(Dense(128谓语))model.add(Dense(32))model.add(Dense(8))model.add(Dense(1, activation='sigmoid')) # final layer

model.compile(loss='binary_crossentropy', optimizer='sgd')model.fit(train_X, train_Y, epochs=20, batch_size=256, verbose=1)

查看咱们模型的功能

查看咱们的模型是否增加任何值的一种快速办法是运用 ROC 曲线。ROC 曲线告知咱们,咱们的模型在收益(真阳性率)和本钱(假阳性率)之间的权衡状况——曲线下的面积越大,模型越好。

下面的图片显现了咱们玩 21 点的神经网络的 ROC 曲线——神经网络好像是增加了一个合理的猜想值(赤色虚线)。曲线下阿诗玛,AI赌博——怎样教神经网络21点的游戏? (带导线)-188体育_188bet体育在线_188体育登录面积(AUC)为 0.73,显着高于随机猜想的 AUC(0.50)。

21 神经网络的 ROC 曲线

我用我的练习数据制作 ROC 曲线。一般咱们期望运用验证或测验数据制作它,但在这种状况下,咱们知道只需样本足够大,它就能代表整体(假定咱们持续运用相同的规矩玩 21 点)。咱们期望咱们的模型能够很好地归纳任何新的数据都与练习数据相同的阿诗玛,AI赌博——怎样教神经网络21点的游戏? (带导线)-188体育_188bet体育在线_188体育登录根本核算特征。

玩游戏的时刻到了!

在咱们的神经网络正式开端作业之前,咱们需求给它一个决议计划规矩。记住,sigmoid 激活(从咱们最终的神经网络层)使咱们的神经网络输出一个正确的动作的概率。咱们需求一个决议计划规矩,在给定这个概率的状况下,咱们决议是拿牌仍是不动。

我写了下面的函数来完成这一点——model_decision 函数具有神经网络所需的特征,运用这些特征进行猜想,并将猜想与预界说的阈值进行比较,以决议是拿牌仍是不动。我运用 0.52,由于咱们现已从上一次就知道,对 21 点玩家来说,爆炸是最大的危险。因而,运用 0.52 作为拿牌的截止值会使咱们的韩国大妈模型爆炸的或许性略微下降,因而输掉的或许性略微下降。

def model_decision(model, player_sum, has_ace, dealer_card_num): input_array = np.array([player_sum, 0, has_ace, dealer_card_num]).reshape24小时(1,-1) predict_correct = model.predict(input_array) if predict_correct >= 0.52: return 1 else: return 0

现在咱们只需求将上面的函数增加到代码中,在这里咱们能够决议是否拿牌。因而,当决议该做什么时,神经网络将依据庄家出示的牌、自己牌的总面值以及是否持有主力来做出决议。

咱们的模型很好!

最终,咱们将神经网络的功能与原始战略和随机战略进行比较。需求提示咱们的是:

  • 我为每种战略类型(神经网络、简略和随机战略)运转了大约 300000 个 21 点模仿实验。

  • 简略战略只需在没有破发时机的状况下才出手(手牌总数低于 12 时拿牌,手牌总数为 12 或更多时才出手)。

  • 随机的战略就像是掷硬币——假如被偷听的女性它呈现开国大将头部则拿牌,不然不动。假如你拿牌了,但没有爆炸,那么再掷硬币,重新开端整个进程。

让咱们看看咱们的神经网络是否能找到更好的战略。下表显现了每种战略类型的成果散布。我有两件事要做。首要,咱们的神经网络在玩游戏时只丢失了不到一半(49%)。我以为这是适当面子的游戏,赔率对你来说是固定的。第二,它实际上不会比简略的战略更简略取胜,相反,它能够发生更多的联系。

各种战略的成果

咱们还能够看看战略怎么运用咱们的首要特征(庄家的牌数和玩家手牌总值)。首要,让咱们来看看在咱们的三个战略中,庄家出示的牌对取胜或平手概率的影响。在下面的图形中,假如庄家牌数很少,咱们的神经网络履行作用。可是当经庄家牌数更高(7或更多)时,咱们的神经网络体现得更好。

与庄家出示的牌平手或胜出的概率(牌数越多越好!)

咱们能够看看赢或平手的概率是怎么随玩家的初始牌数而改变的。这看起来很有期望——咱们的神经网络也体现得很好或许更好。与简略的战略不同,它比玩家手牌值在 12 和 16 之间时的成果更坏,咱们的神经网络体现更好。

平局或取胜的概率与玩家的初始手牌值的联系

上面的图展现了神经网络怎么逾越简略的战略。简略的战略不愿意冒险,乃至远离爆炸危险。另一方面,神经网络常常射中 12、13、14 或 15。这是更纤细的决议计划,而承当核算危险的才能好像将它与简略的战略区别开来。

神经网络和简略战略随玩家初始手值的改变趋势

咱们能够看看当玩家的手值总数在 12 到 16 之间时,神经网络会做些什么来改善咱们的简略战略,避免丢失太多的钱到赌场。

当庄家出示一张高值的牌(8、9 或 10)时,好像有激烈的偏好。可是即便当庄家出示低值牌,如 3 时,神经网络仍然在 60% 的状况下挑选拿牌——这是由于神经网络是考虑到一切的特征然后才作出决议。因而,咱们好像不能轻易地将它的决议提炼成几个简略的经历规律。

神经网络的拿牌频率与庄家出示的牌值

结 论

期望这篇文章给了你一个关于怎么运用机器学习辅佐现实生活中决议计划的不错介绍。以下是当你练习自己的模型时要记住的一些工作(不论它们是决议计划树、回归或神经网络):

  • 我的方针变量的结构是否能让我猜想它,然后我就能处理我的问题?在你开端搜集数据和构建你的模型之前,保证你的猜想是阿诗玛,AI赌博——怎样教神经网络21点的游戏? (带导线)-188体育_188bet体育在线_188体育登录正确的至关重要。

  • 新的数据和我练习过的数据有什么不同?假如它改变很大,那么核算模型乃至或许不是你的问题的正确答案。至少,你有必要认识到这一点,并树立保证办法,例如用正规化和严厉的验证和测验集对模型进行基准测验。

  • 无法了解模型是怎么抵达它的决议计划的,所以你没有办法去了解和查验你的模型在严厉的测验之外做出的决议计划,而这些测验是在模型练习进程中进行的。

最终一句关于 21 点的话。我或许暂时不会再写关于赌博的文章了(我还有太多其他的论题想讨论)。可是,假如有人对运用或扩展我的代码有爱好,这里有几个对这个项目潜在的风趣扩展:

1、测验经过更优化的神经网络结构来改善模型,或许增加用于拆分 A 的代码(我没有把它构建到我本来的模仿器中),或许挑选比我运用的根本特征更好的特征。

2、给模型核算卡片的才能,看看它对一副牌和六副牌的功能有什么影响(这是拉斯维加斯的规范)。

期望你和我相同发现它们的趣味……干杯!

via:https://towardsdatascience.com/teaching-a-热情五月neural-net-to-play-blackjack-8ec5f39809e2

标签: 幂函数愈组词