ラッキーパンチが当たった
引き続き、生成AIの文章か人間の文章かを判別するタスク「LLM - Detect AI Generated Text」で奮闘しております。昨日の記事で、トップ集団がやっていることを解説した後、自分でも何かできることはないかと思って、軽くジャブを打ってみたところ、たまたまうまい具合に当たったようで、スコアが0.96から0.961に上がりました。「たったの0.001ポイントじゃん」と思うかもしれませんが、ランキングでは上位33%から一気に上位12%(473位/3778人中)まで駆け上がることができました。銅メダルの圏内が見えてきた。これはうれしい。
やったことは「データ拡張」です。とはいえ、これも自分でLLMを動かしてデータを集めたわけではありません。昨日の記事で、「ソースコードの中で、読み込まれてはいるけれど使われていない」と言っていた、コンペ側が提供するオリジナルのトレーニングデータを、DAIGTデータセットにくっつけて使っただけです。
しかも、submitした後に判明したことですが、実は、DAIGTデータセットには、すでにオリジナルのトレーニングデータが取り込まれていたのでした。私がデータのuniqueを取り忘れていたために、「人間が書いたエッセイが一部重複してデータに含まれている状態」だったわけです。あー、どおりで、みんな使ってないわけだわ。データサイエンティストとしてはお恥ずかしいくらいの初歩的なミスだったのですが、どうやらこのミスがたまたま良い方向に働いたようで、結果は0.961へのスコアアップとなりました。ラッキー!
はじめの一歩36巻p.119(講談社)より引用。
Kaggleにはラッキーパンチもある、と思う。
データ拡張祭りじゃ!
というわけで、データ拡張にちょっとした手ごたえを感じたので、「他にも使えるデータはないか?」といろいろと探してみました。Kaggleのコンペでは、プライベートなデータセットを使うことはできませんが、Kaggle内で公開されているオープンなデータセットであれば、気軽に使うことができます。
公開データセットを自分のNotebookに取り込む方法は下記の通りです。
①Kaggle Notebookの右側の「Data」の欄にある「Add Data」ボタンをクリック
②これまで他人のNotebookをいろいろのぞいていれば、その時に見えていたデータセットの一覧が出てくる。データセットの説明を読んで、良さそうと思ったデータセットの「+」マークをクリック。なければ「LLM generated」などのキーワードで検索しても良い。
③Notebookの右側の「Data」欄に戻ると、Inputの項目に取り込んだデータセットの一覧が出るので、そこをクリック
④データファイル名(csv)が出てくるので、マウスオーバーしてクリックするとファイル名をコピーできる。
⑤Notebookのソースコードで、ファイルを読み込むところにペーストすればOK
daigt_train = pd.read_csv("/kaggle/input/daigt-v2-train-dataset/train_v2_drcat_02.csv")
というわけで、Codeで高スコアを出しているNotebookをいろいろ観察しながら、使われているデータセットをつらつらと眺め、有望そうなものをいくつかピックアップして組み合わせながらsubmitしてみました。この場合、DAIGT V2 Train DatasetとDAIGT | External Datasetの組み合わせが一番成績が良かったのですが、それでもスコアは0.961とラッキーパンチを越えるまでには至らず。。。また、トレーニングデータが58000件を超えたあたりでsubmit後の実行時にメモリーオーバーフローになってしまいました。どうやら、このくらいのデータ量でやりくりする必要があるようです。
こちらのコンペでは1日のSubmit回数は5回が上限なので、本日は打ち止め。ソースコードの概要はざっくり理解したものの、細かい中身はまだブラックボックスがいっぱいなので、とりあえず外堀から埋めていく感じになりました。明日あたりからは、いよいよ、特徴量の選択や分類器の選定などに入っていきたいと思います。Good Luck!