概要 †
参考 †
目次 †下位ページ †機械学習の発達過程 †
勉強するべきこと †
ビジネス事例 †大規模データ解析のトレーニングはどうするの?かなり才能と特殊な経験と、才能があるかを判断すること自体が極めてむつかしいと思うのだけど。 製造・石油→Apple, Googleなどテック企業へ キューピーで食料品の不良品検知をやる、ドローン空撮で車の数を検知するなど 寿司ネタの需要予測、状態空間モデルを使う。ネタがはける量を予測する。 採用は難しいので数理を重視している。 だいたい600-1000万円。3人で3ヶ月でやるらしい。 データサーバは会社にある、クラウドを使うこともあるが、場合による キューピーはマシンごと納品したらしい。 数学 †行列演算 †
ベイズの立式手順 †
グラフィカルモデル †
EMアルゴリズム †
SVM †
確率論 †
頻度主義 v.s. ベイズ主義 †
深層学習 †
アニメ画像データセットを作成する https://github.com/musyoku/cv-animeface http://musyoku.github.io/implementation/ なんか大量にchainerの実装がある(3日に一つ実装しててやばい) ニューラルネットワークが持つ欠陥「破滅的忘却」を回避するアルゴリズムをDeepMind?が開発したらしい。 学習したニューラルネットのパラメータのそのタスクに対する重要度がフィッシャー情報行列で測れるよ CNNをグラフに対して適用する http://tkipf.github.io/graph-convolutional-networks/ 心理のp値はほぼ不正、バグで成果がでる 2次元は行ける、三次元はできていない。モノクロが強い。 三次元は原理的になのか、データが足りないのか? ニューラルネットワークのスリム化 新皮質は基本的に後天的、方位特異性ニューロンも後天的。特徴量は後天的に抽出されている ニューラルネットでアニメーションのぎこちなさをへらす http://jp.techcrunch.com/2017/05/02/20170501this-neural-network-could-make-animations-in-games-a-little-less-awkward/ 毎日30分でもISLARやcs231nやcs224dやUCLの強化学習の動画講義で独学すれば、圧倒的にできるようになる CourseraのNg先生のコース 動画の途中までから、次に何をするかを文章レベルで予測 http://www.kdnuggets.com/2016/09/predicting-future-human-behavior-deep-learning.html 強化学習 †
カリキュラムというもので、簡単なものから複雑なものを学習させると良いらしい 劣微分 https://research.preferred.jp/2010/12/subgradient-optimization-3/ ChainerRLというのに、DQNとかDouble DQNとか、A3Cとか、とにかく一杯実装されているライブラリが公開されている(Double DQN は行動価値の見積もり値である Q 値の過大評価を防ぎ、ニューラルネットの発散を防ぐことで学習を安定させるという特徴) https://research.preferred.jp/2017/02/chainerrl/ ロボによる折りたたみ https://www.ipsj.or.jp/award/9faeag0000004ej9-att/1P-04.pdf ライントレーサをDQNするデモ(結構良さそう) http://qiita.com/chachay/items/555638e3079fce9d59c9 半教師有り学習のRL この論文いい感じっぽい GENERALIZING SKILLS WITH SEMI-SUPERVISED REINFORCEMENT LEARNING Chelsea Finn†, Tianhe Yu†, Justin Fu†, Pieter Abbeel†‡, Sergey Levine†(2017) https://openreview.net/pdf?id=ryHlUtqge Chelsea Finn, Tianhe Yu, Justin Fu, Pieter Abbeel, Sergey Levine https://arxiv.org/abs/1612.00429 Hybrid Deep Belief Networks Shusen Zhou , Qingcai Chen, Xiaolong Wang http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0107122 Augmenting Supervised Neural Networks with Unsupervised Objectives for Large-scale Image Classification Zhang, Y., Lee, K., & Lee, H. (2016) [29] これがA3Cみたいなやつ? Asynchronous Methods for Deep Reinforcement Learning Mnih, V., Badia, A. P., Mirza, M., Graves, A., Lillicrap, T., Harley, T., Silver, D., Kavukcuoglu, K., … (2016) [18] http://nkdkccmbr.hateblo.jp/entry/2016/10/08/205107 決定論的ただのQラーニングの良い例 http://qiita.com/hogefugabar/items/74bed2851a84e978b61c どうがあり面白い http://jnns.org/pastpage/niss/2000/lecturenote/lecturenote_koike.pdf 意外とQ learningまでの道のりは長い。あとアクタークリティックはQ learningのあと。数学的厳密で良い。ノートで勉強したい。2001年の資料 http://yamaimo.hatenablog.jp/entry/2015/09/03/200000 数学が読める!!しゅごい。書いてる人頭いい。連載記事。モンテカルロはRubyで6s ギャンブル問題を強化学習で。100行くらいでわかりやすそう http://kivantium.hateblo.jp/entry/2015/09/29/181954 そもそも収束しない、みたいな空間や、カリキュラム分け自体がコツになっている可能性 起き上がりでやりたいね Qテーブルの時間的分散、空間的分散、トライアル的分散 敏感な空間はイプシロングリーディによる失敗率が激上がる 予測可能性の低さ、このままでは無理!自然なダイナミクスにどれだけ支配されるか? タイミングの制御 TensorFlow †Tensor Flowのシンプルな実装からいい実装 https://github.com/TensorFlowKR/awesome_tensorflow_implementations Chainer †事例 †
サンプリングアルゴリズム †時系列 †経済・ファイナンスデータの計量時系列分析 (統計ライブラリー) Time series analysis, James D hamilton 単変量 https://www.amazon.co.jp/exec/obidos/ASIN/4254127928/hatena-blog-22/ 多変量 http://tjo.hatenablog.com/entry/2013/07/25/194546 因果解析を非線形にすることができるかも。予測器だけ非線形に機械学習手法を使うことによって。 http://tjo.hatenablog.com/entry/2015/08/06/190000 https://www.slideshare.net/takashijozaki1/tokyo-r130831-tjo LSTMで平均株価の予測 http://tekenuko.hatenablog.com/entry/2017/07/25/005348 未整理 †深層学習の翻訳プロジェクト http://nnadl-ja.github.io/nnadl_site_ja/chap3.html silver, 2015によると、工夫が本質らしい またSpragueによると、超パラメータはグリットサーチで極めて疎らしい。アルファ、ろー、ベータに対して。target Qは https://www.slideshare.net/mobile/mooopan/dqn-58511529 UCCという先読みのやつがすごいらしい TD誤差 TD学習とは、強化学習の一つ 報酬にたどりついて初めて自分の行動の良し悪しを判断すると効率が悪いので、 常に自分の選択肢の価値を評価し更新することがTD学習の特徴。 TD誤差とは、自分が行動する前に思っていた行動の評価値と、実際行動してみて評価したその行動の評価値との誤差のことである。 TD誤差が正ならば、思っていたよりも良い行動 TD誤差が負ならば、思っていたよりも悪い行動 TD誤差が0に近づけば、行動前の行動の評価と行動後の行動の評価が一致することになり、自分の行動が報酬にどのくらい結びつく行動であるかが正確に予測できるようになり、 その場その場で評価が最大となる行動をとっていけば、報酬が最も期待できる一連の行動となる。 experience replayは大切。 三目ならべのAI 打ってはいけない手を教えるのが大変らしい http://qiita.com/narisan25/items/e64a5741864d5a3b0db0 機械学習の3大メソッド http://d.hatena.ne.jp/echizen_tm/20111206/1323180144 クラウドTPU https://twitter.com/iruka3/status/865504304630611969 Optimizerの種類について http://qiita.com/tokkuman/items/1944c00415d129ca0ee9 様々な手法を紹介してみましたが、やっぱりAdamが最強!!って訳でもないみたいで、学習モデルによってはAdaGrad?の方が高い精度を出すみたいな話も聞いたりします。結局使うOptimizerもモデルごとに最適なものを選ばないといけないってことなんですかね。。まあ少なくともSGDに比べたら精度も収束時間も格段に上がることはわかっているので、次はもう少しこれらのアルゴリズムがそれぞれどのような問題に適しているのかということを理解することが課題だと考えています。 次回はこれらのアルゴリズムを用いた簡単な精度の比較検証を行いたいと思っています。 http://qiita.com/tokkuman/items/33c66fcff7337a1c0fa8#_reference-c7525374ea798b596a77 基本Adamが強いが、モデルによっては学習のVarianceが変わってくる http://www.iandprogram.net/entry/2016/02/11/181322 まあ強いOptimizerの評価について Adam は広い学習問題で安定して学習できる手法です。(chainerチュートリアルで) 安定して最適化できるのでAdam,ハイパーパラメータを選ぶが安定して精度が出やすいのはRMSPropという特徴があります。 pythonは3.4を使いましょう Clasifyerってなんやねん…(100で入力にしてるけど、reshapeしている) Chainerではヤコビアン行列の計算はサポートしていません。 スカラー値でない場合,ユーザーが手動でgradを設定をすればbackwardを呼び出して計算することができます。 これは要するに数値微分しているということ 最後, self.l3(h2) には F.relu を適用していないことに注意してください。 softmaxを使う際によくある間違いとして,最後の出力にもReLUを適用してしまうというのがあります。 softmaxの定義域は負を含む実数ですので,その入力を非負に制約すると,想定しない制約を課して学習することになります。 マルコフ連鎖のししゅうそくは、エルゴード性が必要。数学的には固有値1が一個とほかが1以下になるだけ。だから必ず収束する https://m.chiebukuro.yahoo.co.jp/detail/q11159853521 http://yusuke-ujitoko.hatenablog.com/entry/2016/12/31/230118 計算グラフ、筋がびみょいがforward backward がわかりやすい。境界条件としてda/daをつかうか、dedeを使うか。前者は分母を固定し、後者は分子を固定して漸化式 https://www.google.co.jp/amp/s/deepage.net/amp/deep_learning/2017/04/02/backpropagation こっちはいいんだけどだぐじゃなくて木なので、それ連鎖率せつめいできてないやろ??というかんじ ノードがベクトルの時の説明が両方ない http://qiita.com/t-tkd3a/items/031c0a4dbf25fd2866a3 ノードがベクトルのとき りんごとみかんでの簡単な説明 http://qiita.com/m-hayashi/items/c5ace811333364d887f5 誤差の逆伝播は、伝言ゲームのようなものです。もし間に8人も人が入れば、まともな話も最後はどうなるものか。。。。。 まったく当てにならないですよね。 このため、何層もあるディープなニューラルネットワークは使いものにならない、と2000年頃までは言われていました。 多層ニューラルネットワーク(ディープラーニング)への対応 そこに彗星のように現れたのがトロント大学のヒントン氏です。 ヒントン氏はGoogleにも所属しています。 ヒントン氏は、オートエンコーダやRBM(制約付きボルツマンマシン)といった仕組みを利用し、多層のニューラルネットワークでも精度を損なわない方法(事前学習方式)を提案しました。 それが現在のディープラーニングのブームにつながっています。 すごそうなひとの強化学習スライド、論文紹介 https://www.slideshare.net/mobile/sotetsukoyamada backward 自動微分は一出力に対する微分、chainerで線形回帰を自動微分できる。教師消えない?? https://www.slideshare.net/mobile/beam2d/chainer-64567959 EMアルゴリズム http://pianopiano.sakura.ne.jp/ml/em-algorithm/ http://www.meti.go.jp/committee/summary/eic0009/pdf/020_02_00.pdf EMアルゴリズムのいい具体例 http://ebsa.ism.ac.jp/ebooks/sites/default/files/ebook/1881/pdf/vol3_ch9.pdf EMは山登りなのでやたら局所に落ちます。 Stanをさわり始めて事前分布とか事後分布とか尤度になじみ深くなったおかげで、改めてPRML読み始めたら面白いと思えるようになったという謎 http://logics-of-blue.com/%E3%83%99%E3%82%A4%E3%82%BA%E3%81%A8mcmc%E3%81%A8%E7%B5%B1%E8%A8%88%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E9%96%A2%E4%BF%82/ MCMCは事後分布の期待値を求めたいが積分むりぽよなので乱数サンプリングして近似する。pfみたいなやつですね。ギブスサンプラやメトロポリスハスティングをする ではそのxはどう選ぶのかというと、次のxの条件付き確率p(x|y,z)によって選びます。 ギブスサンプリングが有効になるのは、この条件付き確率が簡単な場合です。なぜなら、結局は新しい点は、その条件付き確率(提案分布)から選んでこないといけませんから、この条件付き確率が難しい形をしていると意味がないからです。http://nykergoto.hatenablog.jp/entry/2015/08/06/033534 という感じでギブス・サンプリングも解説おしまいです.M-H法よりも適応範囲は狭いですが,使えるときには力を発揮する方法です. MHは結構大変 猫の問題、競技プログラミングに出せないかなあ https://www.slideshare.net/mobile/matsukenbook/4-56002293 詳細つりあいって満たされないことあるの?分布が時間で変化しないってことっぽい。詳細つりあいを満たすように分布を弄る方法らしい。 固有値の問題だけでMHはいらないということがないのは何故? マルコフ連鎖を用いることで、モンテカルロ法を強化したものです。 後で詳しく書きますが、 モンテカルロ法は、真にランダムにサンプリングを行うため ・計算コストがかさむ ・精度も向上しない という課題があります。 そこでマルコフ連鎖モンテカルロ法は、 その課題をマルコフ連鎖を用いることで改善したものです。 https://tatsyblog.wordpress.com/ A3Cの論文を探してくる https://arxiv.org/pdf/1610.00633.pdf A3Cをロボットに適用したらちゃんと2倍速になりました。分散で方策オフで、方策をコレクタにコピーしてデータを集めている。PFNのと何が違うのだろう? http://journals.sagepub.com/doi/pdf/10.1177/1687814016668077 グラスプのマルチモーダルで拘束に。意味ない。 このエビデンス近似は線形回帰モデルだけでなくロジスティック回帰やニューラルネットワークの超パラメータを推定するのにも用いられるそうです。機会があれば、それらの実装もしていこうと思います。 ベイズの定理で「比例」としていたところを、比例ではなくて下の部分を最小化するようにすると、超パラメータを推定できる。ベイズ線形回帰だけでなく、いろいろ使える。 ニューラルネットの識別アルゴリズムを動画にするの結構おもしろい!http://qiita.com/Gordian_knot/items/507f2f1531b870a973bf 通常のニューラルネットワークを回帰問題に使う場合、コスト関数は単峰のガウス関数をモデルにしているので、多峰の状況に対処できません。混合密度ネットワークでは混合ガウスをコスト関数に用いることでこのことを解決します。 誤差関数は、 回帰→二条和誤差 2クラス分類→ロジスティックシグモイド 多クラス分類→ソフトマックス ロジスティックシグモイドとソフトマックスは、出力層の総和が1になるからうれしい(くらすAになる確率、Bになる確率…の総和が1が陽に入るので) ミニバッチ処理 学習がうまくいかないことがあったので急遽使用した手法の一つ。 学習データ全てを使って勾配を計算するのではなく、学習データからいくつかを取ってきて勾配計算を行う。こうすることで、局所解から抜け出せるかもしれません。 そういう意味もあったのか… カーネルトリック 要するに特徴ベクトルを[1, x, x^2, ...]とか[1, x, y, xy]とかにするのではなく、得られたデータとの近さで定義するというだけ。 http://qiita.com/Gordian_knot/items/4c4607edf15072cddc46 普通、ベイズ回帰では特徴量を定義するが、ガウス過程(入力のガウスノイズが出力のガウスノイズになること?)が前提できれば、これを明示的にやらずに、ガウス関数(2DoF)のようなカーネル(=入力間が近い→出力間が近い、という要件を満たす関数)を定義して、カーネルトリックしたうえで、超パラメータをエビデンス近似するといい感じになる。 何が欲しいかによって出力層の関数を買えなければいけない、という面白い例。 http://qiita.com/Gordian_knot/items/19c4a4f205b855cf6a05 混合係数πkπkは∑kπk=1∑kπk=1という制約条件があるので、ソフトマックス関数により混合係数を出力します。 πk=exp(aπk)∑Kl=1exp(aπl) πk=exp(aπk)∑l=1Kexp(aπl) 平均は非線形変換を用いずにμk=aμkμk=aμkとします。 標準偏差σσは0以上なので指数関数を使ってσk=exp(aσk)σk=exp(aσk)。 これで、混合ガウス分布を計算するのに必要な関数πk,μk,σkπk,μk,σkが求まりました。 関連ベクトルマシン http://qiita.com/Gordian_knot/items/ee512530618a5eeccd1a よくわからなかった。 高速らしい 回帰のパラメータそれぞれに分散を割り当てると、関連する部分だけが得られる??なのに、関連するベクトルとしてデータ点が色をつけられている???どういうこと? データ点がない場所で分散が少なくなるという非直感的なことが起きるらしい 積和アルゴリズム ノイズ除去を目的とするのであればグラフカットという手法が一番精度が良いらしいです。 ギブスサンプリングはいちじく固定なので僕の非同期運動学系に合いそう。何らかのノイズがあるばあいの運動学の確率密度を推定し、誤差領域を明確化するなど。安全に寄与しそう。 女子高出身東大卒女子と話してるとわかる残念なことは、ほとんどの女子高には理系教育の(まともな)機能がない。先生がいない。おしとやかで型にはめた女子を量産することに、親と学校が合意をして入れてる。大学ががんばるのにも限界がある。 http://www.fashionsnap.com/the-posts/2017-05-22/heart-closet-strategy/ pythonで数式処理 http://myenigma.hatenablog.com/entry/2016/02/20/183423 かの有名な黄金比(1:1.618)と白銀比(1:√2)の長方形を見せて、「美しいと思うものはどれ?」と質問すると欧米人は黄金比が多いんですけど、なぜか日本人は白銀比の方が多くて、例えば五重塔の1段目と5段目の長さの比は白銀比だし、けものフレンズのボスの縦横比は1:√2の白銀比です 質問の意図が掴みきれてるかわからないのですが、DeepとConvolutionは相反するものではなく、Deep=層の数、Convolution↔Linearという関係ですね。 あと今回のタスクは入力が1次元なのでconvつかってもlinear使っても中身はどちらも一緒です。 CNNのConvolutionというやつはDNNにいれる前の前処理らしい。プーリング? http://vaaaaaanquish.hatenablog.com/entry/2015/01/26/060622 もうちょっとわかりやすそう(畳み込みできちんとしらべるべき) http://hiro2o2.hatenablog.jp/entry/2016/02/05/215919 https://deepage.net/deep_learning/2016/11/07/convolutional_neural_network.html#cnnで解決できる問題 ドグラマグラの続きを書く、一緒に高速読解アプリも一緒にくっつけたい https://anopara.net/2016/01/29/%E3%80%8C%E3%83%89%E3%82%B0%E3%83%A9%E3%83%BB%E3%83%9E%E3%82%B0%E3%83%A9%E3%80%8D%E3%81%AE%E7%B6%9A%E3%81%8D%E3%81%8C%E8%AA%AD%E3%81%BF%E3%81%9F%E3%81%84%E3%81%8B%E3%82%89%E4%BA%BA%E5%B7%A5%E7%9F%A5/ 研究:教科学習の学習曲線とゲームを人がやった時の面白さって相関しないか? ナブラ演算子の学習AIとレーティング 強化学習トレード http://andoo.hatenablog.com/entry/dqn_fx ランダムフォレスト http://shindannin.hatenadiary.com/entry/2014/12/26/184624 決定木をエントロピー基準で構築。予測は決定木をランダムにいっぱい作って、多数決。先生、好きなテーマだと饒舌になるね ベイズ的信頼区間 http://hikaru1122.hatenadiary.jp/entry/2015/10/08/235814 青いスライドに入ってる http://hikaru1122.hatenadiary.jp/entry/2015/10/08/235814 学部生向けベイズ統計イントロ(公開版) これが、一番最後に統計検定の頻度とベイズ的なのの違いを書いている 確率的こうばいこうかほう http://qiita.com/kenmatsu4/items/d282054ddedbd68fecb0 勾配計算を全データではなくて一部20個とかのみを使う方法 最急降下法はバッジ勾配降下法とも呼ぶ 確率的勾配降下法SGDは、実は1つのデータだけでも動くが、普通はミニバッジにする(両方確率的勾配降下法と呼ぶ、http://postd.cc/optimizing-gradient-descent/#gradientdescentvariants)。確率的勾配降下法は評価関数がめっちゃバタバタする http://www.iandprogram.net/entry/2016/02/11/181322 まあいろんな勾配計算がある。この中に30踏んでわかるAdamなるものもある。http://saiias.hatenablog.com/entry/2015/03/07/223056 AdamのC++実装 グラフィカルモデルとベイジアンネットの違いは? ベイジアンネット http://www.sist.ac.jp/~kanakubo/research/reasoning_kr/bayesiannetwork.html CpTは条件付き確率表といういみ、わかりやすい 左の場合は、P(B,E,A)=P(A|B,E)P(B|E)P(E)となる。右の場合は、P(B,E,A)=P(A|B,E)P(B)P(E)となる。つまり、グラフの逆辺をクラスカル法的に辿っていく(しゅつじすうが0になったやつから削ってくといういみ、Dagだからいける) このページめっちゃ計算例が詳しくて良い。理解したい ベイジアンモデル、ギブスサンプリングなど http://qiita.com/sergeant-wizard/items/d0ec93f625e596258182 一般的な機械学習 ベイジアンモデル 学習 MCMC等 学習パラメータ 確率モデルのパラメータ 評価関数 事後確率 スパーズコーディング 「データを教師なしで変換する行列分解手法」として、(1) 主成分分析(直交)・独立成分分析(エントロピー誤差)・スパースコーディング(L0())の3つ。要するに、データいっぱいあるやつを、別の基底で表して次元削減したりする方法。 http://shiten4.hatenablog.com/entry/2014/01/10/125704 実装においては、主成分分析は固有値計算するのみで計算が早い一方、独立成分分析とスパースコーディングが目的関数の最適化に繰り返しが必要となり、比較的計算が遅い。Pythonにはライブラリがある decomposer = PCA() decomposer = FastICA() decomposer = DictionaryLearning?() http://tjo.hatenablog.com/entry/2014/02/08/173324 Mcmc http://hosho.ees.hokudai.ac.jp/~kubo/ce/BayesianMcmc.html 要するに複雑なモデルのパラメータ推定方法。決まった形があるわけではなく、全探索や固定や山登りを併用。有名なのがギブスサンプリングとメトロポリスってこと http://d.hatena.ne.jp/hoxo_m/touch/20140911/p1 複雑すぎると次元の呪いに引っかかるので、これを使う。 バーンイン区間といって初めの値は使わない(http://hikaru1122.hatenadiary.jp/entry/2015/10/08/235814 マルコフ連鎖モンテカルロ法 これは検定にMcmcを使おうとしてる) その意義:複雑過ぎて解析的にはパラメータが求まらないケースでもパラメータが求まる では、何でこんな大変な思いをしてMCMCなんてやるんでしょうか? 確かに、ただの正規線形モデルなら最小二乗法で推定できますし、一般化線形モデル(GLM)ならニュートン=ラフソン法などの数値解析的求解法が必要ながら最尤法で推定できます。個体差や場所差といった変量効果を含む一般化線形混合モデル(GLMM)でも、一応何とかならなくもないです。この辺をひとまとめにした図が、久保先生のサイトにあるのでご参考までに。 しかし、さらにそれを超えた複雑なモデルになるともはや限界です。例えば2次元空間上の場所差のように変量同士でも相関があったり*13、パラメータ同士や目的変数の中に自己回帰や自己相関があるようなデータや、そもそも単一のモデル式では記述できず要素ごとに別々のモデルが介在(小売店における曜日効果・イベント効果・長期トレンド・季節成分など)した上で1つの目的変数(売上高など)を説明するような複合モデルを、最尤法でパラメータ推定しようにもモデル式が複雑過ぎてほぼほぼ不可能です*14。 変分法 http://d.hatena.ne.jp/Zellij/touch/20121101/p1 何かを最小化する関数そのものを求める方法 数値的に求めることもできるらしいが、どうやるの? http://libir.soka.ac.jp/dspace/bitstream/10911/4472/1/%E9%87%9C_%E5%89%B5%E4%BE%A1%E7%B5%8C%E6%B8%88%E8%AB%96%E9%9B%8644%E5%B7%BB.pdf 詳しい変分法の説明 実はL2正則化はMAP推定と同じ結果にぬる。違う場所がまとめられてる http://s0sem0y.hatenablog.com/entry/2016/04/24/055832 なんで情報量の送受信って話になるの?何と戦ってるの? エントロピーは、情報量の期待値。雨晴れどちらか神のお告げを聞くとして、重要なのは半々の時に最大。エントロピーが大きいというのは平等であるということ http://s0sem0y.hatenablog.com/entry/2016/04/21/132645 KLダイバージェンスは、確率密度pをpで送った時と自作のqで送った時のエントロピーの差 https://bellcurve.jp/statistics/course/9490.html この統計のページわかりやすい OpenPose? 姿勢推定W https://twitter.com/izm/status/861171349036736513 統計検定、結構良さそう http://www.toukei-kentei.jp/about/grade1semi/ データ解析を目的ベースに解説した良い http://tjo.hatenablog.com/entry/2016/03/07/080000 時系列の分散付き予測 http://tjo.hatenablog.com/entry/2017/03/07/190000 DQNのまとめ。これはしっかり読まないといけない https://www.slideshare.net/mooopan/dqn-58511529?next_slideshow=1 奈良先端技術大学 安並さんの修士論文 反復型軌道積分最適制御の近似解法に関する検討 https://library.naist.jp/mylimedio/dllimedio/showpdf2.cgi/DLPDFR009754_P1-47 ベルマンの最適性原理 file:///home/hamko/Downloads/201115519-59650-0-9.pdf 連続からナップザックまで結構きちんとまとまっていて良さそう 「この章では動的計画法 (DP) のアイデアを説明します。DP はベルマン(R.E.Bellman) によっ て案出され、工学、経済学、その他の多くの分野において使用されてきました。線形計画法は線形関 数の場合だけを取り扱うのに対して、動的計画法は非線形の関数、解析的な形になっていない関数も 取り扱えます。しかし、一般的な数理計画問題に常に適用できるわけではなく、問題が多段決定問題、 つまり、各段における決定の系列を求めるような問題に変換できれば、動的計画法によって解くこと が可能です。動的計画法の特徴は、再帰方程式 (漸化式) を巧妙につくるところにあります。 ✓ DP の考え方を理解するため、まず、次の例を見ましょう。」 制御理論
モデル予測制御は最適制御のリアルタイム版 コロモフとC\Gresとの違い、これらは両方モデル予測制御のアルゴ https://www.usss.kyoto-u.ac.jp/uchugaku/seminar/2016/20160704_Ohtsuka.pdf これめちゃいい。実時間の最適制御は、今までに解いた問題の初期値を使ってるっぽい 基本的に最適制御は、 ある時間ホライズンで「ゴールコスト+目標軌道中のコスト」を積分、を最小化することで実現される。 これだとよくわからんので、ある時間ホライズンが無限だったり、積分が離散だったり連続だったり、コストに確率が入っていたりするけど、基本的には大して変わらない http://www.orsj.or.jp/archive2/or57-07/or57_7_367.pdf HJB方程式は、システムが線形の場合は解析解がある。 非線形の場合、ロボットモデルが与えられて更に「確率システムでない場合でも」解析解がない DDP(有限horizon離散時間問題。非線形ダイナミクス、コストは微分可能を前提) 教科学習(無限horizon MDP) 数学的便宜で導入した線形化を行うことによって、 非線形HJB方程式が線形化するので解ける 更に、(3)は2つのすごいポイントがあって、(a)モンテカルロサンプリングによるモデルフリー ロボットモデルが与えられない→低次元しかできない 高次元→極めて正確なモデルが必要でロボットでの応用が限定的 確率的な場合、システムが線形であっても操作量 に制限を受ける場合は解析的に解けなかったりする。 LQG プロセス・観測ノイズを加えて、微分コスト関数Cを二次形式前提すると、HJBがリカッチになるので解ける https://jp.mathworks.com/help/control/ref/lqg.html 本稿では,多自由度のロボットが運動学習を行う枠 組みを中心に紹介した.近年の HJB 方程式の線形化 手法の導出を背景に,高次元の状態空間をもつ多自由 度ロボットの運動学習が現実的となってきた.応用と して,歩行運動学習を行った事例を紹介した.周期的 な運動課題に対して,位相依存での表現を用いること により学習性能が向上することを実験的に示した.現 在,我々の研究グループでは,ヒューマノイドロボッ ト CB-i(図 3a)への実装を目指して学習アルゴリズ ムの改良を進めている. 本稿では,制御則の最適化に焦点を当てた紹介を行っ たが,他にも,見まね学習など多自由度システムにお いて効率的に運動学習を行うアプローチが多く提案さ れている.それらロボット学習の研究事例を集めた論 文特集号として [23, 24, 25] を紹介しておく. 多くの自由度を有するシステムのための学習メカニ ズムを開発することは,同様に多自由度システムであ るヒトが日々直面している学習問題を理解することに も通じる可能性がある.たとえば,新学術領域研究「予 測と意思決定の脳内計算機構の解明による人間理解と 応用」(http://www.decisions.jp) では,神経科学,分 子生物学,精神医学,哲学,心理学,機械学習,ロボ ティクスなどの分野の研究グループが協力し人間の学 習システムの理解を目指した取り組みを行っている.今 後,工学応用のみならず,ロボット学習の知見が人間 理解にも貢献することが期待される. E. Theodorou, J. Buchli, and S. Schaal. A generalized path integral control approach to reinforcement learning. The Journal of Machine Learning Research, 11(Nov): 3137–3181, 2010. これが線形化HJB eqによる強化学習の初めのやつ https://library.naist.jp/mylimedio/dllimedio/show.cgi?bookid=100084582 https://library.naist.jp/mylimedio/dl/page.do;jsessionid=19685e30591370e490466c9f2856?bookid=100199387&tocid=0 DMPの詳しい説明が載っているもの: Ijspeert, Auke Jan, et al. "Dynamical movement primitives: learning attractor models for motor behaviors." Neural computation 25.2 (2013): 328-373. 再試しようとしているもの: Kober, Jens, et al. "Reinforcement learning to adjust parametrized motor primitives to new situations." Autonomous Robots 33.4 (2012): 361-379. です。 誰でもレビュー無しでアップロードできるので、玉石混合との批判もあります。しかし、2002年のペレルマンのポアンカレ予想の証明のような、ものすごい成果が早々と出回ったりもします。http://arxiv.org/abs/math/0211159から始まる3部作です。ジャーナルへ投稿しても、証明の正しさの検証が難しく、なかなか世に出ることはなかったでしょう。 joyportさんオススメの深層強化学習 https://twitter.com/joyport/status/875648941995327490 SI出身の人と機械学習のモデルの組み立て方についてはいつも、議論になる (精度が出るまで反復してがんばって精度はベストエフォートでいいと思ってるのだが、SIはなんか最初から完成形のずに落とそうとするスタイル) 誰もやったことがない道のもので、研究の要素を多分に含んでるのに、なぜ計画的にシステムに落とせると思うのか割と謎 機械学習とSIがめっちゃ相性悪いのが。。 http://qiita.com/icoxfog417/items/67764a6756c4548b5fb8 機械学習 疑問をまとめる必要性 機械学習のテスト Zero-shot learning というのは最近流行っている機械学習の話なのだが、学習時には未知のラベルを推定する、という問題で、たとえば画像にキャプションや説明文をつけたりするようなタスクがこれに当たる 対訳コーパスが一切ない(ZeroShot?)、あるいは少ししか存在しない場合(Few-Shot) における CLDR のための学習手法 CLDRはある言語の文書をクエリとして、多言語の関連する文書を見つけるタスク PIPI (2010) Stochastic Dynamics、ただしノイズはstateに依存せず、出力に載る Iterative Reinforcement Learning of stochastic DMPがこの問題の特殊ケースになっている…と言っているが実際にやってることはDMPのパラメータ最適化(初期DMPは与えられて改善のみ)。学習してるのはパラメータだけで、ゴールと初期位置を動かすことはしていない。 やっていること MPPI (2017) Stochastic Dynamics、ノイズはstateにのみ依存 Reinforcement Learningはできない!これはただのMPC 多数クワッドロータ(144次元)や、Aggresive Drivingなどをやっている Information Theoretic MPC (2017) Stochastic Dynamics、ノイズはstateに依存せず、出力に載る。 決定論的なダイナミクスの学習ならば、q, qdot, fの対応を学習させればよいだけ。 こうすると、何がいいかというと、ダイナミクスの学習を決定論的に行い、MPCのサンプリングだけを乱択にすることができる MPC MPC 非常に詳細(1時間)な良さそうな説明。モチベーションレベルもありそう https://jp.mathworks.com/videos/cda-model-predictive-control-90293.html MPCのメリット 大きくは、一つは操作量と制御量にハードあるいはソフトの制約を入れられる(トルク、関節可動域、電圧、他の車両とぶつからない、道路からはみ出さない、横滑りしない、加速しすぎない、などなど)。MIMOでできて、最適状態フィードバック制御なので、普通に使える。毎回軌道最適化する。制御系の性能を最大限引き出せる。 MPCは、走りながら、計測しながら、予測しながら、常に最適な経路の再設定や車両の動き方の生成を行う デメリットは毎回QPをとくので計算速度キツイ。あと線形かモデルを前提しているので、ニューラルネットを使う必要があったりして険しい 普通、操作量がハード制約で、制御量がソフト制約(操作量はしばしば物理的制約なので) 追従誤差の重みを増やすと、急激な制御に ソフト制約はスラック変数あり、ハードはなし 予測ホライズンは、制御対象の時定数を初期値に調整していくと、よく言われている 制御ホライゾンはいきなり長い値は取らず、まず2, 3ステップから始める(最適化する自由度は制御ホライゾンに依存するので、あんまり増やすと時間キツイし最適化が過学習して不安定になりがち)。予測に足りないぶんは、同じ制御出力を仮定してやる。 具体的な解き方は、大きく三つ。ハミルトンヤコビベルマン方程式をDP、変分を勾配方法か連続変形方で解く、非線形計画問題とする。連続変形方法C/GMRESは非線形MPC=NMPCにも使えてすごい ロボットアームでは、終端制約集合なるものを定義できたりして面白そう(途中と最後のロスが別)http://www.fl.ctrl.titech.ac.jp/paper/2005/SICE_Seminar_Fujita_MPC.pdf http://www.fl.ctrl.titech.ac.jp/paper/2005/SICE_Seminar_Fujita_MPC.pdf 27ページに、早い分野への応用がまとまってる ピースワイズアフィンみたいなことをしなくてもNNでいけるとかないかな クーロン摩擦を考慮したロボットアーム http://www.econ.nagasaki-u.ac.jp/RAMP2007/paper/4-2.pdf やたら詳しい制御のブログ https://www.google.co.jp/amp/myenigma.hatenablog.com/entry/2016/07/25/214014%3Famp%3D1#amph=1 Alpha Zero GPUだと70年ぐらいかかるっていうし、TPUが休息成長促進剤みたいなオーバーテクノロジーっぽい。TPUは3日。つまり、TPUは70000倍早いらしい。 機械学習をビジネスで使うということ https://t.co/6nafmYEDnF?amp=1 アンセンブル学習 ここ、とても大事です。一つ一つのモデルの性能を上げるより、それらのモデルが似ていないほうがよいです。ランダムに説明変数やサンプルを選択した理由はここにあります。 ランダムに選択する以上にすぐれた方法もあります。積極的に似ていないモデルを作る方法です。Adaboostと呼ばれている方法は、たくさんクラス分類モデルを作るときに、これまでのモデルで、不正解になってしまったサンプルにより大きな重みをつけて、新しいモデルを作ります。これを繰り返すことで以前のモデルが正解できなかったサンプルを正解するモデル、つまり以前のモデルと異なるモデルを作ることができます。 異なるモデルを作るという点では、いろいろな回帰分析手法を使うとよいです。たとえば、最初の100個のモデルはPLSでつくって、次の100個のモデルはSVRでつくって、最後の100個のモデルはRFでつくる、といった具合です。 http://univprof.com/archives/17-02-09-12105097.html 変数選択(変数を減らす方法) RGF Regularized Greedy Forest(RGF)で多クラス分類を試してみました http://segafreder.hatenablog.com/entry/2016/06/12/211050 python from multiprocessing import * インフラに10億以上は突っ込んだ前職と、今の職場では同じことがAWS Elastic MapReduce?で一イタレーション2500円ぐらいでできるんだから、本当に必要な時まで投資しなくていいし、インフラとか物や知識を持ってるとかが武器だとか言った時点で、陳腐化との戦いになる AdaBoost?は、分類器の間違いに基づいて、それをフィードバッックとして、調整された次の分類器を作るという点で、適応的(Adaptive)であり、ノイズの多いデータや、異常値に影響を受けやすい http://univprof.com/archives/16-05-28-3515242.html 機械学習のきょうプロでいうところのライブラリ。 基本的にクロスバリデーションは 2-fold か 5-fold にしましょう。 モデル構築用データセットにだけ合うようなモデルを作るハイパーパラメータの値が選ばれてしまうんです。もともとはこのオーバーフィッティングを防ぐことがクロスバリデーションの目的だったはずだよね そして、新規データに対する 実際 http://tjo.hatenablog.com/entry/2015/02/06/190000 http://tjo.hatenablog.com/entry/2015/02/20/190000 https://www.slideshare.net/teppeibaba5/ss-37143977 バイアス=モデルの単純性と、バリアンス=過学習。 情報ゲインの具体的な計算もしていて良い。 オッズ比と有意確率 有意確率は、0.1%の確率でその変数は意味がない オッズ比は、連続なら100万年収が上がるとDM反応率が1.12倍になる。女性なら1.32倍DMに反応しやすい、など。 Out-of-bagが説明変数の重要性を表現する方法。 mがデータ数、dがデータ次元として、RFはRandom Forest O(D^2m)。SVMはO(Dm^2) https://www.youtube.com/watch?v=ECJRMBjX4PE ナイーブベイズをベイジアン と紹介してる人がいて、俺の左手がやつを滅亡させよと、呻いて、抑えるのがやっとだぜ… ベスト住宅を機械学習で見つける https://twitter.com/guiltydammy/status/928603711059804160 Graph Embed http://yamaguchiyuto.hatenablog.com/entry/2016/02/14/105803 Leak http://threeprogramming.lolipop.jp/blog/?p=921 http://gihyo.jp/dev/serial/01/machine-learning/0020?page=2 ロジスティック回帰は、2クラス分析。データxを突っ込むとデータがクラス0か1かしか無いときに、クラス1になるような確率を返す重みを見つける。多クラスの場合、iかi出ないかの分析をするロジスティック回帰をn個作って、最も確率の高いものを選ぶ。( one-vs-rest (OvR) scheme) 2値ロジスティック回帰はダイレクトマーケティングでよく使われ、ある提案に反応する人々を特定するのに使われる(従属変数は「反応する=1」と「反応しない=0」である)。 基本、random_state=0にしとかないと、デバッグが大変になる http://noumenon-th.net/programming/2016/04/27/logisticregression/ pd.describeが割と便利っぽい 次にAgeの欠損値ですが、今回は男女それぞれの平均年齢で補間しておきます。 pd.crosstabを使うと、離散データのカウントを表にしてくれる。 pd.get_dummies 123を取る離散データの場合で、変数は3つ作るのではなくて2個でいい。なぜなら、1+2+3=1という依存完成があると、ランクが落ちるから。そこでPclassをダミー変数に分け、3を除外して1と2を説明変数としてモデルに組み込んでいきます。これはダミー変数を全て含めると完全に相関する変数をモデルに含めてしまうことを避けるためでもあります(多重共線性)。 学習の評価 問題意識によって違う評価が重要 http://data.gunosy.io/entry/2016/08/05/115345 log_lossは確率の距離を図るためのやつ ROC AUCは、2値分類のための評価。FFFFFFFFTTTTTTTTTTTTTみたいな分類になっていて欲しいとする。で、色んな所で切った時に、偽陽性横、真陽性が縦になるようにプロットしたもの。AUCの値は,TとFからランダムに1個ずつ選んだとき,Tの値がFの値以上になる確率です(正確には,Tの値がFの値より大きくなる確率に,Tの値がFの値に等しくなる確率の半分を加えた値)。 https://oku.edu.mie-u.ac.jp/~okumura/stat/ROC.html pandas sorted_valuesがindexでソートする奴 tqdm 進捗バーをだすやつ http://wonderwall.hatenablog.com/entry/2017/07/23/222856 Pbdって何?? https://www.kaggle.com/c/porto-seguro-safe-driver-prediction/discussion/42841 htop メモリとかの使用料をいい感じに出す奴 LRの数学もあるやつ http://www.tsjshg.info/udemy/Lec76-79.html これは実は授業の課題が競プロっぽいらしい https://www.coursera.org/learn/machine-learning 特徴量 †特徴量何突っ込めばわかんなくなったら、とりあえず、勾配ブースティングして、モデルの2/3ぐらいを切り出して、svmでレグレッションすると大きすぎる次元でも、特徴量の独立性が全く担保できなくても、なんとかなる VAE †https://www.slideshare.net/ssusere55c63/variational-autoencoder-64515581 Deep Learning †未整理 †Joyportさんのおすすめのサンプルベースモーションプラニング http://ieeexplore.ieee.org/document/6722915/ https://twitter.com/moe_moe_moegi/status/888018467575574528 KLダイバージェンスのわかりやすい説明 http://yasuke.hatenablog.com/entry/2016/06/07/145455 情報量=log(確率の逆数)。起きにくいと高いが、あまりにたかくなるのでlogで抑えてる KLダイバージェンス=2つの確率分布の情報量の差の期待値 KL(P||Q)=E_{x in P} [I_Q - I_P]。Pから出てくる値の上で、Qのびっくり度-Pのびっくり度の期待値をとっている。ある値xで、I_Q-I_P>0ということは、Qのほうが出にくい、ということ(違う確率密度から生成しているんだからふつうそう)。一方、I_Q-I_P<0ということは、Pから生成したにもかかわらず、Qから出したほうが実は生成しやすかったということ(あまり普通ではない)。同じ分布のKLダイバージェンスだとだとそういう状況が1:1で出てくるので0になるが、違う分布の場合には正になっているケースのほうが多くなる。 多変量正規分布同士のKLダイバージェンス、これは何もみずに導出できるようになる価値がある。http://sucrose.hatenablog.com/entry/2013/07/20/190146 KLダイバージェンスの別の解釈 http://s0sem0y.hatenablog.com/entry/2016/04/21/132645#KLダイバージェンスの応用上の意義 エントロピー=これから何か質問をするときに、その質問によってどれだけの情報量が得られるかの期待値。「明日は雨」「明日は晴れ」という二択に関して、これから神からお告げを貰おうと思った時に、得られるであろう情報量はどれほどでしょうか。まだ「晴れ」か「雨か」お告げをもらう前に、この情報をこれから教えてもらえるとなったときに、どれくらい情報量を獲得できそうかというのは、現実的に単なる情報量よりも重要な問題だと思います。もちろん現実には神からのお告げはありませんが、これから本腰を入れて何かを調べようと考えたときに、一体努力の末にどれだけの事を知れるのかというのは興味がある問題。具体的には、全xの空間上で、xが出る情報量の期待値を取る。。このxは珍しいのでめっちゃ情報量あるけど、あまりに珍しいから、重み付けして少なめに足す、みたいな感じ。(不確定なほどエントロピーは高い。) KLダイバージェンス=pのエントロピーをqでモデル化して送りたい。今、pでpをモデル化してエントロピーを計算するのが普通なので、pをqでモデル化して送るのは邪道で、普通に送った時との差を見ているということになる。 周辺化の定義 というかこのページ良さそう http://sitest.jp/blog/?p=5484#213 フィッシャー情報量は最尤推定のピーク付近での曲率 フィッシャー情報量が大きいと、ピーク付近での広がりが鋭い。実験を無限に繰り返した場合、最尤推定の最尤値の分散は、フィッシャー情報量の逆数で下から抑えられるよ(クラメールラオの不等式) girsanovの定理 マルチンゲールなんとか importance sampling methodというらしい https://www.google.co.jp/search?q=girsanov+%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0&oq=girsanov+%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0&gs_l=psy-ab.3...40747.41922.0.42090.12.9.0.0.0.0.328.1208.0j1j3j1.5.0....0...1.1j4.64.psy-ab..11.0.0.dj_fcueSjl4 重点サンプリング例題 https://www.google.co.jp/search?site=&source=hp&q=%E9%87%8D%E7%82%B9%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E6%B3%95+%E4%BE%8B%E9%A1%8C&oq=%E9%87%8D%E7%82%B9%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E6%B3%95+%E4%BE%8B%E9%A1%8C&gs_l=psy-ab.3...26.5654.0.5871.18.13.3.0.0.0.199.1284.0j8.8.0..2..0...1.1j4.64.psy-ab..9.8.792.6..0i23k1j0i30i23k1j35i39k1j0i30k1j0i4k1j0i131k1.7ZTPBZpPpgU 重点サンプリングのわかりやすい動画 http://www.singularpoint.org/blog/r/importance-sampling-1/ Leakage †ただし、この気象データは未来の売上を予測したいときには、知り得ない情報(天気予報なら使えるが数日先までしか確度がない…)なので、実ビジネスでは使えません。。データリーク(Leakage)と呼ばれる問題の一つですが、それも分かった上で他のKagglerも使っているようなので今回は利用することにしました。 ブートストラップサンプリング †https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%88%E3%82%B9%E3%83%88%E3%83%A9%E3%83%83%E3%83%97%E6%B3%95 ブートストラップサンプリング法 サンプル集合 X={xi}N から,重複を許してサンプリングして新たなサンプル集合 X' を作る方法 1000点を見るとよくわからないので、1000点からランダムに100点選んだ平均値の分布を真の分布の近似とする、という意味 そもそもブートストラップというのはことわざで、不可能のたとえとして「靴紐を持ち上げて自分を浮かす」みたいな感じに由来する(正確には、極めて不条理で不可能なことを表すアデュナトンとして、"pull oneself over a fence by one's bootstraps" (柵ごしに自分自身をブートストラップで引っ張り上げる)) http://ibisforest.org/index.php?%E3%83%96%E3%83%BC%E3%83%88%E3%82%B9%E3%83%88%E3%83%A9%E3%83%83%E3%83%97 これわかりやすい http://sugisugirrr.hatenablog.com/entry/2016/03/13/%E7%AC%AC%EF%BC%97%EF%BC%98%E5%9B%9E_%E3%83%96%E3%83%BC%E3%83%88%E3%82%B9%E3%83%88%E3%83%A9%E3%83%83%E3%83%97%E6%B3%95 ベイズ最適化 †
GPS †TD学習ではない 強化学習におけるランダム探索を効率的な探索に置き換える手法 近傍のダイナミクスを線形近似してローカルに最適解を解析的に解く制御理論による強化学習 https://kaigi.org/jsai/webprogram/2017/pdf/1152.pdf http://sssslide.com/www.slideshare.net/MasatoNakai1/end-to-end-training-with-deep-visiomotor-66596957 MPPI †
GAN †
学習済みNLPで最強(2018/12/1) †エントロピーボーナス †いい感じの機械学習の特徴まとめ †
http://neuro-educator.com/ml20/ http://neuro-educator.com/mlcontentstalbe/ |