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

いよいよ本日、日本プロ野球ペナントリーグ2017年シーズンが開幕します。今年は第4回ワールド・ベースボール・クラシックが開催されたこともあり、春先から野球熱が高まっています。

今回、株式会社ビーブレイクシステムズの上川伸彦氏、平原靖之氏の両名が、ディープラーニングのライブラリである「DL4J(Deep Learning for Java⁠⁠」を利用し、プロ野球2017シーズンセパ両リーグの順位予想を行いました。

テクノロジーの進化はスポーツにどのような影響を与えるのか、技術的視点を踏まえながらお話を伺いました。

画像

上川伸彦氏(写真左)

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

Q:まず、今回利用したDL4J(Deep Learning for Java)の特徴を教えてください。

上川: 商用サポートも提供されている高機能なプロダクトで、ホームページを見るとわかるとおり、サンプルも充実しています。本格的に使えるディープラーニングのライブラリの中で、Java向けのプロダクトは、現時点では唯一と言っても良いと思います。

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

Q:今回、DL4Jでペナント予想をしようと思ったきっかけは何でしょうか?

平原: 元々、ペナントレースの予想大会が、社内の10名程度の有志により、2016年に始まりました。酒の肴ですね。

上川: 2016年の冬に、2016年ペナント予想の答え合わせの飲み会があったんですが、たまたまそこに私が参加して、その流れで、2017年の予想大会に呼ばれたことがきっかけでした。

正直、私は、野球をそれほど見ているわけではないので、他の参加者のように、好きな球団を熱烈に押すこともできないし、冷静に各球団の戦力を分析して順位を予想することもできませんでした。そこで、⁠コンピュータに予想させよう」と、AIを使うことを思いつきました。

平原: ちなみに、2016年ペナント予想では、誰一人として、優勝チームを当てることができませんでした(笑⁠⁠。

上川: 何よりも、その結果が強烈に私の背中を押しましたね。⁠あ、外れ前提で大丈夫なんだ(笑⁠⁠」と。

Q:なるほど。社内交流の場がきっかけで、さらにそれほど野球に詳しくない上川さんが参加したことの2つが重なって、AI予想をすることになったんですね。

さて、今回の予想は、どのようなデータを用いて、どのようなプログラミング(前提条件)で行ったのでしょうか。

上川: 今回使ったのは、球団ごとの年度成績、ドラフトやトレードのデータです。年度成績は、NPB(日本野球機構)オフィシャルサイトで公開されているデータで、順位や打撃成績、投手成績、守備成績になります。ドラフトやトレードのデータは、オフィシャルサイトにはありませんでしたので、情報が載っているサイトを探し、そこから自分たちで用意しました。

前提として社内の予想大会があるので、参加するためにもそれっぽい結果が出ることを優先させました。とにかく、結果(それぞれ1~6位の順位付け)を出すことが前提です。

予想に影響があるであろうデータを用意し学習させ、学習したモデルから結果が出ることを最重要要件として実施しています。そのため、ハイパーパラメータは、検討して決めたというよりも、試行錯誤で結果が出そうな値を、あまり考えずに使ったりしています。この点については、今後さらに改善の余地があると感じています。

また、当初はAIに順位を予想させていたのですが、あまりうまく結果を出すことができませんでした。そこで、順位予想の前段階として、勝ち数と負け数を予想させることをゴールにしました。その数値を、別途計算し、勝率を求めて順位を予想するという方法を採用しています。

今回の予想に関する備考

使用した過去のデータと条件

  • 10年分(2007~2016年シーズン)のもの
  • 「ドラフトやトレードの人数(過去4年分⁠⁠」および「各チームの順位、打撃成績、投手成績、守備成績(過去2年分⁠⁠」をまとめて入力情報とし、⁠次の年の勝数・負数」を出力情報として学習
  • 1球団につき223次元のデータ(ドラフトやトレードの人数の過去4年分、順位・打撃成績・投手成績・守備成績の過去2年分)を採用

使用したディープラーニング構成

  • 全結合×3階層のニューラルネットワーク。中間層のノード数は1,000~10,000
  • ハイパーパラメータの値は、学習が進みそうな値を人的に決定
  • 学習回数は12,600~126,000回。学習率=0.0001~0.000005。セパ別々に学習を実施
  • 元データが少ないため、過学習になると想定。そのため、学習化程度の精度推移を見ながら、安定した状態での予測値を採用

結果の出し方

  • 球団ごとに「勝数×確率の合計値」⁠負数×確率の合計値」を求め、そこから算出された勝率が大きい順に1~6位の順位付けを行う
  • それぞれの球団の勝数・負数は記事最後のとおり
利用したソースコード(抜粋)
int layerNum = 10000;

conf = new NeuralNetConfiguration.Builder() //
		.iterations(iterations) //
		.activation(Activation.SIGMOID).weightInit(WeightInit.ZERO)//
		.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)//
		.updater(Updater.NESTEROVS) //
		.momentum(momentum) //
		.learningRate(learningRate).regularization(true) //
		.dropOut(0.5) //
		.list() //

		.layer(0, //
				new DenseLayer.Builder() //
						.nIn(numInputs).nOut(layerNum).build()) //
		.layer(1, //
				new DenseLayer.Builder() //
						.nIn(layerNum).nOut(layerNum).build()) //
		.layer(2, //
				new OutputLayer.Builder(//
						LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD) //
								.activation(Activation.SOFTMAX). //
								nIn(layerNum).nOut(numOutputs).build()) //
		.backprop(true).pretrain(false).build();

Q:実際にDL4Jで予想してみた結果について、技術的観点から気になった点、ぜひ紹介したい点があれば教えてください。

上川: 先ほどもお伝えしたとおり、今回は結果を出すことを最優先とした機械学習を行いました。ですので、はっきり言えばそれっぽい結果を出しただけです。なので、引き続き、学習したモデルの内容を解析することを考えてます。

学習したモデルを解析すれば、たとえば、勝ち数には打撃成績が、負け数には守備成績が関係している、といった興味深いことがわかるかもしれませんし、ハイパーパラメータのチューニングのヒントが見えてくるかもしれません。

もしくは、全然逆で、実はそれっぽい結果が出ているだけで、全然ディープラーニングで学習する意味がないお題目だったといったようなつまらないことが見えてくるかもしれません。

どちらにせよ、今年の秋、答え合わせの際に、言い訳にもなるので、前向きに捉えて進めたいと思います。

Q:逆に、結果を見て、(AIによるペナント予想で)課題と感じた点があれば教えてください。

上川: やはり、データ量が不足しているのは課題なのだろうと思います。その一方で、たとえば、今回使いませんでしたが、オープン戦や2軍の成績、選手の年棒や観客動員数等、順位に関連しそうな情報は、まだまだたくさんあります。

このように、データ量が少ないのに使うデータの種類が増えると、一般的には、うまく学習できないと言われていますので、学習のさせ方や、学習したモデルの使い方を工夫することが重要だと感じています。

また、学習したモデルを解析して、その辺りのヒントが出てくれば良いなあと期待しています。もっと大きな課題が見つかるかもしれませんが。

Q:さて、映画『マネーボール』をはじめ、ここ日本でもプロ野球でデータを活用することが認識され始めました。チームでの活用はもちろん、今回のペナント予想のような形での活用も増え、これからITとプロ野球、さらにはスポーツがより密接になるように思います。

このような形で、皆さんが思うスポーツとITが生み出すこれからの可能性はなんでしょうか。

上川: 囲碁や将棋と同様、新しい手法や、これまでと違った視点での戦術等が生まれる可能性があるかと思います。たとえば、プロ野球だったら、勝利につながる何か、効率の良いチーム強化に繋がる何かを、AIを使って解析することにより、パラメータとして抽出できることになりますので、これが、新しい手法や戦術の発見につながる可能性があります。

『マネーボール』では、とくに出塁率の高さを重要視したシーンがありました。たとえば、そのような判断材料になりうるデータや類似したパラメータを、AIが発見すると言ったことが考えられますね。

また、一般論として、AIに学習させて、意味のあるアウトプットを得ようとすると、ある程度のボリュームのデータを集めなければなりません。すでに行われていることではありますが、試合の映像から自動的にデータを作成する必要がありますし、そのために、たとえば用具にセンサーを埋め込んでデータを取得するといったように、⁠多くのデータを収集する」という動きが、今後さらに活発になっていくだろうと思います。

今後、野球に限らず、さまざまなスポーツ分野でITが活用されることで、選手やチームの進化、それによる競技自体の進化が加速することを期待しています。

平原: すでにアメリカのメジャーリーグの球団や日本の数球団で、チーム編成にIT技術を取り入れていると聞きます。この動きはますます活発になるでしょう。さらに、未来には「AIが監督として試合の采配をする」といったチームが出てくるかもしれません。

近い将来、ワールドシリーズや日本シリーズで「名将対AI監督」の戦いを見られたら、野球の新しい楽しみ方が生まれますね。

画像

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

非常に興味深い取り組みを伺うことができました。ここ数年、テクノロジーの進化とともに、人間活動全体をデータ化し、そのデータを蓄積する動きが見られてきました。⁠IT×○○」というように、ITをさまざまな分野と掛け合わせるビジネスなども勃興しています。その中で、今回のようなAIや機械学習、また、その重要な要素となるIoTといったものがより一層重要になっていくのではないでしょうか。

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

DL4Jを利用したプロ野球2017シーズン順位予想

パ・リーグ
順位チーム平均勝数平均負数平均分数勝率2016年順位
1位北海道日本ハムファイターズ81.753.08.3.60651
2位福岡ソフトバンクホークス83.154.05.9.60632
3位千葉ロッテマリーンズ73.069.70.3.5123
4位埼玉西武ライオンズ69.974.2-1.1.4854
5位オリックス・バッファローズ62.071.79.3.4646
6位東北楽天ゴールデンイーグルス65.078.00.0.4555
セ・リーグ

1位読売ジャイアンツ85.057.50.5.5962
2位広島東洋カープ75.069.5-1.5.5191
3位中日ドラゴンズ68.968.06.1.5036
4位阪神タイガース64.076.03.0.4574
5位横浜DeNAベイスターズ64.078.50.5.4493
6位東京ヤクルトスワローズ60.076.07.0.4415

おすすめ記事

記事・ニュース一覧