suzuzusu日記

(´・ω・`)

機械学習系

スチューデントのt分布の最尤推定

スチューデントのt分布は外れ値のあるデータに対してもロバストな推定を可能とする分布として知られている。忘備録としてこの記事では、そのt分布の最尤推定をする。 スチューデントのt分布 一次元のt分布は、パラメータを用いて次のような確率密度関数で表…

AV1で採用されているChroma from Luma Prediction (CfL)を使ってイントラ予測

Chroma from Luma Prediction (CfL) はAlliance for Open Mediaが開発したオープンかつロイヤリティフリーな動画圧縮コーデックAV1などで採用されているイントラ予測手法です。イントラ予測というのは動画圧縮で他のフレームを参照しないフレーム符号化のこ…

時系列予測フレームワークfableを試す

fableとは? ETS,ARIMA,Random Walk,Neural Network autoregressionなどの時系列予測手法群の評価や予測結果の描画をしてくれるフレームワークです. 短いコード量でそれぞれのモデルを手軽に実行できるのが特徴です.使い方を忘れないようにメモしておき…

kerasのLSTMのstatelessとstatefulの切り替え

kerasのLSTMなどのRNN系のモデルは状態を保持するstatefulなモデルと状態を保持しないstatelessなモデルがあります.その切り替え方法をメモしておきます. 切り替え方法 あらかじめ同じネットワークのstatelessなモデルとstatefulなモデルを別々に作成する…

多項式カーネルに対応する特徴ベクトルを可視化する

多項式カーネルによって写像される特徴空間を可視化してカーネル法の挙動を把握します. 線形分離不可能なデータ 以下のように半径が異なる円周上に存在する2クラスのデータを生成します. import seaborn as sns import pandas as pd import matplotlib.pyp…

幾何ブラウン運動をARIMAで予測

忘備録としてまとめておく。 幾何ブラウン運動 以下のような確率微分方程式(SDE)によって定義されるものを幾何ブラウン運動と言います。金融工学のモデルとしてよく用いられます。 初期値をとすると解は次のようになることが知られています。 シミュレーショ…

尤度関数におけるガウス分布とスチューデントのt分布の比較

RStanを使って尤度関数がガウス分布と場合とスチューデントのt分布の場合でどのように異なるのかを比較します. 最終的にガウス分布に比べてスチューデントのt分布が外れ値に頑健な回帰をすることが可能であることを確認します. 線形回帰 今回は以下のパラ…

Hankel Non-negative Matrix Factorizationによる時系列データの前処理

HNMF 先日ブログで時系列データをHankel Singular Value Decompositionという低周波成分と高周波成分に分解するという前処理のアルゴリズムを紹介しました. 今回は特異値分解(SVD)の低ランク近似の部分を非負値行列因子分解(NMF)に変えても分解できるの…

Hankel Singular Value Decompositionによる時系列データの前処理

HSVD Hankel Singular Value Decomposition(HSVD)は時系列データを低周波と高周波の2つの成分に分解する手法です.HSVDを使用して時系列データの前処理をします. Embedding まず最初に,個の時系列データ を以下のような窓サイズのハンケル行列H(正確には…

しょぼん(´・ω・`)基底をGPLVMで獲得する

データの作成 以下の画像から,しょぼん(´・ω・`)基底を作成します. オリジナル画像 まず,画像を読み込みます. import numpy as np from PIL import Image image = np.asarray(Image.open('./data/shobon.png').convert('L')) 次に,2値化を行いしょぼん(´…

Higher-Order-SVDで画像の低ランク近似

HOSVD SVDは行列の低ランク近似手法であり,Higher-Order-SVD(HOSVD)はSVDをテンソルに拡張した手法です. HOSVDではタッカー分解というコアテンソルとそれぞれのモードの行列に分解する方法を使用します.以下にその概要を図示しました. タッカー分解 方法…

PyTorchで最急降下法による最適化

余談 Differentiable Programming(微分可能プログラミング)という捉え方がとても素晴らしいと個人的に思います. 詳しくは以下のブログを見てください. bonotake.hatenablog.com 最急降下法による最適化 機械学習フレームワークのPyTorchを使って単純に最急…

GPyTorchで多クラス分類

GPyTorchとは PyTorch上で実装されたガウス過程(GP)のライブラリである. ハイパーパラメータをPyTorchのシステムを使用してGPUなどで最適化できるのが特徴である. GPは逆行列を計算する際に の計算量がかかり,スケーラビリティに難があるが,PyTorchのシ…

カーネル密度推定とエントロピー

カーネル密度推定をしてエントロピーを計算する方法を忘備録として書いておく. 標準正規分布を例にとって計算してみる. ちなみに理論値は import numpy as np import matplotlib.pyplot as plt from scipy import integrate from scipy.stats import norm …

混合ガウス過程で多峰な関数を回帰する

忘備録として 混合ガウス過程と多峰な関数 以下のような多峰な関数を回帰する場合は,通常の単峰にフィッティングする回帰では困難なので混合ガウス過程を用いる. f1,f2関数 多峰な関数 GPclust GPclust という混合ガウス過程のライブラリが良さそうなので…

STDP学習ベースのSNNでMNISTを分類する

雑に論文みて勉強したので何も保証しません.SNNの情報全然無いような気がするのでしんどい. Spiking Neural Network(SNN) ニューロンの活動電位(スパイク)に注目したニューラルネットワーク.現状,計算量が多いのでチップを作ったりなどのハードウェアの…

Implementation of Poisson Spike model using Rust

自分用のメモ 実装したニューロンモデル Hodgkin–Huxley Izhikevich Integrate-and-fire FitzHugh-Nagumo Poisson-Spike Poisson Spike model(ポアソンスパイクモデル) ある時間内に発火する頻度が,ポアソン分布に従うスパイクモデルである. 実際のニュ…

Implementation of FitzHugh-Nagumo model using Rust

自分用のまとめ 実装したニューロンモデル Hodgkin–Huxley Izhikevich Integrate-and-fire FitzHugh-Nagumo Poisson-Spike FitzHugh-Nagumo(フィッツヒュー・南雲モデル) HH型モデルを簡略化したモデルである. それぞれのパラメータは以下を参考にして次…

Implementation of Integrate-and-fire model using Rust

自分用のまとめ 実装したニューロンモデル Hodgkin–Huxley Izhikevich Integrate-and-fire FitzHugh-Nagumo Poisson-Spike Integrate-and-fire(積分発火モデル) 入力の時間積分によって細胞の膜電位が増加し,ある閾値を超えるとスパイクが生成されるとい…

Implementation of Izhikevich model using Rust

自分用のまとめ 実装したニューロンモデル Hodgkin–Huxley Izhikevich Integrate-and-fire FitzHugh-Nagumo Poisson-Spike Izhikevich(イジケヴィッチモデル) Hodgkin–Huxley modelなどのコンダクタンス依存型モデルは複雑な式で計算量もそれなりにいるの…

Implementation of Hodgkin–Huxley model using Rust

自分用のまとめ 実装したニューロンモデル Hodgkin–Huxley Izhikevich Integrate-and-fire FitzHugh-Nagumo Poisson-Spike Hodgkin–Huxley model(ホジキン・ハクスレーモデル) 神経細胞の細胞膜をコンデンサ,イオンチャネルを変化する抵抗素子として考え…

KerasのstatefulなLSTMのtrain出力を記録する

忘備録として書く. FAQ - Keras Documentation からstatefulなRNN系だと学習や予測時に状態を更新してしまうので,単純に同じデータを入力して出力を得ることはできない. そこでメトリック経由で出力を得る. # 教師データ def true(y_true, y_pred): retu…