音声の音源分離や、多次元のデータの次元削減のために使われる手法である。音声の音源分離について調べてたときにちょうど出てきたのでまとめてみたいと思う。Pythonでの実装は以下の記事で行った。NumPy)以下の書籍の内容を自分なりにまとめていく。2つの内積に分解する手法である。(1)これは様々な学習システムに応用されてきた。非負である必要がある。非負としたのは、自然界に存在する様々な信号の性質を反映するため。実際、画像の画素値や音声スペクトログラムの値などは非負となっている。音源分離の文脈で今回は、音源分離の文脈でまとめていきたいと思う。NMFは単音源の音源分離によく使われる。フレーム分格納されていることになる。個の基底ベクトルが並んでいると解釈できる。1行1行が分解された信号に対応する重みになる。以下のように書き換えることができる。それぞれ強度スペクトログラムで得られるとする。分離されたものが教師データとして持っている場合を考えてみる。以下のように表現することができる。functionにより、分離スペクトログラムの精度がより高まるらしい。要素ごとの積を表している。オーバーラップさせながら足し合わせていく逆短時間フーリエ変換を行えば分離された音声を再構成することができる。教師なし今度は分離された教師信号が存在しない場合を考えてみる。これがかなり現実で多い問題設定になるだろう。k-meansなどのクラスタリングアルゴリズムを用いて任意のクラスに分離することができる。この分離方法にはいくつか存在しており、ベイズ推定によって得る手法も提案されている。概要の非負行列が与えられているとする。この時、各要素は以下のような対応関係となっている。次元ベクトルとの内積の値に該当する。以下の条件を満たすように調整されていく。値を求めていくのが目標となる。組を何らかの指標を使いながら求めていこうということになる。得られた勾配などから値を更新していく。勾配の正のパートと負のパートとに分けて考えると、(11)(12)これらを使ったパラメータ更新式は以下のようになる。種類によってどのように更新式が変化するかを具体的に見ていく。Distance)直接的に距離を求めた指標。(14)それぞれの要素間の距離の二乗を単純に足し合わせたものとなる。最小化するために以下の更新式にしたがってパラメータを更新していく。非負であれば更新後の値も正になる。更新式は以下のように書くこともできる。とおくと分数の更新式と同じ形を得ることができる。更新式は以下のように変形することで結果を得ることができる。相当するので、式(13)に当てはめて計算すれば(16)が導き出される。Divergence今度は2つの行列の間にある情報量を測る手法について見ていく。以下のようなエントロピーを求めることで得られる。Divergenceを最小化していくためのパラメータの更新式は以下のようになる。NMFで使われる損失としてよく使われるものの1つである。(23)の更新式は以下のようになる。Divergenceが使われることがある。更新式は以下のようになる。基底表現にスパース性を確保することで、実際のノイズ混じりの信号からシンプルな基底だけを確保できるようになる。スパース性を確保するために、損失に正則化項が加わる。(29)はモデル正則化のための罰則関数。L1正則化かL2正則化がよく使われる。Divergenceの更新式は以下のように変化する。まとめ今回は、NMFについて書籍に書いてある内容を一通りなぞってみた。NMFは自然界の信号の性質を加味して非負性を意図的に確保しつつさらにスパース性も加えている基底分解の方法の1つだということがわかった。手順そのものもICAなどよりかはかなり直接的に求められるのでわかりやすいものになっている。英語ではあるものの、式などが丁寧に乗っているのでとても読みやすいものになっている。音源分離について色々知っていきたい。ubuntu著者プロフィール。