FC2ブログ

*All archives* |  *Admin*

<<07  2018/08  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31  09>>
麻雀AI開発その57・困った
前回の続き…なのですが、ちょっと詰まってます。

ツモに対する打牌についてはおおむねいいのですが、鳴きについてがうまいこといっていません。

手牌価値評価値xと打牌の危険度指標yの入力値に対して次式が最大化するような関数fの形(もしくはパラメータ群p)を定めようとしています。
170817-02.png
ただし、fの定義は(スルーのときy=-1と固定して場合分けをする、xとyは代入前に100で割って標準化する)、
170817-01.png

これでいちおう、パラメータとして出ることは出るのですが、
170817-03.png
今は他家攻撃なしに注目します。
他家への放銃(危険度指数)はほぼ0なので、yに関する項は極小で、xの項と定数項だけが問題です。

鳴きでもスルーでも同じようなxの値(手牌価値)になる場合、本来は危険度のフィルターを通した後も(今は他家攻撃無しなので)同じような値が出てほしいのですが、だいたいスルーの方がかなり高い数値が出てしまってます。
なので、このままだと手牌だけなら鳴いてほしい場合の大半をスルーしてしまいます。

この原因は定数項p_8がかなり大きな値になっていることです。f(x,y)のスケールは一けた~せいぜい10くらいまでなのに+5みたいなでかい数字を足すとスルーの数値が過剰に高くなってしまいます。

実際に学習データでの正答率をチェックしてみると、正答(実際に選ばれた選択)がスルーのケースだと関数fを通した後もスルーが最も大になる確率は(正答率)は9割なのですが、
正答が鳴きのケースでは2割しかないです。超大差でない限りはでかい定数項のせいでスルーを選択してしまうのが如実に現れています。

言い方を変えれば全体の正答率を上げるために、正答が鳴きであるケースは全部見捨てて、ほぼすべてをスルーだと答えている(正答がスルーのケースはほぼ正解)ような状況に近いです。

困りました。ここ何日か試行錯誤を繰り返しているのですが、現実に即したうまいモデルがなかなか組めません。完全に手詰まりです。ずーっと数式とかプログラムのコードを眺めても妙案が浮かんできません。
スポンサーサイト

コメントの投稿

Secret
(非公開コメント受付中)

コメント

No title
定数項p_8を0に固定して学習するとどうなりますか。
Re: No title
> 定数項p_8を0に固定して学習するとどうなりますか。

今度はp_6、p_7の係数が変わってp_1、p_4との間に開きがでました。
鳴きの正答率が極めて低いのは変わりませんでした。
プロフィール

nisi5028

Author:nisi5028
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード