いものやま。

雑多な知識の寄せ集め

強化学習

強化学習について学んでみた。(その27)

昨日は、前方観測的見方と後方観測的見方が等価であることを示した。 今日は、Sarsa法に適格度トレースの考えを適用したSarsa()法について説明する。 Sarsa()法 といっても、もう準備は終わっていて、強化学習について学んでみた。(その25) - いものやま。…

強化学習について学んでみた。(その26)

昨日は、適格度トレースについて説明した。 ただ、元々の前方観測的見方と、適格度トレースを使った後方観測的見方が等価であるかどうか、という問題が残った。 今日はそれについて。 前方観測的見方と後方観測的見方の等価性 さて、正直、この説明は本来な…

強化学習について学んでみた。(その25)

昨日はTD()法について説明した。 今日は、これを実際に実装できるようにするために、適格度トレースについて考えていく。 TD()法のイメージ まず、TD()法のイメージを確認しておくと、次のような感じ。 各段がそれぞれステップTD法になっていて、それぞれの…

強化学習について学んでみた。(その24)

一昨日はこれまでのおさらいと、ステップTD法とついて説明した。 今日は、さらにアルゴリズムを融合させて、TD()について考えていく。 モンテカルロ法とTD学習の融合(続き) TD()法 ステップ収益は、いずれも本質的には同じ値を推定しているので、重みを使…

強化学習について学んでみた。(その23)

すごく久々に。 前回の内容、覚えてるかなw 前回まではTD学習について説明していて、最後に○×ゲームに対してQ学習を使ったAIを実装した。 今日からはTD()について説明していく。 動的計画法、モンテカルロ法、TD学習のおさらい まずは、これまでのおさらいか…

「BirdHead」の思考ルーチンを作ってみた。(その5)

昨日はアクション選択と学習のアルゴリズムを実装した。 今日は、パラメータの保存とロードを実装して、クラスとして完成させる。 SarsaComクラス(続き) 保存とロード 保存とロードの実装を入れたクラス全体の様子は、以下のようになる。 (省略されている…

「BirdHead」の思考ルーチンを作ってみた。(その4)

昨日はプレイヤー・ビューの特徴ベクトル化とそれを使った価値の計算について説明した。 今日はそれを使ったアクションの選択と学習について説明していく。 SarsaComクラス(続き) アクションの選択 アクションの選択は、Sarsa()法を使うので、任意のソフト…

「BirdHead」の思考ルーチンを作ってみた。(その3)

昨日はグリーディAIを実装した。 今日からは強化学習を使ってAIを作っていく。 方針 まず、方針について。 強化学習にはいくつかのアルゴリズムがあるけれど、今回はSarsa()法を使う。 これは強化学習について学んでみた。(その19) - いものやま。で説明し…

強化学習について学んでみた。(その22)

昨日はSarsa法によるAIの実装を行った。 今日はQ学習によるAIの実装を行っていく。 QLearningCom さっそくQ学習によるAIの実装を。 #!/usr/bin/env ruby require './tic_tac_toe' require './state' require './value' module TicTacToe class QLearningCom …

強化学習について学んでみた。(その21)

昨日は○×ゲームをプレイできるようにするところまで実装した。 今日はSarsa法を使ったAIを実装していく。 Valueクラス まずは行動価値を表すValueクラスから。 #==================== # value.rb #==================== require './state' module TicTacToe …

強化学習について学んでみた。(その20)

昨日はSarsa法とQ学習の説明をした。 今日からは実際にこれらのアルゴリズムを使って○×ゲームのAIを作ってみる。 ○×ゲーム まぁ、○×ゲームの説明は不要だよね・・・ とりあえずは、○×ゲームをCUIで遊べるようにするところから。 モジュールと定数の定義 とり…

強化学習について学んでみた。(その19)

昨日はTD学習の考え方について説明した。 今日は方策オン型制御であるSarsa法と、方策オフ型制御であるQ学習について説明していく。 Sarsa法 Sarsa法は方策オン型制御のアルゴリズムの1つで、方策としてソフト方策を使うことで知識利用と探査のバランスをと…

強化学習について学んでみた。(その18)

前回までは、モンテカルロ法について説明していた。 今日からはTD学習(Temporal Difference Learning: 時間的差分学習)について説明していく。 おさらい まず、強化学習のベースとなる考え方は、Bellman方程式を解いて、ある方策の元での状態や行動の価値…

強化学習について学んでみた。(その17)

昨日は方策オン型モンテカルロ制御と方策オフ型モンテカルロ制御について説明した。 今日は、実際にこれらのアルゴリズムを使ったプログラムを書いてみる。 レーストラック 本で練習問題とされているレーストラックの問題を、方策オン型モンテカルロ制御、方…

強化学習について学んでみた。(その16)

昨日はモンテカルロ-ES法を使ってブラックジャックのAIをプログラミングした。 今日は、開始点探査の仮定を外す方法について考えていく。 方策オン型手法と方策オフ型手法 まず、開始点探査の仮定を外す方法として、大きく分けて2通りの方法が考えられる。 …

強化学習について学んでみた。(その15)

昨日はモンテカルロ-ES法による方策の評価と改善を説明した。 今日は、モンテカルロ-ES法で実際にプログラムを書いてみる。 ブラックジャック 本で例として挙げられているブラックシャックのAIをモンテカルロ-ES法で実装してみる。 ブラックシャックはカジノ…

強化学習について学んでみた。(その14)

久々に強化学習の話。 前回は、価値反復について説明し、プログラムを書いてみた。 今日からは、そもそも状態遷移のモデルが分からない場合に、どうすればいいのかを考えていく。 おさらい まず、以下の記事で状態遷移のモデルとBellman方程式について説明し…

強化学習について学んでみた。(その13)

昨日は方策反復について説明し、実際にプログラムも書いてみた。 今日はもう一つのアルゴリズムについて説明する。 価値反復 方策反復の場合、方策評価の中で何度もスイープを行うので、方策改善が行われるまでに時間がかかる。 なら、1回スイープを行うごと…

強化学習について学んでみた。(その12)

昨日は方策改善について説明した。 今日は、方策評価と方策改善を使って実際に学習を進めていく方法について。 方策反復 方策評価でまず方策の評価を行ったら、次に方策改善で方策の改善を行う。 そしたら、今度は改善された方策で再び方策評価を行い、さら…

強化学習について学んでみた。(その11)

昨日は方策評価について説明した。 今日は、評価された状態価値を使って、方策を改善していくことを考えていく。 方策改善 さて、方策評価が出来たのなら、今度はその方策を変えることで、状態価値(や行動価値)を改善していきたいとなる。 これを、方策改…

強化学習について学んでみた。(その10)

昨日の続き。 今日はどうやってBellman方程式を解いていくのかを考えていく。 方策評価 昨日言及した通り、ある方策の元でBellman方程式を解くと、その方策での状態価値(あるいは行動価値)が計算できる。 なので、Bellman方程式を解くことを方策評価と呼ん…

強化学習について学んでみた。(その9)

久々に。 前回までは、非連想的な問題である、n本腕バンディット問題を扱っていた。 今回からは、元々考えていた、強化学習について学んでみた。(その3) - いものやま。で述べたような状況ーーすなわち、行動の選択によって、状態がどんどん変化していって…

強化学習について学んでみた。(その8)

昨日はグリーディ法とグリーディ法を扱った。 今日はn本腕バンディット問題に対する別のアルゴリズムを考えていく。 ソフトマックス法 グリーディ法では、探査を行うために、の確率でランダムに行動を選択していた。 もう一つ、探査を行うための方法として、…

強化学習について学んでみた。(その7)

昨日はn本腕バンディット問題の行動の価値について考えた。 今日は、それを使って具体的なアルゴリズムを考えていく。 グリーディ法 一番最初に思いつく方法は、現在の推定される行動の価値の中で、最も価値の高い行動を選ぶという方法。 すなわち、回目に選…

強化学習について学んでみた。(その6)

昨日はn本腕バンディットをプログラムで書いてみた。 今日はn本腕バンディット問題に対するアルゴリズムを考えるために、「行動の価値」について考えていく。 行動の価値 どのレバーを下すのかを考えるときに、これまでの結果から、出来るだけ良さげなレバー…

強化学習について学んでみた。(その5)

昨日は、n本腕バンディット問題と、「知識利用」と「探査」のバランスの問題について説明した。 今日はn本腕バンディット問題をプログラム(Ruby)で実際に動かしてみる。 正規分布に従う乱数生成器 今回、n本腕バンディット問題のレバーの期待値、および、…

強化学習について学んでみた。(その4)

昨日は、強化学習で考える具体的な状況や、用語について説明した。 今日は、もうちょっと簡単な場合について考えていく。 非連想的な問題 昨日の「報酬」に関する説明を聞いて、次のように思ったかもしれない。 「(猿の例で)大きな箱を選んでも小さな箱を…

強化学習について学んでみた。(その3)

昨日は強化学習の「強化」とは何なのかについて説明した。 今日は、強化学習で考える具体的な状況や、そこで使われる用語について。 エージェントと環境 強化学習では、学習したり行動を決定する主体(つまりAI自身)のことを、エージェントと呼ぶ。 そして…

強化学習について学んでみた。(その2)

昨日の記事は以下。 今日は、強化学習についてもう少し説明したいと思う。 「強化」って何? そもそも、「強化学習」の「強化」って何なんだ?という話。 「強化」っていうと、何かを強くするのかなぁ、という感じだけど、「強化学習」という訳語の元になっ…

強化学習について学んでみた。(その1)

ゲームを作っていくときに必要となるのが、AIの作成。 変種オセロを作っているときにもいくつかの探索アルゴリズムを実装したけれど、盤面の評価については単純に「出来るだけ自分の色が多く、そして相手の色が少ない方がいい」としただけだった。 ただ、こ…