「Nishika:ボケ判定AIを作ろう! (ボケてコンペ #1)」9th 解法振り返り

Nishikaのコンペティション「ボケ判定AIを作ろう! (ボケてコンペ #1)」に参加し、9位の成績を残すことができました。
https://www.nishika.com/competitions/33/datawww.nishika.com
画像とテキストのマルチモーダルなコンペで、お題が面白かったので楽しんで参加していました。
なお、本記事で使用している画像等は特に断りがない限り、上記コンペのものを使用しております。

解法概要

画像とテキストからembeddingデータを抽出するモデルを2つ用意し、それぞれLightGBMで分類し、重み付けアンサンブルをしました。

PublicLB PrivateLB
アンサンブルモデル 0.638670 0.635366
シングルモデル 0.640098 0.636993
Data

テーマがボケなので、画像(概ねお題)とテキスト(ボケ)によるズレの演出が多かったように思いました。
テキストと画像、それぞれのみのモデルによる分類を試しましたが、概ねテキストのみでもそこそこ精度が出るケースがありました。画像だけで笑わせてくるものよりテキストでオチを用意するケースが多かったように思います。

CV

StratifiedKFold(5fold)を使用しました。
比較的LocalCVとPublicLBが比例していたように思います。
PrivateLBのこともあるので、特徴量を追加することで精度改善する方向で行きました。

Params

LightGBMのparam_tuneはOptunaを使用しました。
depth=9は固定でした。

Model

textのembeddingモデルはMegagonLabsのモデルが、試した中ではよかったように思います。
imageのembeddingモデルはSwinTransformerが、試した中ではよかったように思います。
DeBERTaのモデルはLightGBMのimportance上位に食い込んでくる感じだったのですが、後述の1stのモデルに追加しただけでは貢献しませんでした。

Ensemble

シングルモデルでimportance上位100に上がってくるもの、LocalCVやPublicLBに貢献するものを1stとし、直接PublicLBには貢献しないけれどimportanceやLocalCVに貢献するものを2ndとし、その中でもPublicLBに貢献するものを残しました。
その2つのモデルの予測値のうち0.2以上乖離が見られるものをピックアップし、分析に生かしました。

この図は、testデータのうち2つのモデルの予測値の乖離をグラフにしたものです。おおよそは似たりよったりなのですが、0.2以上乖離しているものが気になりました。
中身を見てみると、中には一瞬どういうボケかわからないものもあり、画像とテキストのattentionを単純に紐づけても分類できないケースもあるのかなと思っていました。
そのため、精度がそこそこいいけれど、embedするモデルの傾向が違う1stと2ndの予測値を重み付けアンサンブルして、意見が割れる笑いに対する予測を再現しようと試みました。

精度改善に反映しきれなかったもの
  • 画像テキストのコサイン類以度
    • 単純に追加するだけでは難しかったです。
  • テキストのポジネガ判定
    • 笑えるラインを再現したかったのですが単純に追加するだけでは難しかったです。

参考)配布資料「ボケのデザインパターン2022」フェーズ2 本能の六分類のポジネガ距離判定 ※仮説

  • GPT-2によるテキストでの面白さ分類
  • CatBoost
  • pseudo label
できなかったこと

CLIPによるラベル指定(人間、動物など)

感想

今回のコンペは、画像とテキストによるボケの笑いをAIで分類するという、簡単なようでとても難しいタスクでした。
特に先述した意見の分かれる笑いについて、予測するのが難しかったのかなと個人的に感じました。

  • 画像とテキストの因果関係が読み取りにくいもの(私は勝手に小梅路線と読んでいました)
  • センシティブな内容などがあり、受け手の一部が笑いとして受け取れないもの(笑えるライン)
  • 画像からはテキストの文脈を直接読み取ることがおそらく難しいと思われるもの

最後のものについて、例をとって見たいと思います。

「おいお前ら、おやつは300円までと言ったはずだが、お前らのおやつはいくら分なんだ?」『さ…300…$です…』

この場合、画像から読み取れるものとテキストから読み取れるものを直接結びつけるのは難しい気がします。
人間の私が読み取ると、文脈から「遠足の準備らしきもの」を結びつけて、その上で「300$」でボケるという構えだと思います。
ボケの本質を見つけたいと、コンペ中相席食堂を見たり小梅太夫の動画を見たりしていたのですが、上手に見つけることができず悔しいと思いました。

謝辞

最後になりましたが、コンペ参加者の皆様方、面白いコンペを運営企画してくださった株式会社オモロキ・Nishika株式会社の運営の皆様方、取り組みを暖かく見守ってくださった皆様方に心より感謝を申し上げます。