いものやま。

雑多な知識の寄せ集め

AI

強化学習とニューラルネットワークを組合せてみた。(その6)

昨日は関数近似にニューラルネットワークを使ったSarsa()法を実装してみた。 けど、うまくいかなかったので、いろいろパラメータを変えてみるということをやってみた。 パラメータテスト パラメータとして調整しないといけないものは、次の4つ: 中間層のユ…

強化学習とニューラルネットワークを組合せてみた。(その5)

昨日はテーブル型のSarsa()法の実装を行った。 今日はいよいよ関数近似にニューラルネットワークを使ったSarsa()法の実装してみる。 NNSarsaComクラス 関数近似にニューラルネットワークを使ったSarsa()法のクラスは、NNSarsaComクラスとした。 #===========…

強化学習とニューラルネットワークを組合せてみた。(その4)

昨日は○×ゲームを人がプレイできるようにするところまで実装した。 今日はテーブル型のSarsa()法を実装する。 SarsaComクラス ということで、さっそく。 #==================== # sarsa_com.rb #-------------------- # テーブル型のSarsa(λ) AI #==========…

強化学習とニューラルネットワークを組合せてみた。(その3)

昨日は強化学習の関数近似として使うニューラルネットワークの実装を行った。 さっそくSarsa()法と組合せたいところなんだけど、その前にいろいろ実装。 Markモジュール まずはマーク(○、×、空白)を表すためのMarkモジュールから。 #==================== …

強化学習とニューラルネットワークを組合せてみた。(その2)

昨日は強化学習の関数近似としてニューラルネットワークを使うときの勾配計算について書いた。 今日はそのニューラルネットワークを実際にRubyで実装してみる。 ニューラルネットワークの仕様 まず、ざっとした仕様を。 構造 3層ニューラルネットワーク 入力…

強化学習とニューラルネットワークを組合せてみた。(その1)

昨日書いたとおり、現状ではあまり上手くいってない。 でも、とりあえず書いてみる。 関数近似としてニューラルネットワークを使う Sarsa()法の関数近似としてニューラルネットワークなどを使う場合、その関数のパラメータに関する勾配を求める必要がある。 …

強化学習とニューラルネットワークを組合せ中。

強化学習の関数近似器としてニューラルネットワークを組合せるのを試しにやってみてる。 けど、正直、うまくいってない。。。 とりあえず、現状についてちょっと書いてみる。 ○×ゲームに対する強化学習 試しているのは、○×ゲームに対する強化学習について、…

ニューラルネットワークについて学んでみた。(まとめ)

これまでの各記事は以下から。 ニューラルネットワークの構成 多層ネットワーク ニューラルネットワークについて学んでみた。(その1) - いものやま。 活性化関数 ニューラルネットワークについて学んでみた。(その2) - いものやま。 ニューラルネットワ…

ニューラルネットワークについて学んでみた。(その5)

昨日は誤差逆伝播法について説明した。 今日は学習を行うときの工夫について。 過適合 ニューラルネットワークの学習で実現したいのは、まだ見ぬデータに対して正しい推定を行えるようにすること。 そのために、訓練データを使って学習をしている。 けれど、…

ニューラルネットワークについて学んでみた。(その4)

昨日は多層ネットワークの学習方法について説明した。 今日は多層ネットワークの学習で必要になる、勾配計算について。 勾配の計算 まず、入力 に対する出力 を得るために、次のように入力層から出力層に向かって、各層の出力 を順番に計算していくとする: …

ニューラルネットワークについて学んでみた。(その3)

昨日は活性化関数について説明した。 今日は、ニューラルネットワークの学習に関して。 多層ネットワークの関数としての表現 以下では、ニューラルネットワークについて学んでみた。(その1) - いものやま。 で書いた、多層ネットワークについて考えていく…

ニューラルネットワークについて学んでみた。(その2)

昨日は基本的なニューラルネットワークの構成について説明した。 今日は昨日説明しなかった活性化関数について説明する。 活性化関数 活性化関数はニューラルネットワークを非線形にするための関数。 一般的には単調増加する非線形な関数で、微分可能なもの…

ニューラルネットワークについて学んでみた。(その1)

ゲームのAIを強くするために、強化学習の関数近似で、深層学習(Deep Learning)を使えるようになりたいと思ってる。 なので、深層学習について、以下の本で勉強中。 深層学習 (機械学習プロフェッショナルシリーズ)作者: 岡谷貴之出版社/メーカー: 講談社発…

強化学習について学んでみた。(まとめ)

ということで、長く続いてきたけど、これでオシマイ。 これまでの各記事は、以下から。 強化学習とは? イントロダクション 強化学習のコンセプト 基本的な用語の定義 「知識利用」と「探査」のバランスの問題 非連想的な問題、n本腕バンディット問題 n本腕…

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

昨日は、関数近似を組合せる方法が、従来のテーブル型の拡張になっていることを確認した。 今日は、関数近似の1つである、線形手法について説明する。 線形手法 線形手法では、線形関数を使って、価値ベクトルを近似する。 といっても、状態や状態行動対はの…

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

昨日は強化学習に関数近似を組合せる方法を説明し、パラメータの更新式を導き出した。 ところで、この方法はこれまでのテーブル型の手法と矛盾したものになっていないのか、というのが気になるところ。 そこで、今日は、昨日導き出したパラメータの更新式が…

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

昨日は関数近似の説明をするための準備を行った。 今日は関数近似を強化学習とどのように組合せていくのか説明する。 関数近似による価値ベクトルの表現 強化学習に関数近似を組合せる場合、状態価値ベクトルや行動価値ベクトルを、パラメータをもった関数で…

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

前回はSarsa()法について説明した。 今日からは関数近似について説明していく。 これまでの方法の限界と関数近似 これまでの方法では、状態価値ベクトル、行動価値ベクトルの各要素を、メモリ上に(配列などで)そのまま保存し、参照、更新してきた。 このよ…

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

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

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

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

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

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

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

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

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

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

人工知能に「身体性」が必要なわけ。

昨日の記事で、最後に次のようなことを書いた。 もっとも、今の考えとはちょっと違っていて、AIとの関連から身体性については述べていたんだけど。 具体的には、AIを開発したとしても、そのAIが自身の感情や行動を表現したり、あるいは他から影響を受けたり…

「BirdHead」の思考ルーチンを作ってみた。(まとめ)

これまでの各記事は以下から。 ランダムAI 「BirdHead」の思考ルーチンを作ってみた。(その1) - いものやま。 グリーディAI 「BirdHead」の思考ルーチンを作ってみた。(その2) - いものやま。 強化学習AI 「BirdHead」の思考ルーチンを作ってみた。(そ…

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

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

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

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

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

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

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

昨日は「BirdHead」に対するランダムAIを実装した。 今日はもうちょっとマシなAIを実装してみる。 グリーディAI 「22」や「5本のキュウリ」のルールを聞いたときに誰もが思うのが、「それなら一番強いカードを出し続ければいいんじゃないの?」というもの。 …

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

前回までで「BirdHead」を遊べるようにした。 今回からは「BirdHead」の思考ルーチンを作っていく。 ランダムAI まずは一番簡単なところから。 合法手からランダムにアクションを選択するだけの、ランダムAI。 //============================== // BirdHead…