Amazon Web Services ブログ
AWS DeepComposer – 生成的な機械学習モデルを使用して音楽を作成する
本日、世界初の機械学習対応のミュージカルキーボードである AWS DeepComposer を発表します。読み間違えではありません。
機械学習 (ML) には、数学、コンピューターサイエンス、コード、およびインフラストラクチャの知識がかなり必要です。これは非常に重要なことですが、意欲的な ML 開発者の多くは圧倒され、時には (あえて言うと) 退屈に感じさえするでしょう。
誰もが実用的な ML について学び、それを楽しんでいただけるように、ML を搭載したデバイスをいくつか導入しました。AWS re:Invent 2017 では、世界初の深層学習対応カメラである AWS DeepLens を導入し、開発者がコンピュータービジョンの ML について学習できるようにしました。昨年は、AWS DeepRacer を発売しました。これは強化学習によって駆動する完全に自立型の 1/18 スケールのレーシングカーです。今年、当社はそのバー (水準) をババッと引き上げます (駄洒落をお許しください)。
AWS DeepComposer の紹介
AWS DeepComposer は、開発者が事前トレーニング済みのモデルまたは独自のモデルで Generative AI を使用できるように設計された 32 キー、2 オクターブのキーボードです。
デバイスが入手できるようになったときに E メールを受信するリクエストを行うことも、AWS コンソールで仮想キーボードを使うこともできます。
以下はその詳細な説明です。
- DeepComposer コンソールにログインし、
- 短い曲を録音するか、あらかじめ録音された曲を使用し、
- お気に入りのジャンルの生成モデルを選択し (事前トレーニング済みまたは独自のもの)、
- このモデルを使用して、新しいポリフォニックコンポジションを生成し、
- コンソールでコンポジションを再生し、
- コンポジションをエクスポートするか、SoundCloud で共有します。
事前学習済みのモデルを使用して最初のコンポジションをすばやく生成する方法を説明します。次に、独自のモデルのトレーニングについて説明し、DeepComposer を強化する基礎となるテクノロジー、Generative Adversarial Networks (GAN) の入門で記事を締めくくります。
事前学習済みモデルの使用
コンソールを開いて、Music Studio に移動します。そこで、録音済みの曲を選択するか、自分で録音することができます。
ここでは前者にし、ベートーベンの「歓喜の歌」を選択します。
また、使用する事前学習済みのモデル (クラシック、ジャズ、ロック、ポップ) を選択します。これらのモデルは、それぞれのジャンルの大きな音楽データセットでトレーニングされており、そのまま使用できます。「ヘビメタ」がないので (AWS のチームはこの機能のリクエストがあれば、ご対応を)、「ロック」を選択してコンポジションを生成します。
数秒後、モデルによって生成された追加の伴奏が確認できます。ドラム、オーバードライブギター、エレキギター (クリーン)、エレクトリックベース (指) とさまざまな楽器を割り当てます。
結果は次のとおりです。どう思われますか?
最後に、コンポジションを MIDI または MP3 ファイルにエクスポートし、SoundCloud アカウントで共有できます。作曲家として有名になるかもしれません!
独自のモデルのトレーニング
お気に入りのジャンルのデータセットで独自のモデルをトレーニングすることもできます。以下から選択する必要があります。
- Generator と Discriminator のアーキテクチャパラメータ (これらについては次のセクションで詳しく説明します)、
- アルゴリズムの出力と期待値との差を測定するためにトレーニング中に使用する損失関数、
- ハイパーパラメータ、
- モデルのトレーニング中に聞くことができる検証サンプル。
トレーニング中、品質指標を確認でき、上記で選択した検証サンプルを聞くことができます。モデルが完全にトレーニングされると、事前にトレーニングされたモデルと同じように、それを使用してコンポジションを生成できます。
Generative Adversarial Networks の入門
2014 年、GAN は日の目を見ました。Ian J. Goodfellow、Jean Pouget-Abadie、Mehdi Mirza、Bing Xu、David Warde-Farley、Sherjil Ozair、Aaron Courville と Yoshua Bengio による『Generative Adversarial Networks』が出版されたのです。
以下、著者の言葉を引用します。
提案された敵対的ネットフレームワークでは、生成モデルは敵対者と対比されます。これは、サンプルがモデル分布かデータ分布かを判別することを学習する判別モデルです。生成モデルは偽造通貨のチームに似ており、偽造通貨を生成して検出せずに使用しようとする一方、判別モデルは偽造通貨を検出しようとする警察に類似しています。このゲームでの競争により、両チームは偽造品が真正品と見分けがつかなくなるまで手法を改善するようになります。
以下、これについてもう少し詳しく説明します。
- Generator はデータセットにアクセスできません。Generator は ランダムデータを使用して、Discriminator モデルを介して転送されるサンプルを作成します。
- Discriminator はバイナリ分類モデルであり、(Generator によって作成された) 偽のサンプルから (トレーニングセットに含まれる) 本物のデータサンプルを認識する方法を学習します。トレーニングプロセスでは、勾配降下法、逆伝播法といった従来の手法を使用します。
- Discriminator が学習すると、その重みが更新されます。
- 同じ更新が Generator に適用されます。これは、GAN を理解するための鍵を握ります。これらの更新を適用することにより、Generator は、Discriminator が本物と見なすサンプルにより近いサンプルを生成する方法を徐々に学習します。
要約すると、優れた偽造者になるには、偽造の専門家としてトレーニングする必要があります。ただ、これをキャリアに関するアドバイスとして受け取らないでください! 詳細を知りたい場合は、Apache MXNetGAN を使用して MNIST サンプルを生成する方法を説明した、私のブログのこの記事をご覧ください。
音楽を演奏し、私のように趣味で楽しむだけでもいいでしょう!
近日公開!
AWS DeepComposer は本当にお勧めです。キーボードがリリースされたときに通知を受け取りたい方は、今日 プレビューにサインアップしてください。