NMFを用いた多重楽音解析

確率スペクトルを用いた基底生成モデルと
NMFによる混合楽音解析
神戸大学 工学研究科
◎中鹿 亘,滝口 哲也,有木 康雄
2011年春季音響学会
確率スペクトルを用いた基底生成モデルと
NMFによる混合楽音解析
「複数の楽器が混ざった曲」を「自動採譜」
神戸大学 工学研究科
楽譜データ
◎中鹿 亘,滝口 哲也,有木 康雄
波形データ
(楽譜形式)
変換
or
(ピアノロール形式)
研究の目的
「自動採譜」が無いと…
・自分の好きな曲を弾きたいけど
楽譜が分からない
「自動採譜」が実現すると…
・自分の好きな曲を演奏できる
・曲を自分好みに編集できる
それ以外にも,音楽検索や自動編曲など,
様々な音楽アプリケーションに応用できる
[1] P. Smaragdis, 2003
従来の楽音解析手法
 非負行列因子分解(NMF)による手法[1]
NMF=「非負行列Xを,2つの非負行列W, Hの積に分解するアルゴリズム」
H
X
W
音楽信号のスペクトログラムをNMFで分解すると…
アクティビティ行列
1
2
3
発音時刻などの情報を含む
観測スペクトログラム
基底行列
音階の情報を含む
4
[1] P. Smaragdis, 2003
従来の楽音解析手法
 非負行列因子分解(NMF)による手法[1]
NMF=「非負行列Xを,2つの非負行列W, Hの積に分解するアルゴリズム」
X
H
基底行列を
W
与えない …教師なしNMF
与える …教師ありNMF
音楽信号のスペクトログラムをNMFで分解すると…
アクティビティ行列
1
2
3
発音時刻などの情報を含む
観測スペクトログラム
基底行列
音階の情報を含む
5
教師なしNMFによる楽音解析の問題点
教師なしNMFで解析すると…
アクティビティ行列
Amplitude
基底行列
Frequency
スペクトルが混在
スペクトルが周期的
⇒音階が求まる
問題点
⇒音階が求まらない
機械的に行列を分解しているので
意図しない基底が表れてしまう
6
教師ありNMFによる楽音解析の問題点
教師ありNMFで解析すると…
アクティビティ行列
既知
観測スペクトログラム
解析を行う前に,
基底行列を用意する
基底行列
解析精度は高いが…
問題点
全ての楽器機種,全ての音階について
基底を用意するのは現実的ではない
7
研究の動機
 教師なしNMFの問題点:意図しない基底が表れてしまう
 教師ありNMFの問題点:全ての基底を用意するのは非現実的
楽器カテゴリの特徴量から,楽器の基底を全て表現できないか?
piano1
piano3
piano4
piano2
?
“ピアノ”の特徴量
8
楽器カテゴリの特徴量
1. 音階に依存しない特徴量にしたい…
スペクトル包絡に着目
2. スペクトルの変動を吸収したい…
確率的な表現をする
確率的なスペクトル包絡,確率スペクトル包絡 (PSE) を考える
あらゆる音階の
スペクトル
PSE
ある音階の
微小に変動するスペクトル
9
提案手法の流れ
音階ごとの
スペクトルを求
める
学習信号
テスト信号
スペクトログラム
スペクトログラム
教師なしNMF
楽器カテゴリの
特徴を表す確率
スペクトル包絡
教師ありNMF
PSEs
確率スペクトル
包絡の学習
拡張ガウシアン
プロセス
教師あり
NMFと遺伝
アルゴリズ
ムを組み合
わせて
曲を解析
遺伝アルゴリズム
楽譜
学習ステージ
解析ステージ
10
提案手法の流れ(学習ステージ)
音階ごとの
スペクトルを求
める
学習信号
テスト信号
スペクトログラム
スペクトログラム
教師なしNMF
楽器カテゴリの
特徴を表す確率
スペクトル包絡
教師ありNMF
PSEs
確率スペクトル
包絡の学習
拡張ガウシアン
プロセス
教師あり
NMFと遺伝
アルゴリズ
ムを組み合
わせて
曲を解析
遺伝アルゴリズム
楽譜
学習ステージ
解析ステージ
11
教師なしNMFによるスペクトル抽出
1.
学習信号のスペクトログラムを教師なしNMFで分解
アクティビティ行列
NMF
学習データ
基底行列
Amplitude
スペクトログラム
2.
基底行列から
スペクトルピークを抽出
スペクトルピークの集合を
確率スペクトル包絡の学習に用いる
Frequency
スペクトルピーク集合
12
[2] E. Snelson and Z. Ghahramani, 2006
確率スペクトル包絡の学習
拡張ガウシアンプロセス(SPGP+HS[2])で,ピーク集合を近似
Probability
任意の分布形状を,分散込みで近似できる
High
Amplitude
Low
Amplitude
3.
SPGP+HS
Frequency
Frequency
スペクトルピーク集合
確率スペクトル包絡
= (スペクトル包絡の平均,スペクトル包絡の分散)
楽器カテゴリごとに,確率スペクトル包絡を求めておく
13
提案手法の流れ(解析ステージ)
音階ごとの
スペクトルを求
める
学習信号
テスト信号
スペクトログラム
スペクトログラム
教師なしNMF
楽器カテゴリの
特徴を表す確率
スペクトル包絡
教師ありNMF
PSEs
確率スペクトル
包絡の学習
拡張ガウシアン
プロセス
教師あり
NMFと遺伝
アルゴリズ
ムを組み合
わせて
曲を解析
遺伝アルゴリズム
楽譜
学習ステージ
解析ステージ
14
教師ありNMFと遺伝アルゴリズムによる解析
 教師ありNMFの枠組みで,曲を解析
アクティビティ行列
NMF
解析したい
テストデータ
既知
スペクトログラム
基底行列
遺伝アルゴリズムによって,
テストデータに適応させた基底行列
15
教師ありNMFと遺伝アルゴリズムによる解析
 教師ありNMFの枠組みで,曲を解析
確率スペクトル包絡から,
ランダムに生成された基底行列の集合 (初期)
0.9
0.9
適応度の高い基底行列
0.9
0.9
0.8
0.8
0.8
0.8
0.7
0.7
0.7
0.7
0.6
0.6
0.6
0.5
0.5
0.5
0.4
0.4
0.4
0.3
0.3
0.3
0.6
0.5
0.4
0.3
アクティビティ行列
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0
0
0
2000
4000
6000
8000
10000
0
12000
0
2000
4000
6000
8000
10000
0
12000
0
2000
4000
6000
8000
10000
12000
0
2000
4000
6000
8000
10000
12000
0
1000
2000
3000
4000
5000
6000
0.8
0.8
0.8
0.8
0.7
0.7
0.7
0.7
0.6
0.6
0.6
0.6
0.5
0.5
0.5
0.5
0.4
0.4
0.4
0.4
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.1
0.1
0.1
0
0
1000
2000
3000
4000
5000
6000
0
0
1000
2000
3000
4000
5000
0
6000
0.2
0.1
0
0
0.16
0.16
0.16
0.14
0.14
0.14
0.12
0.12
0.12
0.1
0.1
解析したい
テストデータ
0.1
0.08
0.08
0.06
0
1000
2000
3000
4000
2000
3000
4000
5000
6000
交叉・突然変異
0.08
0.06
0.06
0.16
0.14
0.12
0.1
0.08
0.06
0.04
0.02
0.04
0.04
0.04
0
0.02
0
1000
0.02
5000
6000
0
0
1000
2000
3000
4000
5000
6000
0.02
0
1000
2000
3000
4000
5000
6000
0
0
1000
2000
スペクトログラム
3000
4000
5000
6000
基底行列 既知
遺伝アルゴリズムによって,
テストデータに適応させた基底行列
16
教師ありNMFと遺伝アルゴリズムによる解析
 教師ありNMFの枠組みで,曲を解析
アクティビティ行列
NMF
解析したい
テストデータ
既知
スペクトログラム
基底行列
遺伝アルゴリズムによって,
テストデータに適応させた基底行列
17
評価実験
実験 1.
未学習データへの頑健性をみる実験
 ある楽器機種(piano1)のみを用いて確率スペクトル包絡を学習
 異なる環境(別の機種や,残響の有無)で録音された曲を採譜
 比較手法
①教師なしNMF
②教師ありNMF(a) (piano1のみ学習)
③教師ありNMF(b) (それぞれの環境下の音を学習)
実験 2.
複数の楽器を含む音楽信号を解析する実験
 ピアノとヴァイオリンの2種類の楽器を用いて曲を推定
18
実験1の結果
各手法による音符の正解率
100
95
90
85
提案手法
80
教師なしNMF
75
教師ありNMF(a)
教師ありNMF(b)
70
65
60
piano1
その他の環境
19
実験1の結果
各手法による音符の正解率
100
95
piano1の音を学習
90
85
提案手法
80
教師なしNMF
75
教師ありNMF(a)
教師ありNMF(b)
70
65
60
piano1
その他の環境
それぞれの音を学習
20
実験1の結果
各手法による音符の正解率
提案手法では,環境を変えてもあまり正解率が低下しない
100
95
piano1の音を学習
90
85
提案手法
80
教師なしNMF
75
教師ありNMF(a)
教師ありNMF(b)
70
65
60
piano1
その他の環境
それぞれの音を学習
21
実験2の結果
ヴァイオリン
ピアノ
正解データ
遺伝アルゴリズムの初期
遺伝アルゴリズムで適用後
上段:ヴァイオリン
下段:ピアノ
22
まとめと考察
 スペクトルの確率表現で自動採譜を行う
 確率的なスペクトル包絡表現により,
一つの楽器カテゴリを表現しうるスペクトルをカバーする
 楽器ごとのスペクトル包絡を,
拡張ガウシアンプロセスを用いて確率的に表現する
 遺伝アルゴリズムと教師ありNMFを組み合わせ,
最も尤もらしい基底・アクティビティを推定する
 複数の楽器が混ざっていても解析可能
 今後の課題
 PSEと確率的なNMFを用いて,最尤法により曲を解析
23
ご清聴,ありがとうございました
24
(付録A)擬似逆行列を用いた教師ありNMF
以下の手順でアクティビティ行列Hを求める
1. 擬似逆行列を用いて計算する
H  (WT W)1 WT X
2. 負の要素をゼロにする
H  HR

3. 正規化する
H
H
H2
25
(付録B)実験1の解析結果例
正解データ
Piano1で演奏
Piano2で演奏
26
(付録C)環境毎の結果の内訳
自動採譜による音符の正解率
100
95
90
85
proposed
s-NMF
80
us-NMF
75
ex. s-NMF
70
65
60
original
piano2
piano3
rev. 40
rev. 100
27
(付録D)拡張ガウシアンプロセスの学習結果
Piano
Violin
1476 Samples / 72 Notes
403 Iterations
584 Samples / 36 Notes
101 Iterations
28
(付録E)拡張ガウシアンプロセスの効果
v.s.
拡張ガウシアンプロセス(SPGP+HS)
通常のガウシアンプロセス
29
(予備知識1)スペクトル基底の生成過程
確率スペクトル包絡からスペクトル基底を生成
調波フィルタ
確率スペクトル包絡
1.2
1
0.8
⇒
0.6
0.4
任意の音階の
音を作り出せる
0.2
0
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
ランダム生成
1
0.9
0.8

0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
スペクトル包絡
⇒
変動するスペクトル
を作り出せる
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
生成されたスペクトル基底
30
(予備知識2)基底行列の評価
教師ありNMFによって評価行列を求める
= 基底行列とアクティビティ行列の積
“良い”基底行列なら…
と
は,ほぼ同じ
テストデータ (観測スペクトログラム)
評価行列
“良くない”基底行列なら…
は,異なる
と
評価行列
テストデータ
テストデータとの距離を,評価値(適用度)として用いることができる
31
遺伝アルゴリズムによる基底の探索
テストデータに適応するように基底行列を進化させる
0.9
0.9
0.9
0.9
0.8
0.8
0.7
0.7
0.8
0.6
0.5
0.4
0.3
0.2
0.1
0
0.6
0
2000
4000
6000
8000
10000
12000
0
2000
4000
6000
8000
10000
0
12000
0
2000
4000
6000
8000
10000
12000
0.8
2000
4000
6000
8000
10000
0
12000
0.7
0.6
0.5
0.3
0.2
0.2
0.2
0.1
0.1
0.1
0
0
1000
2000
3000
4000
5000
6000
0
0
1000
2000
3000
4000
5000
0
6000
0
0.16
0.16
0.16
0.14
0.14
0.14
0.12
0.12
0.12
0.1
0.1
0.1
0.08
0.08
0.06
0.06
0.04
0.04
0
0.02
0
1000
2000
3000
4000
5000
  325
6000
8000
10000
12000
0
6000
0
1000
2000
3000
4000
5000
6000
3000
4000
5000
0
6000
0.16
8000
10000
12000
0.7
0.4
0.3
0.2
0.1
0
0
1000
2000
3000
4000
5000
6000
0.14
0.12
0.08
0.06
1000
2000
3000
4000
5000
6000
0.14
0.12
0.1
0.1
0.08
0.06
0
0.16
0.16
0.14
0.12
0.1
6000
0.6
0.1
2000
4000
0.5
0.4
0.3
0.2
1000
2000
0.8
0.6
0
0
0.08
0.06
0.08
0.06
0.04
0.02
4000
0.5
0.4
0.4
0.3
0.2
0.1
0
0
2000
0.7
0.6
0.5
0.5
0.4
0.3
0.2
0.1
0
0.8
0.7
0.7
0.6
0.5
0.4
0.6
0.5
0.4
0.3
0.3
0.2
0.1
0
0.8
0.7
0.6
0.3
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0.8
0.8
0.8
0.8
0.5
0.4
0.3
0.2
0.1
0
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.9
0.9
0.8
0.7
0.7
0.6
0.5
0.4
0.04
0.04
0.02
0.02
0
0
0
1000
2000
3000
4000
5000
6000
0.04
0.02
0
0
1000
2000
3000
4000
5000
6000
0
1000
2000
3000
4000
5000
6000
0.02
1000
2000
3000
4000
5000
6000
0
0
  538
1000
2000
3000
4000
5000
6000
  136
  652
初期の基底集合
  918
  717
適応した基底集合
アクティビティ行列
テストデータのスペクトログラム
基底行列
32
遺伝アルゴリズムによる基底の探索
テストデータに適応するように基底行列を進化させる
1. ランダムに基底行列を生成
2. 確率(p1)で基底行列を2つ選択して一様交叉
3. 確率(1-p1)で基底行列を1つ選択して一部突然変異
4. 基底行列が一定数集まれば次の世代に交代
5. 2. ~4. を繰り返す
33
遺伝アルゴリズムによる基底の探索
テストデータに適応するように基底行列を進化させる
1. ランダムに基底行列を生成
評価値が高い基底行列が
2. 確率(p1)で基底行列を2つ選択して一様交叉
選ばれやすい
3. 確率(1-p1)で基底行列を1つ選択して一部突然変異
4. 基底行列が一定数集まれば次の世代に交代
5. 2. ~4. を繰り返す
34
遺伝アルゴリズムによる基底の探索
テストデータに適応するように基底行列を進化させる
1. ランダムに基底行列を生成
2. 確率p1で基底行列を2つ選択して一様交叉
確率スペクトル包絡から基底行列を複数生成
3. 確率p2で基底行列を1つ選択して一部突然変異
0.9
0.9
0.8
0.7
0.6
0.5
0.4
0.4
0.3
0.2
0.3
0.2
0.1
0.2
0.1
0
2000
4000
6000
8000
10000
12000
0.8
0
0.1
0
2000
4000
6000
8000
10000
0
12000
0.8
0.7
1000
2000
3000
4000
5000
6000
0
6000
8000
0.3
0.2
0.1
1000
2000
3000
4000
5000
0
6000
0.16
0
1000
2000
3000
4000
0.14
0.14
0.12
0.12
0.1
0.1
0.1
0.08
0.08
0.08
確率スペクトル包絡
0.06
0.04
0.04
0.02
0.02
0
1000
2000
3000
4000
基底行列1
5000
0
6000
0
6000
0.06
0.04
0.02
0
5000
0.16
0.14
0.12
0.06
12000
0.6
0
4. 基底行列が一定数集まれば次の世代に交代
0.16
10000
0.5
0.1
0
4000
0.4
0.3
0.2
0.1
2000
0.7
0.6
0.5
0.4
0.3
0.2
0
0.8
0.7
0.6
0.5
0.4
0
0.8
0.7
0.6
0.5
0.4
0.3
0
0.9
0.8
0.7
0.6
0.5
1000
2000
3000
4000
5000
基底行列2
6000
0
0
1000
2000
3000
4000
5000
6000
基底行列3
5. 2. ~4. を繰り返す
35
遺伝アルゴリズムによる基底の探索
テストデータに適応するように基底行列を進化させる
1. ランダムに基底行列を生成
2. 確率(p1)で基底行列を2つ選択して一様交叉
3. 確率p2で基底行列を1つ選択して一部突然変異
(i) 基底行列を2つ選択
(ii) 基底行列を一様交叉
4. 基底行列が一定数集まれば次の世代に交代
0.9
0.9
0.8
2000
4000
6000
8000
10000
0.8
2000
4000
6000
8000
10000
0
12000
1000
2000
3000
4000
5000
6000
0
4000
6000
8000
10000
0
12000
1000
2000
3000
4000
5000
0
6000
2000
4000
6000
8000
10000
12000
0.8
1000
2000
3000
4000
5000
0
6000
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
6000
0
0.14
0.14
0.14
0.12
0.12
0.1
0.1
0.06
0.06
0.06
0.04
0.04
0.04
0.02
4000
5000
6000
0
0.02
0
1000
2000
3000
4000
5000
基底行列1
基底行列2
5. 2. ~4.
を繰り返す
6000
0
0.02
0
1000
2000
3000
4000
5000
6000
基底行列1
0
3000
4000
5000
6000
0.08
0.06
0.04
3000
2000
0.1
0.08
0.06
0.04
2000
1000
0.16
0.12
1000
12000
0.3
5000
0.1
0
10000
0.2
4000
0.14
0
8000
0.1
3000
0.12
0.02
6000
0.6
2000
0.1
0.08
4000
0.5
1000
0.14
0.08
2000
0.4
0
0.16
0.12
0.08
0
0.8
0.3
0.2
0.1
0
0.16
0.9
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0.16
0
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0.2
0.1
2000
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.5
0.4
0.3
0
0.8
0.7
0.6
0.5
0.4
0.16
0.7
0.2
0.1
0
0.8
0.7
0
0
12000
0.6
0.5
0.4
0.3
0.2
0.1
0
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0
0.9
0.8
0.7
0.6
0.02
0
1000
2000
3000
4000
5000
基底行列2
6000
0
0
1000
2000
3000
4000
5000
6000
交叉基底
⇒次世代基底の1つ
36
遺伝アルゴリズムによる基底の探索
(i) 基底行列を1つ選択
(ii) 一部の基底ベクトルをランダム生成
テストデータに適応するように基底行列を進化させる
0.9
0.9
0.8
0.7
0.6
0.5
0.5
0.4
0.4
0.3
0.2
0.3
0.2
0.1
0.2
0.1
0
2000
4000
6000
8000
10000
0
12000
0.8
0.1
0
2000
4000
6000
8000
10000
0
12000
0.8
0.7
1000
2000
3000
4000
5000
0
6000
0.1
3000
4000
5000
0
6000
0
0.14
0.14
0.12
0.1
0.08
0.08
0.06
0.06
0.04
2000
3000
4000
5000
6000
0
3000
4000
5000
6000
0.04
0.02
1000
2000
0.1
0.08
0.06
0
1000
0.16
0.12
0
12000
0.4
2000
0.14
0.04
10000
0.3
1000
0.12
0.02
8000
0.2
0
0.16
0.1
6000
0.6
0.1
0
4000
0.5
0.4
0.3
0.2
0.1
2000
0.7
0.6
0.5
0.4
0.3
0.2
0.16
0
0.8
0.7
0.6
0.5
0
0.8
0.7
0.6
0.5
0.4
0.3
0
0.9
0.8
0.7
0.6
0.02
0
1000
2000
3000
4000
5000
0
6000
0
1000
2000
3000
4000
5000
6000
1.2
基底行列2
基底行列2
1. ランダムに基底行列を複数生成
変異基底
1
0.8
0.6
0.4
0.2
0
音階が変わらないようにする
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
調波フィルタ
10000
確率スペクトル包絡
2. 確率(p1)で基底行列を2つ選択して一様交叉
3. 確率(1-p1)で基底行列を1つ選択して一部突然変異
4. 基底行列が一定数集まれば次の世代に交代
5. 2. ~4. を繰り返す
37
遺伝アルゴリズムによる基底の探索
テストデータに適応するように基底行列を進化させる
1. ランダムに基底行列を複数生成
交叉/突然変異を繰り返し,次世代基底集合を作る
0.9
0.9
0.9
0.9
0.8
0.8
0.7
0.7
0
0.6
2000
4000
6000
8000
10000
0
12000
2000
4000
6000
8000
10000
0
12000
0
2000
4000
6000
8000
10000
12000
0.6
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0
0.7
0.7
0.5
0.4
0.3
0.2
0.1
0
0.6
0.5
0.4
0.3
0.2
0.1
0
0.6
0.5
0.4
0.3
0.2
0.1
0.8
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.9
0.9
0.8
0.8
0.7
0.6
0.5
0.1
0.1
0
2000
4000
6000
8000
10000
0
12000
0
0
2000
4000
2. 確率(p1)で基底行列を2つ選択して一様交叉
0.8
0.8
0.8
0.7
0.6
0.4
1000
2000
3000
4000
5000
6000
0.16
0
1000
2000
3000
4000
5000
0
6000
0.16
0
0
1000
2000
3000
4000
5000
6000
0.14
0.14
0.12
0.12
1000
2000
3000
4000
5000
0
6000
0.08
0.06
0.14
0.14
0.12
0.12
0.1
0.1
0.04
0.04
0.02
0.02
0.06
0.04
0
2000
3000
4000
5000
6000
0
1000
2000
10000
12000
0.6
0.3
0.2
0.1
0
3000
4000
5000
6000
0
1000
2000
3000
4000
5000
6000
0.16
0.14
0.12
0.1
0.08
0.08
0.06
0.04
0.02
0.04
0.02
1000
8000
0.1
0.08
0.06
0
0
0.16
0.08
0.1
0.08
0.06
0
6000
0.5
0.2
0.1
0
0.16
0.16
0.14
0.12
0.1
4000
0.4
0.3
0.2
0.1
0.1
0
0.4
0.3
0.3
0.2
0.1
0
2000
0.7
0.6
0.5
0.4
0
0
0.8
0.8
0.7
0.5
0.5
0.4
0.3
0.2
0.1
12000
0.6
0.5
0.4
0.3
0.2
10000
0.7
0.6
0.6
0.5
8000
0.8
0.7
0.7
6000
0
1000
2000
3000
4000
5000
6000
0
0
前世代基底集合
1000
2000
3000
4000
5000
0.06
0.04
0.02
0.02
0
1000
2000
3000
4000
5000
6000
0
0
0
1000
2000
3000
4000
5000
6000
0
1000
2000
3000
4000
5000
6000
6000
次世代基底集合
3. 確率(1-p1)で基底行列を1つ選択して一部突然変異
4. 基底行列が一定数集まれば次の世代に交代
5. 2. ~4. を繰り返す
38
遺伝アルゴリズムによる基底の探索
テストデータに適応するように基底行列を進化させる
1. ランダムに基底行列を生成
2. 確率(p1)で基底行列を2つ選択して一様交叉
3. 確率(1-p1)で基底行列を1つ選択して一部突然変異
4. 基底行列が一定数集まれば次の世代に交代
5. 2. ~4. を繰り返す
最終的に得られた基底行列集合の中で,
最も評価値の高い基底行列を用いて
教師ありNMFを実行した結果が解析結果
39