RNNの中で使われる、過去の重要な点に着目するための手法で、各隠れ層を重み付けする。
context vectorによって重み付けすることで、各単語が参照すべき重要な単語を見分けることで、 説明可能なAIを作成する。(AIがどこに注意したのか可視化できるため)
2020年06月04日
5月29日、5月最後の平日であるこの日、13回目となる勉強会が開催されました。
テーマは「WebRTC」、そして、「AIと芸術」でした。
ブラウザー間での通信を実現させるWebRTC。
そして近年注目を集める、AIによる芸術、創作について。
この春に入社した、新入社員のお二人から発表が行われました。
WebRTC(Web Real Time Communication)とは、Webブラウザ間でリアルタイムなコミュニケーションを実装することを目的としたオープンソースプロジェクトです。
これを実現するために、P2PやICEといった技術が利用されています。
そもそもP2P(Peer-to-Peer)通信とは、特定のサーバーを介さずに、端末同士がやりとりをする通信方式のことです。
一般に、ネットワークというと、中心となるサーバーがあって、そのサーバーを介してクライアント同士がやりとりをする、いわゆるclient-server型のネットワークが思い浮かぶかもしれません。
しかし、P2P通信とは、クライアント同士がサーバーを介さずに直接やり取りする通信方式のことです。
P2Pでは、接続したい端末のIPアドレスといった、接続相手の情報が既知である必要があります。
そこで、多くの場合、通信者同士の情報を交換する(シグナリング)ためのサーバを用意しておくことが一般的です。
これをSignalingサーバーといいます。
ちなみにWebRTCでは、Signalingサーバーとクライアント間の通信方式は特に定められていません。
このSignalingサーバーを経由して、クライアントは通信相手と接続するための情報を送受信することができます。
実際に、クライアント同士での通信を実現させるために、WebRTCでは、ICEというフレームワークを利用しています。
ICEは、通信したいクライアント同士の、あらゆるネットワークの状況を想定し、接続を試みるためのフレームワークです。
例えば、同一ネットワークに所属しているなどの特殊な場合を除いて、 通信者同士はそれぞれ別のNAT配下にいることがほとんどでしょう。この場合は、NATを超えて通信をする必要があります。
ICEにおいて、これを実現するために登場してくるのが、StunサーバーとTurnサーバーです。
Stunサーバーは、リクエストを送ると、外側(インターネット)から見た自分のIPを返すサーバーです。
ICEではまず、Stunサーバーから返ってきたIPを使い、クライアント同士の通信を試みます。
これでも接続ができなかった場合は、Turnサーバーを経由して接続を試み、以後全ての通信をTurnサーバー経由で行います。
勉強会では、社員によるWebRTCのサンプルを使った実演が行われました。
ここで、作品一般の創作の流れを仮に「創作」→「編集」→「発表」とします。
音楽について当てはめてみると、「(作詞)作曲」→「編曲」→「演奏・音源配信など」となります。
すでに、この各段階に関わるAIサービスが存在しており、以下のようなものがあります。
ジャンル、曲の雰囲気、長さを指定することで、楽曲が自動生成される。
BGMを作るのに向いており、大手通信社ロイターのサービスにも採用された。
日本語による自然言語処理技術を音楽に応用した機械学習アルゴリズム群を利用した自動作曲AI。
iOSのスマホアプリとして提供されており、アプリ版では、歴史上のヒット曲600曲をAIに学習・分析させたデータベースを使い、メロディに特徴量を付与して生成している。
ローマ教皇の来日イベントである「POPE IN JAPAN 2019」のオフィシャルテーマソング「PROTECT ALL LIFE 〜 時のしるし 〜」の作曲にも使われた。
専用キーボードもしくはコンソールによってメロディを入力し、ジャンルを選択すると、事前トレーニング済みモデルによって自動で編曲してくれるAI(作曲ではない)。
GANを使って伴奏を生成し、独自のモデルを作成することもできる。
楽曲制作のほか、AWS DeepComposerを通して機械学習について学習する「ラーニングカプセル」というサービスも提供している。
Music Trainsformerとは、Google社が開発した、MIDIデータ(音楽の演奏情報をデータ化したもの)を生成するAIです。
RNNを用いないSelf-Attention の導入により圧倒的な性能を見せた、自然言語処理AIであるTransformer(google翻訳に使われている)が先行しています。
Transformerとは要するに、「過去の自然言語処理(NLP)で多く使われる再帰型ニューラルネットワーク(RNN)や畳み込みニューラルネットワーク(CNN)を 「Self-Attention Layer」に入れ替えたモデル」です。
RNNの中で使われる、過去の重要な点に着目するための手法で、各隠れ層を重み付けする。
context vectorによって重み付けすることで、各単語が参照すべき重要な単語を見分けることで、 説明可能なAIを作成する。(AIがどこに注意したのか可視化できるため)
時系列データを扱うニューラルネットワークであり、前の単語から抽出された重みを次の単語に引き継ぐ構造になっている。
前後のデータに関係性がある時系列データを分析するのに適す。
Transformerを使って、与えられたMIDIデータから、その先に来るMIDIデータを予測、作曲していくことができます。
音楽には小節という繰り返し構造や、モチーフを再利用することがありますが、 Transformerは直前だけではなく、長いスパンでの参照も可能であるため、より音楽らしいデータを作ることができます。
最後に、社員によるAIの作曲についての考察が紹介されました。
ちなみに、現状ではAIはある美学を持つ個人(あるいは集団)のデータを学習することによって、データ元の「美学」を再現することが可能になっています(AIが作ったビートルズ風の楽曲など)。