※敬称略 ■望月:自動微分 浦田:意図としては微分と触れ合ってくださいってことでOK。自動微分は、深層学習の根幹。深層学習はMNLでいうパラメータ推定をしているのだが、その数が多く、よくフィットする。単純にフィットさせるためには、最尤法のような計算が必要だが、それを素早く、可能な時間でできるようにするための技術。それは最適化計算でも深層学習でもない。 鈴木:数式微分の実装方法は? 望月:例えばlogxであれば1/xを返すみたいな辞書的なものを作っておき、それを呼び出す。最初に細かい単位の微分を考えておかなくてはならない。 鈴木:歴史的には、自動微分がNNの生みの親(?)的な感じになったのですか?自動微分が開発されたからNNができた的な。 望月:自動微分はNNの火付け役。自動微分が出てくる前からNNはあった。 村橋:分かりやすく楽しく読めた。あとでコード回してみます。 望月:ありがとうございます。 村橋:計算グラフみたいなのは、こちらで用意してあげる感じ? 望月:人間が自動微分を模倣するときには、こういう計算グラフになってるなって考えないといけないが、実際にコンピューターが処理するときは、「この単位だったら微分を知ってる」みたいな単位に分けるときに、グラフ構造を考えている。自動微分は、計算の順番の構造をメモリに取っとかないといけない。計算は速く正確だが、メモリは消費する。 増田:世の中の全ての計算を自動微分にすれば良いという話ではない? 望月:数式微分は長くなるけど実際は自動微分と同じじゃねみたいに思えるが、数式微分だと分岐があったときに微分できないが、自動微分だと、数字がこうなったっていうパスだけを見ているので、命令みたいなのがあっても微分ができるみたいなメリットがあるので、色んなものを数字のパスに置き換えるみたいなことはできそうだが、メモリが問題かも。でもNNで何十万のパラメータを扱うところまでできているから結構できそうな気がするが、メモリの制約があるってことが論文に書いてあるってことは、上限はあるということだと思う。 浦田:2つポイントがある。1つは、深層学習は、GPUと計算ができるみたいなところ。2つ目は、最適化計算を解くときに、微分値の精度がどうかってところで、最適値に近づくための回数が違う。 小林:計算パスみたいなのは、Colabの6次精度を細かく書くと長いので云々と書いてあるユニットのコードに書いてあるってこと? 望月:その下は多分数値微分のやつ。自動微分って書いてあるところ。1回の微分連鎖律代入って書いてあるところ。実際にコンピュータが自動微分するときは前向きの計算も必要だが、今回はそこは手動でやっている。前向きの計算は分かっている前提で、計算するプロセスは入れないで、後ろ向きで計算するところだけ。 小林:βは与えてるもんね。本来はβを求めるために前向きのプロセスが必要だよねってこと?パラメータは推定されてるってこと? 望月:βは初期値。vとかpの計算は、確かにしている。SGD_autoってやつで、、そもそもSGDではないが、、βで初期値を決めて、対数尤度を計算していって、、update.autoっていうのが微分値の計算。ここでパラメータが更新されている。 小林:SGD_autoがRのoptim関数に当たるってことだよね。 -------------------- ■小川:バンディット問題とZDD 鈴木:敵対者のコストベクトルの設定方法はランダムですか?demon的な感じでプレイヤーのリグレットを最大化しようとするとかはないですか? 小川:敵対的バンディット問題の最初の設定が、敵対者はDemon的。そうするとプレイヤーは勝てないので、確率的に動こうとする。 小島:スーパーアームっていうのは、スロットマシンだと思えば良い? 小川:スロットマシンの複数の組み合わせということ。10個スロットマシンがあったとしたら、その中から1個選ぶんじゃなくて、組み合わせで、1・3・5番目を取る的な。 小島:リグレットっていうのは、効用ではなく不効用だと思えば良い?最悪度的な。 小川:理想の選択と現実の選択の差。どれくらい損してるかを表している。効用とは似ているが、、 浦田:似ているが、微妙に違う。 増田:敵対者はプレイヤーの選択を完全に知った上で、コストベクトルを設定する? 小川:最初の考えはそうだったが、今回はプレイヤーの選択とコストの決定が同時なので、完全には知らない。 浦田:アルゴリズムの中でハイパーパラメータを更新するが、繰り返し計算でtしか変わっていない? 小川:そう。 近藤:重みも更新される? 浦田:されるが、ハイパーパラメータではない。②に入る。 浦田:どのタイミングでZDD使ってる? 小川:GsがZDDで圧縮したNW。 浦田:インプットとして入れるってことね。 小川:そう。 鈴木:探索と知識利用のトレードオフみたいな話はどこに入っていたか? 小川:今回は探索とか知識利用ではない。 鈴木:確率的な選択の元となる分布を最適化するという枠組み? 小川:分布の最適化というか、重みの更新。 鈴木:重みを決定して分布を決定するということ? 小川:そう。 鈴木:強化学習とは違うのか? 小川:バンディット問題自体が強化学習の一部。 浦田:P_i,iっていうのは? 小川:各頂点に対してのラベルがfor文で更新されていて、ラベルとラベルが同時に発生する共起確率。 浦田:ラベルはリンクのコストって話だったよね? 小川:コストではなく、リンク番号。 浦田:では、P_i,iは? 小川:P_i,iは、ある経路を選んだときに、iが選ばれるような経路の選択確率の合計。 浦田:このiっていうのはZDD上のリンクiを指しているんですよね。このNWをZDDで全経路列挙して、、 小川:その場合のラベルはリンクの番号になっているはず。 近藤:9pのコストのlとアルゴリズム上のラベルのlは違うんですか? 小川:違う。 近藤:アルゴリズムでは確率行列の計算だったのでってこと? 小川:コストはすでに計算されているので。コストが関係するのは③とか。コストベクトルとラベルは別物。 羽藤:どう使うの? 小川:ルーティング問題。day-to-dayと似ている。僕がやろうとしてるのは、人の行動のルーティング。コロナ後の人の生活はこうだみたいなのは出せる。 羽藤:今まで行かないようなところに行くときに探索が発生するってことでしょ。みたいなことに使おうとしている? 小川:見ていて探索感はなかったので。 羽藤:スーパーアームっていうのは選択肢集合セル。1つのセルの中で行動したときに、自分とマッチするか的な感じ。回遊行動は。観光客の行動には近いのでは。 小川:最初はNWが分からない状態から、徐々に明らかにしていって良いところに落ち着くとか。 羽藤:COVID-19で今までと違う動きが必要なときに、どのセルが自分にとってリグレットが小さいのかみたいなことを探索していく。あとは増田が豊洲で避難って言ったときに、ルーティングの問題でこれを当てはめられる。避難する人とピックアップする人がいたときに、このやり方が合うかな。 増田:まだ分からない。 羽藤:鈴木卒論には当てはまる。 鈴木:当てはまる。day-to-dayで学習してルーティングしているので。 羽藤:避難期とか復興期とかのオペレーションに当てはまる。 小林:コストが重要な概念だと思うが、そういう認識で良いか。確率的バンディット問題では、コストはどうやって扱われているか? 小川:コストというか報酬が設定されている。スロットマシンがまさにそうで、コインを入れて、何円返ってくるかみたいなこと。 小林:これから使おうとしている問題では、報酬なのかコストなのか的なことは考えたか? 小川:ナップザック問題をバンディットで解けるみたいなのがあった。選択を行うことで得られる報酬を最大化させるように、容量が決まっている中で選択していくみたいなことは、活動時間を制約下において活動をしたいと言ったときに、何かしらの報酬関数を決定すれば、できるのではないかと思った。 小林:小川の問題では、コストというより報酬。増田の避難とかは、コスト最小化になるのでは。 ■チャット 浦田から皆様 (12:42 午後) テイラー展開 takuma murahashiから皆様 (12:45 午後) 市村先生の授業だ 浦田から皆様 (12:47 午後) fは離散選択のパラメータ推定でいえば尤度関数.深層学習では誤差二乗和,最適化計算では目的関数に該当します. EIJI HATOから皆様 (12:58 午後) 流体なんかの筋のいい偏微分方程式をサロゲートすると,簡単な微分が使えなくなったりするよねー. 元の関数そのものを近似しちゃって自動微分して解くみたいなやり方はありそう.どっちのほうが情報損失が多いかだけど. EIJI HATOから皆様 (1:10 午後) 全結合で誤差逆伝播法の自動微分やるのかー,, 私から皆様へ (1:20 午後) チャットで聞きます EIJI HATOから皆様 (1:20 午後) これがわかりやすいね.https://ntacoffee.com/automatic-differentiation/ 私から皆様へ (1:20 午後) 歴史的には、自動微分がNNの生みの親(?)的な感じになったのですか? 自動微分が開発されたからNNができた的な 昔は違う方法で勾配を求めていたってことですか?? EIJI HATOから皆様 (1:22 午後) これもいいかも.https://www.qoosky.io/techs/4b75908f4d 私から皆様へ (1:22 午後) そうなんですね、、 ありがとうございます! 浦田から皆様 (1:23 午後) こんな感じです.https://bonotake.hatenablog.com/entry/2019/08/02/094356 ↑鈴木君 私から皆様へ (1:23 午後) ありがとうございます! 私から皆様へ (1:31 午後) 今回は紹介されていませんが、Pytorchというライブラリを使うと、簡単に自動微分を行えます。 EIJI HATOから皆様 (1:56 午後) 回遊に近いね. 私から皆様へ (1:56 午後) 敵対者のコストベクトルの設定方法はランダムですか?demon的な感じでプレイヤーのリグレットを最大化しようとするとかはないですか? EIJI HATOから皆様 (2:03 午後) 後悔.. 私から皆様へ (2:08 午後) 290億年から数秒w EIJI HATOから皆様 (2:15 午後) セルモデルの選択で探索問題の設定ができそうだけど,day-to-dayの探索過程でも当てはまりそうだね. EIJI HATOから皆様 (2:30 午後) おー 豊洲の自動走行の実験で使えそうですねー EIJI HATOから皆様 (2:35 午後) 増田の避難でもよさそうだけど. 近藤愛子から皆様 (2:43 午後) 9pのコストのlとアルゴリズム上のラベルのlは違うんですか? EIJI HATOから皆様 (2:44 午後) まじか! EIJI HATOから皆様 (2:50 午後) 報酬って言った方が,RL/強化学習はわかりやすいね. 順序付きナップサック問題は,アクティビティ組み合わせ問題だからね.