サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
コーヒー沼
xiangze.hatenablog.com
久しぶりの投稿になります その間世の中では様々なことが起こりましたがStable diffusion,novelAI, DALL-e, midjourneyなど画像生成AIの流行もその一つです。 画像生成AIの性能の中核とも言える拡散モデルに関して他の機械学習手法との関連、そして多くのアイデアの源泉となった非平衡統計物理学,統計モデリング、進化生物学などとの関係に関して思ったことを書きます。 ためになる論文、本のリンクも貼ります。 目次 目次 score matchingとの関係 他の生成モデルとの関係 非平衡統計物理学との関係 統計モデリングの手法との共通点、相違点 情報幾何との関係 進化生物学との関係 専用ハードウェアへのヒント? なぜ拡散モデルはうまくいくのか コンテンツ生成以外の応用 その他 Next Step(ToDo) ためになるリンク 英語 ためになる本 Fitness la
だいぶ間が空いてしまいましたがEdwardのサンプルコードを動かしてみました。 シンプルなVEA VAE with CNN 課題 参考 その他 シンプルなVEA gist.github.com 1層前結合ニューラルネットをEncoder,Decoderに使っています。 kerasの関数Denseを使ってEncoder,Decoderが定義されています。同じTensorFlowベースのライブラリなのでこのようにして書くことができます。 EdwardではVEAのようなモデルがかける反面前回のコードのように変分ベイズやMCMCを使ったベイズ推定では確率モデルと因子分解した近似モデルの2つを書かねばならずstanなどに比べて冗長でした。少し広い枠組みの確率的プログラミングができるということになります。 隠れた変数qzの推測の過程で勾配を用いるので隠れた変数として正規分布に従うqzのパラメータloc
今更ながら確率的プログラミングのライブラリEdwardを試してみました。 http://edwardlib.org/tutorials/ 確率的プログラミング 統計的なモデルの(ベイズ)推定が出来るという点でstanやpymcと似ていますが、Edwardはより広く確率的プログラミング(Probabilistic Programming) という枠組みを実現したライブラリであり、Variable AutoEncoder(VAE)やGenerative adversarial networks(GAN)なども比較的簡単に実装できるようです。 また直接関係ないのですがstanやpymcでは最初にMCMCが実装されあとで自動変分ベイズが実装されたのでインターフェースがMCMCよりですが、EdwardはMCMC,変分ベイズ双方での計算ができ、変分ベイズのほうはより細かい計算の指定が出来るような印象で
画像内の物体が回転したり変形したりしていても認識できるような方法に関する研究の論文を読みました。 CNNでは学習データを大量に用意しなければならず、そのために既存の画像に並行や回転などの操作を施して学習を行うと精度が向上することが知られています(data augumentation)。データを多くすることなく同程度の精度を達成するような回路構成が考えられてられてます。 Group Equivariant Convolutional Networks 解説 実装 評価 Harmonic Networks 実装 M理論とは 思ったこと その他参考 Group Equivariant Convolutional Networks https://arxiv.org/abs/1602.07576 解説 画像Iを座標x,y∈Z^2の関数として表現すると 畳み込み演算(convolution)は関数f
FPGAブームが来ています*1 。 最近年を追うごとにFPGAに関する書籍やネット上の情報が多くなり、またC言語ベースでの高位合成技術の進展やLinuxベースのシステムが作られ、FPGAはソフトウェア開発者にとっての敷居が低く使いやすくなってきています。しかし入手できる情報は特定のベンダーの製品、ツールの使用を想定した実践的なものが多く、中立的立場からFPGAの内部構成や動作する原理について解説した日本語の本はほとんど見当たりませんでした。 「FPGAの原理と構成」はそのような意味で他にはない、この本にしか載っていない事柄の多い本になっています。 FPGAの原理と構成 shop.ohmsha.co.jp 1章 FPGAを理解するための基本事項 2章 FPGAの概要 3章 FPGAの構成 4章 設計フローとツール 5章 設計技術 6章 ハードウェアアルゴリズム 7章 PLD/FPGAの応用事
Stan Advent Calendar12/11の記事です。時系列の統計モデルに関する論文「Recurrent Switching Linear Dynamical Systems」の紹介とそのstanでの再現です、が現状うまくいっていません。。 目次 目次 モデル コード 数値実験 計算結果 参考 モデル この論文で提唱されているモデルRecurrent Switching State Space Model(rSSS)、その一種であるRecurrent Switching linear dynamical systems(rSLDS)は離散的な状態を再帰的に推定することが特徴とされています。 元となっているSwitching linear dynamical systems(SLDS)は線形の状態空間モデルを離散的な状態の数だけとってその間の遷移を許容するようなモデルです。 観測値を
経済学においては失業率とインフレ率をプロットすると負の相関関係が見られるというのが知られていてフィリップス曲線と呼ばれるそうです。 https://gist.github.com/xiangze/b2a29f5f4ffb2be835b2#file-data_for_phillips-ipynb その関係は10年程度の長期間では変化していき、原因として国ごとに様々な原因が考察されています。 各時点に対して失業率-インフレ率のプロットをして関係を見るのですが、各時点での値は独立ではなく、確率過程としてモデル化できると考えられます。実際ニューケインジアン・フィリップス曲線(NKPC)というモデル提唱されています。 実際のデータがどの程度当てはまるかを論文賃金版ニューケインジアン・フィリップス曲線に関する実証分析に沿ってstanで計算してみました。 目次 目次 データ モデル 賃金上昇率を用いたモ
機械学習の方法として教師なし学習で得られた量を特徴量として教師あり学習で使うという方法があります。 OnlineNewsPopularityの列の中にもLDAで推定されたトピックがあるようです。文書データもOnlineNewsPopularityと同じようにLDAで得られた量を使って機械的に分類が可能かと思われます。 そこで例としてNIPS論文の全文に対して各論文の語の頻度が作るベクトルをSVDとt-SNEを用いて2次元に圧縮した場合にきれいに分離されるかを見てみたのですが、うまくいきませんでした。mathutils.corpus2cscを用いたgensimでの疎行列の扱い方、scikit.learnとの連携の例として挙げます。更なる解析の試みとしてはword2vecの使用などが挙げられるかも知れません。 gist.github.com トピック数10としてトピック間の関係を多次元尺度法を
使ったアルゴリズム(random forest, neural net, Bayesian Optimization)とデータ(OnlineNewsPopularity)はTJOさんのブログ記事 と全く同じでPythonのライブラリscikit-learnのrandom forestとKeras, bayesianを使っているところが異なります。 gist.github.com 平均二乗誤差の値はRの結果とかなり異なり、random forestはRのものより値が小さく、Kerasでは逆にMXnetよりも誤差が大きくなってしまっています。原因としてはtrain,testに分離したデータが異なるという点も考えられますが、random forestの初期値に起因するところが大きいように思われます。 実際に動かしてみるとnanが出てくることが多く、ニューラルネットの学習にかかる時間の長さもあって
CVPR2016の論文読み会が大盛況で参加出来そうになかったので個人的に読んだ複数の論文を紹介します。 最近興味があり、コンピュータービジョンの分野で長らく研究がされているジャンルであるsaliency(顕著性)に関する論文を紹介します。CVPR2016でsalient, saliencyがタイトルに入っているものは9本ありました。 https://dl.dropboxusercontent.com/u/27452774/CVPR2016/CVPRpapers2016_10.html#topic=9&lambda=0.85&term= 全論文の全文を使った上記のトピックモデルでは9番に相当し、600以上ある論文の中ではかなりの割合を占めるようです。 そのうち以下の3つの論文を読んだので紹介します。 Deep Contrast Learning for Salient Object Dete
stan開発者の一員であるBetancourtさんを招いたTokyo.stanを聴きにいきました。 Michael Betancourt's Stan Lectureを開催しました - StatModeling Memorandum 自分はstanを余り使いこなせていないのですが、主にアルゴリズムと実装に関する感想を書きます。 HMCの説明をされている中で推定されるべき事後分布の関数の等高線を回るようにサンプルしているという説明が非常に明快でした。事後分布の勾配である"重力"に対して直交する方向に運動量が存在すれば分布の極大値にとどまらずにその周囲を回るようにサンプリングがされます。ニュートン力学そのものです。 赤が勾配、青が運動量 最適化問題は山を登るか(下る)ような勾配系の問題としてイメージできますが、MCMCは分布を推定するので相空間を等エネルギー面に沿ってぐるぐる回るハミルトン系の
pymcはpythonの文法の枠内で統計モデルが書けてMCMCを実行することで推定が出来るライブラリです。 最近開発に色々な進展があったので勉強しています。 https://pymc-devs.github.io/pymc3/ ノンパラメトリックベイズモデルは任意の数の変数を持つ確率過程を用いるモデルですが、これをプログラミング言語で実装するのは少し難しいように思ったのですがデータ数が有限なことなどを考えると書くことができます。 ディリクレ過程 カテゴリカル分布に従う不定個数の離散的な確率変数の共役事前分布として使われるディリクレ過程はstick breaking processという方法で実装できます。pymcでは https://gist.github.com/xiangze/d7a5c475bfd5b946a1c7#file-pymc-ipynb の[25]のcomponentのよう
「R言語徹底解説」(原題 Adbanced R)を訳者の方からいただきました。ありがとうございます。 最初15章 DSLまで読もうとしましたが挫折したので3章 データ抽出について書きます。 R言語徹底解説 作者: Hadley Wickham,石田基広,市川太祐,高柳慎一,福島真太朗出版社/メーカー: 共立出版発売日: 2016/02/10メディア: 単行本この商品を含むブログ (26件) を見る Rはデータの統計的処理に特化したような言語ですが、この本ではデータ解析の対象や方法論や機械学習のアルゴリズムではなく一般的なプログラミング言語としてのRの仕組みとに焦点が当てられています。著者のHadley Wickham氏がplyrパッケージやggplot2パッケージを作るにあたって勉強したことが書かれているようです。 R以外の本としては高階関数、スコープ、環境などの関数型的な要素は著者も紹介
HDLアドベントカレンダー2015の記事です。 FPGAにwavelet treeを用いた簡潔データ構造を実装したという論文を紹介します。PDPTA'15(International Conference on Parallel and Distributed Processing Techniques and Applications)という学会で発表されたようです。 http://www.kameyama.ecei.tohoku.ac.jp/papers_pdf/PDP3384.pdf 簡潔データ構造とはビット列Bに対して access(B,i) i番目のビットの値を返す rank_q(B,s) 範囲s内にある文字qの数を返す select_q(B,n) n番目に出現した文字qの位置を返す の操作がデータ数に対して定数~logオーダーで行えるようなデータ構造であり、効率的な処理としてデ
局所的な近似によるMCMCの高速化論文が話題になりました。 http://japan.zdnet.com/article/35073667/ 論文Accelerating Asymptotically Exact MCMC for Computationally Intensive Models via Local Approximations を読んで理解した範囲の内容を書きます。 アイデア 物理現象のモデルは(確率)微分方程式を使って書かれますが、そのパラメータが未知のことが多く、MCMCを使ってパラメータを推定することが行われています。 しかし現実的な問題ではモデルが巨大になって、MCMCの各ステップでそれを評価するのは計算量が多くなりすぎてしまいます。 そこでモデルを近似するということなのですが、サンプリングに近似した事後分布を使うというアイデアはApproximate Bayes
最近統計数理研究所の樋口先生によって本が出版され、また実用的な観点からデータ同化への注目が高まっています。 「データ同化入門」では時間が経つごとに得られるデータを順次取り入れて予測に用いていく逐次データ同化という手法が主に紹介されています。 データ同化とカルマンフィルタ、パーティクルフィルタについてTokyoRで発表させていただきました。発表資料は以下になります。 Data assim r from xiangze 資料にも記載したようにパーティクルフィルタはシステムが非線形な方程式に従って変化する場合、システムノイズ、観測ノイズが非ガウシアンの場合にも使用できるという利点があります。 しかしながら粒子数が少なければ事前確率分布の近似も粗いものとなってしまうので真の時系列に収束しない場合もあり得ます。 実験 代表的な例として樋口先生の「データ同化入門」でも取り上げられているLorenz系を
deeplearning.netのRBM(Restricted Boltzmann Machine)のTheanoでの実装面からの説明です。RBMのアルゴリズムについてはsinhrksさんが Theano で Deep Learning <6>: 制約付きボルツマンマシン <前編> - StatsFragments に書かれています。 説明の流れはdeeplearning.netのImplementationの部分と同じですが、ここではTheanoの共有変数(shared)とscan,updatesの使い方について重点的に説明します。 概要 RBMでは観測変数vの組が与えられた場合最もとりうるであろうでパラメータW,h,bの組を推定します。その際に対数尤度を各変数で偏微分した値が0に成るような値を推定したいのですが、 観測値の分布を条件付き確率p(h|v), p(v|h)を繰り返し用いて逐
コンピュータビジョンの国際学会CVPRの最近の論文全文をトピックモデルに基づいて分類、単語分布を可視化できたのでその結果を手短にまとめます。図を見てもらったほうが早いかもしれません。 手法 https://github.com/colincsl/cvpr2013papers からforkした https://github.com/xiangze/cvpr2013papers を使って論文のダウンロード、全文text化を行いました。さらにgensimを用いてcorpus、辞書の作成、LDAによるトピックの分類を行い(genLDA.py)、pyLDAvisで可視化(genpages.py)しました。 LDAvisはもともとRのパッケージでshinyでクラスタリングの結果を可視化、共有する出来ます。pyLDAvisは見た目は同じでwebページのほかにipython notebook(Jupyte
waifu2xの登場で注目されるTorchですが、様々なアーキテクチャでの実装を標榜しているようです。 http://torch.ch/ ではFPGA backendsと書かれていますが、誰かが実装したという話は聞いたことがありません。ので検討してみました。 まずwaifu2xのアルゴリズムとパラメータの傾向を把握します。 アルゴリズムはpythonで書かれたものがわかりやすかったです。 https://marcan.st/transf/waifu2x.py Y(輝度)成分だけに超解像処理を適用していて、入力は元画像のpixelを単純に繰り返したもののようです。 またjson化された係数の分布を見ると0になっている部分はほとんどないようです。 http://nbviewer.ipython.org/gist/xiangze/0a303baca4c99d463748 sparsenessが過
pythonのMCMCライブラリとしてemceeというのがあるらしいので試してみました。 Paralell tempering(レプリカ交換モンテカルロ法)が使えるの他のライブラリとの大きな違いになります。 http://dan.iel.fm/emcee/current/ ほかにもMultiprocessing,MPIに対応している点などが特徴です。 本体はpure pythonで書かれているらしいのですが、普通のpythonと同様にCythonなどで高速化が出来るようです。 インストール 他のライブラリに依存していないので pip install emcee だけでインストールは完了です。ただしMPIを使う場合にはmpi4pyをインストールする必要があります。 実行例 http://dan.iel.fm/emcee/current/user/line/#maximum-likelihoo
ipython notebookを使って出版されたらしいPython for Financeという本を読みました。 numpy, scipy, pandas, PyMC3をはじめとしたPythonの数値計算、解析系のパッケージを使った金融工学の計算事例と自作ライブラリについての紹介になっています。 Python for Finance: Analyze Big Financial Data 作者: Yves Hilpisch出版社/メーカー: Oreilly & Associates Inc発売日: 2014/12/27メディア: ペーパーバックこの商品を含むブログを見るhttp://shop.oreilly.com/product/0636920032441.do https://books.google.co.jp/books?id=7tzSBQAAQBAJ&printsec=fron
「情報幾何の新展開」という本が話題になっています。 http://www.saiensu.co.jp/?page=book_details&ISBN=ISBN4910054700848&YEAR=2014 別冊数理科学 情報幾何学の新展開 2014年 08月号 [雑誌] 出版社/メーカー: サイエンス社発売日: 2014/08/22メディア: 雑誌この商品を含むブログを見る 著者は情報幾何という学問分野を創始したともいえる甘利俊一先生です。 本書においては今までの分野の総括のみならず機械学習の理論や応用の進展を受けた今後の発展の方向を示しているような非常に野心的であおられているような書き方であったので、非常に簡単ではあり、また理解が不足している部分がありますが感想をまとめます。 4部構成になっていて、第I部、第II部は情報幾何を理解する為の基礎となる数学についての解説で、第III部は統計的
かなり以前(2012年)のものになりますが、deeplearning.netでRecurrent Neural Network(の一種)のTheanoによる実装とMIDIデータからの旋律予測に関する論文の実装が公開されていたの紹介します。またその他機械学習による音楽情報の解析に関して少し紹介します。 Modeling and generating sequences of polyphonic music with the RNN-RBM (deeplearning.net) Modeling Temporal Dependencies in High-Dimensional Sequences: Application to Polyphonic Music Generation and Transcription 論文pdf 著者ページ 論文概要 Recurrent Neural Ne
Particle Markov chain Monte Carlo methods (PMCMC) 時系列の推定とモデル(のパラメータ)の推定においてParticle filter(SMC)とMCMCを組み合わせた手法があり、その分かりやすい解説としてParticle Markov chain Monte Carlo methods(pdf)というドキュメントを読んだのでその内容について記載します。 構成は 1. Introduction 2. アルゴリズム概要 3. 適応例(Lévy-driven stochastic volatility model,簡単な非線形モデル) 4. PMCMCの一般的定式化 5. Discussion Appendix Reference 色々な先生方による講評(半分以上を占める) となっていますが、その2章の内容が以下になります。 普通のparticl
Hamilton Monte-Carlo法(Hybrid Monte-Carlo法)はMCMCによる分布関数のサンプリングを高速化させる手法の一つであり、近年StanやTheanoなど統計的解析を行うためのプログラミング言語に実装させており、注目を集めています。 今回は混合ガウス分布に対するその分布の軌跡をplotしました。 HMCの基本 基本的には通常のモンテカルロ法で扱う変数の組みxに対して同じ数の運動量変数pを用意し、ハミルトニアンHを \( H=\frac{ p^2}{2}+V(x) \) \( V(x) = -\log(p(x)) + C \) と定義します。 運動量の変数(p)のランダムな更新 一定期間分ハミルトン方程式 \( \frac{dp}{dt}=-\frac{ \partial H}{\partial x} \) \( \frac{dx}{dt}=\frac{ \pa
第4章ディープラーニングの内容に関する個人的ノートです。 詳しくは コンピュータビジョン最先端ガイド6 (CVIMチュートリアルシリーズ) 作者:藤代 一成,高橋 成雄,竹島 由里子,金谷 健一,日野 英逸,村田 昇,岡谷 貴之,斎藤 真樹アドコムメディアAmazonを読んでください。 5/25(日)に勉強会が開催されます。 第23回 コンピュータビジョン勉強会@関東 以下が内容です。後半はしょってしまってるところが多いです。 コンピュータビジョンに関する本なのでConvolutional Neural net(CNN)について特に詳しく説明されています。 はじめに ディープラーニングの隆盛 2012年ICMLの猫認識の研究 一般物体認識のコンテストILSVRC(2012(結果, 2013) 音声認識(Hinton et al.) 化合物の予測(kaggle, 論文?) 量子化学的な物質の
GPUでモンテカルロ法の計算をしたくなったりした場合には普通CUDA,OpenCLを使うことになります。 C++でプログラミングする必要があるのですが、変数の確保、解放などで記述が長くなりがちです。pythonを用いると記述を簡潔にできるところが多いらしいので関連するライブラリを紹介します。 実務的にはPyMCからTheanoが呼べるらしいのでそれを使用するのが良さそうですが、現段階では実装されていない機能もあります。 @beroberoさん http://heartruptcy.blog.fc2.com/blog-entry-152.html id:breakbeeさん http://breakbee.hatenablog.jp/entry/2014/05/20/121722 がインストール、実行に関して解説されているのでここでは実装面を少し説明します。というか備忘録です。 PyCUDA
IPython Notebookが評判になっているので使ってみました。書いたコードをgithub,gistに上げるとnbviewerできれいに表示してくれるそうなので試してみました。 IPython Notebookとは Webブラウザ上で対話的にpythonのコードを実行できる環境です。コード、コメント、図を含む出力結果を順番に表示し、計算ノートの様な見た目になります*1。 原理的には遠隔地のマシンに処理を行わせることも出来ますが、ここでは手元のマシンでの起動、実行を紹介します。 インストール MacではAnacondaをインストールしました。 >conda update conda >conda update ipython Windowsではpython(x,y)をインストールしましたがipythonだけでも良さそうです。 >pip install ipython Linuxでは >
高次元データの大域的な性質に着目した分類、解析の手法にPersistent Homologyという方法があります。 またその手法を実装したRのパッケージ(CRAN phom package)があったので簡単に紹介いたします。その他の色々な言語で使えるライブラリについても最後に紹介いたします。 ホモロジーについて ホモロジーとはあまり厳密でない言い方をすると微小な変形によっては変わることのないものの形状を特徴づけるような量で、一般には群の形で記述されます。群の係数としては整数や複素数などの数だけでなく、関数もとり得ます。しかしデータ解析の分野においては実係数のホモロジー群のみが対象とされる場合が多いようです。 球面、あるいはトーラス(ドーナツ型の図形)の表面は2次元ですが境目を持ちません。しかしながら全体としてみるとトーラスには穴が開いていて、球面には穴がありません。この穴に相当するものの有
次のページ
このページを最初にブックマークしてみませんか?
『xiangze's sparse blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く