日記

日記です

0607

大学

 今日は3度寝までしてしまい、起きたら昼ごろだったので研究室には行かなかった。平日に行かなかったのは初めてか? 堕落が始まっている。

 3限は離散凸解析の講義。きっついなぁ。なんもわからん。M凸性が保存される条件とか示されてもほえーとしか思えない。

 4限は可視化の講義。英語なのでなんもわからん。

 5限は同期の輪講発表練習。燃え盛っていた。いや難しい論文だったから多少仕方ないところはあったけど。変な論文選んでしまうよりは難しい論文の方がましだと思う。

 そのあとはキャンパスを移動して競技プログラミングの練習会。チームで解く練習だけど、解法わかっているのにコード書けないとやきもきしますね。

  21:30ごろ帰宅。高校の頃の人たちが通話してたっぽくて参加したかった。

 疲れた。疲れました。

将棋ソフト開発

 ここ数日触れていない。やる気というよりは時間の問題だけど、触れないうちにやる気が減退していくというのもよくある話。海底くんの明日はどっちだ!?

 にゅ~らるねっとの方も1月近く触ってなくてひどい。僕は何をやっているんだ。

その他

 段落の先頭は字下げしたいわけだけど、iPhoneで全角スペースを入力する方法がわからない。こういうところは使いにくいなって思う。iPhoneから記事を作ると見たままモードになるっぽくて邪悪だった。

 前も書いたかもしれないけど、研究室入ってから代返とか出席カードを代わりに確保とか、そういうことが普通に行われていることを知って「!」という感じ。特に良いとも悪いとも思っていないけど、その手があるのか。へー。

 食生活が完全に壊れている。食生活が完全に壊れています。厳しい。

0606

大学

 9:18に研究室着。やっぱり二度寝が上手くできなくて多少の眠さがある。いつも通り研究室には誰もいないと思ったら床に人が倒れていてホラーだった(寝ていただけ)。研究室に寝泊まりするって漫画とかの話ではなかったのか……!

 午前中はちょっと探索部に手を付けてから同期の輪講発表練習を観る。まぁ準備不足なのは見て取れますね。

 午後は自分のスライドを修正。先輩に見てもらいいくらか指摘を受け、しばらくしたらまた同期の発表練習。紹介されている論文の質が悪すぎて面白かった。めちゃくちゃ笑ってしまった。説明不足とかそんなん以前にグラフの軸がバラバラとかでギャグでしかない。

 その後は全体ミーティング。これの話は研究室のブログに書いてもいいのかなぁ。

 18時過ぎたあたりで高見叡王が勝っているのを見て一瞬Twitterを覗きに行ってしまった。活躍してほしい。

 そのあとはReactorの論文を読んでいた。これ自体もそうだけど、結構いろいろな技法の合わせ技みたいなので引用されているものをもっと読んでいかないといけない。

 20:20頃に離脱。夕食を大学内で食べられるようにならないとこれ以上の伸びが見込めないなぁ。うーむ。

読んだ論文

 Reactorのやつ。誤解が絶対にあると思うのであまり公開したくはないんだけど他に読んでないので……。本筋にたどり着く以前に背景とか既存研究のところが結構勉強になった(無知なので)。

1.Introduction

 近年のモデルフリー強化学習はおおむね二つに分類できる

  • DQN系:価値関数を経験リプレイでバッチ学習
  • Actor-Critic系:サンプル効率が悪いが分散により高速に学習

 (もちろんハイブリッド系もある

など)

 データ効率の良さと方策オフ学習は環境との相互作用のコストが高い実世界問題に対して重要。もちろん時間効率も重要でこれら両方を解決する手法"Reactor"(Retrace-Actor)を提案。

 サンプル効率…方策オフの経験リプレイ
 時間効率…非同期並列化

 主な貢献は4点

  1. \beta-LOOの提案:方策勾配を改善するために行動価値を上手く使う方法
  2. Distributinal Retrace(\lambda):マルチステップ方策オフ型分布強化学習
  3. 方策オフ型学習のための新しい優先順序付き経験再生
  4. 並列にネットワークを学習させられるアーキテクチャ(?)

2.Background

2.1価値ベースのアルゴリズム

 DQN型が今の主流。

  • Q関数をNNで近似
  • ワンステップの遷移をミニバッチ分貯めて学習
  • 経験リプレイ
  • 教師信号の方は固定したターゲットネットワークから取る

 これの発展形として

 がある。

2.1.1優先順序付き経験リプレイ

 リプレイバッファからランダムに取り出すのではなくTD誤差に応じてソフトマックス的な? 重みづけ(Prioritized Experience Replay)

2.1.2Retrace(\lambda)

 DQNを用いた方策オフ型のマルチステップ学習

2.1.3Distributinal RL

 収益の分布を直接近似。Categorical DQNなど

2.2Actor-Critic法

 A3Cをベースに、同期アップデートするPPOや経験再生を用いたりRetraceを用いたり尤度による再生をしたりいろいろある。

3 The Reactor

3.1 \beta-LOO

 Reactorは方策と行動価値の両方を含む。方策勾配法で方策を改善し、方策を用いてQを推定する?

 ダメだここからは数式が多くなるしブログに書いていくのはつらい……。

その他

 カープは勝ちました。野間すごいんだ。野間丸鈴木の外野、うっとりしてしまうね。カープが勝つだけでこんなにも嬉しい。単純な人間だなぁ。

 人に伝える気持ちが少ないという話、輪講等に限った話ではなくて、知性・理解に対する誠実さが問われている気がする。コンピュータ将棋の技術的な話も一度ちゃんと書かなければ。人のものを読んでばかりだものなぁ。

 Wordpressプラグイン入れるとかなら数式が書きやすかったりするんだろうか。しかし自分でサーバ立てるとかできない人間なのでレンタルサーバ探さないといけないんですよね。

 もともとインターネットに触れ始めたときは個人サイト全盛という感じだったし、当然いずれ自分も自分のサイトを生やすものだと思っていた。しかし結局全然そういう感じにはなっていないし。もっとWeb系の技術に興味を持てよ。VRもそうだけど、こんなに技術に興味がない人間だとは思っていなかった。

 インターネット、もっと楽しくできるんじゃないかとは思っている。思っているだけ。

0605

大学

 09:54に研究室着。ちょっと遅くなってしまった。今日も朝6時に目が覚めてしまい、二度寝、もうまくできずベッドの上で目をつぶって横になっていただけだった。眠い。

 11時までうとうとしながら競技プログラミング。解法が分かった瞬間ハッと眠気が飛び去ったのが自分でも面白かった。

 そのあとは探索部をいじる。さっぱりわからない。

 研究とは? 今日は一切研究しなかった。そろそろちゃんとテーマを決めないとやばい。

将棋ソフト開発

 探索部さっぱりわかりませんねぇ。「変更を加えるごとに弱くなる」今日の575です。

読んだ論文

The Reactor: A fast and sample-efficient Actor-Critic agent for Reinforcement Learning | OpenReview

 Abst私訳

 この研究では、Reactorという新しいエージェントのアーキテクチャを提唱する。これは複数のアルゴリズムアーキテクチャを複合したものであり、Prioritized Dueling DQNやCategorical DQNよりサンプル効率が良く、またA3Cよりも実行時間が短い。我々の最初の貢献はDistributional Retraceと呼ばれる新しい方策評価アルゴリズムを提案したことであり、それは分布を学習する強化学習のためのマルチステップ・方策オフ型の更新である。同じ方法が期待値を計算するためのマルチステップ方策評価アルゴリズムにも用いることができる。次に、行動価値をベースラインとして用いることにより分散とバイアス間のトレードオフを改善する\beta-leaveone-out 方策勾配アルゴリズムを提案する。最後のアルゴリズム的貢献は連続のための新しい優先順序付き再生アルゴリズムであり、これは効率的な再生優先順序付けのために隣接した観測の時間的な局所性を利用するものである。Atari2600のベンチマークを使用し、これらそれぞれの新しいアイデアがサンプル効率と最終的なエージェントの性能のどちらにも貢献することを明らかにする。最終的に、Reactorは2億フレーム、一日以下の学習でstate-of-the-artの性能に至ることを示す。

 いろいろ組み合されすぎていてこれを読んだだけではよくわからないな。普通のベースラインを引く方策勾配法とは何が違うんだろう。

将棋

 藤井七段の終盤をぶっちぎるスピード感は痛快ですね。千田六段の解説もかゆいところに手の届く気分のいい解説っぷりでした。

 uuunuuunさんの名前が出てて面白かった。うーんうーんと読むんですか。別に読み方なんてどうでもいい気もするけど(他人の名前でこういうことを言ってはいけないか?)

その他

 ソースコードをプログラムの「設計図」って表現するのはなかなか良いのではなかと思った。というか自分ではそれ以上に適切な表現も思いつかないかもしれない。アルゴリズミックな部分に着目すれば手続きを示したものなんだろうけど、オブジェクト指向だとねぇ。あとはなんというか、目的の成果物はプログラムであってソースコード自体ではないということもちょっと失われていた視点だったかもしれない。基本的にはプログラミングは手段だなぁと。僕はどちらかというとプログラミングを目的としてしまいがち(競技プログラミングとかその最たるものでは)なので。

 今日も研究室ではTwitter開かない作戦成功した気がする。なんだかんだ有益情報も転がっているので完全に離れるというのは現実的でないという気もするんだけど、どうでしょうね。

 研究のテーマをしっかり決めなければならない。どうしましょう。多少時間の猶予はあるので練り上げていきたいところだけど。博士の人も修士の人も発表が間近に控えているようで研究室の居室率が高い。別に良いことだとも悪いことだとも思わないけど。

 漫画を読む気力が出てこない。動画ばっかり観てしまう。生活が回らない。そういう人生です。

 強化学習の問題設定が好きだという話をした。やはりそこなんですよね。根本的な話をすれば問題設定の美しさが全てだと思う。

 どうでもいいことを日記に書くの良くないですね。もっと絞っていこうぜ。

0604

大学

 09:03ごろに大学着。輪講で使う教室を予約してから研究室へ。この辺のシステムものすごくアナログなんだけど、もうちょっとなんとかならないんだろうか。

 その後は自己対局の結果をまとめた。探索部の改良でもっと強くなってくれなきゃ困るし、評価関数部ももっと伸びてくれないと困る。とにかく技術力の低さがそのまま反映されてしまい、さっぱり強くならないのだ。何か核心的な部分を理解できていないような感覚がある。いや、そういう願望がある。トップソフトと同じ特徴量、同じ探索部を使っているのにEloレートで3000近く差がある現状に対して、何かに気づけば大きく伸びるのではないかという期待があるわけだ。

 ただ実際には小さなことの積み重ねでそういった差が生まれているのかもしれない。貧乏人が一発逆転を目指してギャンブルに突っ込むような事態になってはいけない。いずれにせよ、模倣もできない者がどんな工夫をできるというんだ。まずはちゃんと真似できるようになるところからだろう。守破離という言葉が好きです。僕はまだ守の段階すらまともにこなせていない。

 午前中はスライドの微修正や発表の準備で終わってしまった。

 今日の目標は研究室内でTwitterを開かないことです。成功しました。

 午後はまず発表練習。なんだかんだ言って学びが多い。ちょっと参加者少なかったのが残念だったけど……。

 そのあとは5限に講義。隣の人がちょっとうるさくて集中できなかったのと、やっぱり下手くそな英語喋られても厳しい。

 講義終わってから数本だけ論文のAbstだけ読んで離脱。9時前やんなー。

今日読んだ論文の一つ

[1707.06887] A Distributional Perspective on Reinforcement Learning

 Abst私訳

 この論文では価値分布の根本的な重要性について議論する。確率的な報酬の分布は強化学習のエージェントにより獲得される。これは従来の強化学習における報酬や価値の期待値をモデル化するアプローチとは対照的である。価値分布について研究した論文は大量に確立されているが、それらは通常、リスクを認識した振る舞いの実装のような特定の目的のために用いられてきた。我々はまず方策評価と制御の設定の両方において理論的な結果を、次に重要な分布の不安定さを明らかにする。そして分布の視点を用いてベルマン方程式を価値分布の近似に適用した新しいアルゴリズムを提案する。提案手法をArcade Learning Environmentにある一揃いのゲームを用いて評価する。state-of-the-artの結果と強化学習の近似における価値分布の重要性について逸話的な証拠を得る。最後に理論的な証拠と経験的な証拠を組み合わせ、価値分布が近似の学習設定に対して影響を与える方法について強調する。

 うーむ、あまりこなれた訳にならなかった……。コロンで文章を繋がれると途端に訳が怪しくなる。こうしてみると全然英文理解できてないんだなぁ。これじゃあ論文読んでもなにもわからないでしょう。

 内容についての話をすると、いわゆるCategorical DQNというやつですね。期待値ではなく分布を分布として考えようじゃないかという話題。まぁ確かにそれができるならそうした方が良いはずで、問題は複雑さとかそういうところなわけだから、クリアできるなら万々歳というわけか。

 定義やら証明が多くてちょっと見た程度ではさっぱり理解できない。これは本腰を入れてちゃんと読んでいかないとダメそう。

その他

 言葉や文章に対する拘りが薄れてしまったのはいつからなんだろうか。もっとしっかり文章を書きたい。

 自分が本当に好きな作品に対して、好きな理由を言語化するのが怖くてちゃんと書けたことがない。言語化してしまうと反駁の対象になってしまう。感情に留めている限り、攻撃されることはない。しかしそのままではきっと広がりも小さいのだろう。書かなければならない。そこからでないと、きっと何も始まらない。

 自分が理解したことを他人に伝えるモチベーションというのはどうやって獲得していけばいいのだろうか。大抵の場合、僕が理解するときは何か本を読んだ時であり、他人に伝えたかったら僕が拙い表現で言うよりも「貴方もその本を読んで」というのが一番誠実に思える。強化学習で言ったらSutton & Barto本をちゃんと読めばすぐ僕の理解には追い付けるだろうし。

 Twitterをボーっと眺めている虚無の時間をなくしていかなければならない。

 日記、これで328日も続いているそうです。頭おかしいな。この日記によって良い影響があるのかどうか、正直よくわからない。時間を無駄にしているだけなのではないかという気もする。

 創作を発表するプラットフォームみたいなのが未だに好きになれていない。しかしちゃんと発表して評価されてというサイクルが回って活動が活発になっている人を見かけて、これはこれで良い在り方なのだろうなと思う。アマチュア物書きの注目されない自意識が渦巻く作品も結構好きなんですけどね。まぁやはり健全ではないか。健全、健全ね。健全は良いことか?

 Detroit: Become Humanというゲームが面白そうだった。しかしこういうのゲームではなくやっぱり小説で読みたいという気分になってしまう。

 好きなものについてしっかり語っていこう。ブログを書くぞ。

0603

大学

 12:53に研究室着。今日は意識的に睡眠時間をたくさん取ろうということで2度寝3度寝をし、起きたのが11時くらいだった。お昼を食べてから研究室へ。

 簡単に論文を読んでから輪講発表のスライドを修正。うーん、的確に素人質問をされたら燃えそうだなぁ。論文の表現がよくわからない箇所がそこそこある。

 いやー、実験の意味が分からない。もっと丁寧に書いてほしい。意味不明。

 一番大事なモチベーションの部分もよくわからない。何か根本的な誤読、あるいは知識不足みたいなものがありそう。ここまでわからないのはなんかおかしいぞ。

 abstとかを読み直したら多少わかってきた気もする。うーん、しかし強化学習でよくある文脈からは微妙に外れている気がするなぁ。

 結局スライドを直しただけで終わってしまった。18時過ぎに帰宅。ひどいなぁ。

 AGCにも出た。何も起きなかった。はい。

読んだ論文

 今日から1日1本なんか読んだものを書いていこうという企画をやっていこうと思った。いや、1日1本って少ないのでこれが全てではないんだけど、1本くらいはabstを和訳する英語の練習をしていないとGoogle翻訳に頼りっぱなしではダメだろうということで。

 今日はBootstrapping from Game Tree Search。いわゆるTreeStrapの論文。これは一度読んでおきたいなぁということで。NIPS2009に通ったということなのかな。

 Abstract私訳

 この論文ではヒューリスティックな評価関数のパラメータを\alpha \beta探索によって計算される値の方向にアップデートする新しいアルゴリズムを提案する。我々のアルゴリズムは既存の探索から学習する手法、Samuels checker playerやTD-Leaf法とは二つの点で異なる。一つ目は、ゲーム木における一つのノードではなく全てのノードを更新するということである。二つ目は評価関数に対する教師信号として、後に続く探索ではなく深い探索の結果を用いることである。我々は線形のヒューリスティックな関数を用いているチェスプログラムMeepにこれを実装した。重みベクトルを小さい値でランダムに初期化したのち、Meepは自己対局のみから精度の良い重みを学習した。人間とオンライン上で対局させたところ、Meepは自己対局のみからヒューリスティック学習をするチェスプログラムの中で最高性能であるMasterレベルを発揮した。

 Google翻訳

 本論文では、発見的評価関数のパラメータを、アルファベット検索によって計算された値に更新することにより、新しいアルゴリズムを導入する。 私たちのアルゴリズムは、サミュエルチェッカープレーヤーやTDリーフアルゴリズムなど、検索から学習するための従来のアプローチとは2つの重要な点で異なります。 まず、単一のノードではなく、検索ツリー内のすべてのノードを更新します。 次に、評価関数のトレーニング信号として、後続の検索の結果ではなく、深い検索の結果を使用します。 我々は、線形ヒューリスティック関数を使用して、チェスプログラムMeepでアルゴリズムを実装した。 Meepはウェイトベクトルを小さなランダム値に初期化した後、セルフプレイだけで高品質のウェイトを学習することができました。 人間の対戦相手に対してオンラインでテストされたとき、Meepはマスターレベルでプレイしました。チェスプログラムの最高のパフォーマンスで、自己再生から完全に学んだヒューリスティックです。

 論文に載ってる図がChessProgrammingWikiにも載ってたやつなんだけど、やぱりこれわかりやすいなぁという感じ。性能もTreeStrap高いってなっているんだけど、Ratingの推移グラフを見るとRootStrapとかTD-Leafがまだ収束していないので、とりあえず収束の速さは主張できるだろうけどそれ以上のことはちょっとどうなんだとも思える。まぁ近いうちに実装してみたいとは思っているのでそれで検証できればいいか。

その他

 だるまさんの専門(知らんけどさすがにこういうのが専門なんだろう。この知識量が趣味ですよ言われたら死ぬ)やばない? 何を言っているのか1行も理解できない。強すぎる。

 ダメだなぁ。コンテストもダメだったし、頭悪すぎて何をやってもダメという感じになってきた。何もかも放り出して本読んだりゲームしていたい。勉強しても無駄。

0602

気分が落ち込んでしまった

 やるべきことを忘れていたことに気づいて吐きそうになった。やはり組織でいろいろやるというのすごく苦手です。スケジュールを合わせるのとか強烈にストレスだし人によってモチベーションも違うとか考えるだけで拒否反応が出てしまう。一人でやりたいことだけやっていきたい。しかしそれで生活していけるのは圧倒的に優秀な人だけ……。うー、うー。

 やりたいこと、と言ってもコンピュータ将棋とか競技プログラミングにかける時間はそこまで多くなってないわけで、結局そういう極まりが足りない。異常なまでの執着心を持っている人には勝てないし、ならばやりたいことだけやって生きていくことはできない。厳しい。

 厳しい。一つミスに気づいただけで一気に精神がダメになってしまった。そういう精神状態の不安定さを今後も抱えながら生きていくことを考えると本当につらくなる。おそらく今から死ぬまでの幸福値の総和は0未満なんだろうな。

 これを書いているのは6/2の1時です。つまり前日から寝る前。そういうときは気分が落ち込むものなのでダメです。早く寝ましょう。それすらできないからダメなんだ。

 寝て起きたら多少落ち着いてきた。なんにせよやっていくしかないのだ。

大学

 09:00に研究室着。久しぶりに9時に来れた。

 輪講発表のスライドを作る。全然理解が十分じゃない。やばい。最近コンピュータ将棋にかまけすぎていた。

 あんまり集中できないまま午前は終わってしまった。

 午後もなんかぼんやりとしつつ、まぁ形にはなったかなぁという程度。うーん、良くない。

 ミーティング用のスライドも作らなければならない。

 いやー、研究よりも勉強がしたいなぁという気持ちが強い。ベイズあたりのことをしっかり勉強しないとダメな気がするし、モデルベース強化学習もかなりいろいろ起こっている気がして追うのが大変。

 読むべき論文が多すぎる気がするんだけど、これはどうしたものか。とりあえず何かに手を付けなければ……。

 英語の論文を読むときにGoogle翻訳に頼りっぱなしになっていて最悪っぽい。気合で読んでいく習慣をつけたほうがよさそうだなぁ。

 論文をまとめる方法、結局手書きが良いのではとか思ってしまうんだけど、それをうまくスキャンとかして保存する過程を構築するか、あるいは電子ペーパーみたいなのを買う必要がありますかねぇ。どちらかというと電子ペーパーが気になるんだけど、普段は0.28mmの細いボールペンでカリカリ書く人間なので、なかなかその書き味に近いものがあるのかどうか。調べてないからなんもわからんけど。

 買うとしたらiPad Proなんだろうか。意外と安いという気もする。ちょうど今のiPadが容量不足になってきているのと、さすがに古いので動作が時々おかしいのもあって買い替え時期ではあるんだろうなぁ。

 無限に雑談モードになっている。ダメですね。やる気がさっぱりでない。

 強化学習つらそう。もっと人が少ない分野をやりたい。

 あんまり進捗ないまま18時前くらいに帰った。

競技プログラミング

 codeFlyerに出た。まぁまぁだったんじゃないですかね。眠すぎて最後の方はまともに考察できなかった。

その他

 しっかり眠りたい。

0601

大学

 09:29に研究室着。まぁまぁですかね。早く来て満足してちゃダメだぞ。ちゃんと進捗を生み出すんだぞ。

 まずは評価関数の学習検証実験を開始する。対局の経過をちらちら見てしまうのでよくない。しかも結果がバラバラ……。何か条件を間違えているかなぁ。

 それからはサーベイ。もっと研究で何するのか絞っていかないといけない。モデルベース強化学習、あまりうまくいってないという話を結構目にするし、まぁやるなら逆にありなのかもしれない。しかしモデルができてところでゲーム木探索が良いのかっていうのは昨日大渡さんにも言われたことだしなぁ。

 これ結構本質的な指摘なんじゃないかと。この辺の感覚はやっぱりいろんなゲームの思考ソフトを作っている人の強みっぽいなぁという感じがする。

 どうでもいいけどTwitter、ログインしていないとメンションとかふぁぼ見られない仕組みなの邪悪すぎる。今すぐ潰れてほしいという気持ちに染まってしまった。検索から掘り起こすことはできたけど、なんなんだこの仕様。研究室のパソコンでTwitterログインしたくないんじゃ。

 ちょっと調べているとコンピュータ将棋で言うところの探索はオンラインプランニングなどと言われている感じですかね? やはり強化学習で単に探索と言うと状態空間の探索という感じになってしまうからかな?

 ATreeCとかいうものはちょっと面白そうだった。あーダメ、サーベイを日記に雑にまとめてしまってはダメ。しかしいまだにちゃんとしたまとめ方わからず、Chrome上のブックマークとダウンロードしたものがぐちゃぐちゃになっている。厳しい。どうすればいいのか。

 同じ条件で並列に自己対局しているはずなのに4つのうち一つだけ20%近く低い。確率的にあり得て良い結果なのか? なんだろう、検定とかしてみればいいのかな。うーん、結局統計的検定がよくわからないままになっているツケがこういうところで出てくるんですよね。

 そういえば院試受かっていたようです。といっても内部の進学なので願書出しただけなんですが。進路が決まってしまった……。日々流されて生きている。ちょっとは外部の院とかも考えるべきだったかなぁ。なんとなくノリでやってしまった。

 午後はそんなこんなでボーっとしている時間が長かった。ひどいなぁ。自己対局をやっているとそれに気を取られてしまう。画面を消せ!

 確率分布を考えるのが大事だと思いたいんだけど、多峰性を表現する方法がよくわからない。パラメータ数が膨大になってしまうのでは。

 今日はあまり良くない日だった。また明日頑張りましょう。

その他

 もう6月かぁ。早いものですね。