読書を支援するボット
目的の明確化が必要だ
積ん読を解消するという目的
新しく届いた本もその日のうちに目を通せるようになった
次の達成可能な目的を明確化する必要がある
「読もうと思ったけど読んでない状態」を放置することは良くない
読もうと思ったなら読むべき
読まないで保管するなら
将来必要になった時に検索でヒットすることを期待しているのなら
検索でヒットすることを確認すべき
どちらでもないなら捨てるべき
いずれかの方法で「処理」されるべき
それを判断するのに十分な水準で全て「目を通す」べき
本も含め「目を通した」状態になっているものの中には、もっとしっかり読むべきものがある
読むつもりの論文をダウンロードしたらその日のうちに目を通すべき
学会誌などの購読物が届いた時にはその日のうちに目を通すべき
今日読む価値のなかったものが明日読む価値が出るか
出ないとは言い切れないな…
既に溜まっているものを読むべきか
「しっかり読む」とは何か
「しっかり読む」とは、その本を読むことにもっと時間を投資すること
もっと新しいものが得られそうな気配がある状態で投資が行われる
本を読んで新しい知見を得るのは何のため?
この質問に一般的に答えようとすると抽象度が高くなりすぎる
=目標は具体的でなければならないことに反する
一般的な答え
自分の脳内のモデルを改善し、将来起こりうる未知の事態に対処できる確率を増やすこと
モデルの改善のためには、今の自分のモデルで説明できないことや、自分のモデルでの説明と矛盾することに出会う必要がある
すんなり飲み込めないものこそ噛み砕く価値がある
努力をしても確実には達成されないからモチベーションを削ぐ
本当か?
やらされる仕事については、努力しても成果がでないとやる気が削がれる
速やかに達成感を得るための目標と、やり遂げたという感慨を得るための目標は別
確率は事前に知ることができないから自分で調整することが難しい
自分でタスクの難易度を調整できるとフローに入りやすいのか?
近い、必ず達成できる目標は、読んだ本の冊数や時間を記録すること
今は個別に記録している
通算で何冊読んだのか?
それにどれだけの時間がかかったのか?
可視化してはどうか?
遠い、チャレンジである目標は、面白いものに出会うこと。
週にn個以上。
この設定の仕方ならば、見つからなかった時には読む量を増やしたり、あえて異分野に挑戦することで調整できる。
かかった時間を記録する。
難易度を測って、適度なバランスになるようにnを調節すればよい。
見つかった面白いものをブログに書けばよい。
承認欲求にリンクすることで好ましい行動の強化を行う。
まずは今までの集計、それからこれからの計測
勉強会に参加するのも、読書同様に時間を投資して面白いものを得るガチャだ。
全部記録しよう。
一週間ごとに、投資した時間と金額と、得られた面白いものを集計しよう
最初からあまり複雑なシステムを構想してはいけない
自分の事務能力の低さゆえに実行に失敗して全部嫌になる
まずは価値の検証に最小限の実装にすべき
これをbotで支援したい
文章から文章へのレコメンド
ブログコーパスや蔵書コーパスで、出典付きサジェスト
いいねを押すと強化される
海馬のモデルを考えている
走り回るラットのイメージ
ゼロ知識の時に走るか曲がるかはランダムに決まる
知識がある時には良さそうな行動を取りつつ、探索もする、つまり強化学習 走ると壁に当たる
壁状態を認識する
短期記憶に各ステップの状態を異なるものとして持つのか、同一視したものが徐々に分化するのか
道を歩いていて「あ、これは前に来たとこ」でユニファイが起こるのだとすると、それまでは別個に持っていたことになる
でも、そのユニファイってなんだ。同じ入力が与えられた時に状態を同一視するなら、そもそも最初から別個にならない
何らかのノイズや履歴情報で同一の入力にならないとすると、ユニファイの側もある程度誤差を許容する必要が出て来て、元の木阿弥
(2019年コメントnishio.icon)
入力ベクトルの類似でユニファイが起きるなら単なるk-meansに過ぎない ここに通常の距離と異なるユニファイ機構が必要
それは「特定の軸の情報を捨てた時に近いかどうか」だ
入力ベクトルの一部が0になった状態での比較だ
ブルースターアルゴリズム関係ある?
この問題が解決されるためには、ユニファイがゼロイチではないということになる
つまり状態が離散な集合ではなく、連続な空間上に分布していて、距離の遠い近いがある
グリッド細胞ってたまたま状態が二次元だからグリッドになってるだけで分散表現なのでは
nishio.iconもちろんそうだと思う
これができる仕組みが必要:
壁にぶつかります
不快を感じます
進むとまた不快を感じると予測してそれを避けるようになります
状態の分散表現と、次のアクションを引数にとって、得られる報酬を予測するニューラルネットが必要
これは毎ステップ学習できる
状態と次のアクションを引数にとって報酬を返すのはQ関数 脳内シミュレートで、とりあえず壁に当たったらUターンするところまでは学習しそうだ
「今まで何もなかったところには何もないまま」ということを理解できれば
Uターンした後は適当に曲がって探索しそう
状態の分散表現はどうやって作られるのか
CA3のリカレントがランダムに初期化されてれば、とりあえず一ステップごとに適当な値が出てくるから、分散表現をランダムに初期化することはできそう
時間軸方向にもグリッド細胞的な周期がある?
近い状態が近くなるように
過去に経験した状態と入力のペアから、入力が引数にとって状態を返すニューラルネットが訓練されているなら、リカレントネットが学習し直すことはできそうだが、その場合の発火パターンはただのIDであって分散表現ではない
それでもいいのか?
そうすると似たような入力の入ってくる状態が一緒に発火するようになって来て冗長なので、それを圧縮することでユニファイができる
スパース制約掛けたらできそう
そしたらそれは、場所細胞的なものになりそう
スパース制約かかっているこれを分散表現にしたらグリッドになる?
そう簡単ではないな
場所細胞ができたら御の字
場所細胞ができるモデルができたら自然言語を入力として食わせよう
ネズミの方は、状態を受け取って次のアクションを返すニューラルネットがあってそいつが最初はランダムに初期化されてればいいな
それじゃあ同じ行動を繰り返してしまうのか
UCB1みたいなことをニューラルネットでやる方法
何も起こらなかった時に狭まる仕組み
違うか
確信度を表現できるニューラルネットが必要
出力がたくさんあればよいのか
状態をとって行動を返すランダムに初期化されたネットがあって、出力は各行動ごとに幾つもあって、多数決
nishio.iconランダム初期値の異なる同じネットワークが複数ある場合、学習が少ない状態ではバラバラの出力が出てきて、学習が進むと似た出力が出てくる、これによって「確信度」が表現できる 状態はスパースになる前のが入って来た方が良さそうだ
実際は行動も分散表現なのかもね
遅延報酬の実現
この状態行動マッピングを学習させるのに、報酬を直接使ったのでは遅延報酬に対応できないので生命はいつか次の状態の予測と価値の推定を始めた
ネズミが走り回らないと地図ができないし、遅延報酬を理解しないと走り回らないから、ここはなんとかせねば
状態と行動をとって価値を返すニューラルネットの出力がたくさんあればよい
最初はランダムに初期化されているので出力の分布は一様分布
学習が繰り返すに連れて鋭い分布になる
この出力の中からランダムに選ばれたものが最も大きいものを選べばだいたいトンプソンサンプリング
あー、トンプソンサンプリングやUCB1の実現は頑張る必要ないのか、εグリーディーでもいいんだな
ランダムに選択するニューロンを導入するくらいだったら、という話
状態をスパースにした後は普通の強化学習だから普通に実装して、入力から状態へのネットとリカレントネットとスパース化で場所細胞が生まれるという予想をまずは検証すべきだな
ここまでで特定の場所に反応する細胞はできたが、その位置関係はまだ。
スパースにした後の状態でも状態遷移を学習するのかなー
こっちにはリカレントないわけだけど。
時間平均だ
遷移する状態が近く、しない状態が遠くなる方法
刺激を受けたニューロンが他のニューロンの時間解像度に比べて長く活動を続ける
そのニューロンは時間軸の圧縮の働きをする
向きの細胞がここに生まれるのは、ネズミの自然な行動として「まっすぐ走る」が頻発するからだ
発火の持続時間がなんかの濃度で決まってて、それが海馬に沿って濃度勾配あったりするといいな
なんでグリッドになるのかわかんないなー
意外と二次元に時間平均いれて圧縮するだけでグリッドになるかもしれない
僕の予想は否定的だけど
ネズミの行動パターンに起因して生まれてそう
どうせ僕の関心は自然言語だからグリッドはどうでもいい
うっかりグリッドできてたらすごい
文字の読み書きしかできない知性体を作り育てたらどうなるのか