投稿日

IoTの「時系列データ」をChatGPTで分析・未来予測するには? ― IoT-Tech Meetup レポート

こんにちは、ソラコムの松下(ニックネーム: Max)です。

IoTではセンサーを用いて現場をデータ化します。例えば冷蔵庫内の温湿度の測定や、来店客数の計測が挙げられます。これらは定期的に計測するため、データは「時系列」すなわち、時間によって並ぶデータです。

一般的には、この時系列データに対して回帰分析等で将来の予測、例えば温度の上昇具合や来客数の増減を予測します。昨今では、機械学習(Machine Learning; ML)を用いて複雑な分析や予測も可能となりましたが、いずれにしても専門的な知識が必要です。

5/30に開催した、IoTや周辺技術の知見をエンジニア向けに共有するイベント「IoT-Tech Meetup 第1回【ChatGPT × IoT】」では、時系列データを生成系AI「ChatGPT」で分析・未来予測する利点や気を付けたいポイント、そして具体的な方法を紹介しました。その概要や資料をお伝えします。

IoT-Tech Meetupとは?

「IoT-Tech Meetup」は、ソラコムが持つIoTや周辺技術の知見を、主にエンジニアの方に共有する事を目的としてシリーズ開催する無料のオンラインセミナーです。セミナーは、プレゼンテーションの他にQAも用意して、参加者の学びを深めていきます。

「IoT-Tech Meetup」が取り扱うテーマは、Raspberry Pi(ラズパイ)やM5Stack、クラウド型カメラといったハードウェアから、サーバーレスIoTやAIといったクラウド・ソフトウェア、そしてMatter等のIoT向け規格、法規やオープンソースライセンスといったあらゆる面で、IoTを活用するエンジニアの方に役立つ内容を企画・定期開催しています。

IoT-Tech Meetupの開催情報は、ソラコムのオンラインセミナー一覧、もしくは connpass のソラコムページで随時発信しています。

【セッション1】 IoTの振り返りと、IoTが産み出すデータ形式のおさらい

ここからは5/30のレポートです。
私からは、IoT自体の全体像の振り返りと、IoTが産み出すデータ形式について紹介しました。

まず、IoTにおいてデータとは「今の状態」と「過去の傾向=時系列」と2つの系統がある事を解説しました。今回フォーカスしている「時系列データ」とは過去から現在までの記録ですが、本当に知りたいことは「未来はどうなるのか」という点にあります。

そこで冒頭で解説した通り、一般的には回帰分析やMLを用いる事になりますが、専門的な知識の部分をChatGPTに分析・未来予測させるのが今回の取り組みです。

セッションの終わりでは、ChatGPTを分析・未来予測に用いる利点と、気を付けたい点を解説しました。

  • 利点
    • 事前学習が不要
    • 理由を回答させることで、妥当性を人間が検証可能
  • 気を付けたい点
    • 与えるデータサイズの調整
    • 冪等(べきとう)性が無い (同じデータから別の予測が導き出される可能性がある)

Maxの資料はSpeaker Deckで公開しています。

【セッション2】 時系列データをChatGPTで読み解いてみる

時系列データをChatGPTで分析・未来予測させる具体的な手段については、ソラコム ソリューションアーキテクト 内田(ニックネーム: jet)より解説しました。

まず ChatGPTの全貌を理解するため、基礎となっている LLM (Large Language Model; 大規模言語モデル)とChatGPTの関係性を紹介しています。ChatGPTを使用する際に目にする「GPT-3」や「GPT-4」がどういった位置づけなのかが一目でわかる図です。

続いて、ChatGPTに期待できることを3つに分類しました。具体的には「データの解釈と説明」「異常検出のアラート」「自然言語クエリ(問いと答え)」です。

これらを踏まえて、jetよりデモを紹介しました。

まずはAPIの全体像と動作確認を兼ねて、Pythonを用いてWeb上のChatGPTと同様に会話をするデモです。「おっす」という入力に反応してChatGPTから「こんにちは、どうも。」という回答が返ってきています。

このあとは「役割(role)」を与えることで、回答内容が変化することを確認しています。具体的には ChatGPT に対して「あなたは漫画のキャラクターです」と役割を指示したうえで「おっす」と入力すると、回答が変化しました。roleの指示を調整することで、好みの回答が得られることがわかりました。

続いてのデモは、実際の時系列データをChatGPTに分析させる様子です。日付と温度・湿度のデータをChatGPTに与えた上で「なにかわかりますか?」という分析を促す問いを投げたところ、下図のように日時の範囲や温度、湿度に対する一般的な分析結果を回答しています。

このように、まず洞察を得ることが可能なこともこのデモからわかりました。

これら二つの結果を基に、さらなるデモを行っています。roleに「分析結果をJSONで返す」を与えて時系列データを分析させます。その時の指示(プロンプト)は以下の通りです。

また、ChatGPTに異常値の検出をさせて、結果をSlackに通知するデモも行っています。

通知を送るための詳しい構成は後述の資料をご覧ください。

まとめとしては、以下の内容で締めくくられています。

  • 専門的な知識や勘所がわからなくても、新しい発見やひらめきが得られる
  • LLM にすべて任せられるわけでは無いので、試してみる必要はある
  • トークン(実質文字数)をうまく削減することで多くのデータ読み込みが見込める

総じて、時系列データの分析・未来予測にChatGPTを活用することが見いだせたというご紹介になりました。

jetの資料はSpeaker Deckで公開しています。

Q&A

Q: プログラミングとChatGPTを連携しようとすると、チャット特有の機械処理しにくい回答フォーマットが課題になりそうです。出力を確実にJSONのような機械処理しやすいフォーマットにする方法はありますか?

A: LangChain というフレームワークを利用する手段があります。同フレームワークは様々な機能を持っていますが、そのうちの1つに「希望するフォーマットが得られるまで繰り返し問いを投げる」というものがあります。しかし、何度も問いを投げることになり、API利用費がかさむ可能性があるため注意が必要です。そのため Usage limits(費用による上限設定) を設定することをおすすめします。OpenAI のアカウント設定から Billing > Usage limits で設定できます。

Q: トークンを減らすために、日時表現を変えてからChatGPTになげるとかは効果ありそうですか。

A: 非常に効果が見込めると考えられます。例えば「2023-01-01 00:00:00」よりも「01/01 00:00」と不要な情報を削減する手法です。具体的なトークン数は Tokenizer で計測できます。

Q: デモで紹介いただいた Google Colaboratory のコードを紹介いただくことは可能ですか?

A: OpenAIが提供しているAPIを体験する環境の1つとして、Google Colaboratoryは適していると考えています。後日になりますが、当該部分を当ブログで紹介したいと思いますので、ご期待ください。

次回のIoT-Tech Meetupは6/13(火)「GIS・位置情報活用の基礎」

すでに次回のIoT-Tech Meetupの開催が決定しています。
6/13(火) 19:00スタートで、GPSをはじめとした位置測位技術の基礎知識と事例や、位置測位を用いた開発の基礎知識と具体例を共有していきます!

すでにお申し込みページはオープンしています。お気軽にご参加ください。

7月開催!IoTの大型カンファレンス「SORACOM Discovery 2023」

7/5(水)と7/6(木)の2日間にわたってお届けするIoTカンファレンス「SORACOM Discovery 2023」でも、多くの技術セッションをご用意しています。こちらにもぜひご参加ください!

― ソラコム松下 (max)