Notebook

日記(5/11)

5/11

Coursera

強化学習に関しては全く未知よりの未知*1だったので学ぶことが多く新鮮.

環境構築ついでに興味のあったQ学習について調べてみた.

Q学習

以下,「車が坂を登る」ために人工知能が各時間にどのような行動を取ればよいかという問題を考える.

f:id:Fgjiutx:20180512022114j:plain

車は各フレームに右進,静止,左進のいずれかの行動を取ることができるものとする.

f:id:Fgjiutx:20180512021550p:plain

Q学習では,環境とエージェントというものを考える.エージェントは環境に応じて行動を起こす.また,エージェントはその行動と環境の情報からその行動の価値を出力する行動価値関数というものを持っており,エージェントは基本,この行動価値関数が最大であるような行動を取る.行動の価値は,環境からの報酬によって得られこの報酬を用いて更新される.

この行動⇨環境の変化⇨報酬⇨更新のプロセスを繰り返し,よりよい行動価値関数を得ることがQ学習の目的である.

 

この坂上りにおいて,環境は車の位置と速さであり,行動は前述のように右進,静止,左進であり,報酬はステップごとに-1である.また,位置と速さは離散値として扱いたいため最大値と最小値の間を40分割する.

以降の図において静止:0,左進:1,右進:2とする.

 

注:報酬情報を勘違いしていたので以降の図の報酬情報:0は間違いで-1が正しい(かも)

 

 

f:id:Fgjiutx:20180512031051p:plain

エージェントは(位置×速さ×行動)の3次元の配列に行動価値を保存する行動価値関数(Qテーブル)と,行動情報,環境情報,報酬情報を保持しているとする.まず,現在状態の位置,及び速さにおけるQテーブルを参照にし,取るべき行動を取得する.

 

 

f:id:Fgjiutx:20180512031228p:plain

取るべき行動に応じた環境からの応答は次フレームにおける位置,速さ,及び報酬である.

 

 

f:id:Fgjiutx:20180512031312p:plain

これらの行動によって得られた環境と報酬,及び行動前の環境の情報を用いてQテーブルの更新を行う.

Qテーブルの更新は移動前の環境情報を$s_0$,移動後を$s_1$とし,行動を$a$,報酬を$r$と置くと,

$$Q \left(s_0, a\right) \longleftarrow Q \left(s_0, a\right)+\alpha\left(r+\gamma\max_{a’}~{Q\left(s_1, a'\right)}- Q \left(s_0, a\right) \right)$$

のようにして更新される.

ただし,$\alpha$は学習率と呼ばれ,今回は$0.2$,$\gamma$は割引率と呼ばれ,今回は$0.99$とした.

このプロセスの繰り返しにより精度を高めていく.

 

ただし,この方法では局所解へと陥る可能性があるため,常に行動価値関数が最大の行動を取るのではなく,たまにランダムな方向へと移動するようにする.この方法のことは$\varepsilon-$グリーディ法と呼ばれる.

 

こちらにあるコードを参照にして実装を行った結果,20000エポックを経たあと,なんかめっちゃいい感じで坂を登っていた.すごい.

 

www.youtube.com

 

  • 実験レポート
  • Kaggle
  • Coursera
  • Ruby on Rails
  • Blender
  • AOJ-ICPC過去問
  • 適度な運動
  • 整った食習慣
  • 質の良い睡眠

*1:JK流行語

日記(5/10)

5/10

Coursera

とうとう強化学習コースが開放されたのではじめて行く. 見た感じ一週間あたりたかだか3時間程度で行けるらしいので Kaggleのやつと同時並行をしていく.

実験レポート

橋梁の有限要素解析を行った. 有限要素解析自体は面白そうだけどレポートは手書きだし書きたくない.

  • 実験レポート
  • Kaggle
  • Coursera
  • Ruby on Rails
  • Blender
  • AOJ-ICPC過去問
  • 適度な運動
  • 整った食習慣
  • 質の良い睡眠

日記(5/5)

5/5

一日中レポートを書いてた気がするけど、10時間くらいVtuberのアーカイブ見てた。

充実した日だった。

AOJ-ICPC過去問

整長方形 | Aizu Online Judge

gist.github.com

 

実験レポート

Kaggle

Coursera

Ruby on Rails

Blender

AOJ-ICPC過去問

適度な運動

整った食習慣

質の良い睡眠

 

日記(5/3)

5/3

休みが始まった.どうしても初日はぐーたらしてしまう.

Courseraは1週間できなかったけど半週間分進めたからまあよしとしたい.

実験レポートを始めるのが手書きだからめっちゃ億劫.ほんま無理.

 

Kaggleは誤差が0.23を切れたモデルが作れたのでまあいいかといったところ.

でも,180位くらいだったのでさらにもっと精度を詰める必要がある.

 

Blenderはこの連休を通してモデル1体作り上げたい感じ.がんばる.

AOJ

How Many Islands? | Aizu Online Judge

gist.github.com

深さ優先探索の典型問題だった.案外組もうと思うと,久々で忘れてしまってる感があるので良い復習になった.

進捗

実験レポート

Kaggle

Coursera

Ruby on Rails

Blender

AOJ-ICPC過去問

適度な運動

整った食習慣

質の良い睡眠

 

ぽんぽこ24時間Vtuberぶっ通し生みんな見て

日記(5/2)

5/2

起床10時30分.遅い~

Courseraを着々と進めている.

Kaggle結構面白いけど,強化学習コースも早くやってみたい気分である.

 

せっかくのGWなので悔いのないようにしたいところだが,5月に入って悔いのある日しか送ってないので厳しそう.

バイトも何も特に無いGWなのでまあ無駄にはしたくない.しかし,実験レポートのせいで全てが狂いそう.

 

アルゴリズムの練習がてらAOJ-ICPCの150-250あたりを埋めようと思う.

進捗

実験レポート

Kaggle

Coursera

Ruby on Rails

Blender

AOJ-ICPC過去問

適度な運動

整った食習慣

質の良い睡眠

日記(4/30)

4/30

何もしなかった.たまにはこういう日も必要だという免罪符で正当化します*1

 

体がなまって仕方ない.10000歩くらい周りを散策するだけでも結構いい感じになる.休日はまったり散歩もいいかも知れない.冗談ではなく.

 

Courseraを進める決意を決めた.GW中にKagglerなろうぜコースを修了できればいいなぁという願望がある.

 

4月の進捗(ざっくり)

Introduction to Deep Learningを修了した.

How to Win a Data Science Competition: Learn from Top Kagglersを始めた.

Python機械学習プログラミングを読了した.

お花畑本をざっと目を通した.

Cycle GANをKerasで再現しようとした(なぜかうまくいかなかった)

VAE,RNN,LSTMを何となく理解した.

 

実験レポート等が原因で受動的になることが多く,3月程進捗をあげられなかった.

5月の目標(ざっくり)

1.CourseraのKaggleコースを修了する+強化学習コースに着手する.

2.Ruby on Railsを着手してみる.

3.深層学習系の(とくに画像のスタイル変換やボーンの位置検出が面白そうだったのでそのへんの)論文等を読み漁りたい.

4.規則正しい生活

*1:何度目?

日記(4/27)

完全に存在を忘れていた…

なんだかんだその日のことをまとめるのは,モチベの維持につながるので継続的にやっていきたい

 

4月第4週

月:実験レポートで消耗して,何もしてない.ただボーッと時が過ぎるのを待っていた.

火:実験で一日が終わるツラい曜日.今週は2週間猶予があり心が軽い.

Blender班,頑張ってほしい.

水:般教の都市工学,面白い.都市の数理モデルとか結構興味あるのでやっていきをしたい.

CG班,何もわからない.Python班,何もわからない.

木:授業中にKaggleを開いちゃだめ.

金:健康診断,体重増加,視力低下.やばい...

強化学習たのちい になりたい.

Kaggleのコンペティションはデータの前処理が苦行なので,Pandasの特訓になり良い(精一杯の反抗)

したこと

  • Coursera: Kaggleをやり始めた理由.なんだかんだ楽しい.
  • Kaggle: 登録した.Avito Demand Prediction Challenge | Kaggleをやっている.
  • 花畑はなんというか2章をもう一度じっくり読み直したほうがタメになる気がしてきた
  • Blender: 久々にモデルを作りたくなった

 

よさげなPythonパッケージ

Kaggleの学習途中,見つけたパッケージとして,Plotlyがなんか良さげだった.

触ってみると,Matplotlibよりいろいろいじれて楽しい.

といっても直にMatなんたら触る機会より,Seabornで済ませることのほうが多い気がするけど.

Jupyter Notebook Viewer

下のGistだと僕の環境では見えなかったから上のリンクのほうが見えるかも

gist.github.com

 

古典的な機械学習Python機械学習本で済ませたので,Courseraは案外スムーズに行きそうではある.GW中に,CourseraのKagglerコースは終わらせたい気持ちがある.頑張る.

日記(4/20-4/21)

4/20

Couseraできない,VAEの話を聞いてVAE実装しようとしたけどできない,レポートはやりたくない.

散々だった

 

4/21

LT会をした.新入生向けのはずなのに新入生が全くおらず面白かった(面白くない)

ひたすらに,レポートを書いてるはずなのに終わらない.主にTwitterのせいで.

毎週末このざまになるのは良くない…

 

ABC095に参加した.3完だったけど68分とか掛かってた.思いついてみれば簡単なはずなのに案外思いつかないの,ひじょーにあたまわるわる~案件.