プラチナプラスチック

雑記のようなもの

【論文】WaveFit

論文読み感想、的な
浅い感想になると思う
一番に書きたいことは理解できてないところについて
まあこれは見る人がみれば「何言ってんだ」ってなるかもしれない

概要

DDPMベースのボコーダー(InferGrad)が敵対的生成学習(MelGAN)と共存できるという内容のもの
https://arxiv.org/abs/2210.01029

内容

DDPMは音声のノイズ除去による学習で、
入力"メルスペクトル"と"完全なホワイトノイズ"と"ノイズレベルt"から出力"音声"を取得するもの

以下が論文
https://arxiv.org/pdf/2006.11239.pdf

音声の場合、以下適当なスライドを参照
https://speakerdeck.com/yumakoizumi/kuo-san-que-lu-moderutoyin-sheng-bo-xing-sheng-cheng?slide=27

DDPMベースボコーダーが一番優れている点は、
ターゲットから任意のノイズレベルのノイズを加えた"音声t"から任意ノイズ量デノイズされた"音声t-1"を学習する際、
それに対応した"モデルDt"が介在するのではなく、モデルは1つしか存在しない点
対応する"モデルDt"は、ノイズレベルtの変換(positional-encoding)をし、モデルの計算内に埋め込みを行い内部でこれを表現する

同モデルにホワイトノイズを通し、tステップデノイズを複数回こなし最終的に完全な音声を目指す
実際の推論ではT=1000としても1000ステップ推論を行うのでなく、6回程度の推論でほぼ完全な音声になるため、推論時間を短縮できる
・wavegradhttps://arxiv.org/abs/2009.00713

InferGradは回数に的を絞って最適だと思われるノイズレベルパラメータについて議論されている
PriorGradとSpecGradは入力メルスペクトルをもとに初期の音声にアタリをつけて学習させるらしい(あんまり読んでない)

GANは画像生成で有名な敵対的生成学習で、
生成モデルと識別モデルの2つのモデルを同時に学習させる

GANベースのボコーダーが一番優れている点は、
感覚的な話になるが、識別有利のモデルが組める点じゃないか?

音声生成が画像生成に比べて最も難しいところは、
次元が1であるが、前後する情報がFTレベルで成り立たないといけないところだ
これが振幅(パワースペクトル)だけなら容易かっただろうが、問題は位相の方

そもそも、音声合成の分野で(振幅)メルスペクトルが使われているのは、虚数成分を持たず規則性があるからで、
かつ、ターゲット音声波形から計算することが容易く、
推論するのに格好の緩衝材料だったからだ

もちろんターゲット音声波形から位相スペクトルは簡単に計算できる、が、そこには規則性がない(実際にはわからない)
規則性があり、簡単に文字列などの情報からメルスペクトルだけでなく位相を推論できたのなら、そもそもボコーダーなど必要ない
逆FTを計算すればいい話だろう

話を戻して、

音声合成は生成側が圧倒的に不利な学習になるのは間違いなく、
識別側は、「どうやってもいい」ので真偽を判定することができるのが強み
(もちろん識別するのも難しいとは思う)

MelGANにいたっては、
音声波形を時間単位で生値に対して平均を計算し、それに対して識別を行っている
はっきり言って、生値に対して平均をとるなんて型破りにもほどがある
逆計算が成り立たない一方的な計算に意味などないと思う
それは本当にその点では意味はないのだろう、だが、識別の1点においては優秀なのだろう

さらに、生成モデルなど、なんのひねりもない
UpSampleとバイパス付きのConv1dを数回繰り返すだけ、こんなの、現代の買い物で「これで頼むわ」と金貨を渡すようなものだ
通用してくれ感が否めない

しかもこれでほぼできてしまうし、なんならCPUで推論できるほどに計算が軽い
本当にGANには驚かされることばかりだ

理解できていないところ

さて、本題

俺が理解できていないところは式(17), (18)のところ
損失関数にSTFTの差と識別モデル算出結果の差について計算するところは理解できる

けどこの書き方だと、ホワイトノイズから1つ目のデノイズ音声波形YT-1からターゲット音声波形であろうY0までが計算範囲じゃないか?
それってなんというか、そこ計算する必要ってある?って話

ホワイトノイズから1つ目のデノイズなんて全然音声として成り立ってないじゃん
それのSTFTなんてノイズだらけなんてもんじゃないじゃん
複数回の推論で完成させるって設計上で、それとターゲット音声波形のSTFTの差ってすごいあるじゃん

まだ、ターゲット音声波形にT-1レベルのノイズを足したXT-1とYT-1の差なら理解できる
ただこの式の通りだとT-1レベルデノイズがなかなか収束しないように思えるが?
それどころかTステップの計算、いるか?って感じがする

これは実際に論文内の図2にも書かれている通りで、
Wavefitは6回で完全音声を目指す推論の3回目で、振幅メルスペクトルのエラーが最も低く、ほぼ収束してることを主張している

そりゃそうだろうよ!
計算設計上で損失が1回目でほとんどを占めてるだろうから、こうなるのはむしろ想定内だよ!!
InferGradが3回目で収束しないのは、損失計算上どうやってもそうならないように設計してるからだよ!!!
まず比較対象として選ぶのがおかしくねえか!!!?

DDPMの損失計算の狙いって、どのノイズレベルにおいてもほぼ同じロスになるように、
つまり、すべてのノイズレベルにおいてロスの分散を低くして、t-1とtの間のロスの平均を下げることだろ

WaveGradに限って言えば、T=1000なら1000回推論で完全な音声を目指すんだから、
1000回の間のロスそれぞれに偏りないようにそもそもがそうやって設計されてんじゃん
t=1の推論したって完全な音声にならないのは当然なんだよ、だってホワイトノイズから0.0000005(桁間違えてるかも)とかのデノイズしかされないんだもん
InferGradの損失は6回推論の果てにできた完全な音声であろうX^と実際のXのロスで、しかも、パワースペクトルと位相スペクトルの両方の差を計算する
おそらく、WaveGradにはなかった、位相スペクトルを損失計算に取り入れたのが有効だったのか、
MOSがだいぶ向上していることがわかる、これはかなり有益な情報だった

じゃあ、WaveFitは?
ターゲット音声とT-1デノイズから0までそれぞれの損失計算??
T-1デノイズでターゲット音声目指すの???しかも、同時に逆伝播すんの???
じゃあ複数回推論する意味は。。。?T-1以降GANのそのほとんど効果失ってるのにわざわざ計算量(重み)増やすの?

ごめん、理解できん

重要事項として「出力信号 yt−1 が常に入力信号 yt よりも x0 に近いことです」とか主張してる割に、
「yTがyT-1よりもよりホワイトノイズに近いこと」は無視すんのか。。。????ってのが理解できない
それとも、それを無視してDDPMと共存できてるって?こんなん海外の人みたら笑うんじゃないの
もし俺の考えが合ってるなら、わざわざ英文にして世界に公開するべきじゃなかったはずだよ

おわり

まあでも逆に考えれば、よ
GANの力があれば同モデルの1回推論でそこまで持って行けるってことだ
おそらく音声合成にGAN使うのは自然な判断だと思われり、収束させるの難しいかもしれんけど

これにロスの計算の仕方を若干変えるだけで、
とんでもクオリティの音声ができるんでねーの