BackEnd

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

投稿日:

はじめに

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

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

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

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

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

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

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

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

Wikipediaより

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

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

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

手牌

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

ドラ

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

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

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

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

学習の方法

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

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

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

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

例えばドラがであれば、

とします。

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

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

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

さいごに

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

よろしくお願いします!

blog-page_footer_336




blog-page_footer_336




-BackEnd

執筆者:

免責事項

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


comment

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

CAPTCHA


関連記事

rails

Capistrano3でRailsアプリケーションをデプロイする

1 はじめに1.1 前提条件2 Cpistranoについて3 導入3.1 Gemのインストール3.2 設定ファイルの準備4 デプロイ設定4.1 Capfileを修正する4.2 各環境で共通のデプロイ設 ...

rails

Railsの低レベルキャッシュを使ってみた

1 はじめに1.1 環境2 ドキュメント3 準備3.1 configの確認3.2 キャッシュストア4 使ってみる4.1 #read、#write、#delete4.2 #fetch4.3 オプション4 ...

js

GoogleAppsScriptを使ってmBaaSの定期実行処理を実装する

1 はじめに1.1 簡単な状況説明1.2 定期実行を行う方法2 実装2.1 実装の流れ2.2 JavaScriptの実装2.3 スクリプトをアップロードする2.4 Google Apps Script ...

Stripe Connectを使って継続課金を実装

1 はじめに2 商品・価格の登録2.1 マイグレーション2.2 製品・価格登録処理の実装2.3 Stripe管理画面での確認3 サブスクリプション登録3.1 事前準備3.2 課金処理の実装3.3 St ...

Rust入門してみた (基本構文編)

1 はじめに2 Rustとは?3 Rustの特徴的な基本構文3.1 変数と定数3.2 所有権3.3 所有権の借用3.4 関数3.5 エラーハンドリング3.5.1 回復不能なエラー(panic!)3.5 ...

フォロー

blog-page_side_responsive

2017年6月
 123
45678910
11121314151617
18192021222324
252627282930  

アプリ情報

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