Tree-sliced Wasserstein距離の実装と理解

はじめに 最適輸送の理論とアルゴリズムを買って読みました。 Computational Optimal Transportも7割ぐらい読んでたのですが、やっぱり日本語でこういう本があるといいですね。 本の内容のなかでtree-sliced Wassersteinが気になったので、理解のために実装…

微分可能なソートの実装

はじめに この論文を読んでおもしろいなと思ったので実装して試してみる。 ここではイントロは飛ばしてやり方の説明だけ。 論文の基本的なアイディアは1次元の最適輸送問題をSinkhornで解いて、得られた輸送計画からソートの結果を推定するという感じ Prelim…

Sinkhorn iterationの勾配と輸送行列の関係

はじめに 最近,最適輸送を覚えてちょいちょい使っています. 特にSinkhorn iterationを用いることで,行列計算だけで最適輸送距離をだいたい計算でき,さらに自動微分で勾配が求まるため,色々な問題のロス関数として最適輸送を使うことができます. ところ…

Soft-DTWで台風軌跡のbarycenterを求める

はじめに 2つの時系列データを比較し,それらの間の遠さを知る方法として,Dynamic Time Warping (DTW)があります. DTWは,2つの時系列データの各フレームを対応付けることによって定義されます. このとき,対応付けは「対応付けられたフレーム間の距離が…

matplotlibだけでアノテーターを作る

はじめに たまに,特定のタスクのために変なアノテーターを作りたいときがある. 慣れているので,pythonでやりたい. これまでこういうときは,opencvを使って作っていたが,最近,matplotlibを使っても同じようなことができると知ったので,調べて使ってみ…

部分一致DTW(SPRING)の実装

はじめに 以前,2つの時系列データの距離的なものを測るアルゴリズムであるDTWについて,以下のようなものを書きました. ksknw.hatenablog.com DTWはいい感じのアルゴリズムですが,時系列データの全体と全体を対応付けるので,短いパターンを長い時系列デ…

Blender + Pythonでポイントクラウドを可視化する

はじめに ポイントクラウドデータをいい感じに可視化したい. matplotlibでも3次元データのscatterを描くことができるが,以下のような感じでいまいちな見た目になってしまう. もうちょっといい感じの図が描きたい.たとえはこんな感じのやつ. 調べてみる…

Dockerを使ってpytorch+cudaの環境を構築する

はじめに 研究をやっていると 査読対応のために実験を追加したいが,環境をいじってしまっている 既存手法を実行するために,tensorflowの特定のバージョンを使いたい.それに伴って特定のバージョンのcudaをインストールしなければならない みたいなことが…

pythonでガウス過程の実装

はじめに ガウス過程と機械学習を読んだ. この記事では自分の理解のために,ガウス過程を実装する. notebookはこっちにある. github.com 今のところの理解では,$N_1$個の入力と出力のペア$(x_1^{(1)}, y_1^{(1)}),\dots ,(x_{1}^{(N_1)}, y_{1}^{(N_1)})…

Robust PCA (Principal Component Pursuit) の実装

はじめに 多変量データは実世界の様々なところで現れる(e.g., 画像、音声、動画).これらの多変量データの多くは、データ自体がもつ次元 (e.g., ピクセル数)よりも小さい次元(自然画像の多様体的なやつ)で表現することができる. データから低次元の構造(低…

1次元ガウス分布の測地線と双対測地線のプロット

はじめに 「情報幾何学の新展開」という本を読んでいる. まだ序盤しか読めてない上に,あまり理解できていないが,自分の理解のために,例として1次元ガウス分布を対象として,以下の導出とプロットをやる. 指数型分布族の標準形および双対座標系 ポテンシ…

機械学習とかの実験のパラメータをいい感じにやるコード

機械学習とかやっていると複数のパラメータを,コマンドラインから設定したいことがある. 割といい感じにできるようになった気がするので,備忘録として書いておく. コマンドラインパーサとしてclickを使う. clickについては,こちらが詳しくていい感じだ…

独立成分分析の実装

はじめに 統計的因果探索を読んでいる. この中で,独立成分分析が出てくるが,そういえばあんまり理解できていなかったので,実装して理解する. 日本語の本も見たけど,結局 Independent Component Analysis: Algorithms and Applicationsがわかりやすかっ…

リーマン多様体上の最適化 (シュティーフェル多様体上の最適化まで)

概要 リーマン多様体上での最適化のお勉強をしている. 多様体上での最適化では接空間上での勾配を求めたり,多様体上へレトラクションしたりする. 例として球面上で,自明な最適化とレイリー商(対称行列の固有ベクトルを求める)をやる. レイリー商から複…

JuliaとPythonで擬似コードや数式を動かそうとしたときの比較

この記事はJulia Advent Calendar 2017の17日目の記事です. 普段はpythonばかり書いていて,juliaは最近文法覚えてきたかなレベルなので色々許してください. コードの全体はここにあります. github.com 概要 この記事では擬似コードや数式を可能な限りそ…

pytorchで Canonical Correlation Analysis (正準相関分析)の実装

はじめに pytorchの練習も兼ねて,Canonical Correlation Analysis (正準相関分析)をpytorchを使って実装する. 本当は分散共分散行列からなる行列の一般化固有値問題を解くが,今回は勾配法で解を求める. pytorchのプログラムが間違っていないことを確認す…

EmacsでブラウザのテキストボックスにMarkdownを書く (校正もする)

概要 Atomic ChromeでEmacsからブラウザのテキストボタンを操作しつつ,textlintをflycheckからよんで文章を校正する. flymdでMarkdownのリアルタイムプレビューもする. こんな感じになる. はじめに ブラウザのテキストボックスに文字を打ち込むのが面倒…

CycleGANで普通の木を満開の桜にする

はじめに 定期的に生成系のタスクで遊びたくなる. 今回はCycle GANを使って、普通の木を満開の桜に変換してみることにした。 Cycle GAN 論文はこれ. 中身についてはたくさん解説記事があるので、そちらを参考。 Cycle GANでは2つのドメインの間の写像を学…

pythonでNUTSの実装

はじめに 前回 ハミルトニアンモンテカルロ法の実装をやった. 今回は No U-Turn Sampler (NUTS)の実装をやる. 論文を参考にした. コードはここにもある github.com NUTS ハミルトニアンモンテカルロ (HMC)はパラメータの勾配を利用して, 効率的にMCMCサ…

ハミルトニアンモンテカルロ法の実装

はじめに 今までなんとなくStanなどを使ってMCMCをやっていた。 ギブスサンプリングぐらいなら昔勉強したけど、ハミルトニアンモンテカルロや、ましてやNUTSなどは何をやっているのかあまり理解していなかった。 基礎からのベイズ統計学という本を読んで、ハ…

pytorchでgmmの最尤推定

はじめに 今まではKerasを使っていたけど、最近になってpytorchを覚えようとしている。 “Define by Run"と"Define and Run"の違いとかはよくわかっていないのでそのへんは適当。 普通にtutorialだけやっていると、 “なんとかネットワークは作れるけど、自分…

関係データ学習の実装 PythonでStochastic Block Modelの実装

概要 関係データ学習を見ながらpythonでSBMの実装をした。 Twitterのフォローフォロワー関係データに適用して、それっぽい結果を得た。 はてなの数式がいまいちわからないので、外部でレンダリングをしていて表示が遅い。 はじめに ksknw.hatenablog.com 以…

DTW (動的時間伸縮法)の実装

概要 自分の勉強のために、Dynamic Time Warpingを実装した。 正弦波データでいろいろプロットした後、気温のデータに適用した。 たぶんバグってないと思う。 はじめに 時系列データの類似度(距離)を計算するとき、単純には例えば各時刻での二乗誤差の平均な…

numpyのarrayとmatrixの書き方の違い

はじめに 環境 ベクトルと行列ベクトル トレース,行列式と逆行列 ベクトルの内積 行列とベクトルの積 行列の積 要素ごとの積 (アダマール積) ベクトルから行列 (テンソル積 ?) その他,関係ありそうだけど使ってない関数 おわりに はじめに numpyの行列関連…

関係データ学習の実装 MovieLensの行列分解

概要 関係データ学習の後半のうち,行列分解を実装した. lossが下がっているので,たぶん合っていると思うが,分解したあとのベクトルを見るとよくわからない. はじめに 以前こんなものをやった. ksknw.hatenablog.com 前半部分は終わったので(SBMのこと…

EmacsでPythonとTeXとMarkdownを書いてる動画と使ってるパッケージ

はじめに 今年は頑張ってアウトプットを増やすことを目標にした。 とはいえ、特に書くこともなかったので、Emacsについて書く。 正月やることがなかったので、またEmacsの設定を見なおした。 Emacs Rocksという動画に触発されて、動画で説明することにした。…

関係データ学習の実装 ツイッターデータのスペクトルクラスタリングとSBM

概要 関係データ学習の学習のために,自分で実装して理解する. ツイッターのフォローフォロワー関係を使って,グラフラプラシアンを求めスペクトルクラスタリングを行った. その結果,なんとなくクラスタリングできた. また,確率的ブロックモデルによる…

Stanで気温変動のフィッティング

はじめに この記事は Stan Advent Calendar 2016のn日目の記事ではありません。 21日目の記事です。 話題のアヒル本(言われるまで何がアヒルなのかわからなかった)を読んだ。 statmodeling.hatenablog.com Stanの文法を知るために買ったけれど、全体的に統計…

jupyter notebookで触れるプロットを描く

回転できる3Dプロット スライドバーつき もっと綺麗なグラフを描く 参考 昔、Emacsから使えないからjupyter notebookは使わないという旨の記事を書いた。 実際まだ、Emacsからは使えていないけど、最近はだいたいのコードをEmacs+pythonで書いて、実行やグラ…

キーボード上のいらないキーをよく使うキーに変える

はじめに 日本語配列のキーボードには変換、無変換とかカナとかほぼ使わないキーがいくつかある。 これらのキーは親指のホームポジションあたりにあるので、Altなどのよく使うキーに置き換えて有効活用することにした。 入れ替えたキーは以下 無変換->全角半…