LLMに時系列データを丸投げしても意外といけた件

IoT

「LLMに生の数値データを食わせるな」——AI界隈ではわりと定説になっている。
LLMのトークナイザは数値を文字列として処理するので、統計的なトレンドや周期性は
原理的に理解できない、と。試してみた。

やったこと

Seeed XIAO nRF52840 SenseのIMU(LSM6DS3)から加速度データをBLEで飛ばし、
ブラウザで10秒間キャプチャして、そのままGemini 2.5 Flashに送りつけた。
プロンプトはこれだけ。

以下の加速度データ(x,y,z)の連続記録から、私の動きの特徴(例:円を描いた、激しく振った、静止していた等)をユニークに400文字以内で分析して。

FFTも、移動平均も、何の前処理も無し。生の数値配列をそのまま丸投げ。

仕組み

構成はシンプルだ。

XIAO nRF52840 Sense (IMU 10Hz)
    │  BLE Notify
    ▼
ブラウザ (Web Bluetooth API)
    │  10秒間バッファリング → 約100点の[x,y,z]
    ▼
Gemini 2.5 Flash API
    │
    ▼
「あなたの動きは……」

Xiao nRF52840 SenseにはIMU(LSM6DS3)が内蔵されている。配線ゼロで加速度が取れる。
100msごとに加速度のx, y, zをカンマ区切りの文字列にしてBLE Notifyで飛ばす。

ブラウザ側はWeb Bluetooth APIでBLE接続し、受け取ったデータを配列にためる。
10秒経ったら配列をそのままプロンプトに埋め込んでGemini APIに投げる。

ソースコードを公開しています。

結果

意外といける。

XIAOを持って腕を左右に往復したら「何かを繰り返し振り回した」と返ってきた。

Web Bluetooth APIを使用してXIAO nRF52840 Senseから受信した加速度データに対するGeminiの解析結果を表示しているブラウザ画面。

静止して一瞬激しく振ったら「激しい衝撃や振り動作が加わった」と、
机に置いたまま放置したら「ほぼ静止状態、重力加速度のみ検出」と返ってくる。
少なくとも10秒・100点程度の短いデータならLLMはパターンを読み取れる。

なぜうまくいったのか

今回の条件はLLMにとってかなり甘い。

  • データが短い
    約100点、トークン数にして数百。コンテキストウィンドウに余裕で収まる。
  • パターンが人間にも明瞭
    「振る」「静止」「回す」は、数値の並びを眺めれば人間にも分かるレベルの変化だ。LLMも学習データの類似パターンに当てはめて言語化できる。
  • 定性的な回答でOK
    「異常スコア0.85、Z軸振動の寄与度52%」みたいな定量的な精度は求めていない。

都合の良い測定データを切り取っただけとも言える。

まとめ ── 短尺ならいける

今回の実験で分かったのは、LLMの数値処理能力はゼロではないということだ。
短くて明瞭なデータなら、前処理なしでも驚くほどまともに動く。
ただ、これを産業IoTの本番運用に持っていこうとすると一気に破綻する。
トークン数は爆増するし、微小変化を見逃してしまう。定量分析も難しい。

条件生データ → LLM厳しくなる
データ長数秒〜数十秒数時間〜連続
パターン明瞭(振り、静止、回転)微小(ドリフト、周期変動)
求める精度定性的(「〜っぽい」)定量的(スコア、閾値判定)
頻度スポット分析常時監視

本格運用は生データ丸投げでは無理だ。
前処理で数値を因数分解した結果をLLMに渡すのが効果的らしい。
その話は次回。

コメント

タイトルとURLをコピーしました