【遊戯王デュエルリンクス】恐竜王国デッキでデュエルキングになった(デッキレシピあり)
遊戯王デュエルリンクスのランク戦で、一番の上のランク「デュエルキング」になりました。
デッキレシピは以下の通りです。
ダイナソー竜崎のスキル「恐竜王国」で、最初から攻撃力1900のモンスターを展開できます。あとは魔法や罠を駆使して押し切ります。
ディープラーニングで大相撲千秋楽の勝敗を予想してみる
11月場所で鶴竜が千秋楽前に7場所ぶりの優勝を決めました。
9月場所の千秋楽前にもこんな記事を書いたのですが、またしても相撲絡みの記事を書きたくなったので書きます。
今回はアホみたく流行っている「ディープラーニング」を使って、大相撲千秋楽の勝敗を予想してみようという記事です。といっても4層しかないのですが「ディープラーニング」の方が引きが良さそうなのでタイトルに盛り込んでしまいました。
以下が、今回の目的です。「千秋楽の勝敗は、その場所の14日目までの成績(調子)に依存する部分がある」という仮定を置きました。この仮定のもと、14日目までの成績を入力として、千秋楽の勝敗を予想する分類器を作成します。
下図が、今回作成したディープニューラルネット(DNN)です。
このDNNに訓練データとして過去の幕内の取り組み結果を与えます。データ構造は以下の通りです。
過去の取り組みデータは「大相撲星取表」というサイトから収集しました。データ収集には、pythonのpandasの機能を利用しました。
upura.hatenablog.com
今回の場合、平成元年~平成28年7月場所までのデータを訓練データとしてDNNに与えました。実装にはRの「mxnet」というライブラリを使っています。以下のサイトを参考にしました。
tjo.hatenablog.com
# Data Import df <- read.csv("C:/data.csv", header = F) newdata <- read.csv("C:/newdata.csv", header = F) library(mxnet) # Training Data train <- data.matrix(df) train.x <- train[,-1] train.y <- as.numeric(train[,1]) # Test Data test <- data.matrix(newdata[,-1]) # DNN data <- mx.symbol.Variable("data") fc1 <- mx.symbol.FullyConnected(data, name="fc1", num_hidden=28) act1 <- mx.symbol.Activation(fc1, name="tanh1", act_type="tanh") fc2 <- mx.symbol.FullyConnected(act1, name="fc2", num_hidden=14) act2 <- mx.symbol.Activation(fc2, name="tanh2", act_type="tanh") fc3 <- mx.symbol.FullyConnected(act2, name="fc3", num_hidden=10) act3 <- mx.symbol.Activation(fc3, name="tanh3", act_type="tanh") fc4 <- mx.symbol.FullyConnected(act3, name="fc4", num_hidden=2) softmax <- mx.symbol.SoftmaxOutput(fc4, name="softmax") # Execution devices <- mx.cpu() mx.set.seed(71) model <- mx.model.FeedForward.create(softmax, X=train.x, y=train.y, ctx=devices, num.round=4000, array.batch.size=100, learning.rate=0.03, momentum=0.99, eval.metric=mx.metric.accuracy, initializer=mx.init.uniform(0.5), array.layout = "rowmajor", epoch.end.callback=mx.callback.log.train.metric(100)) # Result preds <- predict(model, test, array.layout = "rowmajor") pred.label <- max.col(t(preds)) - 1 pred.label
さていよいよ学習を終えたDNNを使って、千秋楽の勝敗を予想します。訓練データと同様、14日目までの結果から28次元のベクトルを作成します。これをDNNに入れ、千秋楽の勝敗を予想してもらいます。結果は以下のようになりました。
DNNの結果を見る前に、僭越ながら私も予想をしました。私の予想時には、14日目までの成績以外の情報(過去の対戦成績など)もフル活用しています。ちなみに私は小学校の頃に「わんぱく相撲」で2年連続名古屋市でベスト8になった実績を持つ(隠れた自慢)くらいには昔から相撲を見ています。
黄色はDNNと私の予想が食い違ったことを示します。意図的かのごとく食い違っていますね。
ディープラーニングと人間、どちらの予想が正しいか。明日の千秋楽の土俵に注目したいと思います。
追記
発表スライドにまとめました。
【遊戯王デュエルリンクス】2枚だけでお手軽ロック
「遊戯王」の世界を再現したトレーディングカードゲームアプリ「デュエルリンクス」が11月17日に配信を開始しました。
www.konami.com
このアプリ、序盤はレベル4以下モンスターでの殴り合いになることが多いです。そんな中で、お手軽に相手の攻撃を封じ込めるコンボを見つけました。
使うのは、以下の2枚です。
使い方は単純。「ネコ耳族」を攻撃表示で召喚し「魔性の月」を装備するだけ。
「ネコ耳族」の効果で、攻撃を仕掛けてくる相手モンスターの攻撃力は200になります。「ネコ耳族」の攻撃力を「魔性の月」で200→500に上げることで、相手は攻撃を仕掛けられなくなります。
序盤の相手は効果モンスターや除去カードを持っていない(デッキに入れていない)ため、大抵はこれでロックが完了です。
ロックで時間を稼げるので、パーツを揃える必要がある必殺コンボに繋げやすくなります。現在のカードプールでは「カラテマンワンキル」が最有力候補です。
appmedia.jp
「カラテマンワンキル」に必要なのは、以下の3枚と1枚の手札コストです。
「カラテマン」を攻撃表示で召喚し「財宝への隠し通路」で直接攻撃できるようにします。
さらには「閃光の双剣―トライス」を装備し、2回攻撃を可能にします。この時点で「閃光の双剣―トライス」の効果で「カラテマン」の攻撃力は1000→500になりますが、「カラテマン」の効果で自身の攻撃力を元々の攻撃力の2倍である2000にできます。
こうして、攻撃力2000で2回直接攻撃できる「カラテマン」の誕生です。初期ライフが4000の「デュエルリンクス」では、必殺コンボの一つです。
以下がデッキサンプルです。「ネコ耳族」のコンボで相手の攻撃を封じ、ゆるりと「カラテマンワンキル」のパーツを揃えて勝利を目指します。
わざわざ「カラテマンワンキル」を盛り込まずとも、相手のデッキ切れを狙う戦略も有り得そうです。
成功確率1%で繰り返し挑戦してみた
Twitter見てたら、また香ばしいツイートが流れてきた。
難しそうだから挑戦しないといつまで経っても達成感の得られることはできません。成功確率1%でも100挑戦し続ければ、できる可能性が100%になります。少しでも可能性のある「できたら面白そう」なことに...https://t.co/KQ6JLduKlx #NewsPicks
— 佐山展生 Nobuo Sayama (@nsayama) November 3, 2016
これは確率の良くある間違い。
「n回やって成功する確率」=「全体」-「n回やって全部失敗する確率」なので、今回の場合の計算方法は下記の通り。可視化すると図のようになる。
(n回やって成功する確率)
の時の確率は0.633967659...と、64%以下。到底100%には及ばない。
『SCOOP!』は予告編にやられた
あんまり書くとネタバレになるから書きませんが、大根監督『SCOOP!』は非常にオススメ。
予告編のみ予習するのがベストだと思う。本編を見終わった後に、じわじわ「やられた!」という清々しい感情を体験できる。
あとR12だけど、冒頭から下ネタ満載なので、微妙な関係の男女で観に行くのはオススメしません。
Error: invalid multibyte character in parser at line 1
このエラーが出て詰まった。が再起動したら解決。何だったんだ。。。