プロ野球開幕記念、DL4Jでペナント予想!今年勝つのはどのチーム?――AIは解説者たちに勝てるのか season 2

今年もまたプロ野球開幕が近づいてきました。今シーズンは二刀流プレーヤの大谷選手がMLBへ移籍した一方で、注目の高卒新人清宮選手の入団、さらには、上原投手や青木選手など、メジャーリーガーのプロ野球への復帰など、シーズン前からたくさんの話題で盛り上がっています。

ということで!今年もまたAIによる順位予想をしてみることにしました。昨年に引き続き、株式会社ビーブレイクシステムズのエンジニアで、野球好きのお二人に登場してもらいます。

画像

上川伸彦氏(写真左)

株式会社ビーブレイクシステムズ技術担当取締役。

父親が中日ファン、母親が巨人ファン。実家の近くに日ハムの二軍の本拠地あり。小さいころ、巨人を応援していたが、最近では、WBCのような国際試合しか見ない(TV観戦⁠⁠。MLBでの敬遠のルール改正を耳にすると、クロマティ選手や新庄選手を思い出す程度のたしなみはある。

2017シーズンの振り返り~不確定要素をどう扱うか

Q:さっそくですが、まず、昨年の順位予想についてコメント(お詫び?)があればお願いします。

パ・リーグは全順位が外れ、セ・リーグも6位のヤクルト以外は外れていました→昨年の結果

上川:横浜がクライマックスシリーズに進出するとは…(笑)

まず、巨人や日ハムがあんなにも不調に陥ることを予想できませんでした。逆に、あのような不調を予想できるようにするには、その観点のデータが必要になります。

想像するとすれば、たとえば、選手の年齢、怪我や体調に関するデータ、となるでしょうか。このように突き詰めていくと、予想をするためにはさまざまなデータが必要になるんですよね。

Q:今年もまたAIによる順位予想をした結果、とくに「この部分の設定が難しかった」というものがあれば教えてください。

柴田: 当初、前回と同じモデルを利用したところ、新たに2017年度の結果が追加されたために、学習率が落ち込んでしまいました。

そこで、まず2016年までのデータを利用した2017年の予測が、2017年の実際の順位に近づくように調整しました。このとき、学習率を極力落とさないようにパラメータを調整したのですが、そこが大変でした。

ADAMの利用と過学習の調整

Q:上記の質問を踏まえて、今年の順位予想の方法について技術的に教えてください。

柴田:今年も昨年と同様、DeepLerning4Jを使いました。

Deep Learning for Java
https://deeplearning4j.org/ja-index

元データ以外は、とくに変更していません。

昨年との違いは、最適化アルゴリズムとして深層学習の勾配法の1つ「ADAM(Adaptive Moment Estimation⁠⁠」を利用している点です。ADAMを利用することで、バッチ学習が早い段階で収束するようになりました。

また、古いデータを利用すると予測の精度が下がることを確認したため、古いデータ、具体的には、2007~2009年のデータを学習対象から外す対応など、パラメータ・データの調整を行っています。

使用したコード(抜粋)
conf = new NeuralNetConfiguration.Builder() //
    .iterations(iterations) //
    .activation(Activation.RELU).weightInit(WeightInit.RELU_UNIFORM)//
    .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)//
    .updater(Updater.ADAM) //
    .learningRate(learningRate)//
    .list() //
    .layer(0, //
            new DenseLayer.Builder() //
            .nIn(numInputs).nOut(600).build()) //
    .layer(1, new BatchNormalization.Builder().build())//
    .layer(2, //
        new DenseLayer.Builder().nIn(600).nOut(300).build())
    .layer(3, new BatchNormalization.Builder().build())//
    .layer(4, //
        new DenseLayer.Builder().nIn(300).nOut(150).build())
    .layer(5, new BatchNormalization.Builder().build())
    .layer(6, //
        new OutputLayer.Builder(//
            LossFunctions.LossFunction.MCXENT) //
                .nIn(150).nOut(numOutputs)//
                .activation(Activation.SOFTMAX) //
                .build()) //
    .backprop(true).pretrain(false).build();

とくに意識した部分としては、過学習です。

もともと、学習対象のデータ点数がかなり少ないため、どうしても過学習になってしまいます。前回は、テストデータに対する予測が、正答率100%になり、過学習の状態で収束するような状態でした。そのため、今回は、全体としての正答率がある程度下がった状態で収束させるモデルを作りました。

今回採用したモデルの正答率は、60~70%程度です。

上記のような改善を行った結果、2017年度の予想をし直したら、セリーグ、パリーグの1位の予想は正解するようになりました。そのモデルを使って、2018年度の予想をしました。今年は期待してください!(今年の順位予想は記事の最後に)

画像 画像

AIによる順位予想はどこまで辿り着くか?

Q:そもそもとしてAIによる順位予想はどのぐらいまで確度を高められると思いますか?

上川: まず、先ほども話したとおり、予想を突き詰めると、さまざまな観点での大量のデータが必要と考えています。ただし、ペナントレースの予想というのは、将棋や画像認識などと違い、解析すべき情報もよくわかりません。

将棋であれば、盤と駒とルールを解析すれば良いですし、画像認識であれば、対象の画像データを解析すれば良いのです。

しかし、ペナントレースは、そうではありません。ペナントレースは試合の積み上げですし、試合は各回の積み上げです。そして、各回は、打撃や投球、守備や走塁等々、人の動きの積み上げです。

このような人の動きなどを予想し、積み上げて、ペナントレースを予想するのは、非常に難しいと想像できるのではないでしょうか。

そこで、我々は、もう少しシンプルな因果関係があると面白いと考え、過去の戦力が翌年の成績につながる、という仮定の下、過去の戦力データを、1球団223次元のデータに詰め込んで予想をしています。

おそらくですが、この各球団の戦力を表す情報を拡充すれば、確度を上げられると考えています。たとえば、各個人の戦力を数値化して球団の戦力データとして使う、等が考えられます。

ただし、戦力データだけだと、たとえば、試合中の怪我、電撃トレードといった変化に関する事象を予想に反映させることはできません。

こういった点もあるので、順位予想は、ある程度の限界があるだろうと考えています。逆に言うと、順位予想の確度が100%に近づけることができるのであれば、世の中のいろいろなことを確度高く予想できるようになっていると思います。

すみません。回答になっていないかもしれませんが(笑)

2018年の野球観戦への意気込み

Q:2018シーズン、お二人のプロ野球の展望、見どころ、注目選手がいれば理由とともに教えてください。

上川柴田:実は、二人ともあまり野球に詳しくないので、社内の有志から情報を集めてきました(ペナントレースの開始に合わせて、数日前、社内の予想大会が開催され、大いに盛り上がりました⁠⁠。

野球ファン(とくにカープファン)にはおなじみBig-Pig神田カープ本店で行った順位予想大会。盛り上がりました
野球ファン(とくにカープファン)にはおなじみBig-Pig神田カープ本店で行った順位予想大会。盛り上がりました
  • カープのリーグ3連覇と日本一になれるかどうかが楽しみです。ヤクルトが今シーズン最大の敵と思っています。メジャーからヤクルトに復帰した青木と、川端、山田哲、バレンティン、畠山といった打線やカープから移籍したコーチ陣(石井琢朗打撃コーチ、河田雄祐走塁コーチ)が脅威です。
  • 今年のベイスターズは去年の勢いからすると脅威だと思っています。
  • 松坂世代としては、中日に移った松坂が復活できるかどうか注目しています。
  • メジャー帰りの上原が第2の黒田になるか。
  • ソフトバンクの連覇(パリーグ、日本一)に期待しています。選手では、2016年ドラフト1位の田中正義の復活に期待です。セリーグは、やはり強い巨人が戻ってくるとより盛り上がるので、広島と巨人で首位争いをしてもらえると楽しそうです。
  • ベイスターズの3年連続CS出場可否に注目しています。選手としてはベイスターズルーキー東克樹投手に期待したいですね。ラミレス監督は若手の抜擢もバンバンやってくれるので、去年の濱口投手のようにいきなり二桁勝利の活躍もあり得ると思います。

AIと人間社会の未来

Q:この1~2年、AIという言葉はほぼ毎日たくさんのメディアで見かけるようになり、また、スマートスピーカーの登場や自動運転など、私たちの日常生活にも入り込んできました。この先、AIがもたらす未来について、お二人が思うこと・可能性があれば教えてください。

柴田:最近はさまざまな言語の自然言語処理技術が急速に向上したように感じました。今後、要件/仕様を自然言語で入力することで、望み通りのプロダクトが作られる時代が来るのかもしれません。

また、Webシステムを作成するうえで、ユーザにとって最も使いやすいUIを作成するのは難しいことですが、将来的には、必要な入力項目を与えてやるだけで、使いやすいUIのレイアウトをサジェストしてくれるAI製品が出てくるかもしれません。

上川: あまり目立たないかもしれませんが、医療や法曹など、2018年現在もAIがすでに実用化されていて、目覚ましい成果を上げている分野も増えてきましたし、身近な部分でも、いろいろな商品やサービスが出てきています。

すなわち、特定用途であれば、AIは人間を超えたと言って良いと思いますが、いわゆる「汎用AI」ではまだまだ、という状況です。それは、現時点では、AIの適用を進めているのが人間であることからも明らかだと思います。

そういう意味で言うと、映画のような「人間 vs AI」が起こるとしても、まだまだまだまだ先の話でしょう。そんな先の話ではありますが、AIが進化した世界を見てみたいなあ、と夢見ています。

――ありがとうございました。

昨年に引き続き、プロ野球開幕直前に今シーズンの予想をAIを用いて行ってもらいました。AIの人間社会における活用はこれからもますます増えていくと思います。その中で、このような趣味・娯楽の分野で、楽しむことを目的とした活用方法もまたAIが持つ可能性の1つです。

さて、最後に。大変気になるDL4Jによる2018シーズンの予想順位を発表します。はたしてこのとおりの結果になるのか、まずは3月30日の開幕戦が楽しみですね。

DL4Jを利用したプロ野球2018シーズン順位予想
パ・リーグ
順位チーム勝数負数勝率
1位楽天73.569.5.514
2位西武73.169.9.511
3位ロッテ71.971.1.503
4位オリックス70.672.4.494
5位ソフトバンク70.272.8.491
6位日ハム69.673.4.487
セ・リーグ
順位チーム勝数負数勝率
1位阪神78.964.1.551
2位横浜75.267.8.526
3位中日72.670.4.507
4位広島69.173.9.483
5位巨人66.876.2.467
6位ヤクルト66.476.6.464

おすすめ記事

記事・ニュース一覧