クーの自由研究

マスターの かえるのクーは8年の任期を終え消失しました。クーⅡ世の中の人絶賛募集中です。(特にオリオン座&プレイアデス方向の方は優遇します)助手がメイド喫茶から生還し、リハビリを兼ねて復帰しています。

祝 再クロール受付再開

おめでとうございます

この日を待っていました。かえるのクーの助手の「井戸中 聖」(いとなか あきら)でございます。

f:id:AssistantOfKoo:20210102134224p:plain

ようやく Google サーチコンソールのインデックス登録受付(再クロール受付)が再開しました。早速要求をだしました。(えっ!気づくの遅いですか!?)

はやいときは10~20分程度で再クロールしてもらえましたが、今は全世界のわたくしのような「再クロール待ち」の方がたくさんおられるので、1~2日、ひどければ1週間くらいかかると思っています。

 

まずはめでたいです。

f:id:AssistantOfKoo:20210102134348p:plain

現在 ATARI社などのレトロゲームをインストールしています。

(実は途中あまりうまくいっておらず未完了です)

何かを壊したらしく、結局ANACONDAを全部消すはめに。わ~苦労したMPI環境がぁぁぁぁ。軽い気持ちでやってしまいましたが、メイン環境でやることではなかったです。反省。いまだにpython 3.6 の別環境ができません。。。延々Solving enviroment:のインジケーターがくるくる回っています。結局ANACONDAではなくピュアなpythonで3.6環境をつくりました。このあたりの環境の混沌は、CUDAを仮想環境で動作させられていないことに起因しています(それで、なんでもメイン環境で動かしたくなる)。今年中になんとかします。

自分を使って強化学習をしてみます

このATARIゲームを『自分自身』がプレーをして、どのように上達するのかを、注意深く自己観察して「強化学習」を体感する。というのが今年の最初のお題です。

 

強化学習とは:(とても簡略にいえば)

f:id:AssistantOfKoo:20210102140418p:plain f:id:AssistantOfKoo:20210102140436p:plain

(例)AかBかを選択して部屋に入るゲームがあります。Aを選んだ場合報酬として毎日100円もらえます。(選ぶときにはそれを知りません)Bを選んだ場合、報酬として月末に10,000円もらえます。(選ぶとき、そして月末になるまでそれを知りません)

あなたはゲームの参加者です。Aの部屋にはいりますか?それともBの部屋ですか?

そして報酬の内容を知った2回目のゲームではどちらを選択しますか。

 

f:id:AssistantOfKoo:20210102140919p:plain

(例)バスケットボールのシュートをするゲームがあります。

Aラインは成功率が高く、3万円とギターがもらえます。

Bラインは成功率が低く、5万円がもらえます。

Sラインは成功率がきわめて低いですが、シュートが成功すると車がもらえます。

あなたはゲームの参加者です。Sラインからシュートするのを選ぶ人が多いのですが、いままで一度も成功していないことを知っています。あなたは何ラインからシュートをしますか?

 

人間の大脳神経回路は強化学習の性能が大変すぐれているという研究結果(もしくは予想)があります。

 

(注意)自己の脳に実験空間を構築する場合、うまくやらないと精神分裂症に似た症状になる場合があります。高性能GPUがある方はそちらでやることをお勧めします。

わたくしのように高性能GPUが買えない場合は、危険を承知で実施ください。

これはジョークではなく、わたくしは過去何度もやらかして、床に臥せっています。*1

もちろん脳に電極を刺すような実験ではなく、情報の入力と構築を意図的に調整する単純なものですので、注意深くやれば決して危険ではありません。

 

ところで、強化学習とは結局何なのでしょう?

それを探求するのがお題です。

さぁ!お正月はゲーム三昧です

がんばって、プロのレトロゲーマーを目指します!

(追記:現在、被験者=自分が強化学習中)

import gym
import time
import ctypes
# Windows only
VK_LEFT = 0x25
VK_RIGHT = 0x27
VK_SPACE = 0x20

def isPressed(key):
return (bool(ctypes.windll.user32.GetAsyncKeyState(key) & 0x8000))

env = gym.make('Breakout-v0')
env.reset()

for _ in range(36000):
env.render()
action = 0
if isPressed(VK_LEFT):
action = 3
if isPressed(VK_RIGHT):
action = 2
if isPressed(VK_SPACE):
action = 1
env.step(action)
time.sleep(0.1)

 人間用のインターフェースとして、キーボードの入力と時間待ちを入れています。(上記はブロック崩しでの例です。操作性が悪すぎるので、違った方法のほうがよさそうです。ネットを探しても、これ「自体」で遊んでいる人(強化学習の被験者になっている人)は見つかりません。せっかくコンピュータ向けのインターフェースにしているのに、人間用にする人は、あまりいなさそうです)

f:id:AssistantOfKoo:20210103012949p:plain

 

*1:3D酔いに似てますがもっとひどい感覚です。因果関係の感覚が崩れ、自分が多重世界を高速に行き来しているSF的??な感覚になります。長期記憶まで矛盾するので、単なる記憶障害とも違う感じで、意味不明で気味が悪いです。たぶんボケたらこんな感じなのだと思います。調子を崩してしまうと、実質的な社会復帰に2週間くらいはかかります。学習が発散したら戻れないように、戻れない危険性も少しはあるのかも知れません。そして昔の記憶と現実にほんの少しの違和感が残る後遺症もあります。

すこしだけヒントを書くとすれば、無垢な仮想人格である思い込み(自己暗示、自己催眠)と、他の思考を停止し、愚直なまでに事前に決めたルール(アルゴリズム)を順守していくこと、及びそれを観察する上位人格が別にあるように想像することがポイントになります。負荷がかかるのか死ぬほど疲れます。マッドな実験の入り口かもしれません。