Bag of Words Meets Bags of Popcorn:AUC 0.98393 への軌跡

Bag of Words Meets Bags of Popcorn:AUC 0.98393 への軌跡

今回は自然言語処理の入門編と言えるコンペ解説です。最初のパートは自前ですが、ほとんどNotebook LM作成のスライド、クオリティもよくとても便利です。最近はChatGPTよりもGemini使う頻度が多くなってきています。

Kaggle挑戦レポート:BERTからRoBERTaへ、最高精度 AUC 0.98393 への軌跡

今回は自然言語処理(NLP)の入門編と言える定番コンペ「Bag of Words Meets Bags of Popcorn」への挑戦記録です。EDAとコーディングはGemini、実行はKaggle notebookと自作PC(Core i7-11700K + RTX 3060 12GB)、そして最後にGeminiへ書かせたレポートをNotebook LMに渡してスライド化しました。試行錯誤の末、最終的にAUC 0.98393 まで到達できたので、その軌跡をまとめます。

NotebookLMが生成したレポート表紙スライド

1. コンペ紹介と概要

このコンペティション「Bag of Words Meets Bags of Popcorn」は、KaggleがNLP初心者向けに提供している「Getting Started」コンペの一つです。IMDbの映画レビュー25,000件を読み、そのレビューが「ポジティブ(1)」か「ネガティブ(0)」かを判定する二値の感情分析(Sentiment Analysis)タスクで、評価指標はAUC(Area Under the ROC Curve)。単に0/1を当てるだけでなく、「どれくらい自信を持って予測できたか」という確率の正確さが問われます。

  • 学習データ(labeledTrainData):25,000件。ID・感情ラベル・レビュー本文を含む
  • テストデータ(testData):25,000件。ラベルを予測して提出
  • ラベルなし追加データ(unlabeledTrainData):50,000件。Word2Vecなど教師なし学習向け

テキストには <br /> などのHTMLタグや特殊文字が含まれ、レビュー長も短文から長文まで様々。古くは「Bag of Words」のような古典的手法が主流でしたが、現在はBERT系のTransformerモデルが圧倒的な精度を誇ります。

タスク・データセット・評価指標(AUC)の全貌

2. 開発体制:AIエージェントとローカルGPUの相乗効果

メインの分析・コーディングにはGeminiを採用しました。ChatGPTとも比較しましたが、65MB級のデータを読み込ませた上での解析能力はGeminiの方が優れている印象でした。最近はChatGPTよりGeminiを使う頻度が増えています。

実行環境の選択も明暗を分けました。Kaggle純正のT4 x2環境では約8時間かけても学習が終わらず途中で中止。一方、自作PC(Core i7-11700K + RTX 3060 12GB)なら25分〜1時間強で1回の学習が完了します。コンペの勝敗は結局「試行回数」で決まるため、VRAM 12GBのローカル環境への回帰が最大の武器になりました。

AI Coding AgentとローカルGPU環境の相乗効果(Kaggle T4 x2 vs 自作PC)

3. EDAと高スコアを出すコツ

データ分析(EDA)を通じて判明した、高スコア獲得のための重要なポイントは以下の3点です。

  • レビュー長の分布(コンテキストの保持): 平均230単語ですが、1,000語超えの長文レビューも多数存在します。映画レビューは結論が文末に来ることが多く、当初の MAX_LEN=128 では重要な情報が切り捨てられていたため、256以上に拡大することが必須でした。
  • HTMLタグのノイズ: レビュー内に <br /> などWeb特有のノイズが散見されるため、BeautifulSoup等を用いた事前のテキストクリーニングが必須です。
  • 否定表現の重み: 「not」「never」などの極端な感情・否定表現が結果を大きく左右します。単純な単語カウントではなく、文脈・表現の検出能力がスコアの鍵を握ります。
EDAで見えた3つの勝ち筋:レビュー長の分布/HTMLタグのノイズ/否定表現の重み

特に3点目の「否定表現」は象徴的で、”This movie is not good” という一文がそれを物語ります。Unigram/Bag of Wordsでは「not」と「good」を別々に見てしまい矛盾が生じてモデルが混乱しますが、N-gramやTransformerの文脈理解力があれば「not good」をひとまとまりとしてネガティブと確定できます。「goodよりnot goodの方が情報量が多い」——これがBoW(LB 0.85程度)と文脈理解モデル(LB 0.90超)を分ける壁でした。

「not good」に見る単語からの脱却:Unigramの限界とTransformerの文脈理解力

4. モデル選定:どのアーキテクチャで戦うか

標準的なBERT-baseよりも、より洗練された事前学習アルゴリズムを持つRoBERTaDeBERTaを活用することで、皮肉などの複雑な感情表現を捉えられます。改めて主要アーキテクチャを比較すると、Transformer(BERT/DeBERTa系)が期待AUC 0.96〜0.99+と頭一つ抜けており、本コンペの最適解であることがわかります。

NLPアーキテクチャの進化と比較マトリクス

5. コーディング説明と精度の推移

精度の向上は、パラメータ調整とモデル選定の歴史そのものでした。学習の変遷をまとめると以下の通りです。

モデル設定(MAX_LEN / LR)実行時間Score(Public)備考
BERT-base128 / 2e-5約12分28秒0.94189最初のベースライン(5,000件)
BERT-base128 / 2e-50.95647全データ(25,000件)学習へ切り替え
BERT-base256 / 2e-5約25分15秒0.97483MAX_LEN拡大が的中。Top 1〜5%圏内へ
RoBERTa-base256 / 1e-5約25分58秒0.98393今回の到達点。最高精度
DeBERTa-v3-base128 / 5e-627分で破綻Loss=NaN相対位置エンコーディング等の特殊構造が数値不安定化を招き学習失敗
RoBERTa-large256 / 2e-5約111分0.950643.5億パラメータに対しデータ不足で学習不足・過学習のミスマッチ
Stage 1:ベースライン突破と「データ量の暴力」(AUC 0.94189 → 0.95647)
Stage 2:コンテキストの拡張(MAX_LEN 128→256、AUC 0.97483)
Stage 3:最高精度への到達点(RoBERTa-base、AUC 0.98393)

Stage 4では2つの失敗から学びました。DeBERTa-v3-baseは相対位置エンコーディングなどの特殊構造が原因でLoss=NaNとなり27分で崩壊。一方RoBERTa-largeは3.5億パラメータという巨大モデルに対して2.5万件のデータでは学習が追いつかず、111分もかけてAUC 0.95064と大幅にスコアダウンしてしまいました。「大きければ良い」わけではなく、ハードウェア規模とデータセットに合わせた最適なバランス(Baseサイズ)を見極めることが勝利の鍵でした。

Stage 4:失敗から学ぶオーバースペックの罠(DeBERTa-v3 / RoBERTa-large)

技術的ポイント

  1. RoBERTaへの移行: BERTよりも頑健な事前学習を行っているRoBERTaを採用。学習率を少し下げ(1e-5)に設定したことで、安定した収束を実現しました。
  2. RTX 3060の最適化: 12GBのVRAMを活かし、勾配蓄積(Gradient Accumulation)を併用することで、メモリ消費を抑えつつ大きなバッチサイズと同等の安定した学習を実行しました。

6. 最終アーキテクチャ

最高スコアを生み出した最終的なパイプラインは、IMDbレビュー25,000件を入力とし、HTMLクリーニング(顔文字やストップワードは文脈保持のためあえて残す)→RoBERTaトークナイザ(MAX_LEN=256)→RoBERTa-base(5-Fold CV推奨、勾配蓄積でVRAM最適化)→確率値[0.0〜1.0]の出力、という流れです。

最高スコアを生み出した最終アーキテクチャのパイプライン

7. まとめ

今回のプロジェクトでは、最新のAIモデルであるRoBERTa-baseを用い、文章の読み込み量を最適化(MAX_LEN=256)することで、0.98393という極めて高いスコアを達成しました。この結果はIMDbの感情分析において、ほぼ「人間超え」に近いレベルの精度であり、自前環境の構築と迅速な意思決定が成功の鍵となりました。

実践から得られた3つの教訓は以下の通りです。

  1. 文脈の長さは正義(Context is King): NLPタスクにおいて、テキストの末尾(結論)を切り捨てないMAX_LENの設定は、モデル選びと同等以上に重要。
  2. バランスの勝利(The Right Fit): 最新最大のモデルが勝つとは限らない。精度・学習時間・ハードウェア制約のバランスが取れたモデル(RoBERTa-base)こそが最適解。
  3. ローカル×AIの爆発力(The Local Advantage): クラウドに縛られず手元のRTX 3060環境を活かし、AIエージェントと協働して「試行回数」を回しきったことがTop水準到達の最大の原動力。
結論とキーテイクアウェイ:実践から得られた3つの教訓

8. 今後の展望

AUC 0.99超えを狙うなら、次の一手として以下のような高度な戦略が考えられます。

  • Domain Adaptation(ドメイン適応): 50,000件の未ラベルデータを使い、Masked Language Modeling(MLM)で映画レビュー特有の言い回しを事前学習させる。
  • Pseudo-Labeling(擬似ラベル): テストデータの予測結果から、確信度が極めて高い(0.99以上/0.01以下)サンプルを学習データに混ぜ込んで再学習する。
  • Golden Ensemble(異種混合アンサンブル): Transformerモデルの予測確率と、古典的手法(TF-IDF + Ridge)の予測確率を重み付け平均化し、多様性を確保する。
AUC 0.99超えを狙う次の一手(Domain Adaptation / Pseudo-Labeling / Golden Ensemble)

最終成果物: RoBERTa-all-256_0.98393.csv(整数化処理済み)

ML/AI/Kaggleカテゴリの最新記事