ボケをかますAI Neural Joking Machine誕生秘話

筆者:吉田 光太

はじめに

はじめまして。吉田と申します。

大学院を修了してもうすぐ2年が経とうとしてますが,今回片岡さんから執筆の依頼をいただき何か自分も恩返しができればなと思い,当時の記憶を思い出しながら書いていきます!

筆者の研究室の大先輩である宮下先輩が先日投稿された記事cvpaper.challenge 創設のアナザーストーリーでも紹介していただいた,「ボケをかますAI『Neural Joking Machine (通称NJM)』」の誕生秘話と論文を最初に発表したCVPR 2018 workshopに投稿、発表したときの様子を振り返っていこうと思います。

拙い文章ではありますが、最後にはボケの紹介があるので温かい目で見守っていただきたいです(笑)

NJM誕生秘話

ここからは,NJMの誕生した際の過程を振り返っていく。

はじまりはブレスト

2017年春,研究室で本格的に研究を始めた頃,cvpaper.challengeの主宰 片岡さん,研究室のM2,M1(それぞれ修士2年生、修士1年生)の先輩方が研究室の一角でブレーンストーミングを行っていた。当時は,研究についての印象は「何やら堅苦しいものなんだろうな」と思ってたが,それは違った。コンピュータービジョンの分野のトップカンファレンスのサーベイをもとに「こんなこと誰もやったこと・考えたこともないだろうな」といったアイデアばかりで,フランクに参加することができた。その中の1つに,「AIにボケさせて大喜利サイトボケてに投稿したらどうなるだろうか?」といったアイデアがあった。このときはまさか自分たちのテーマになるとは思わなかった。

やってみよう

別のcvpaper.challengeのミーティング日,片岡さんは言った。「B4(学部4年生)のメンバーでやってみよう!」。B4の自分たちは顔を見合わせた「自分たちでボケをかますAIをつくる?」と。目指す一番の目標は,「ボケて」に投稿したボケ殿堂入りすること!「殿堂入り」とは,投稿したボケに対してその評価指標である星が目安として3,000以上付与されることで登録される。

実現する方法論については,片岡さんと話し合い,画像を入力して説明文を出力する「イメージキャプション」をベースに作っていこうということになった。そして,片岡さんからpytorch-tutorialを紹介していただき,その中にイメージキャプションのサンプルコードが載っていて,まずは動かしてみることになった。当時はイメージキャプションどころかソースコードをまともに動かした経験もなかった。環境構築のフェーズから苦労したが,解決策を片岡さん,先輩に聞いたり,ネットで検索することでなんとかソースコードを動かすことができた。サンプル画像であるキリンの画像を入力し,キャプションが出力されたときは達成感があった。まだまだ研究としてはこれからなのだが。。。笑

はじめてボケるまで

動かせたイメージキャプションをもとに,ソースコードからどのようにして文章を出力しているかを解析した。どうやら「MS COCO」というデータベースを学習してキャプションを出力してるらしい。「MS COCO」のデータベースの部分を変えれば,また別のキャプションが出力されるんだろう。自分たちがやりたい画像入力してボケを出力するには,ボケに特化したデータベースを用意することが必要になった。

そこで,大喜利webサイト「ボケて」に注目した。「ボケて」は,2021年12月現在,600万件のお題と9,000万件のボケが投稿されている。このwebサイトのお題とボケを収集することでボケに特化したデータベースを作成することになった。まずは,イメージキャプションに使われてる「MS COCO」のデータベースの構造を解析することにした。データベースをダウンロードして中身を見るという作業から,辞書構造であることを把握し,ボケてからお題と調べた辞書構造通りに収集するソースコードを作成した。その結果,約7万件のお題と約100万のボケを収集することができ,ここに世界最大のボケに特化したデータベース(BoketeDB)が完成した。

いよいよ完成したBoketeDBを学習させてボケを出力!記念すべき初めてのボケは・・・

「unk」

なんだこれ笑

「unk」の正体は「unknow」で,出力の際に候補の単語がしきい値よりも小さい頻度になった場合に発生するらしい(たしか)。しきい値をあげてなんとか出力できる様になった。大喜利webサイト「ボケて」では,ボケを星で評価する。そこで学習の際にBoketeDB内の星の数に閾値を設け柔軟に重みを与える「Funny Score」を考えた。このように試行錯誤することでようやくボケを出力することができた。細かい手法等は,論文を参照していただきたい。ここにNeural Joking Machine(NJM)が誕生したのである。

出力したボケは「出力ボケ集」までもう少々お待ちを笑

いざ,ボケてに投稿

実際に出力したボケを「ボケて」に投稿してみた。もちろんボケてユーザーは,まさかAIが投稿したボケを評価しているとは思っていないだろう。NJMに負けじと筆者もボケを投稿してみた。

その結果・・・

獲得した星の数は・・・

NJM: 平均 3.22個,筆者: 1.07個で筆者の惨敗(筆者に笑いのセンスがないだけだろうか。。。) 殿堂入りには程遠い数字であったが,NJMは筆者よりかは面白いボケを出力することが証明された。

出力ボケ集

NJMが出力したボケ(BoketeDBを若干改良し,学習したものも含む)の一部を示す。とくにボケの解説はなしで笑

画像1

皆様に気にいっていただけたボケはあっただろうか?

CVPR2018 workshop

ここからは,論文を通してNJMを自分たちのコミュニーティから世の中に公開するまでの過程を振り返っていく。

初めての英語論文投稿

ボケを出力するできるようになってからCVPR2018の「Language & Vision」workshopに投稿することを片岡さんに進められた。B4の自分にとってもCVPRはコンピュータビジョン分野のトップ会議であることは知っていた。「ワークショップとはいえ無理でしょう。」と思っていた。しかも,英語での論文執筆である。当時英語論文については,数本サーベイで読んだことがあるが,英語どころかまともに論文を書いたこともなかった。まずは,日本語で思うままに書いてみてそれを,英語に翻訳していった。原稿が英語で埋まり自分たちなりにはそれっぽく見えたので,片岡さんに添削してもらった。

原稿が真っ赤になって返ってきた。

論文を修正し,なんとか形にし投稿することができた。結果的には,執筆のほとんどが片岡さんによるものになってしまった。しかし,B4の3月頃に自分の研究した内容で英語論文を仕上げるという経験は,英語論文に限らず,自分の研究の論文での見せ方を学ぶ事ができ,今後の自分の大学院生活の中で論文を執筆することに対するハードルを低くしてくれた出来事と言えるだろう。

論文採択+α

投稿後,2ヶ月後の2018年5月上旬頃一通のメールが飛んできた。文面には,

It is our pleasure to inform you that your paper
"Neural Joking Machine: An image captioning for a humor" has been
accepted as a poster to be presented in Salt Lake City, Utah on June 18th.

とあり,「accepted!?」まさかだった。採択され,この一文でアメリカ・ソルトレイクシティで発表できることになった。これで,コンピュータビジョン分野の最高峰の学会のワークショップをとおして世界にNJMを公開することができる!その勢いのまま,論文arxivに投稿した論文。cvpaper.challengeのTwitterでも告知をしたら,少しだけバズって国内外で記事にしてもらって,議論が行われていたのには驚いた。当時の海外の記事

ここからは,話がどんどん進んでいきソルトレイクシティへのチケット・宿を研究室の指導教員とともにとり,現地での発表の日が近づいていた。

はじめての英語発表

CVPR2018の「Language & Vision」workshopの発表形式は,5分間のスライドによるSpotlight発表と1時間のポスター発表であった。このとき,発表経験は学内の卒業研究発表会くらいでもちろん英語での発表は初めてであった。ホテルに到着してから,飛行機に乗る前に考えたSpotlightの原稿をほぼ一夜漬けで暗記した。何回練習しても不安になって落ち着かない夜だった。

発表当日,Spotlight発表は頭が真っ白になりながら一生懸命,前日覚えた英単語をつなげて発表した。発表時の記憶はほとんど覚えていない。ただなんとかやりきった。その次は,ポスター発表が控えていた。

ポスター発表は,ポスターに散りばめた英単語を読んでいきなんとか切り抜けた。

その後の質問で苦労した。全然聞き取れない。

その中で唯一の救いは,技術的な単語(ResNetとかLSTMだったかな?)である。その単語のおかげでおおよそ何についての質問を頂いているかを理解できた。しかし,相手の意図した回答になっているかの確証が持てず,もどかしかった。自分に英語力があれば,もやもやがなく発表を終えられたのかもしれない。

ただ,ポスター発表において(完璧ではないが)一定のコミュニケーションを取れたことは,この後の様々な学会発表への自信につながった。

CVPR2018を聴講

自分の発表が終わり,本会議の方の発表を聴講した。YOLOの著者であるJoseph Redmon氏のような、論文でお見かけする面々がゴロゴロと歩いていた。その中でも,筆者が参加してよかったと思ったのは,ポスターを見れたことである。ポスターは,論文の著者自身が作成するサマリーであると考えていて,著者が一番主張したいことはポスターに詰まっている。英語が若干聞き取れなくても,ポスター内の画像などで理解できるものが結構多くあった。

この経験から,筆者が作成する研究のスライドやポスターも結果の画像をメインにシンプルに仕上げることを意識し,スライドやポスターを見てもらえば理解してもらえるように作成した。

余談だが,CVPRのような大きな国際会議には,企業の展示ブースも豪華であり企業のオリジナル商品をもらえるところも多い。その中で,Adobeのブースでタンブラーをもらい今もジムに通うときに持っていっている笑

おわりに

結局,殿堂入りは叶わなかったが,NJMの研究をすることで様々な経験ができ,多くの出会いもあった。cvpaper.challengeの活動で一番学んだことは

「チャレンジすることの楽しさ」

である。ブレストでのぶっ飛んだアイデアの実現に向けて果敢にチャレンジすることで,NJMを生み出せたし,M1の段階でCVPRの空気感味わうこともできた。この記事でチャレンジすることの楽しさが伝わり,読者方が何かチャレンジすることへの背中を押せるような記事になっていれば幸いである。

本記事を執筆する中で,当時のことを色々と思い出しながら,何やら懐かしい気持ちとこれからも社会人(コンピュータビジョンとは離れた仕事しているが)として頑張っていこうという前向きな気持ちになれたような気がした。

最後に,このようなユニークな研究に対して温かい目で見守り,ご指導いただいた片岡さんを始めとするcvpaer.challengeのメンバー,指導教員,NJMの開発メンバー,そしてこの記事を最後まで読んでいただいた読者の方に感謝の意を表し,記事を締めるとする。


この記事が気に入ったらサポートをしてみませんか?