Amazon Web Services ブログ
AWS DeepComposer で AR-CNN アルゴリズムを使用してバッハのスタイルで楽曲を生成する
AWS DeepComposer は、機械学習 (ML) と生成 AI 技術を開始するためのクリエイティブな方法を提供します。AWS DeepComposer は最近、自己回帰畳み込みニューラルネットワーク (AR-CNN) と呼ばれる新しい生成 AI アルゴリズムの提供を開始しました。これは、バッハスタイルの音楽の生成を可能にします。このブログ投稿では、AR-CNN アルゴリズムを使用してバッハスタイルの興味深い楽曲を生成する方法の例をいくつか示すとともに、アルゴリズムのパラメータが生成される楽曲の特性にどのように影響するのかを説明します。
AWS DeepComposer コンソールで提供される AR-CNN アルゴリズムは、ユニークな楽曲を生成するために、反復する回数や、入力メロディに追加したり、入力メロディから削除したりする音の最大数などのさまざまなパラメータを提供します。パラメータ値は、入力メロディが変化する範囲に直接影響を与えます。例えば、追加する音の最大数として大きな値を設定することで、アルゴリズムは、バッハの音楽スタイルの楽曲に適していると予測する音を追加することができます。
AR-CNN アルゴリズムを使用すると、パラメータを試すことにより、機械学習アルゴリズムと繰り返し共同作業を行うことができます。AR-CNN アルゴリズムの 1 つの反復の出力を次の反復の入力として使用できます。
アルゴリズムの概念の詳細については、AWS DeepComposer コンソールで利用可能な Introduction to autoregressive convolutional neural network の学習カプセルを参照してください。学習カプセルでは、生成 AI アルゴリズムの概念を学ぶのに役立つ、理解しやすい簡単なコンテンツを提供しています。
バッハは、史上最高の作曲家の 1 人として広く認知されています。バッハの楽曲の数々は、バロック時代における最高傑作です。バッハの楽曲のサンプルをいくつか聴いて、彼の音楽に耳を慣らしましょう。
楽曲 1:
楽曲 2:
楽曲 3:
AR-CNN アルゴリズムは、入力メロディに音を追加または削除することにより、元の入力メロディを強化します。アルゴリズムがキー外の音や無関係な音を検出した場合、削除を選択することがあります。バッハの楽曲に用いられている可能性が高い特定の音をアルゴリズムが識別した場合、これらの音を追加することがあります。AR-CNN アルゴリズムを適用して生成した、以下の強化された楽曲のサンプルを聴いてみましょう。
入力:
強化された楽曲:
AR-CNN アルゴリズムパラメータの値を変更して、さまざまな特性を持つ音楽を生成できます。
AWS DeepComposer の AR-CNN パラメータ
前のセクションでは、AR-CNN アルゴリズムを使用してバッハの音楽スタイルで作成された楽曲のサンプルを聴きました。次のセクションでは、AWS DeepComposer コンソールで提供されるアルゴリズムパラメータが生成された楽曲にどのように影響するのかを説明します。コンソールでは、サンプリング反復、削除または追加する音の最大数、およびクリエイティブリスクといったパラメータを使用できます。
サンプリング反復
このパラメータは、入力メロディがアルゴリズムを通過して音を追加または削除する回数を制御します。サンプリング反復のパラメータを増加させると、モデルは、楽曲をバッハの音楽により近づけるために、入力メロディから取得した音を追加または削除するより多くの機会を得ることができます。
AWS DeepComposer コンソールでは、Music Studio は 1 回の実行で 100 回のサンプリング反復の制限があります。生成された音楽を再びアルゴリズムに入力することにより、サンプリング反復の回数を 100 回を超えて増加できます。入力メロディである「Me and my jar」について生成された出力について、異なる反復回数にするとどうなるのかを聴いてみましょう。
Me and My Jar の元の入力メロディ:
100 回反復した Me and my jar の出力:
500 回反復した Me and my jar の出力:
サンプリングを一定回数反復すると、さらに反復しても、生成された音楽はそれほど変化しなくなります。この段階までで、モデルは入力メロディを可能な限り改善しています。さらに反復すると、音が追加された後にすぐにその音が削除されたり、また、その逆のことが起こる可能性があります。したがって、この段階の後にさらに反復しても、生成された音楽はほとんど変化しません。
削除する音の最大数
このパラメータを使用すると、元の楽曲のうち、アルゴリズムが削除できる最大の割合を指定できます。この数値を 0% に設定すると、入力メロディが完全に保持されます。この数値を 100% に設定すると、元の音の大部分が削除されます。値が 100% であっても、アルゴリズムは、品質およびバッハの音楽との類似性に鑑みて、入力メロディの一部を保持することを選択する場合があります。削除する音の最大数のパラメータが 100% に設定された場合における「Me and My Jar」について生成された音楽サンプルを聴いてみましょう。
Me and My Jar の元の入力メロディ:
削除の数値を 100% とした場合の Me and My Jar:
削除の数値を 0% とした場合の Me and My Jar:
削除の数値を 100% とした場合、生成された楽曲から元の楽曲を感得することは困難です。0% の場合、アルゴリズムは元の入力メロディを保持しますが、アルゴリズムの音楽を強化する機能は抑制されます。例えば、アルゴリズムは、入力メロディのキーから外れている音を削除できません。
追加する音の最大数
このパラメータは、アルゴリズムが入力メロディに追加できる音の最大の数値を指定します。低い値を設定すると、不足している音が補われます。高い値を設定すると、入力メロディにより多くの音が追加されます。アルゴリズムが追加できる音の数を制限しない場合、モデルはメロディをバッハの楽曲に可能な限り近づけようとします。
Me and My Jar の元の入力メロディ:
追加できる音を最大 350 音とした場合の Me and My Jar:
追加できる音を最大 50 音とした場合の Me and My Jar:
追加できる音を最大 350 音とすると、元のサウンドトラックがわからなくなることに留意してください。アルゴリズムが追加できる音の数を制限することで、新しい音の追加によって元の入力メロディがおかしくなるのを防ぐことができます。欠点は、アルゴリズムの音楽を生成する能力が抑制され、望ましい結果が得られない可能性があることです。追加できる音を最大 50 音とすると、追加される音は大幅に少なくなるため、入力メロディを感得することができます。しかし、アルゴリズムが追加できる音の数が制限されているため、高品質な音楽は期待できません。
削除または追加する音の最大数のパラメータを使用することで、元の楽曲を変化させる程度を選択し、アルゴリズムによる音楽の自由な生成を実現することができます。
クリエイティブリスク
このパラメータは、楽曲における意外性や創造性の要素に影響を与えます。低過ぎる値を設定すると、モデルは安全かつ楽曲に合う確率が高い音のみを選択するため、より予測可能な音楽になります。クリエイティブリスクを非常に高くすると、より独特で、予測しにくい楽曲になることがあります。ただし、楽曲に合う確率が低い音を選ぶモデルのため、低品質のメロディが生成されることがあります。
アルゴリズムは、次に追加するのに最適な音であると考えられる確率分布からサンプリングすることにより、音を特定します。クリエイティブリスクのパラメータを使用すると、その確率分布の形状を調整できます。クリエイティブリスクを増加させると、確率分布が平坦化します。つまり、楽曲に合う確率の低い音がいくつか選択され、楽曲に追加される確率が前よりも高まります。クリエイティブリスクを減少させると、逆の事象が起こります。これにより、アルゴリズムが楽曲に確実に合う音に焦点を当てるようにすることができます。このパラメータは、機械学習では temperature とも呼ばれます。
クリエイティブリスクを 1 として、1000 回反復した後の出力:
クリエイティブリスクを 2 として、1000 回反復した後の出力:
temperature を 6 として、1000 回反復した後の出力:
通常、ベースラインとなるクリエイティブリスクは 1 です。クリエイティブリスクが増加するにつれて、より不安定な音が生まれます。これらは音楽のスパイスとなり得ます。しかし、完全に平坦化された確率分布はランダムな選択と変わらないため、不安定な音は最終的に雑音に発展します。
クリエイティブリスクを上げ、数回反復して不安定な音を生成した後に、クリエイティブリスクを下げ、新しい音楽を生成するときにアルゴリズムがそれらの音を使用するようにすることで実験できます。
まとめ
お疲れさまでした。 これで、各パラメータが楽曲の特性にどのように影響するのかを学びました。ハイパーパラメータを変更することに加えて、次の手順を試してみることをお勧めします。
- 入力メロディを変更する。仮想または物理的な AWS DeepComposer キーボードで独自の入力メロディを演奏する。音楽のエキスパートでなくても心配はいりません。AR-CNN アルゴリズムが誤りを自動的に正します。
- 入力メロディをクロップし、欠落しているセクションをアルゴリズムがどのように補うかを確認する。
- 自己回帰の楽曲を GAN にフィードして伴奏を作成する。
さまざまな組み合わせを試して、創造的な楽曲を生成してください。今すぐ作曲を始めましょう!
著者について
Jyothi Nookula 氏は、AWS AI デバイスのプリンシパルプロダクトマネージャーです。お客様を喜ばせる製品の構築に情熱を捧げています。余暇には、絵を描いたり、美術展の寄付金調達を主催したりといったことを楽しんでいます。
Rahul Suresh 氏は、AWS の AI チームのエンジニアリングマネージャーです。すべてのデベロッパーが機械学習を利用できるように、AI を活用した製品に取り組んでいます。AWS に入社する前は、Rahul は Amazon Devices のシニアソフトウェアデベロッパーであり、非常に成功したスマートホーム製品の発売をサポートしていました。Rahul は、大規模な機械学習システムの構築に情熱を傾けており、常にこれらの高度なテクノロジーをお客様にご利用いただけるようにしたいと考えています。専門的なキャリアも素晴らしいですが、Rahul は読書家でもあり、歴史を愛しています。
Prachi Kumar 氏は、AWS の ML エンジニア兼 AI 研究者であり、Machine Learning についてユーザーに教える際に役立つ AI を活用した製品に取り組んでいます。AWS に入社する前は、Prachi は UCLA のコンピューターサイエンス課程の大学院生であり、修士課程と学部生時代を通じて ML のプロジェクトや授業に集中して取り組んできました。余暇には、読書や映画鑑賞を楽しんでいます。
Wayne Chi 氏は、AWS の ML エンジニア兼 AI 研究者です。彼は、Machine Learning に関する興味深い問題を調査して新しいデベロッパーを指導し、それらのアイデアを実用化します。AWS に入社する前は、NASA の JPL でソフトウェアエンジニアおよび AI 研究者として業務に従事しており、マーズ 2020 ローバー (パーシビアランス) の AI 自動計画システムに関する業務を行っていました。余暇には、テニスをしたり、映画を鑑賞したり、AI についてより深く学んだりしています。
Enoch Chen 氏は、AWS AI Devices のシニアテクニカルプログラムマネージャーです。機械学習に非常に大きな興味を抱いており、革新的な AI アプリケーションを探し出すのが大好きです。最近では、DeepComposer を何千人ものデベロッパーに提供するサポートをしました。業務時間外では、ピアノを弾いたり、クラシック音楽を聴いたりしています。