たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

機械学習を育てるx個のステップ

上手く学習しない!改善したい!何しよう…?

バグの検証

実装は正しくなされていますか?
既存モデルの別ドメイン流用であるなら、報告論文にあるドメインで再現が取れるか確認しましょう。
この段階でバグの不安を取り除くことが重要です。

データ数の検証

データ数は充分ですか?
データ数を段々減らして学習し、データ数 vs 性能 のグラフを書きましょう。
性能が飽和していない場合、データ数を増やすと性能が上がるでしょう。
データ集めが難しい場合、データの水増し (data argumentation) も検討できます。

データクオリティの検証

データは適切な前処理をなされていますか?
不要な情報の除去、標準化等、分野のベストプラクティスに学びましょう。

不調原因の検証

学習がどの段階でうまくいっていませんか?
重みの数値や誤認識データ、生成データなどの傾向を見て、何が学習を阻んでいるか (例. 勾配消失、モデルcollapse) をしっかりと見極めましょう。

ハイパーパラメータの検証

ハイパーパラメータは適切ですか?
ハイパーパラメータを1つずつ動かし、パラメータ vs 性能 のグラフを書きましょう。
Grid法など様々な最適化手法があるため、どれを使うか検討して見極めましょう。

それでもうまくいかないなら

モデル (ネットワーク) が不十分な可能性が高いです。
次は上手くいくと願いながら頑張りましょう。

Windowsで圧縮した巨大zipがPythonで展開/解凍できない!

結論

それはライセンス関係で解凍できない。Pythonのzipfileで圧縮しなおせばok

現象

こんなエラーが発生した。

raise NotImplementedError("compression type %d (%s)" % (compress_type, descr))
NotImplementedError: compression type 9 (deflate64)

zipが解凍できないとは何事だ…?
別のzipは解凍できるのに、1.6GBあるファイルは解凍できない、なぜだ。

deflate64の闇

このissueに全てが書いてある.
github.com
要するに、この圧縮方式 (type 9, deflate64) はプロプライエタリな圧縮方式であり、python公式モジュールは意図的に対応していない。
そしてWindowsでは大容量ファイルの圧縮にdeflate64を利用するらしい。
すなわち、Windowsで圧縮した巨大zipファイルはPython非対応圧縮方式なためにPythonで解凍できない。omg...

解決方法

一度Windowsで解凍し、Pythonのライブラリを使ってzipにし直す。

1. モジュールを直接呼び出す

Pythonコマンドラインの-mを利用して、ライブラリを直接利用できる。なので

python -m zipfile -c "new_zip_name.zip" source_dir_path

を叩けばおk
ただし、ディレクトリごと圧縮されるので、zipファイル内にsource_dir_pathディレクトリが1階層挟まることにはなる

2. ziplib

1.のディレクトリ挟まる現象を避けたい場合は、zipfileを使って圧縮し直す。
コマンドラインからPython REPL起動して以下を実行すればいい

import zipfile
zip = zipfile.ZipFile("new_zip_name.zip", mode="a", compression=zipfile.ZIP_DEFLATED)
 
for f in files:
    zip.write(f)

平等ではなく貧困対策

山をならして平等にするのではなく、貧困対策に集中する

貧困の線引き

線は存在しないから、社会が決める
線ではなくスペクトラム

対策の中身

情報・金・元気があれば選択できる
これらを供給する

  • 情報: 相談に乗り、選択肢を示す
  • 金: 配る、あるいはクーポン
  • 元気: 医療・相談

サービスそのものを公共が提供する必然性はない
公共が情報をわかりやすく提示することが重要

貧困対策を実施する理由

同志が増えるから。
貧困は人から可能性を奪う。
可能性が開花すれば、私はもっと素晴らしい人に出会える。

ジョブズの卵

スタートメニューやEdgeが起動しない

f**k!!!!

状況

初期化して10.0.17763.55に戻したらいきなり動かない

にた状況

Reddit - Windows10TechSupport - KB4464330 (17763.55) broke my Start Menu

この現象は前に大問題となった現象らしく、色々対策が出てくる。
全部ダメだ、f**k!!!!

ボイチェンは声のメイク - 声そのものの権利は認められない -

ボイスチェンジは声のメイク/化粧だ。
知人そっくりのメイクをしたら、その人の顔面権侵害になるだろうか?
然るに、声のそのものの権利 - 音紋権 - は存在しない。

ボイスチェンジは声のメイク

ボイスチェンジとは、機械によって声質を変換することである。
例えば、ぼそぼそ声をハッキリとした声へ変えたり、別の人に似た声へ変換することができる (将来的には)。

声は人間が生まれ持ったものではあるが、後天的にボイチェンで変えられるのだ。
これは化粧の関係に非常によく似ている。
顔も人間が生まれ持ったものではあるが、後天的に化粧/メイクで変えられるのだ。
つまりボイスチェンジとはまさしく声のメイク/化粧なのである。

知人そっくりの化粧は顔面権の侵害か?

化粧により人は化けることができる。
化粧のプロをもってすれば、ある知人そっくりのメイクをすることも可能である。
ではこの場合、知人似の化粧は、知人が生まれ持ったの権利 (言うなれば顔面権) を侵害するだろうか?

多くの方の素朴な直感は「メイクで権利侵害とか言われたらメイクできないじゃん。でもそっくりの化粧して本人を騙ったりするのはまずいんじゃね?」かと思う。
ここで重要なのは「顔の造形そのもの」と「人そのもの」を分けて考えることである。

ある人を傷つけること、例えば名前を騙ったり、本人と誤解される状況で本人の評判を下げるような行為は、言語道断である。
その点で、知人似のメイクをしてさらにその人と同じ芸名を騙って何かをする、あるいは名を名乗らず (本人だと誤解されうる状況を看過して) 悪評が立つ行為をするのは認められない。
つまり「人そのもの」言い換えれば「アイデンティティ・人格」を侵害する行為から守るために、何かの権利が設定されることは妥当である。

一方で、顔の造形そのものはどうだろうか。
たしかにその人らしさは造形に宿るものだが、造形はあくまで造形である。その人らしさ・人格を別の権利で守るなら、その点については問題がない。
では何か権利を設定する妥当性があるのか? 生まれ持った形だから自然と権利がつく? ナンセンスだ。論理を用意してくれ。

では、造形そのものを真似るだけの化粧は何かを侵害しているだろうか?
ここまでの議論ではっきりした。
生まれ持った顔の造形を守る顔面権は妥当ではなく、化粧/メイクがそれを侵害するようなこともない

ボイスチェンジは声そのものの権利を侵害するか?

ボイスチェンジが声のメイク/化粧であること、また生まれ持った顔の造形そのものには権利が発生せず、そっくり顔への化粧はそれを侵害しえないことを述べた。
ここから導かれることは、
声そのものには権利が存在せず、そっくり声へのボイスチェンジは権利侵害となりえない
という重要な結論である。
それを論証するうえで、顔面権の議論と同じように、ここで重要なことは「声そのもの」と「人そのもの」を分けて考えること、さらに「演じられた音声」を分けて考えることである。
知人そっくりの声にボイスチェンジすることは、声そのものの権利 -いわば音紋権- の侵害にあたるだろうか?

ボイスチェンジをして知人を騙ったり、知人と誤解されるような動画をYouTubeへアップロードすることは看過できない。
それを守るため何らかの権利が設定されることは妥当であり、それは声に限らず人格を守るための様々な権利で既に保証されている。

また「演じられた音声」とも区別しなければならない。
演じられた音声とは、ある声をもった人がある台詞を読み感情をこめて表現したものである。作品と表現するのがしっくりくるであろう。
作品は「人そのもの」とはまた別の存在であり、創作活動を活発にするため作品に権利が設定されることには妥当性がある。
実態として、「演じられた音声」の作者にはその作品の権利が著作権という形で担保されている。

では「声そのもの」に権利は発生するだろうか。
声そのものは当然、しゃべられる内容すなわち台詞とは独立している。
一方で、ある人はある声を持っている、声には個性がある、と我々は感じる。
すなわち、声そのものとは、ある人から発せられる音の特徴を意味している。
たしかにその人らしさは声 = 音の特徴 に宿るものだが、声/音の特徴はあくまで声/音の特徴である。その人らしさ・人格を別の権利で守るなら、その点については問題がない。
具体的な音声作品も別の権利で守られているため、声を用いて生み出されたものも守られている。
では何か権利を設定する妥当性があるのか? 生まれ持った声だから自然と権利がつく? ナンセンスだ。論理を用意してくれ。

では、声そのものを真似るだけの化粧/メイク、すなわちボイスチェンジは何かを侵害しているだろうか?
ここまでの議論ではっきりした。
生まれ持った声そのものを守る権利は妥当ではなく、声の化粧/メイクたるボイスチェンジがそれを侵害するようなこともない

結論

ボイスチェンジは声のメイク/化粧だ。
知人そっくりのメイクをしたら、その人の顔面権侵害になるだろうか?
然るに、声のそのものの権利 - 音紋権 - は存在しない。

注意点

芸能人・声優という概念を持ち込むと別の議論軸が発生する。
端的にいうと、広く認知されたものに発生する商業的・財産的価値である。
パブリシティ権で議論される。
これは「声そのものの権利」とは異なる権利である
注意されたし.

声質変換・音声の前処理に関する知識・考察

まず生波形を見よ

全ては生波形に始まり生波形に終わる。
無音区間、音量、バックグラウンドノイズ、全てが波形に表現されている。
まずは生データ、これサイエンスの基本.

無音区間を切り出すべきか

残しまくるのは一般に良くないと思う。
無音を教師として学習してしまうから。

DeepVoice2 (textSeq2audioSeq) では、オーディオの開始タイムポイントがずれると良くなかったとのこと。前後の無音区間カットで対応

also find that if the speech in each audio clip does not start at the same timestep, the models are much less likely to converge to a meaningful attention curve and recognizable speech; thus, we trim all initial and final silence in each audio clip.

完全に切り落とすのもどうかと思う
語尾が不自然になりそうな予感

強度でざっくり切る方法もあるし、音素アラインメントして無音推定するのもある。

実装

librosa.effects.trim: 前後の無音区間を削除

librosa.effects.split: 無音で囲まれたオーディオを抜くための場所を検出して教えてくれる.

音量の正規化

モデルに強く依存しそう。

推論時の正規化+変換後逆正規化を前提として、
音量正規化した囁き声や怒鳴り声をサンプルに入れとくとか

囁き声を学習データに入れず、推論時に囁き声をVCできるか否か

リサンプリング

さすがにサンプリング周波数揃ってないとモデルに入れられないと思う

実装

librosa.core.load()がデフォルトでリサンプリングに対応している。標準では22050Hz
内部的にはresampy (指定すればscipy) を呼んでいる.

強度低次元化

μ-law 変換

音質

前段にノイズ抑制等を入れるべきか否か

雑音の付加

学習時: 綺麗なデータ+雑音 => 綺麗な生成データ
推論時: 雑音付きデータ => 綺麗な生成データ

Data argumentation

データ数はモデル性能へ非線形な影響を与える.
また話者によって性能が大きく異なり得ることも知られている.
parallel-wavenet

参考文献

必読
日本語 End-to-end 音声合成に使えるコーパス JSUT の前処理 [arXiv:1711.00354] - LESS IS MORE