下町データサイエンティストの日常

下町データサイエンティストの成果物

AIに聞いた、有名アーティストにとっての「愛」とは?

f:id:taijest:20180903224333p:plain

1. はじめに

こんにちは、taijestです。

本記事では先日に投稿した機械学習を用いたB'zの歌詞分析を複数のアーティストに対して行い、その結果を比較しようというのが目的です。

前回まではB'zを対象に歌詞の分析を行ってきましたが、本記事ではB'zに加えて、

を対象に分析を行っていきます。 なぜこのアーティストを選んだのかに特に深い意図はないですが、1)多くの曲を出している 2)なんか雰囲気の異なる曲を歌ってそう との理由でB'zとAKBとミスチルを分析の対象としました。

異なる歌詞データを対象として別々にモデルを構築することで、分析結果の差異から歌詞の性質の違いを見ることができます。分析のフローは以下になります。

f:id:taijest:20180903160315p:plain

要は、B'zとミスチルとAKBで「愛」はそれぞれ何を意味するかをAI(機械学習)で分析します。 どれも非常に人気の高いアーティストですが、歌詞という側面からはどのような違いがあるのでしょうか。では、早速分析にとりかかっていきましょう。

2. Word Cloud

まずは、Word Cloudでどんな単語が歌詞に出てくるのかを可視化してみましょう。Word Cloudでは、データセット中の頻出単語に大きな文字サイズを割り当てて、オシャレな図を作ります。*1

詳しくはここで↓ pira-nino.hatenablog.com

B'zの歌詞データからは以下のような図を作ることができました。 f:id:taijest:20180830144803p:plain

Mr.ChildrenのWord Cloud

f:id:taijest:20180830133616p:plain B'zのWord Cloudにはなかった単語として、「孤独」「」「」などがありますが、これらがミスチルらしい単語だといえるのかもしれません。

用いた画像はMr.Childrenのダウンロード配信開始の際の画像です↓

http://recochoku.jp/special/100655/

AKB48のWord Cloud

f:id:taijest:20180830134543p:plain こちらも特徴的な単語として、「青春」「希望」「」などが見受けられます。若い女性の前向きな気持ちを綴った曲が多いことがわかります。

ちなみに、この女性は誰だかわかりますか?ヒントはAKB48のメンバーであり、私の推しメンです。

正解→*2

3 Word2vec

3.1 Word2vecの概要(再喝)

Word2vecについて、簡単な説明をします。Word2vecは、「単語の意味をベクトルで表現する」ためのモデルです。

単語の意味をベクトルで表現、というと難しそうに聞こえますが、例えば新聞データにWord2vecを適用した例を以下に示します。

f:id:taijest:20180812133402p:plain
新聞データにWord2vecを適用したイメージ

単語に割り当てられたベクトルから次のようなことが解釈できます。

  • 1番目の要素は、「イチロー」「テレビ」「サッカー」「大谷翔平」で大きくなっていることから、「スポーツ」に関連した要素であると想定できる
  • 2番目の要素は、「テレビ」「鉄腕アトム」で大きくなっていることから、「機械」に関連した要素であると想定できる
  • 3番目の要素は、…

といったように、単語のベクトル表現では、単語の意味をベクトルの各要素に分散します。*3このような性質から、このベクトル表現は「分散的意味表現」と呼ばれます。

単語の意味をベクトルで表現するので、当然、意味の近い単語は似たようなベクトルになります。つまり、単語ベクトル間のcos類似度を用いて、意味の近い単語を検出することができるのです

さらに注目されている単語ベクトルの性質として、意味の足し算、引き算ができるというものがあります。この性質については、以下のような有名な例があります。

「王様」 ー 「男」 + 「女」 = 「女王」

これは、「王様」から「男」の要素を引いて「女」の要素を足したら「女王」になる、という直感的にも納得できる例です。言い換えれば、「男」でいう「王様」は「女」でいう「〇〇」だ という単語の対応づけを行っているともいえます。

このような性質を持つことから、単語ベクトルは単語の数値表現として注目を浴びています*4

3.2 Word2vecの理論(再喝)

理論は難しいので、興味のある方のみ読んでください。

Word2vecは、単語の意味をベクトルとして表現するモデルです。 では、単語ベクトルをどうやって決定すれば良いのでしょうか。コンピュータは単語の意味を理解できないし、人間が手作業で決めていくしかない…?

そんなことはありません。単語ベクトルの学習モデルであるWord 2 vecは、ある仮定をおいて単語ベクトルをコンピュータに学習させることに成功しました。(以下、論文のリンク)

https://arxiv.org/pdf/1301.3781.pdf

その仮定とは、「同じ文脈で出現する単語は意味が類似している」というものです。例えば、以下のような文を考えましょう。

私の家では〇〇を飼う予定だ。

〇〇に入る単語として、何を思い浮かべましたか?おそらく、「犬」や「猫」と答える人が多いでしょう。「ハムスター」という人もいるかもしれません。この場合、これらの単語は「ペット」という共通の意味に基づいて文脈に出現します。

Word2vecのネットワークの一つであるSkip-gramモデルでは、上記の例では以下のような周辺単語を予測するニューラルネットワークを学習します。

f:id:taijest:20180812134746p:plain

先述したとおり、〇〇には「犬」や「猫」などの単語が入ることが想定されますが、その際の出力が同一であることに着目してください。同じ出力を予測するのであれば、中間層のベクトルも似たものになるはず。つまり、学習されたネットワークにおいて、中間層のベクトルを単語ベクトルとするのです*5

このモデルを数式で考えてみましょう。入力は単語に対応したone-hotベクトルです。入力層から中間層への射影は以下の式で計算されます。

f:id:taijest:20180811230914p:plain

同様に、中間層から出力層への射影は以下の式で計算されます。

f:id:taijest:20180811225806p:plain

出力層ではソフトマックス関数による活性化を行うので、以下の式で出力単語の予測確率を算出します。

f:id:taijest:20180812124558p:plain

この式は、重み行列の列ベクトルと行ベクトルを用いて以下のように書き換えられます。

f:id:taijest:20180812124607p:plain

学習では、この確率が1に近づくように重み行列を更新していきます*6
入力単語の情報を中間層への重み行列に、周辺の単語の情報を出力層への重み行列に学習させていく、というイメージです。

実際には、効率的に学習を行うために、ニューラルネットワークの代わりにロジスティック回帰が用いられる*7ことがほとんどですが、予測のための中間表現に着目するというスタンスは変わりません。

モデル式やパラメータの学習については、以下に詳しく記載されています。

https://arxiv.org/pdf/1411.2738.pdf

また、初学者向けの参考サイトとしては以下のリンクが役に立つと思います。

www.randpy.tokyo

qiita.com

3.2 単語の類似度

各アーティストの歌詞データに対して、それぞれWord2vecを適用します。単語の使われ方はアーティストごとに異なるため、同じ単語であっても、その意味ベクトルは異なるものになることが想定されます。*8

本章では、アーティスト間における単語の意味の違いをみていきたいと思います。

」と類似度が高い単語
Rank 1 2 3 4 5
B'z    頭   失い   香り   想い    力
Mr.Children    頭    闇    上   投げ   白い
AKB48    恋  続ける    高   知っ   叫び
  • B’zにおける「夢」は、悩みながらも想い続けて力に変えていくということなのでしょうか。
  • Mr.Childrenも暗いイメージがあります。夢を上に投げる→夢を諦めているようにもみえます。
」と類似度が高い単語
Rank 1 2 3 4 5
B'z    雨   寂し   痛く   これ   sad
Mr.Children   感じ   眠れ   心配   say   愛す
AKB48   愛し    恋    光   憐れ   淋し
  • B’zにおける「愛」は寂しいもの、辛いものということでしょうか。「雨」という言葉もそのイメージですね。
  • Mr.Childrenは「眠れ」や「心配」など、愛することに対する不安感が見受けられます。
  • AKBにおける「愛」は「恋」と似ており、少し明るい意味を持っていそうです。
」と類似度が高い単語
Rank 1 2 3 4 5
B'z   一緒   やり   road   思っ  行き先
Mr.Children  強がっ   一緒   思っ   輝い    魂
AKB48    夢    愛  目隠し    百   愛し
  • 「恋」となると、やはりどのアーティストでも明るい意味っぽいです。
  • B'zは「road」や「行き先」といった単語からパートナーと一緒に歩んでいく情景が思い浮かべられます。
  • Mr.Childrenにおける「恋」は「強がり」という解釈ができそうです。魂が輝くというイメージもありますね。
  • AKBは前述した「夢」や「愛」と似た意味で用いられています。これらの言葉が同じ曲に出てくることも多いのではないでしょうか。

このように、同じ単語でもアーティストごとに異なる意味で用いられていることがうかがえます。 ちなみに、彼ら・彼女らにとっての「人間」とはなんなのでしょうか、、?

人間」と類似度が高い単語
Rank 1 2 3 4 5
B'z    楽   強い   他人   素直   勝手
Mr.Children   特別   素直   雑誌   許せ   降り
AKB48    金   握手  リスク   離れ    生
  • B'zにおける「人間」は楽しくて強くて素直で勝手、、なんか人間っぽい結果ですね。
  • Mr.Childrenでは「特別」が出ていますが、一人一人が特別ということでしょうか、深い。。
  • AKB48の結果では、「人間」は「金」や「握手」と似ている結果になりました。どういうことなのでしょうか。。

3.3 単語の足し算・引き算

前記事と同様に、単語の足し算・引き算の結果についてもみてみましょう。

恋+未来=あなた+???
Rank 1 2 3 4 5
B'z   待て    魂  super   人生   song
Mr.Children   打つ    話  まえる   場所   いま
AKB48  目隠し  真ん中    性   急ぐ 思い出せ
  • B'zでは、「あなた」がsongを聴きながら待てば「未来」に「恋」ができると出ています。
  • Mr.Childrenでは「いま」「話す」ことで恋ができそうですね。積極的に行きましょう。
  • AKB48いわく、恋をしたい人は目隠しをして急いで思い出した方がいいそうです。
恋+過去=あなた+???
Rank 1 2 3 4 5
B'z   ゆえ   場面   冷め   情熱   仕事
Mr.Children   可憐   演じ    炎    燃  知らず
AKB48   入っ  空振り   奪わ warning  愛する
  • B'zは、情熱が冷め、仕事に気持ちが移って「恋」が「過去」のものとなっています。
  • Mr.Childrenは、「炎」「燃」などの単語が見受けられます。過去の恋に対して燃え上がるタイプなのでしょうか。
  • AKB48は彼氏を奪われたのでしょうか。「warning」といった単語からトラウマになっていることも予想できますね。

4. 最後に

本記事では、アーティスト別に歌詞の分析手法を適用することで、アーティストの言葉の使い方の差異について分析しました。

想像していたよりも綺麗に結果が出たのは驚きでした。これまでの記事でコードの実装についても書かれているので、みなさんも是非、お気に入りのアーティストを分析してみませんか?

*1:Word Cloudでは、単語の頻度のみを用いて図を作ります。

*2:AKB48島崎遥香です。推しの理由は私と誕生日が同じだからです。

元画像はこちら→https://48pedia.org/%E5%B3%B6%E5%B4%8E%E9%81%A5%E9%A6%99

*3:実際には、上記のような概念は要素の組み合わせで表現される場合がほとんどであり、解釈は困難です

*4:自然言語処理のタスクで、単語ベクトルをモデルへの入力としている場合が多いです

*5:このとき、「犬」「猫」「ハムスター」などは似たようなベクトルになります

*6:誤差逆伝播法で学習を行います。

*7:ネガティブサンプリングと呼ばれています

*8:異なる学習コーパスに対してモデルを別々に作り、異なるパラメータが得られます。