simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

AI的な調べもの

最近、社内の勉強会でその存在を再確認したのですが、みなさんは OpenAI をご存知ですか?

OpenAI は組織名のようです。
コンテンツは Gym にあるとのことです。

OpenAI Gymは、強化学習を開発、評価するための プラットフォームです。
色々な環境が用意されているようで、次のリンクで一覧できました。
OpenAI Gym

ところで強化学習というのは、環境に対して行動の選択肢から行動を選択して行動し、その報酬(Reward)を最終的な結果から推定して、何度もこれを繰り返すことにより経験的にその推定Rewardが最大になる行動を選べるようにする手法です。

重要なので「経験的にその推定Rewardが最大」というところを強調しますが、つまりはローカルミニマムでさえなく、今までで一番良かった(かもしれない)試行結果に落ち着くということです。

強化学習について調べていたところ、次のQiitaの記事が、知りたいことをたくさん書いてくれていました。
qiita.com

まぁ、人間もRewardの推定を間違えている人がいますし
頭が良くても、学習データが間違っていると、これもまた誤ったローカルミニマムに陥りますので
「強化学習」=「間違える機械学習」というイメージを持っています。

追記:
時間をおいて深く読んでみたところ、疑問に思うところがあるので別の資料を当たりながら、自分なりの理解メモを追記しておきます。
まず、この等式をBellman equationと言います。と示されている式
選択肢aが複数あり、その中からひとつa選択したときにs'が無数に存在するため、∑計算ができるという式です。
無数にs'が存在することを言及していなかったので、ちょっと悩みました。
次に、value iteration の変数決定について疑問に思いました。
報酬を設定するという操作が、どういう操作なのか、例えば、人が考えるおよその値を設定し、その値をすこしずつ変化させるのか?
それよりも、一体何が収束するのか?書かれていないので調べることになりました。
調べた結果、現在わかっている範囲では初期値にすべての報酬を0とするという手法。
しかし、びっくりしたことに、そうすると計算を繰り返しても0しか返ってきませんので、何も変化が生まれません。
なるほど自分が疑問に思っていることは正しいようだが、利用したい側の立場としてはうれしくないですね。
は!書いていて気づいたことに、0以外になる瞬間が存在していました。
それは、正解が確定した瞬間と失敗が確定した瞬間です。
そのときに報酬が+1,-1になるようにしておけば、その一手前にて報酬が更新されます。
そこから波紋が広がるように、報酬の更新が走るんですね。
その報酬更新がいつか収束することが期待できるようで、このようにして報酬を決める手法がValue Iterationです。
どうやら私はそのValue Iterationの問題点をずっと指摘していたようです。
正解するまで計算を繰り返さないかぎり、値の更新が行われないということは、大量の計算が必要ということを示しており、一般的にValue Iterationでは、解を求めることは難しいケースが多いとのことです。
もう一つ、Q-Learningというものがあるそうで、次はそちらを理解してみたいと思います。

プラス、人間の行動の動機としての、欲求について知りたかったので、心理学の方を調べてみました。

その点について良さそうな記事を見つけました。
人生の学習 - マズローの心理学

なんとも、人生における幸せな生活とは何かについて考えさせられる記事でしたが
同じような欲求をデジタルなAIにも持たせてみようと考えてみました。

マズローの心理学の話で参考になった部分は次の二つ

「ヨナ・コンプレックス」と呼ばれる、欲求に気付くまいと潜在意識に押し込める臆病な行動
「欲求の段階説」という考え方
人の欲求は6つの段階
1.「生理的欲求」食事とか睡眠とかの欲求
2.「安全の欲求」1.が安定すること
3.「社会的欲求と愛・所属の欲求」人間社会で生きる者としては2.と同じかな?と私は思っている
4.「評価欲求」(他の人から価値ある人だと見なされること、他の人の中で価値ある人であること)
5.「自己実現の欲求」(道徳的であること、問題解決、先入観を持たないこと、事実を受け入れること)
6.「自己超越の欲求」(創造性、自発性、子供のような素朴さ、文化の超越、至高体験

なるほど、これらについて強化学習のRewardを設計してみようかと思います。

調べることから始めていたのですが、ここで目的がだんだん形になってきました。
頑張って言葉にすると、AIが行動するマイクロワールドを作り、それを観察できるオンラインゲームを作ってみたいと考えています。

いつかの AI の記事を書いているときに、AI に身体性を持たせる必要があると結論づけて終わっていたと思います。(終わっていなかったらごめん、あとで確認する)
その身体性をマイクロワールドの中で与えてあげようという試みです。

次回は、本当に簡単なものを作ってみようと思います。