LINEヤフー Tech Blog

LINEヤフー株式会社のサービスを支える、技術・開発文化を発信しています。

入門的なKaggle Notebookを作成した話

こんにちは。データ人材戦略部エバンジェリストチームの權です。

私が自然言語処理に関する入門的なKaggle Notebookを作成したときのプロセスや工夫について共有します。

この記事がKaggleを活用した効果的な学習を推進する際のヒントになれば幸いです。

Kaggleとは

みなさんはKaggleというものをご存じでしょうか?

Kaggleは、機械学習エンジニアやデータサイエンティストが集まって競い合う世界最大のデータサイエンスコンペティションプラットフォームです。初心者からプロフェッショナルまで、さまざまなレベルの参加者が腕を磨く場として広く利用されています。

Kaggleにおける企業とデータサイエンティストの関係

LINEヤフーでは社員のリスキリングをするプロジェクトにKaggleを取り入れています。

データがたくさんありますが、それを「精製」するデータサイエンティストの数がまだまだ足りません。そこで、リスキリングを行って、「社員をデータサイエンティストに育ててしまおう」と考えました。二期目も継続することになり、多くの参加希望者から再び選抜して取り組みを行っています。

※ Kaggle® は、Google LLC の子会社である Kaggle Inc. によって提供されています。

Notebookの作成目的

Kaggleにはコンペティションで順位を競い合うだけでなく、コードをNotebookとして公開し知見を共有できるという特徴もあります。

この特徴により、データサイエンスの初心者でも他のユーザーのアプローチを学び、自分のスキルを向上させることができます。

Kaggleのハードルを下げて効果的に学習を進めるために、初心者向けのNotebookを作成することにしました。

Notebookの作成プロセス

私が作成したNotebookは以下の2つです。

これらのNotebookは以下のようなプロセスで作成しました。

  1. トピックの検討

    • 初心者がテーブルデータ以外のコンペティションに取り組むことを想定して自然言語処理を扱うことにしました。

    • 大規模言語モデルの流行に伴って自然言語処理に関連したコンペティションが多い傾向にあることも考慮しました。

    • 文字数や単語の出現回数などの基本的なトピックからスタートし、最終的に大規模言語モデルを試しに動かして楽しめる状態をゴールに設定しました。

  2. 題材とするコンペティションの選定

    • 初心者向けに用意されているコンペティションであるNatural Language Processing with Disaster Tweetsを利用することにしました。

    • Kaggleには上記のコンペティション以外にもさまざまな分野に関して初心者向けのコンペティションが用意されています。

  3. Notebookの作成

    • 幅広い読者を想定して必要な予備知識ができる限り少なくなるように意識しながら、ポイント・サンプルコード・演習をバランスよく配置しました。

    • テーブルデータになじみのある方であれば取り組みやすい話題をpart 1に配置し、事前学習済み言語モデルに関する話題はpart 2に配置しました。

      • このようにpart 1とpart 2を構成することで、GPUを利用するかどうかの設定を適切に分けることができました。

  4. デザインの改善

    • 長い文章とサンプルコードだけでは読みにくくなってしまうので、ポイントや演習は枠で囲んで見やすいように整理しました。

    • ポイントの例:

      ポイントの例

最終的には以下のような構成のNotebookとなりました。

  1. はじめに

  2. 課題の確認

  3. 文書の長さや単語の出現回数

  4. TF-IDF

  5. LightGBMの利用

  6. 事前学習済み言語モデル - DeBERTaV3

  7. 事前学習済み言語モデル - 最近の終了済みコンペティション

工夫したこと

今回のNotebook作成では以下のような工夫をしました。

  • 演習ではコードを書くだけでなく、公式のドキュメントやコードなどを調べるタイプの課題も用意しました。現在はAIにコーディングをさせる方もいらっしゃると思いますが、生成させたコードを理解していないまま利用してしまうケースについては懸念もあります。今回のNotebookではそういった懸念点も考慮して、コーディングだけでなくコードの理解にもフォーカスしました。

  • 演習の例:

    演習の例

  • 演習への解答は1つに定まらないですが、「解答例」をつけてスムーズに進められるようにしました。「解答例を表示する」をクリックするだけで手軽に解答例を確認できるようにしたことで、学習者の負担を軽くしました。

  • 課題の把握や文字数・単語数の確認など、ベーシックな内容からスタートして、必要な予備知識が少なく済むようにしました。予備知識を仮定せずに詳細な説明を減らした分は公式のドキュメント・チュートリアル・おすすめの書籍などへのリンクを入れることで可能な限り補うようにしました。

  • 自然言語処理に関しては扱いたいトピックがいろいろとありますが、すべてを詰め込もうとするとNotebookのサイズが大きくなり過ぎます。重要性や汎用性を踏まえて扱うトピックを厳選しました。

気をつけたこと

工夫をするだけでなく、以下のような点には注意を払いました。

  • 新しい概念や用語が出てくる際に、「なぜそれを導入するか」というモチベーションの部分についても書くように気をつけました。初心者が「何のためにやっているのか分からない」という状況にならないようにしました。

  • 入門用のNotebookであることを踏まえて、サンプルコードの部分では通常のコーディングと比べてかなり細かくコメントをつけました。

  • Private SharingにならないようにNotebookはPublicにした上で、開催中のコンペティションについては言及しないように気をつけました。

    • Kaggleでは公開されていない場所でチームを組まずに開催中のコンペティションについて情報を共有するような行為はPrivate Sharingとして禁止されています。

おわりに

Kaggle Notebookを活用することで具体的な課題を題材にしつつ、サンプルコードや演習をバランスよく配置することで初心者が入門するときのハードルを下げることができました。

今回作成したNotebookも、社内のリスキリングプロジェクトでの学習に活用してもらいました。

Kaggleはコンペティションで競い合うのもNotebookやDiscussionを読み書きするのも楽しいので、ぜひみなさんも取り組んでみてください。