独立成分分析(ICA)の絶対値復元

このQ&Aのポイント
  • 独立成分分析(ICA)について質問です。観測データの絶対値を使って推定データの絶対値も復元することはできるでしょうか?
  • 独立成分分析(ICA)では絶対値は復元できないのでしょうか?混合(分離)行列を推定できていれば、元データの絶対値は再現できると信じていますが、間違いでしょうか?
  • 現在試しているステップの4で詰まっています。3成分を主成分分析し、規格化してICAに投入し、推定された混合(分離)行列要素で成分分解していますが、絶対値の復元がうまくいきません。
回答を見る
  • ベストアンサー

独立成分分析(ICA)の絶対値復元

独学している独立成分分析(ICA)について質問です。 推定した独立成分は順序と符号の不定性があることは理解しているつもりですが、 観測データの絶対値を使って推定データの絶対値も復元することはできるでしょうか? ある3成分を用意して、適当な3×3行列でそれを混合してみて元データを再現できるか 試しています。(平均と分散を0と1にした)規格化されたデータまでは復元できるのですが それ以降の絶対値の再現がうまくいきません。 混合(分離)行列を推定できていれば、順序の不定性を除けば、 その係数から元データの絶対値は再現できると信じているのですが間違いでしょうか? そもそも原理的にICAでは絶対値は復元できなかったりするのでしょうか? ご教授よろしくお願いします。 ちなみに今試していることは、 1、3成分を主成分分析する 2、1の結果を規格化(分散=1)してICAへ投入する 3、推定された混合(分離)行列要素で成分分解する 4、3の行列要素をつかって、1や2の平均や分散を分解して絶対値を復元する というステップの4で詰まっています。

質問者が選んだベストアンサー

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.1

 3人がわいわい喋って声s[j,t](j=1,2,3; tは時刻)が混ざっている。その周りに3本のマイクi(i=1,2,3)をばらばらに置いて録音したデータx[i,t]がある。各人の声jがマイクiに入って来るゲインは未知で、これをA[i,j]とすると、   x[i,t] = Σ{j=1,2,3}A[i,j] s[j,t] である。x[i,t] (i=1,2,3) を   x[i,t] = Σ{j=1,2,3}P[i,j] q[j,t] となるように分解し、ただしq[j,t] (j=1,2,3)は互いに独立で、規格化されている。これが仰る所のICAでしょうか。  もし理想的に旨く分解できたとすると、係数λ[i] (i=1,2,3)があって、   s[j,t] = λ[j] q[j,t] となっているはず。つまり、λ[i] (i=1,2,3)を対角成分とする3×3の対角行列をΛとすると、   PΛ = A である。  ここで、Λが分からない、ということが、仰る所の「絶対値が分からない」( |x| と書く絶対値のことじゃなくて、振幅(符号を含む))の意味でしょうか?  だとすると、上記の式を見れば、ΛP = AでありさえすればPはどうにでもなるわけで、言い換えれば、「誰が一番大声で喋っていたか」を知りたくても、「マイクがどこにあったか」という情報(つまりはΛの推定値)がなくちゃ再現不可能。  では他に何か手がかりはないか。たとえば、録音に含まれる背景ノイズはどのマイクでもほぼ同じである、と仮定すると、sの背景ノイズのレベルが揃うようにΛを推定する、ということができそうです。このためには、まずqをさらに発話者の音声と背景ノイズとに分離しなくてはならない。たとえば遠くから高周波成分を含む鳥の囀りが聞こえ、あるいはダンプカーが極低音の騒音を立てていたとすると、フィルタを使って背景ノイズが取り出せるかもしれない。  これができたとして、しかし3つのqベクトルは互いに独立なのだから、背景ノイズも独立成分に分解されて3つのqベクトルに振り分けられている。だからqのノイズ同士の相関を取っても何も出ない。代わりに、3つのqベクトルそれぞれに含まれるノイズの統計量(振幅の分散とか、エントロピーとか)を比較すれば、もしかすると、Λが推定できるかも。もちろん、ICAの前処理で背景ノイズを除去してしまうと、この手は使えませんが。

61686168
質問者

お礼

回答ありがとうございます。 残念ながら絶対値(信号の振幅)を情報なしで導出することは原理的に できないということですね。ノイズ量を比較するという提案も実用的には おもしろそうですが、今の私の要求にはこたえられなさそうです。 最も単純に二成分の信号の混合を考えて行列成分を陽に書きながら 比較してみましたが、混合信号(x)の情報だけでは振幅を含めた 元信号(s)は復元できなさそうですね。。。 世の中でICAを使っている人々はどうやって復元しているのでしょうか? 元信号(s)に関する情報はICAとは別のところから引っ張ってきて (回答者様の例ではΛの情報を他からもってきて)ICAの結果と組み合わせている、 ということでいいのでしょうか? ご存知でしたらご教授よろしくお願いします。

61686168
質問者

補足

どのコメントも重要なのですが、とりあえず一番最初の回答を ベストに選びました。 考え直すと今回の私の質問は 「ICAで推定した独立成分から、元信号の振幅(平均値と分散)は解析的に導出できますか?」 ということでした。 その答えは解析的には無理で、何かしらのモデルを使えば導出できる可能性がある、 ということになりそうです。

その他の回答 (2)

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.3

> 脳波  脳味噌の中で生じている電流が漏れ出てきたのを、脳味噌・脳脊髄液・硬膜・頭蓋骨・頭皮・電極のペーストまで介して引き出すんですから、(信号源を分離するとかしないとか以前に)個々の電極における絶対値の測定がそもそも無理です。(分離したか分離しないかに関わらず、)振幅については、安静時の信号を使って各電極における基準レベルを決めれば、以後は、たとえばタスクを課すと安静時に比べて振幅が大きくなった、小さくなったという相対変化を見る事ならできますし、それで十分。診断上は、振幅よりまず周波数成分の構成を見ますよね。(α波とかβ波とか言ってるやつ。)なお、脳味噌の絵の上にカラーで活動性を表示したりする脳波トポグラムは、「ある電極で取った信号はその近くで生じているだろう」という仮定のもとに色を塗っているだけの単純なものです。  ICAで脳波信号の分離をやっている? 信号源がどっさりあるんで、意味のある結果が得られるのかどうか、いやどうも怪しげだなあ。筋電位によるノイズや背景ノイズの除去にICAを使う、というのならアリかなと思いますが。  完全に脱線しますけど、脳磁図なら、上記のような介在物の影響なしに信号が測れる。けれども、脳味噌内のどこにどんな電流双極子がいくつあろうとも、「脳表だけに分布している沢山の電流双極子」によっても全く同じ磁場が作れる。すなわち、逆問題を解くことが原理的に不可能という、これは電磁気の基本的な性質なんです。なので脳磁図では、「majorな電流双極子が1個あるはせいぜい数個だけある」というような(ちょっとムリっぽい)仮定を置いて、その位置・方向・大きさを計算しているんです。

61686168
質問者

お礼

ななな、なんと、、、脳波・脳磁図ってそんな適当ってか ざっくりした定性的解析だったのですね、、、!! 知らなかった、、、 なんだよーwebとか教科書ではあんなに格好良く書いてるくせにー、 と思ったものの絶対値で求めてますとは一言も書いてなかったか、、、 ICAでは絶対値振幅は解析的には復元できないということが わかったわけですが、私が扱うのはせいぜい2,3成分なので 提示して頂いた手法を参考にしてがちゃがちゃと発見法的になら それらしい値を探すことができるかもしれません。 単なる線形結合の問題なので、解析的にはできない、 ということを認めてしまえばそれなりの方法を見つけられそうです。 (今までのひとは疑問に思わなかったのかなあ、、、?  検索しても同様の質問は見つからないし、、、) たくさんの含蓄のある回答ありがとうございました。 回答者さまのような方が身近にいればいろいろ質問できるのに、、、 と思いました。お陰様で疑問が氷解しました。

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.2

ANo.1へのコメントについてです。 > 原理的にできない  どの入力にも共通に入って来る背景ノイズというのは、ほとんどの場合にありそうに思いますが…。 > どうやって復元しているのでしょうか?  振幅まで復元する必要がある応用って、やっぱり思い当たらないんですが、それはさておき…  音声の場合、「同時に2~3人から話しかけられても、どの方向からの音声かをそれぞれ区別し、かつ、その発話内容を分離する」という技術は既に出来てますよね。  発話者とマイクとの距離の違いによる(音速が有限であるために生じる、1mあたり約 3ms もある)遅延の情報から、マイクアレイ(その空間配置は分かっているものとする)に対する発話者の位置を測定することが出来ます。方向だけではなく位置の情報まで欲しいので、マイク間の距離がかなり広くないといけません。単一音源なら、マイクの信号の低周波成分を捨てて、これを少しずつイロイロに遅延させたものの相関を見るだけでイケる。複数の話者がいる場合(やったことないのですが)も、あるひとりの話者がある位置pにいると仮定して遅延させたものを使って分析し、pを色々動かしてみると、分離された信号が最もうまく取り出せるような最適のpが見つけられるでしょう。(分離結果のひとつのチャネルのエントロピーが極値を取る、などの指標で測れそうです。)で、発話者の位置pが分かれば、音量の絶対値を推定することも当然できている。  この話をちょっと一般化して定式化すると、発話が混合する現象のモデル   f[j](t) = ΣA[j](p[i]) s[i](t-d(p[i],j)/v)  に対する逆問題、ということになりましょう。ここにf[j](t)はマイクjが収集した既知の信号、未知のs[i](t)は音源iの出す信号、未知のp[i]は音源iの位置、既知の関数d(p,j)は位置pとマイクjの距離、定数vは音速、既知の関数A[j](p)は位置pの音源に対するマイクjの感度(無指向性マイクならA[j](p) = d(p,j)^(-2)とか)。  ただしsについて、何か適切な束縛条件が必要です。(これはICAでも同じ事ですよね。)たとえば、長時間で見ると相互にほぼ無相関だとか、それぞれ周波数帯域が決まっているとか、短時間で見ると(無声音以外における)周波数成分の構成が倍音列になっているとか、自己相関関数が大体分かってるとか。もっとラジカルに行くと、「有意味の音声として認識可能である」という束縛条件もアリでしょう。  この逆問題を解くには、非線形ですから結局の所、モデル(順問題)の計算を繰り返して、最適解(s,d)を探索する、という形にならざるを得ない。なので、「束縛条件を良く満たしつつfを良く再現した」ということを測る評価関数を決めておかなくてはなりません。ここが難しそうですが。  もちろん、束縛条件だけを頼りに漠然と探索していたのではなかなか収束しない。そこで、「pを与えた時の、束縛条件をソコソコ満たすようなベクトル関数sの近似値(定数倍を除く)」を速く見つけるための手段としてICAを使うという案は、十分アリだし有力そうだと思います。(pと、sの近似値(定数倍を除く)を決めれば、定数倍の決定は単なる線形問題です。)sの分離には遅延の情報を利用しようというのが普通の発想だろうと思いますが、ICAなら音源の位置がかなり近接している場合でもマガリナリにも分離できるし、低周波成分に強いという利点がある。両方の特長をうまく活かすような工夫も可能ではないでしょうか。

61686168
質問者

お礼

丁寧な回答ありがとうございます。 そうですか、ノイズを使うのが一番手っ取り早いですかねえ、、、 でも元信号を知らない状況で信号とノイズを分けられるのでしょうか。 特定の成分だけにノイズが乗ってしまうとお手上げのような。 またさまざまな解決方法の提示もありがとうございます。 ですがある意味もうこれはICAとは別の問題になってしまっていますね。 そういう意味では、今回のこの私の質問に対する回答は「絶対値は復元できない」 ということになりそうです。(もちろん提示していただいたような方法を 使えば模型依存的には導出できる可能性はあるとは思いますが、 解析的には絶対値が導出できないという意味です。) >振幅まで復元する必要がある応用って、やっぱり思い当たらないんですが、それはさておき… そうなのですか!? よく知りませんが、ICAで脳波を調べたりすると聞きますが、 これは各部位での定性的な波形を見てるだけなのでしょうか。 絶対値で各部位の振幅を比較しないとどこが最も活性化してるとか 議論できないんじゃないんですかねえ。うーむ。

関連するQ&A

  • 独立成分分析について

    独立成分分析について FastICAを用いて2人の話し声が混ざった音源からそれぞれの声に分離したいと考えてます。 現在、MATLABで混合音源をloadし、FastICAに取り込んだのですが実行結果を見る限り成功していません。 白色化を実行したあとでICAを実行しても2つの信号を取り出すことができずに、1つの波形しか表示されません。 取り込む音源はただ単純に2人の話し声を混合しただけです。 分離ができないのは取り込む音源に原因があると考えてます。 Fast ICAを用いてこの実験を行うためにはどういった形式の音源を入力信号としたらいいのでしょうか、教えてください。 ちなみに、取り込んだ信号のNumber of Signal(信号数) は1、Number of Sample(サンプル数)は18000となっています。

  • 主成分分析における出発行列の違いは?

    タイトルの通りなのです。 あるデータについて主成分分析を行いたいのですが 出発行列によって得られる結果が異なると教わりました。 相関係数行列と分散共分散行列はどのように使い分けるのでしょうか。 どなたか教えてください。お願いします!

  • 主成分分析に関する質問です。

    主成分分析に関する質問です。 平均が[0, 0],分散がσ^2*I2(I2は2*2のidentity matrix)のガウス分布に対おする共分散行列を考えます。 この共分散行列の主成分と固有値 第1主成分への投影によって再構成された値 投影によるエラーの値(真値と再構成された値の2乗誤差) を求めたいと思っていますが、とき方がわからず困っています。

  • 主成分分析について

    主成分分析を行い、主成分ベクトルを求めるためには行列(共分散行列)の固有値問題を 解き、固有値・固有ベクトルを求めればよいですよね。そこで固有値行列(対角成分に固有値 λが並ぶ行列)の固有値の値から累積寄与率を求め適当な次元まで減らすということは わかっています。そこで質問です。 例えば、元々100次元あるとします。固有値問題を解けば、100個の固有値が求まりますよね。 その固有値ひとつひとつに100個の成分を持つ固有ベクトルが存在しますよね。 これを50次元に減らすとします。元々100個固有値を持つ行列から、50個分を用いることになり ますよね。ここで、次元が50になったので固有値と対応する固有ベクトルの成分の数も100から 50に減るのですか?減るとしたら、固有ベクトルの成分からどのように50個取り除けばよいかが わかりません。どうか教えていただきたいと思います。

  • 主成分分析における分散

    主成分分析の際、分散が一番大きくなるように第一主成分を決めますが、 射影したデータの分散が大きくなる=情報量が多いと解説されているものがあるのですが これがいまいちわかりません。ここらへんを詳しく教えてもらえないでしょうか。 よろしくお願いします。

  • 画像の主成分分析

    画像の主成分についての質問です。 http://home.a02.itscom.net/coffee/takoindex.html の内容についてなのですが、事例1 タコ国未知物体の正体は何か というところで海にうつった飛行機の陰の画像を主成分分析し、第一、第二と並べていくと飛行機の主要な形が復元できるとあるのですが、実際にこのようなことは可能なのでしょうか?それとも概念的な例え? また、可能であればどのような操作で(元の画像のデータをこんな行列データにして主成分分析をかける等、)行えるのか具体的に教えてもらえるとありがたいです。主成分分析の操作はだいたいわかるのですが、このような画像の場合にどう入力するとあのような結果が得られるのかがよくわかりません。 困っています。どうぞよろしくお願いいたします。

  • 主成分分析と、共分散行列について

    現在、取得したデータから主成分分析を行うプログラムを実装しています。 扱うデータは、 [変数] x1 x2 x3 ・・・ xn [No. 1] 1 2 5 ・・・ 11 [No. 2] 3 5 10 ・・・ 8   ・   ・ [No. N] 4 6 35 ・・・ 9 のように次元となる変数x1~xnに対してそれぞれ値を取得し、x1~xnを一まとまりとした データ件数がNo.1~No. Nまでデータを取得するとします。 これらのデータを用いて共分散行列を生成し、固有値問題を解くことで主成分分析を行う のですが、ここで質問です。統計的に考えて、より精密に主成分分析を行うには、変数の 個数(n)に対して、データの個数(N)はどのくらい取るのが良いのでしょうか。因みに変数の数は 200程必要とします。

  • 主成分分析とは

    主成分分析といわれる統計処理があります。これは確率・統計の勉強を進めていったら出てくるのだろうかと思うのですが、ずっと勉強していたら必ず出てくるということでも無さそうです。確率統計という学問はいろんなものに応用されていく(文理関係なく)ので基礎と応用というペアも幅広く、どのような勉強の仕方があるのだろうと思うわけですが。 名前から想像すると、ある種のデータの変動を説明する主要な要因を抽出し、その寄与を調べるという風に見えます。例えば、世界各地の気温データの時系列データを集めて、それに関係しそうなデータ(CO2排出量とか)を突き合わせてその因果関係の度合いを調べるというようなものです。そういうことなのでしょうか。分散共分散行列の固有値を調べ、その値の大小を調べるということのようですが。 少し話が飛びますが、Rという統計ソフトを使えば、それに応じた形式のデータをRに処理させれば、自然と値(寄与率とか)が出てくるというブラックボックス的な使い方もできるのかなと思いますが、どうでしょうか。 よろしくお願いします。

  • 主成分分析の固有値について

    主成分分析を行うとき、行列の固有値問題を解きますよね。 そこで、対角成分に固有値が降順に並ぶ行列において、 累積寄与率がある値になるまで固有値を上から順番に 足し合わせていくのはわかりました。そこで、質問です。 固有値を降順に並べるとは、負の固有値で大きな値も 含まれるように「固有値の絶対値」で降順なのですか? それとも、正の固有値のみで考えて降順なのですか? 初歩的な質問ですみませんが、どうか教えて頂きたいと 思います。

  • 主成分分析

    今主成分分析を勉強しているのですが、 よく、書籍で出てくる、データセットというのは何を指しているのでしょうか? また、係数データを係数行列A(下にp×X)で示す。だとか、線形結合式で求めた値Z(下にn×k)=X(下にn×p)A(下にp×k)を主成分得点と呼ぶ などの説明がまったくもって理解不能です。 どなたか助けてくれませんでしょうか;;;;