タグ

ブックマーク / yamaimo.hatenablog.jp (8)

  • 強化学習について学んでみた。(その11) - いものやま。

    昨日は方策評価について説明した。 今日は、評価された状態価値を使って、方策を改善していくことを考えていく。 方策改善 さて、方策評価が出来たのなら、今度はその方策を変えることで、状態価値(や行動価値)を改善していきたいとなる。 これを、方策改善と呼ぶ。 なお、方策や状態価値を改善するためには、そもそも方策や状態価値の大小関係を定義しておかないといけない。 まず、状態価値はベクトルなので、その大小関係を次のように定義する。 そして、これを使って、方策の大小関係を次のように定義する。 特に、この大小関係で最大となる、最適方策、最適状態価値ベクトルを、次のように定義する。 なお、こうして定めた大小関係は全順序ではなく半順序なので、実際のところ、(有界であれば)極大元の存在は言えるけれど、最大元が存在するということまでは言えない。 ではこの辺りの議論が全然されてなくてかなり怪しいのだけれど、おそ

    強化学習について学んでみた。(その11) - いものやま。
    agw
    agw 2019/01/24
  • 強化学習について学んでみた。(その6) - いものやま。

    昨日はn腕バンディットをプログラムで書いてみた。 今日はn腕バンディット問題に対するアルゴリズムを考えるために、「行動の価値」について考えていく。 行動の価値 どのレバーを下すのかを考えるときに、これまでの結果から、出来るだけ良さげなレバーを選びたいので、「レバーを選ぶ」という行動の価値というものを考えていくことにする。 行える行動の集合をで表すと、 そして、推定される行動の価値を、関数で表すことにする。 なお、関数に添え字がついているのは、行動の価値の推定が、レバーを下ろすという行動をするたびに更新されていくことが考えられるから。 例えば、レバー0を下ろしたときに、得られた報酬が今まで考えていた行動の価値よりも高ければ、レバー0を下ろすという行動の価値はより高いものだと推定されるし、そうでなければ、レバー0を下ろすという行動の価値はより低いものだと推定されていくことになる。 さて、推

    強化学習について学んでみた。(その6) - いものやま。
    agw
    agw 2018/01/01
  • 強化学習について学んでみた。(その5) - いものやま。

    昨日は、n腕バンディット問題と、「知識利用」と「探査」のバランスの問題について説明した。 今日はn腕バンディット問題をプログラム(Ruby)で実際に動かしてみる。 正規分布に従う乱数生成器 今回、n腕バンディット問題のレバーの期待値、および、レバーを選んだときに得られる報酬は、正規分布に従うとしていた。 けど、そもそも正規分布に従う乱数って、どうやって発生させるの?という話。 一様分布に従う乱数なら、ライブラリを使えば簡単に得られるけれど、正規分布に従う乱数となると、そうはいかなくなる。 ただ、これに関してはボックス=ミュラー法という方法が知られているので、それを使えばいい。 #==================== # normal_dist_random.rb #==================== # 正規分布に従った乱数を生成するクラス class NormalDist

    強化学習について学んでみた。(その5) - いものやま。
  • 強化学習について学んでみた。(その4) - いものやま。

    昨日は、強化学習で考える具体的な状況や、用語について説明した。 今日は、もうちょっと簡単な場合について考えていく。 非連想的な問題 昨日の「報酬」に関する説明を聞いて、次のように思ったかもしれない。 「(猿の例で)大きな箱を選んでも小さな箱を選んでも報酬がもらえないなら、猿はどうやって『大きな箱を選ぶ』という行動の価値と、『小さな箱を選ぶ』という行動の価値を学んだらいいんだろう?」 これはもっともな疑問で、つまり、行動の選択を何度も繰り返した結果として報酬が得られるのだとしたら、それぞれの行動がどれくらい報酬に寄与したのかというのは、分からない。 将棋とかで、ある手が実は悪手だったのだけど、相手も間違えたので、結果的に自分が勝つことが出来たりした場合、悪手を指したにも関わらず報酬がもらえてしまうので、結果、その悪手の評価が上がってしまうことすら考えられる。 この問題をどう解決すればいいのか

    強化学習について学んでみた。(その4) - いものやま。
  • 強化学習について学んでみた。(その3) - いものやま。

    昨日は強化学習の「強化」とは何なのかについて説明した。 今日は、強化学習で考える具体的な状況や、そこで使われる用語について。 エージェントと環境 強化学習では、学習したり行動を決定する主体(つまりAI自身)のことを、エージェントと呼ぶ。 そして、エージェントが行動した結果、状態を変えたり、あるいは報酬/罰を与えるもののことを、環境と呼ぶ。 例えば、昨日の猿の例で言えば、エージェントは「猿」で、環境は「檻の中」だ。 環境は、いくつかの状態を持つ。 環境の可能な状態の集合をと書くことにする。 例えば、猿の例だと、 となる。 さて、環境の状態はエージェントが行動を行っていくと、変化していく。 そこで、時間ステップ(これはエージェントが行動を行うと進んでいく)をとしたときに、それぞれの状態をで表すことにする。 例えば、猿の例だと、 で、猿が小さな箱を選ぶという行動を行えば、 となるし、大きな箱を選

    強化学習について学んでみた。(その3) - いものやま。
  • 強化学習について学んでみた。(その2) - いものやま。

    昨日の記事は以下。 今日は、強化学習についてもう少し説明したいと思う。 「強化」って何? そもそも、「強化学習」の「強化」って何なんだ?という話。 「強化」っていうと、何かを強くするのかなぁ、という感じだけど、「強化学習」という訳語の元になった英語は、"Reinforcement Learning"。 つまり、「強化」というのは"Reinforcement"の訳。 じゃあ、"Reinforcement"(あるいはその動詞の"Reinforce")って何なのかというと、「補強する」とかそういった意味。 ("re-in-force"で、「再度」「力を」「入れる」みたいなイメージ) といっても、"Reinforcement"の意味が 「補強」だとしても、やっぱり意味がよく分からない。 タネを明かせば、この「強化」("Reinforcement")というのは心理学の専門用語で、wikipedia

    強化学習について学んでみた。(その2) - いものやま。
  • 強化学習について学んでみた。(その12) - いものやま。

    昨日は方策改善について説明した。 今日は、方策評価と方策改善を使って実際に学習を進めていく方法について。 方策反復 方策評価でまず方策の評価を行ったら、次に方策改善で方策の改善を行う。 そしたら、今度は改善された方策で再び方策評価を行い、さらに方策改善を行う・・・ というのを繰り返せば、繰り返すごとに方策は改善されていって、最後には最適方策へたどり着くことが予想される。 このような手法は、方策反復(policy iteration)と呼ばれている。 具体的には、以下のようなアルゴリズムになる。 初期化 すべてのについて、とを任意に初期化する。 方策評価 以下を繰り返す: 各について: (は十分小さい正の定数)なら、繰り返しを終了。 方策改善 各について: なら、 がtrueなら、2. 方策評価へ戻る。 そうでなければ、終了。 レンタカー問題 具体的なプログラムがどうなるのかを例示するために

    強化学習について学んでみた。(その12) - いものやま。
    agw
    agw 2016/04/04
  • 強化学習について学んでみた。(その1) - いものやま。

    ゲームを作っていくときに必要となるのが、AIの作成。 変種オセロを作っているときにもいくつかの探索アルゴリズムを実装したけれど、盤面の評価については単純に「出来るだけ自分の色が多く、そして相手の色が少ない方がいい」としただけだった。 ただ、これだと辺や隅をとることの重要性をまったく理解できず、人に簡単に辺や隅を取られてしまう。 なので、途中までは実利が大きくても、最後には辺や隅の力で実利がひっくり返されるということがよく起きて、なかなか勝てなかったりする。 そこで、AIをより強くするには、盤面をより正確に評価できるようにする必要がある。 盤面の評価方法 盤面をどのように評価するかーーすなわち、盤面の評価関数をどのように作るかーーというのには、いくつかの方法が考えられる。 人の手による方法 まず考えられるのは、盤面の特徴的な値に対して、それぞれ評価の重みを決めておき、それらを掛けて合算した値

    強化学習について学んでみた。(その1) - いものやま。
  • 1