脱R論

一般人の一般人による一般人のためのゆるくテキトーな音楽ブログ。ロックから脱却出来るその日まで音楽ネタを中心に書き綴ります。

DeepLearningで勝手にサザンオールスターズ


AI IS YOUR SINGER.


先日6月25日でデビュー40周年を迎えたサザンオールスターズ

その6月25日にこのブログで「ベスト盤出せー」とか書いてたら、
まさにその日に8月にベスト盤をリリースする事が発表されてた。

tower.jp


コメントで教えて戴きました。有難う御座います。
情報へのキャッチアップ力が最近衰えてしまっててですね…。
いけませんなぁ~。精進しなくちゃ。


そんなサザンの新作『海のOh, Yeah!! 』(海のオヤーと呼ぶらしい)、
正確には「プレミアムアルバム」と銘打たれているので
公式は「ベスト盤」とは言ってないんだけどまぁ普通にベスト盤です。

20年前に発売されて大ヒットを記録したサザンのベスト
『海のYeah!! 』以降の発表曲から選抜されたアルバムで、
アルバム未収録だった曲がやっとここで回収されている!と思いきや
『この青い空、みどり 〜BLUE IN GREEN〜』は入ってないのね。
あと『君こそスターだ』も選ばれていないのか。色々と謎…。

などなど選曲に一部の不満は残るけれどまぁ普通に予約します。
新曲も入ってるしこれで4000円ならば満足感高め。
ジャケットもどんな風になるのか楽しみだ。


さてさて、話は変わって俺の最近の話題になるんだけど
先日「G検定」なるものに合格する事が出来ました。

コレなんの試験かと言いますと、日本ディープラーニング協会が
実施した「JDLA Deep Learning for GENERAL 2018」という試験で
すっげーアバウトに説明するならばAI(人工知能)系の資格試験。

www.jdla.org


昨今のAIブームのトリガーとなった技術である
ディープラーニング(深層学習)の知識を中心に、
AIの歴史、機械学習、そしてそれに関わるトレンドや法律まで
幅広く問われる実に広くて浅いやつもうグッナイな試験だ。


勉強?いや別に全然勉強してないけど受かったし。

…なんて言ってみたかったけど、んなわけないですごめんなさい
それなりに勉強しました。でも本当に今は良い時代になったもので、
インターネットのオンライン講座等を使って勉強が出来るんだよね。

例えば俺の場合はAidemyの会員に登録して、
無料で機械学習概論とディープラーニング基礎講座を受講して勉強した。
有料コースも導入部の3講座までは無料で受講できる。

aidemy.net

あと試験にはあまり関係無いけどpythonの無料講座もあるので、
自宅のPCで今回の企画を実行するにあたりお世話になりました。


まぁこの資格を持っていると何かの職に直結するというわけでも無いし、
別に会社が推奨しているわけでも無いし、まだ日が浅い資格なので
今後どうなるかも分からんのだけど、何はともあれ受かって良かった。

有難う御座います。これも日々ロックを聴いていたお陰です。
そうですね、最近はDA PUMPの『U.S.A.』とかいいと思います。


折角だからディープラーニングで遊んでみよう


さぁ、そんな背景もありまして今日も元気にクソ企画をやりたい。

題して
ディープラーニングを使って勝手にサザンの新曲の歌詞を作る」
である。

資格を取得したはいいものの今のところ発揮する場面もないので、
ここで垂れ流してやる。ロックだろ?俺はロックに生きてるんだぜ。


今回はディープラーニングの中でも
「RNN(再帰ニューラルネットワーク)」というモデルを使いたい。
RNNって何?という話だけど、ここで技術的な話を長々と説明しても
校長先生の朝礼にみたいになって嫌われそうなので簡単に。

文字列等の連続したデータを読み込んでその前後関係を解析する事で、
例えば「Aという言葉の後にはBという言葉が繋がりやすい」といった
特徴を抽出して様々な言語処理に活用しようという技術、
それがRecurrent Neural Network(RNN)。以上。時間にして10秒。簡潔。


そう、今回の企画はこのRNNの仕組みを利用して
サザンオールスターズの曲の歌詞を学習させる事で、
サザン(というかほぼ桑田佳祐)の歌詞の特徴を覚え込ませて
そこから新たにサザンの歌詞を書いて貰おうという試みだ。

サザンってなんとなくだけど一般的には
歌詞よりも曲が人気のアーティストだと思っている。

でも桑田佳祐はフザけた歌詞からダークな歌詞、泣ける歌詞まで
実に幅広く多彩な歌詞を書く事が出来る実力派リリシストでもある。
だから俺のPCにそんな桑田佳祐のセンスが宿ると考えるだけで胸熱だ。


では早速実行環境を整えるぞ。
参考にさせて戴いたのはpythonで書かれた以下のコードです。
日本製の深層学習ライブラリである「chainer」を使ったプログラムだ。

github.com


しかし上記のコードはどうやらpython2用らしく、
python3を入れてた俺のマシンではそのまま流用する事が出来なかった。
python2とpython3ではコードの書き方が結構違っているようだ。

というわけで2to3のスクリプトを利用して
以下のような部分を見直しpython3バージョンに変更した。

・import cPickle as pickle⇒import pickle as pickleに。
・print関数はprint()の構文に。つーか不要そうなprintは削除。
・〇〇.items()はlist(〇〇.items())とlist()で明示。
 np.random.choice(〇〇,~)はnp.random.choice(list(〇〇),~)に。
・xrange(〇〇)⇒range(〇〇)に。
 xrange(jump * n_epochs)はrange(int(jump * n_epochs))に。
unicode(〇〇)⇒str(〇〇)に。
・sys.stdout.write(〇〇)⇒sys.stdout.buffer.write(〇〇.encode('utf-8'))に変更。

適切でない箇所もあるかもしれんけど
とりあえず上記で動きそうだったのでひとまず良しとしたい。

そしてサザンの歌詞のサンプルも準備。
インターネッツの力を借りてデビュー曲『勝手にシンドバッド』から
今年リリースの新曲『闘う戦士(もの)たちへ愛を込めて』まで
約240曲のサザンの歌詞を集めて一つのテキストに集約。

よし、下準備はオッケーだ。40年分のサザンの歌詞を学習させるぞ。
ふふふ、いよいよ俺のマシンに桑田佳祐を降臨させるときが来た。
かがくのちからってすげー!さぁレッツラ、ディープラーニング

発表、勝手にサザンオールスターズの新曲


はい、それではサザンの新曲を勝手に発表致します!

…とか言いつつここまで書いておいてなんだけど
実際はあまり期待していない部分が大きいです。

前述の通り桑田の歌詞は非常に振れ幅があって多様性に富んでいる。
英語混じりの曲から難しい言い回しの日本語まであるので、
なかなか特徴が捉えにくいアーティストでもあるのだ。

だから正直サザンはディープラーニングに適した素材では無いと言える。
いい訳じゃないぞ!客観的な分析に基いた考察だ。
そう、桑田佳祐はいい意味でディープラーニングに向いてない。
つまり大した結果は得られないと予想される。よし、予防線はOKだ。


ではでは、我が家の桑田佳祐はどんな歌詞を書いたのか?
文字数を1000文字で指定して出力し、
直近のブロック(改行が連続する位置)までを歌詞とします。

みよ、これがDeepLearningの力だ!どどーん!

国明下にこんじゃう
すべて世界はBlue…

Oh, 愛愛して WhaA-Hari…
嘘で明からせない
消えた夏の灯を花を見る
幻那か面の消えた時で

髪のような惨め、あ、あの日も
胸がつけそうになってスイル
今何時の癒えなが空に染めて
同来に合寄りそうが来ってみる

青いこれがお前な女性(ひと)がいる
歌恋が蘇ためてくたい
さえない花の女は
口づけを交えていいない
凍絡果てた度に
忘れぬ世には 音はoV Twy Diet
柔肌に抱きしめたいほどに
Wol't you feel Veay treat me right?

別れを歌なせて消えゆくかれる
君の身体に I can take a hreaur-夢が見る

Don't You Want To Me
I Say I don't Hream Rock & Migh
trees my heart
I everyone wants to play
Oh, Oh, The guitar man

俺のSimme-ham, ジャワン, live goe)

ワカルはパ使 Wookne-Potionを頂戴ね
首めて 裸だれ

大人で Chy'rreataul
My, my lady, giin
My make Ane Plict!!

That's I la li...
夢にで淋もRreave!
去かそうない溢れるから
アナタ… 僕は最後にはこわらすのに 人路を抱いて逢えた旅を
野暮さし合いたやさして雨
悲しく事なる青春のまで
孤独かじ去の胸に癒いるはずの 渚へ
大雨の火をも誘いたく 横下に舞う何
あなたがさえることだ)も
死ば何故友達は Amour Asfirm

来る想いも輝くに も自降われ涙なの…"Lhay
yey, got you gneate

悲しみのアルソ色

Amen."愛"はEVtruer…哀

Maly's gonels,
I feel you all my wrot wain

可愛い睫それな瞳の中だけど
Ah Uh light Day
Oh My Baby
Do you want man


ハイ、こんなもんです。もうわけが分かりませんね。サイケです。

でも実は人知を超えた難解な内容かもしれないと思うと、
ちょっと芸術的に見えてきたりしません?あ、しないですかそうですか。

ただ桑田佳祐らしく
日本語と英語が混じりあった状態になっている点はいい感じ。


でももうちょっと別の結果も見てみたいので、学習させる世代や
過学習を防ぐためのドロップアウトの数値を調整してリトライしてみる。
ちなみに先程の歌詞は100世代&ドロップアウト率0%で学習させていた。
すこしパラメータを変化させて再度レッツラ、ディープラーニング

にするりが
口づけの果てた Lay Baby Night
Oh, yeah, yeah
オララのグに今でもまらuh gong

あなとが泣いてう
Baby 揺れていないにぐて You are you sole the won
真恋のキカゾン ドージン オゾン ラート
ふれる頃 チャボン 今まんな 街に row, Fisty Onis it to ving?
その胸を消っている
おた一騒上 下んとならりうよ

大人の亡り 最好き

つすら夜は オイよいる 何の彼氏
Let's & Rett & Day
I She Dong
いっぽいね 思い過ぎら
つめらあなるはあいたのば
見つめがなる 不南2意にはも.
aom Foudin' Cars!!

Wow,, ah, yeah

Littlin' shin' ttill to he, I dave onah.
My heart a wouds trle, it knif no dokes,

真陽子描いたいI.
Won't you vep the await
お互いに亡く
暮こだかれの Ler-rackimo
あの娘で Cap ane makon
涙の終わりのher Everyday
夏の面にの風はほうね

Baby 一番泣きそこに逢えてれる
Everyereriy
ああらを真良の Dornly Hrue.
離れないやかなちゃかやてことぞわしたじょうな
"そうないの Theromy 恋人と月 Fone
私の彼方で何かわいて
早くよって人間で逢える!
祈らないいせなう?
Wonhon why Juver The me wrike man somoso
アッテランセラ セトー Latmers on, Wact-on
" 夏のくない Baby
我をあいまめ クザーナラア

れつようない言葉の乗つに
Oh, Baby そんな一度 あなたのように つめて恋も Tocouy


むむむ…ドロップアウト率を0.5%にしてみたけど
あんまり結果は芳しくないドロップアウト率が上がると
100世代だとなかなか学習が収束しにくいようだ。

というわけでドロップアウト率0.5%のまま500世代でやってみよう。


私を見べる Mewry
アンターヒレイに星のように
何かかにに越えくるこのままニーイゴ

Baby C'mon, be, Me bely my love book tomemony
Don't be meraring this tamping gonns want afrand
Everyman, tamsy mendy you.

My to be cand my hind your hight to me far.
二人で Whe Streicet?
恋の終わり話クスイム
ラカンルー

Oh, my heart went shiplice, 泣いてく に歌い 君は時想か
あなたで捨てずに見ってゆった
未な遥か遠くね
恋が涙の運命を消えたを
傷ほみひとつで
良い今
愛しき女性(ひと)は帰らない

他人(ひと)が祈った 嗚呼 涙の夏の方を
明日は胸が帰るなら Yeah
あの日だけの扈wうキールの日もがの母の現実
"明の国見どうない Mosthy Tiget is alrighs
ためてって待ちたうばを信ちて最後の君ださと
マリビの平和の Tomoftandler Speet
目人は焼けたSeelle
Bowtet Andam
愛した時にならるBat Roll
この胸に響くに優しくさえたもう
Oh my let me wring me peados 忘れれぬ夜のLove onu mapiir. Yeah, yeah…

遠く愛 空がゆく
一夜誰は通りに情くを寄ろめた
人々(ひと)の今日へ 可ぼい言葉だけにいる
旅を交われる

夜のンだまれ
立つ離れた Ah You
夢にばかれす 生めらえた セイムに
Hondybody, more my homethy criter me you tight.
野体に濡れた階情さるままで
忘られぬも)

I got me romin' in making man.
Feel me high mam I mind noor
My day.
俺を寄る口づけよ Totio Bad
誰くをあたるは誰も逢えたい
その手にお絶望のロロクルワル

君に見て身が舞って
歌の降りは泣いて来る


うーん、結局わけが分からないままであんまり変わってない…。

でもこの歌詞に関しては個人的には結構面白いと思った。
「女性(ひと)」「他人(ひと)」「人々(ひと)」と、
違う漢字で同じ「ひと」と読ませるポイントが3つも出てきて、
そこに人間が作ったような含み、意図を感じる。

まぁ現在のDeepLearningでは言葉の意味までは考えられないので、
単なる文字の羅列でしかないんだけどね。
でもちょっとだけ我が家の桑田佳祐もそれっぽくなった気がしない?

もちろん本家にはまだまだ及ばないものの意外に面白い歌詞になる。
これをベースにした上で人間が手を加えればそれなりの歌詞になりそう。


もし今後の人生で俺に作詞をする機会があったとしたら、
DeepLearningを使った歌詞をベースに作詞していくと良いかもしれん。
このRNNの技術をうまく使えば素人でもプロみたいに作詞できる??

例えばアーティスト毎に覚えこませたデータを色々準備しておいて、
ミスチルっぽい歌詞」「宇多田ヒカルっぽい歌詞」
みたいなものをすぐに作り出せるようになったら楽しそう。

おお、自分で言っておきながらなんだか面白そうな気がしてきた。
今後気が向いたらこの辺の企画をまたやってもいいかも。
よし、この度私は作詞家になります。作詞の依頼受けます。宜しく。


というわけで今回の勝手にサザンオールスターズの新曲企画、
採用する歌詞は一番それっぽく仕上がった以下の内容に決定します。

だから 恋にそれば涙

これから言葉にならない
だからもうちょいとこらえないと
歩いて星より 大出になる 言葉でいてるのね
棄てなく文句は 恋でなら
いつまでも忘れないで

慣れない 女もんせ 今少こふつ俺だけの?
Mornin'***********
睫国に Guby 男の前に
夢見ることだけで

ふたり言葉だけが 女晴れる人よわらいて
振り向くだけで
歩いてる K'dynone
カレー焦がすむ Hoo, Am…

夢の数だけを闇に彷徨って
カレー焦がしたり
嗚呼 落ち水流るはずの日の
真夏の振り振り過ぎた
生まれて君をあうまで

雨に打たれ ためがいな

希望の天動で
空ける もう心に
I wonug sun you know. beah 
同じゃえ Sool"に
Oh, Cセクション それなメロデガ
O'mig't Insain Comme of have me?
Baby いつまでそうな心のしる あなただけのさ
ときゃわなァとうるようなんて せつかいだら

色あふられた夢のように あたいとしたもアンタすじゃ
ちょっと待ってて 今心でいつも夢が言わりのヒリよ


1000世代でドロップアウト率を0に設定した結果です。
学習の結果、最終的にロスは0.048くらいまで収束。
ほぼほぼ桑田佳祐化したと言っても過言ではないトレースっぷりだ。

歌詞中の「***********」の部分は『Mr.ブラック・ジャック』からだね。
あとやたらカレー焦がしてるけどこれは『からっぽのブルース』かな。
アーティストをマネて歌詞を書かせるような場合には、
ドロップアウト値は敢えて設定しない方が特徴が出やすくていいのかも。


AIブーム過熱の要因となった技術、DeepLearning。
今回はサザンの40周年と俺のG検定合格を記念して遊んでみましたが、
DeepLearningの魅力が十分に伝わった(?)のではないでしょうか。

でもDeepLearningの潜在能力はまだまだこんなもんじゃありません。
本当は偉い人がもっと有用な事に活かしてくれるハズです。
だから俺はもっとくだらない事に活かしていきたいと思っています。

あ、曲のタイトルつけるの忘れてた。

うーんそだねー
AIの言霊~DeepLearning Message~』で。