🧑‍💻

松尾研究所の社内データコンペ DS Dojo #1 体験記

2024/05/23に公開

DS Dojo#1が開催されました

松尾研究所で、生粋のKagglerであるshigeさん主催の初のデータ分析コンペティションDS Dojo#1が今年の4月から開催されたので、その紹介と体験記を記載したいと思います。

まず、DS Dojoが何かを説明します。DS Dojoは、松尾研究所の社内で行われるデータ分析のコンペティションで、Kaggleのように特定の課題に対して機械学習などの手法を用いて分析して、予測精度を競う競技会となります。DS Dojoの特徴としては以下の3点となります(shigeさんの社内資料より引用)。

  • 実務に近いデータを使ったデータ分析コンテストの企画・運営を実施
  • データサイエンティストとして必要なビジネス・エンジニアリング・サイエンスの中で今回はサイエンスに特化
  • 基本的にはテーマは常設し、いつでも自分の好きなタイミングでスキルアップができる場として活用してもらう

今後、1年を通じて開催されることになりますが、今回は初回として初心者向けの自然言語分野のデータ分析コンペティションが行われました。

DS Dojo#1の内容

初回となるDS Dojo#1の内容は、以下の通りです(社内のコンペサイトからの引用となります)。

本コンペティションは、データの品質を高めることの重要性に焦点を当てています。特に、LLMの活用においては、高品質なデータが不可欠です。そこで、我々の目標は、低品質なデータを効果的に検出するモデルの開発を促進することにあります。

今回のテーマは「テキストデータがどのLLMモデルから生成されたかを分類すること」です。
具体的には、同一のプロンプトからGPT-3.5、Gemini、Claude-Haikuによって生成されたテキストを用意しています。参加者の皆様には、これらの文章がどのモデルで作られたものかを見極めていただきます。

今ホットなLLMモデルを使った、実践的なコンペとなっています。

データの1例を出してみましょう。例えば以下のようなプロンプトがあったとします。

step by step to set up my own chatbot with api

このプロンプトに対するGPT-3.5, Gemini, Claude-Haikuそれぞれの出力は以下のようになります。

To set up your own chatbot with an API, follow these steps:

1. Choose a chatbot platform such as Chatfuel, ManyChat, or Dialogflow.
2. Sign up for an account and create a new chatbot project.
3. Design your chatbot's conversation flow by adding messages, buttons, and quick replies.
4. Integrate your chatbot with an API by setting up an API connection within your chatbot platform.
5. Test your chatbot's functionality by interacting with it in the platform's testing environment.
6. Deploy your chatbot to your preferred messaging platform like Facebook Messenger, WhatsApp, or a website.
7. Monitor and analyze your chatbot's performance and make adjustments as needed to improve its functionality.
Here are the steps to set up your own chatbot with an API:

1. Choose a chatbot platform or framework: There are several options like Dialogflow, Amazon Lex, Microsoft Bot Framework, or custom chatbots using APIs like Twilio or Slack.

2. Sign up for a developer account with the platform of your choice and create a new chatbot project.

3. Define your chatbot's conversational flow and intents. Decide what kind of questions your chatbot will answer and what actions it can perform.

4. Integrate the API of your chosen platform into your application. This may involve writing code to send and receive messages, handle user input, and trigger appropriate responses.

5. Test your chatbot thoroughly to ensure it understands user inputs and provides accurate and helpful responses.

6. Deploy your chatbot to a hosting platform so it can be accessed by users.

7. Monitor your chatbot's performance and make updates or improvements as needed.

That's a high-level overview of the steps. The specific details will depend on the platform you choose and your chatbot's complexity.
**Step 1: Choose a Chatbot Platform**

* Consider factors such as features, pricing, and ease of use.
* Examples include Dialogflow, IBM Watson Assistant, Microsoft Bot Framework.

**Step 2: Create a Chatbot Account**

* Sign up for an account on the selected chatbot platform.
* Provide necessary details such as email address and organization name.

**Step 3: Configure the Chatbot**

* Define the chatbot's personality, language, and knowledge base.
* Create intents (user queries) and corresponding responses.
* Train the chatbot using real-life conversations or sample data.

**Step 4: Design the User Interface**

* Create a conversational interface that matches your brand and tone.
* Implement chat windows, buttons, and other interactive elements.

**Step 5: Integrate the Chatbot with API**

* Choose an API that provides the necessary data or functionality.
* Establish a connection between the chatbot and the API using a script or code snippet.

**Step 6: Test and Deploy the Chatbot**

* Thoroughly test the chatbot to ensure it meets your requirements.
* Deploy the chatbot on a suitable platform, such as a website or messaging app.

**Step-by-Step Example Using Dialogflow and Google Maps API**

1. Create a Dialogflow account.
2. Configure an intent called "address_search" with a sample user query like "Can you give me the address of {place_name}?".
3. Create a response that uses the Google Maps API to fetch the address and display it.
4. Integrate the Google Maps API script into your chatbot.
5. Test and deploy the chatbot.

**Additional Tips**

* Use natural language processing (NLP) to enhance the chatbot's understanding of user queries.
* Provide clear and concise responses.
* Monitor and analyze chatbot performance to identify areas for improvement.
* Consider user feedback to refine the chatbot's functionality.

みなさんは、これらの出力をみて、どのモデルの出力か当てることができそうでしょうか?

DS Dojoでは、このようなプロンプトとその出力の大量のペアを教師データとして、使用されたモデルの予測精度を競っていきます。

DS Dojo#1体験記

私自身は、SIGNATEのChatGPTチャレンジといった、少し変わったコンペティションの参加経験はあるものの、本格的なデータ分析コンペティションの経験が少なかったので、スキルアップの貴重な機会として、ありがたく参加させていただきました。

コンペの序盤では、ChatGPTに助けてもらいながらなんとかSubmitしたものの、スコアは上位陣に離されたままでした。

その後、ホストのshigeさんによる、Baselineと丁寧な解説を経て、コンペは30人を超える参加者となり、盛り上がりをみせました。

私も、なんとか意地を見せて上位にくらいつくも、1位の若手チーム(しかも1人は同じプロジェクトのメンバー)に大きく差をつけられている…悔しい…

そんな中、2位のchomeさんから「チームマージしませんか?」というお誘いが!

迷わずチームマージ!チーム「2人はkarachome」となり熱いディスカッションを繰り広げ、1位を猛追する体制を構築しますした。

1位を猛追するイメージ図(DALL・Eにより生成)

しかしながら最終日、publicスコア、一歩及ばず。駄目か…と思ったものの

プライベートでまさかのシェイクアップ!!僅差で1位となりました!!

というわけでDS Dojo#1、チームの力で1位をとることができました!

DS Dojo#1での生成AI活用

今回のコンペでは、私は経験不足を補うために、生成AI(LLM)を活用する方針で進めることを考えました。

具体的には、ChatGPTでデータ分析ができるAdvanced Data Analysisの他、Claude 3 OpusなどのGPT-4以外のLLMにデータ分析をさせる自作ソフトを活用しました。LLMでデータ分析をさせる自作ソフトに関しては以下記事を参照ください。

https://zenn.dev/karaage0703/articles/f6a1df0b2eabf4

その結果、EDAにより、アスタリスクの使用に関して、モデルにより大きな違いがあることを抽出することができ、モデル性能の大きな改善につなげることができました。

また、Word Cloudで傾向をみるというような作業も、お願いすればすぐ可視化してくれたりします。

このような、様々なデータ可視化を気軽にお願いできるのはLLM活用の大きなメリットですね。

一方、EDAだけでなく、モデルの構築に関しても生成AIを活用してみましたが、こちらは私の使い方では、人間を超えるような性能のモデルを構築するまでには至りませんでした。

ただ、最低限Submitまでできるようなノートブックをさっと作るのには非常に適していました。今回、AIで作成したノートブックを、初心者向けにコンペのDiscussionで公開したところ、多くの人から「助けになった」とコメントをいただきました。このことから初心者の第一歩でのつまづきをなくすためにも、AIを活用するのは非常に有用と感じました。

ということで、データ分析コンペティションのAI活用に関しては、EDAなどのタスクでの有用性は感じるものの、まだまだAIまかせで人を超えるようなモデルの構築までは難しいというのが自分の現時点での所感です。

ただ、LLMの性能向上の速度はすさまじいので、今後の可能性には大いに期待しつつ、今後もAI活用に関しては試行錯誤してみたいと思います。

まとめ

松尾研究所初となるデータ分析コンペティションDS Dojo#1の紹介と体験記を書かさせていただきました。私がDS Dojo#1で感じた興奮が、皆様にわずかでも伝われば幸いです。

社内での実践的なデータ分析コンペティションは、組織として技術レベルの底上げ、ノウハウの蓄積、そしてメンバー間のコミュニケーションと非常に大きな効果があることを実際に参加して強く感じました。松尾研究所の大きな福利厚生と言っても良いかもしれませんね(注:DS Dojoは、現在任意参加となっています)。今後も継続して参加していきたいと思います。

また、今回は初回ということで、プラットフォームとしてはKaggleを活用しましたが、今後は社内独自のプラットフォームを構築し、様々なデータを扱えるようよりパワーアップし、社外からの参加なども検討し大きく広げていく予定です。

今回のDS Dojo#1に関しては、解法に関しても今後テックブログで公開される予定です。楽しみにお待ちください。

追記:DS Dojo#1の解法

解法公開されたので記事を紹介いたします。

一緒にチームを組んだchomeさん(長谷さん)の記事です。
https://zenn.dev/mkj/articles/fe662c205e4158

松尾研究所テックブログ

Discussion