コードノートスマートフォン用の表示で見るコードノートコードノートはwebを中心にテクノロジー・クリエイティブを伝えるWebメディアです。コードリンク代表、片岡亮が執筆しています。Colaboratoryで学ぶ、LSTMを使ったAIの自動歌詞生成AIなんとなくシリーズ化している、ディープラーニング勉強会の第4回目を実施したのでそのメモです。実際AIって今どんなことできるのよ?会。Googleの無料学習環境を使って、ポチポチGANとやらを体験してみよう会。AIに学習させるデータを加工するのにもプログラムを使うと良いよね会。画像処理ときたので、今回は文章処理編。先日、Googleが検索エンジンの一部に「BERT」と言われる、ディープラーニングによる文章解析システムを組み込んだニュースが発表されました。jp.techcrunch.com(関係ないですが、「BERT」の前身に「ELMo」というシステムがあり、セサミストリートのキャラ名が命名に含まれてますね。processing)」と総称されます。見るGoogle検索も世界中のwebサイトの文章を解析して検索結果を作っているので自然言語処理ですし、Google翻訳も入力した文章を解析して違う言語に変換するということで自然言語処理です。いま、人工知能は「Google検索」を大きく変えようとしている|WIRED.jp噂によると、一時のあいだ、シンハル氏は機械学習システムをGoogle検索に採用することに断固たる抵抗を示していたようだ。これまでのGoogle検索は、人間の手による厳格なルールにもとづいたアルゴリズムを採用してきた。あるグーグル元社員によれば、ニューラルネットにおける解釈やその対応がより困難を極めるという懸念からだ。ほんの2.3年前には、Google検索部門のトップの人も「ディープラーニングによる自然言語処理?まだまだ無理でしょ」って言っていたのは、今となるとなんだか不思議ですね。diamond.jp2016年末には、AIによる東大の入学試験合格を目指すプロジェクト「東ロボくん」が、今のAIでは長文の文脈理解難しい、といった理由でプロジェクトを凍結しました。その2年後にはGoogleがBERTを発表し、そのさらに先端のシステム「T5」では人間以上とも言える文章読解スコアを出しています。このスライドで紹介されている「ウィノグラード・スキーマ・チャレンジ」で、現在、正答率が93.8%まで向上してる(グーグルのモデルT5-11B)。2019BERTについて詳しい解説はこちらなど。ai-scholar.techRNN・LSTMって何?そんな前振りがあってからの今回のお勉強会でしたが、「BERT」の前身「ELMo」にもLSTMは使われています。qiita.comRNN・LSTMについて僕が劣化コピーした解説をweb上にまき散らすのは嫌なので、詳しくは筑波大学の先生の講義動画がなぜか無料で見れるのでそちらを。ocw.tsukuba.ac.jpかなりざっくり言えば、ディープラーニングで時系列データを学習する時に利用されるモデルです。「時系列データ」と言うと若干言葉がややこしいですが、平均気温の変化グラフや株価の変化、人の動作記録、会話データなど時間の変化があるデータは全部、時系列データです。そんなデータを扱う時のベーシックなモデルがRNNです。RNNだと長期の時系列データを学習できなかったので、その弱点を補ったのがLSTMです、みたいなかんじ。今回のテーマは「AIの自動歌詞生成」ですが、「文章を書く」のも時系列があるデータ処理です。人は皆、文章を書くとき、それまで書いた文章(過去)を元に、続く文章(未来)を想像しているのですから。AI君にも、歌詞の導入が「会いたくて会いたくて」だったら、それに続く言葉はなんでしょう?とお題を出して答えてもらうわけです。そんな質問には答えられないので、事前にいっぱい歌詞のテキストデータを時系列データとして学習してもらいます。その学習を元に、AIが新しい歌詞を生みだしてくれるのです。やってみようそんなこんなで、実際にAIによる自動歌詞生成を行った環境がこちらに。Colaboratory」を使いながら、web上にある先人達のコードをほぼそのまま使わせていただきました。colab.research.google.com主に参考にさせていただいた記事。cedro3.comcedro3.comqiita.com後半、形態素解析も利用した学習例もありますが、正直蛇足かなぁという気もしています。形態素解析は昔ながらの自然言語処理手法の一つで、文章を「意味を持つ最小限の単位(=単語)」に分割する方法です。それを使い、AIに文章を1文字1文字渡すのでなく、前準備として文章を意味ごとに分割してから渡してみよう、という試みですが、効果があるかはなんとも言えません。普通に考えると効果が高そうですが、ディープラーニングの学習は人間があれこれ手を加えたデータの方が良いのでは?と試行錯誤した結果よりも、データをそのまま与えた結果の方が良いことも多いのがまた不思議なところです。ディープラーニングによる日本語解析の研究成果ってあまり公にされていないので、この辺実際どうなっているのかな?というのは、気になりポイントです。データ準備・結果コードはお借りしたものを使うので、学習用の歌詞データを集めるのが大変といういつものやつでした。最初、30曲かそこらで学習したのですが、結果が芳しくなかったので、途中から適当にプログラムを書いて400曲(約20万字)ぐらい収集して入れたら良いかんじになりました。(参考)qiita.com5曲10曲でも学習できないことはないですが、元の歌詞そのままのフレーズが出ることが多くあまり楽しくなかったので、良い結果を出したかったら最低100曲ぐらいはあると良いのかなぁと思います。それでも歌詞は、そこまで文脈が必要なくとも"それっぽい"結果に見えるので対象として面白いですね。小説生成になると青空文庫といった権利的な問題もない大量のデータがあるのでやりやすいですが、小説における"それっぽい"文章はハードルが高くなりがちです。僕がテストした時は、主にボカロ系のアーティスト楽曲をまとめたデータで学習させてみました。2019学習元データの歌詞の文節ごとにスペースが入っていたため、通常のテキストを学習させる際よりも変な日本語が出づらかった気がします。改行が多いのも同様に。プログラムからすると「スペース」も「改行」も一つの文字なので、「スペース・改行の次にはどんな文字が来る?」という質問が定期的に挟まり、その都度良い感じに内容がリセットされる印象でした。文頭によく出る単語が頻出し過ぎて、浅い文になりがちだったとも言えます。その辺は元データのスペースや改行を一部削ったりすると、また違った結果になりそうです。すべては学習データしだい。以前、こちらの記事に書いたようにディープラーニングについて...2019-06-18AI・ディープラーニングついて話した内容をまとめておくこんにちは。Market・Ne...Wordpressのテンプレートも有料・無料問わず以前と比べるとだい...2017-08-19CSVで管理できる検索フォーム作った。PHP前回、jqueryを使ったYesNo診断をアップしましたが(YesNo診断の...更新情報をLINE@でお届け中!連絡もこちらからどうぞ。»プロフィールコードリンク代表。1989年1月29日千葉県産まれ。高校在学中からweb業界で働き始めており、メディア運営・ディレクションの傍ら自らプログラミング・デザインも行う。2015年からフリーランス。(5)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。