BackEnd

麻雀で自分が何を切るか学習させる

投稿日:

はじめに

前回執筆しました、配牌からアガれるかアガれないか予測するの続編になります。

麻雀において、「アガれない」はいくつかパターンがあり、難しいのではないか?というアドバイスをいただきました。

そのため、方向を修正し、「何切る問題」のディープラーニングをしてみることにしました。
ゆくゆくは、自分の打ち筋を学習したCPUを作れるようにしたいと思います。

今回は実装がまだ途中なので、経過報告として記載したいと思います。

プロジェクト名を決めてみる

リスタートするために、何かこのコンテンツに名前をつけてモチベーションをあげることにしました。
ディープラーニングはざっくり言うと、「今までのデータをもとにパラメータを計算し、そのパラメータで予測する」ことかと思っています。

そんなとき、とある美少女麻雀漫画のキャラクターが思い浮かびました。

家は雀荘を経営しており、その関係で膨大な量の対局を記憶していて、その記憶を元に戦術に組み込むことができる。

Wikipediaより

これはぴったりだったので、このコンテンツを「someyamako」とすることにしました。

何切る問題で考慮される要素

本当は全ての要素を組み込みたいですが、全く計算方法が想像できないものもあり、とりあえず作成してみたかったので、以下の要素を考慮しました。

手牌

これは必須です。
以前作成したものが流用できそうです。

ドラ

ドラによって受けのかたちが決まってくるので要素に含めました。
計算方法は下の項目を参照ください。
(間違っているかもしれません)

考慮していない要素(本当は入れたい)

精度の高いコピーを作るためには、下記のような要素が必要ですが、私の実力不足で今回は考慮できませんでした。

  • 場、点棒状況
  • 捨牌、仕掛け

学習の方法

まずは、手牌を4×9の行列に変換します。

これは下の手牌になります。

それぞれの牌が何枚あるか表示しています。

ドラも同様に4×9にして、ドラの部分を1とします。

例えばドラがであれば、

とします。

計算方法は下記になります。
なお、各パラメータは以下のようになっています。

  • W1…手牌の重み
  • W2…ドラの重み
  • b…バイアス

ただ、500サンプルほど学習させてみましたが、あまり目立った特徴が見られませんでした。。。

さいごに

現状はこのような感じでひたすら私が何切る問題を実施しております。
計算方法など、何か面白いことがあればまたブログに記載したいと思います。

よろしくお願いします!

blog-page_footer_336




blog-page_footer_336




-BackEnd

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

laravel logo

Laravelでメールを送る

1 はじめに1.1 準備2 実装2.1 Mailableクラスの作成2.2 テンプレートの作成2.3 Mailableクラスの修正2.4 コントローラの作成2.5 コンフィグの修正3 さいごに4 おす ...

[Dialogflow + CF] アクア様が罵倒してくれたり天気を教えてくれるSlackボットを作る

1 はじめに2 Dialogflowの準備2.1 プロジェクトを作る2.2 Intentを作る2.3 試してみる2.4 WELCOME Intentを作る3 Slackボットを作る4 名前を答える5 ...

rails

Shrineをモデルに関連付けないで使用してハマったこと

1 はじめに2 アップロード時にリサイズする3 アップロード時のバリデーション4 アップロード時に古いファイルを削除する5 さいごに はじめに ShrineはRailsでのアップロードを簡単に行えるよ ...

laravel logo

[Laravel] middlewareでHTTPリクエストの前後に処理を入れる

1 はじめに2 middlewareとは3 実装3.1 middleware作成3.2 コード実装4 middleware定義4.1 常に呼び出す4.2 特定のURLにアクセスした時のみ呼び出す4.3 ...

laravel logo

Laravelのバリデーションtips

1 はじめに2 配列のバリデーションでRule::uniqueを使う時のカラム名を指定したい3 配列バリデーションのエラーメッセージ制御4 カスタムバリデーションで、他の属性名を参照したい5 番外:複 ...

フォロー

blog-page_side_responsive

2017年6月
 123
45678910
11121314151617
18192021222324
252627282930  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。