pirika logo

ホームページ Pirikaで化学 ブログ 業務リスト お問い合わせ
Pirikaで化学トップ 情報化学+教育 HSP 化学全般
情報化学+教育トップ 情報化学 MAGICIAN MOOC プログラミング
MAGICIANトップ MAGICIAN-Jr. MAGICIAN-講義 過去の資料

MAGICIANとは、材料ゲノム(Materials Genome)、材料情報学(Materials Informatics)、情報化学(Chemo-Informatics)とネットワーク(Networks)を結びつけて(Associate)いかれる人材です。

MAGICIANトップ > 高校生にもわかる化学、薬学系 データサイエンス MAGICIAN-Jr. > 第11回

2021.8.24

第11回 砂漠で"強化訓練"

このプログラムの種本は日経ソフトウエアー(2020年11月号)だ。
Scratchゲームプログラムで「強化学習」を学ぼうというのがあった。
それをJavaScriptで書き直した。
元のゲーム名は、「砂漠でダイアモンド集めゲーム」と言うものだ。A, Bどちらを掘ったほうがダイアモンドをいっぱい集められるかを、Q学習したAIと競うものだ。

ここに触媒Aと触媒Bの2種類がある。
この触媒を使ってある化学実験を行なった場合、ある確率で実験は成功する。
でも、触媒AとBでは成功する確率は違う。
全部で20回実験をやって、何回成功するかをコンピュータと競おう。
あなたの選択が終わった段階で、Q学習しながらAIが同じ問題を解く。

繰り返し実験回数:


結果: ***
普通のサイコロは、丁(偶数)が出る確率と、半(奇数)が出る確率は同じである。でも、このサイコロの確率は異なる。あなたは"半"に賭ける。
どういう戦略を立ててロボットか魔女っ子かを選んだらいいだろうか?
サイコロが投げられた結果だけをみて行動を変える。
結果に及ぼす影響など一切考えないやり方を学ぶ。
丁が出るか半が出るか?僕たちのサイコロは細工してあるので同じでない。どちらを選ぶ?

最近のデータサイエンスの記事を読んでいると、どうも納得できない記事も多い。
「原因をとことん論理的に考えて、さらによくなるようにコンピュータの力を借りてDXしていこう!」などと本気で言っている。

まず、化学の領域では何故だかわからないが結果が変わることは良くある。
だから物理とは異なり、論理的ではない。
従って、論理では説明できないから考えるのであって、説明できる論理は考えて作るもの。
論理しか扱えないコンピュータが助けられることでは無い。

だいたい、インチキサイコロに論理がないのは自明だろう。
それでも戦略を立てた方が勝率は上がる。

実際、同じ仕事をしたとしても、AさんとBさんで結果が違うことは良くある。
結果を見て(原因には触れずに)この仕事はAさんに頼もうという戦略はありうる。

コンピュータが乱数で定めた成功確率が判れば答えは簡単だ。成功確率が高い方を選び続ければ良い。

自分で”カン”に頼ってやる場合、例えば次のような戦略が考えられる。
・最初の数回Aを選び、次に同じ回数Bを選び、成功の数が多い方を、その後選び続ける。
・成功が出たらそのボタンを選び続け、失敗が出たら違うボタンを選ぶ。

全部で何回実験を繰り返すか次第でやり方は変わるかもしれない。

この場合、意思決定の判断材料は「期待値」になる。

期待値というのは、例えば宝くじを買うことを考えてみよう。
1億円が当たる確率*100000000円
1000万円が当たる確率*10000000円
・・・
・・・
それを全部足したものが期待値になる。

元締め(地方自治体)の取り分があるので、1000円買っても期待値は必ず1000円以下になる。

この期待値を学習に取り入れたのが、Q学習になる。
最初は、AもBも期待値は0.5で同じにすることが多い。
Aを選んで成功した場合には、期待値をあげる。失敗した時には期待値を下げる。
そして期待値の大きい方を基本的には選択する。(多様性確保のため、ある確率で反対も選択させる。)

囲碁や将棋でAIが人間に勝つようになって、ディープ・ラーニング(DL: 深層学習)が注目を集めるようになった。
しかし、DLとQ学習のような”強化学習”が組み合わされることによってプロの棋士を超えたというのが真実の所だ。

そして、この強化学習というのは、本当に簡単に取り入れることができる。

if(Math.random()<B_AP){//成功を当てた時
        TotalCoinRB++;//成功回数を増やす
        HoYoA = (1-GakuRi)*HoYoA+GakuRi*1.0;//期待値を増やす。
    }
    else{//失敗した時
        HoYoA = (1-GakuRi)*HoYoA+GakuRi*0.0;//期待値を減らす。
    }

GakuRiというのは学習率のことで0.1ぐらいを入れる。
結果オーライで、正しく成功を当てた場合、期待値(HoYoA)を増やす。
毎回サイコロを振るたびに、期待値を更新させていく。

基本的には、期待値の大きい方を選ぶ。

if(HoYoA>HoYoB){//期待値A(HoYoA)の方が大きかったら
    SelectA(); //Aを選ぶ。
}
else{
    SelectB();
}

しかし、適当な確率Ranz(0.2)で期待値に囚われない選択もする。

if(Math.random()<Ranz){//Ranz=0.2 
        if(Math.random()<0.5){
            SelectA();
        }
        else{
            SelectB();
        }
    }

それを繰り返すことにより、「より効率的に判断できる確率が高くなる」ということだ。
もちろん、天才的な人間が神がかりのように高い勝率を上げることはありうる。
将棋の藤井くんも、AI判定を何度もひっくり返している。

でも普通の人は、利用しない手はない。

MAGICIANトップ > 高校生にもわかる化学、薬学系 データサイエンス MAGICIAN-Jr. > 第11回


Copyright pirika.com since 1999-
Mail: yamahiroXpirika.com (Xを@に置き換えてください) メールの件名は[pirika]で始めてください。