2
カクテルパーティーアルゴリズムSVDの実装…1行のコードで?
スタンフォード大学のAndrewNgによるCourseraでの機械学習の入門講義のスライドで、オーディオソースが2つの空間的に分離されたマイクで録音されている場合、カクテルパーティーの問題に対する次の1行のオクターブソリューションを示します。 [W,s,v]=svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x'); スライドの下部には「出典:Sam Roweis、Yair Weiss、Eero Simoncelli」があり、前のスライドの下部には「Te-WonLeeの好意によるオーディオクリップ」があります。ビデオの中で、Ng教授は次のように述べています。 「それで、あなたはこのような教師なし学習を見て、 『これを実装するのはどれほど複雑ですか?』と尋ねるかもしれません。このアプリケーションを構築するために、このオーディオ処理を行うように思われます。大量のコードを記述するか、オーディオを処理するC ++またはJavaライブラリの束にリンクする可能性があります。本当にそうだと思われます。このオーディオを実行するための複雑なプログラム:オーディオの分離など。今聞いたことを実行するアルゴリズムが判明しました。これは、ここに示す1行のコードで実行できます。研究者には長い時間がかかりました。このコード行を思い付くために。だから、これが簡単な問題だと言っているわけではありません。しかし、適切なプログラミング環境を使用すると、多くの学習アルゴリズムが本当に短いプログラムになることがわかります。」 ビデオ講義で再生された個別のオーディオ結果は完璧ではありませんが、私の意見では驚くべきものです。その1行のコードがどのようにうまく機能するかについて誰かが何か洞察を持っていますか?特に、その1行のコードに関して、Te-Won Lee、Sam Roweis、Yair Weiss、およびEero Simoncelliの作業を説明するリファレンスを知っている人はいますか? 更新 マイク分離距離に対するアルゴリズムの感度を示すために、次のシミュレーション(Octave)は、2つの空間的に分離されたトーンジェネレーターからトーンを分離します。 % define model f1 = 1100; % frequency of tone generator 1; unit: Hz f2 = 2900; % frequency of tone generator 2; unit: Hz Ts = 1/(40*max(f1,f2)); % sampling period; unit: s dMic …