機械学習を使って心拍数を予測するAppleの研究の紹介

この記事は「Medley (メドレー) Advent Calendar 2024」の2日目の記事となります。

https://qiita.com/advent-calendar/2024/medley

---

Apple Watchやその他のウェアラブルデバイスが普及したことで、心拍数の測定が日常生活の一部となりました。
私自身、ランニング中は常にApple Watchを着用しており、ペースの調整や体調の確認に心拍数を利用しています。

そんな運動のパフォーマンス向上や健康管理に欠かせない心拍数ですが、Appleは「測定」の次のステップとして「予測」に挑んでいます。
本記事では、Appleが進めている心拍数予測の研究概要と、その可能性について紹介します。

https://machinelearning.apple.com/research/personalized-heartrate

# 心拍数の「予測」がもたらすメリット

心拍数は、運動パフォーマンスや健康状態を把握する上で重要な指標ですが、測定できるのは「現在」のデータに限られます。
一方で、心拍数の「未来」を予測できれば、次のような幅広い応用が期待できます。

- **運動負荷の最適化**: その日の体調や運動強度に合わせた負荷の調整
- **健康管理の向上**: 疲労やストレスの早期発見と適切な休養の推奨
- **疾病予防**: 心血管疾患リスクを軽減するためのモニタリング

さらに、心拍数と関連の深い酸素摂取量や消費カロリーの予測にも応用できる可能性があります。

# Appleの研究概要

Appleの心拍数予測の研究は、[Apple Heart and Movement Study (AHMS)](https://www.heart.org/en/get-involved/apple-heart-and-movement-study) のデータを活用しています。
この研究では、Apple Watchを使用した7,465人の被験者から集めた270,000件以上のランニングデータが使用されており、実験室でエアロバイクを用いて行われる従来のデータよりも現実的で大規模なものとなっています。

研究の目的は、日常生活で収集されるウェアラブルデータを活用して未来の心拍数変動を予測することです。
特徴的なのは、生理学的な心拍数モデルを機械学習によって拡張するハイブリッドアプローチを採用している点です。

- **生理学モデル**: 心拍数の変動を常微分方程式で表現
- **機械学習による拡張**: 被験者の健康状態や環境要因 (気温、湿度など) を考慮し、個別化されたパラメータを生成

このアプローチにより、従来の手法に比べ高い精度での心拍数の予測が可能となっています。

# ハイブリッドモデルの手法

Appleの研究で採用されているハイブリッドモデルのアプローチは、生理学モデルと機械学習による拡張を組み合わせたものです。
以下にその概要を示します (詳しい図は[こちら](https://www.nature.com/articles/s41746-023-00926-4/figures/2)から) 。

![41746_2023_926_Fig2_HTML.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42150/151ab5e6-7209-b0fa-d623-5287bb17f7e7.jpeg)

### 1. 生理学モデル
生理学モデルは、心拍数の変動を運動生理学の基本原理に基づき、常微分方程式 (ODE: Ordinary Differential Equation) で記述します。
このモデルは、心拍数の変動に影響を与える酸素需要 (Oxygen Demand) との相互作用を表現しています。

**酸素需要 _D(t)_ の変化を記述する式:**

```math
\frac{dD(t)}{dt} = B \cdot \big(f(I(t)) - D(t)\big)
```

この数式では、関数 _f_ が運動強度 (Exercise Intensity) を表す _I(t)_ を酸素需要に変換しており、運動強度が急激に変化すれば左辺の酸素需要の変化も大きくなることを表しています。
_f(I(t))_ と _D(t)_ が一致している場合は右辺が0となり、酸素需要の変化がない状態となります。
_B_ は酸素需要が平滑に向かう速度を表すパラメータであり、_B_ が小さいほど酸素需要の変化は緩やかになります。

**心拍数 _HR(t)_ の変化を記述する式:**

```math
\frac{dHR(t)}{dt} = A \cdot (HR(t) - HR_{min})^\alpha \cdot (HR_{max} - HR(t))^\beta \cdot (D(t) - HR(t))
```

_HRmin_ と _HRmax_ はそれぞれ心拍数 (Heart Rate) の最小値と最大値を表します。
心拍数が最小値や最大値に近づくほど、心拍数の変化は緩やかになります。
_α_ と _β_ はそれらの値に近づく速度を表すパラメータです。
酸素需要 _D(t)_ と心拍数 _HR(t)_ が一致している場合は、心拍数の変化がない状態となります。
_A_ は心拍数が平滑に向かう速度を表すパラメータです。

これらのモデルは「運動強度が高まると心拍数が増加する」という基本的な生理学的反応を表わしています。
例えば、アスリートと普段運動をしない人で同じ運動をしても心拍数の変化は異なり、これは _A_ や _B_ 、_f_ 、_α_ や _β_ などのパラメータが異なるためと表現できます。

### 2. 外部環境のモデリング
酸素需要の式では、関数 _f_ が運動強度 _I(t)_ を酸素需要 _D(t)_ に変換していました。
しかし実際の運動では、気温などの環境や健康状態の影響を受けます。

- **気象条件**
過度の暑さや湿度の中で運動すると、運動強度に対する心臓の反応が強くなります。
トレーニング時の温度と湿度の測定値を含む天候 _W_ によって心拍数の方程式が受ける影響を _g(W)_ で表現します。
例えば、_g(W) > 1_ の場合は天候 _W_ によって酸素需要が増加することを表しています。

- **疲労の蓄積**
長時間の運動では、疲労により心拍数が変化します。
トレーニング中の時間 _t_ における疲労の影響を _h(t)_ で表現します。

これらを酸素需要の式に組み込むことで、以下のように表現します。

```math
\frac{dD(t)}{dt} = B \cdot \big(f(I(t)) \cdot g(W) \cdot h(t) - D(t)\big)
```

### 3. パーソナライズモデルの学習

各個人は心拍数を表現するためのパラメータ _A_、_B_、_f_、_α_、_β_、_HRmin_、_HRmax_ を持っていますが、これらを全てを正確に推定することは容易ではありません。

各個人のパラメータを直接学習する代わりに、個人の健康状態を表すベクトル _z_ を用い、これによりパラメータが表現できると仮定します。
例えば、パラメータ _α_ は _α(z)_ 、_f(I)_ は _f(z, I)_ と表すことができます。

この変更により上述した常微分方程式は以下のようになります。

```math
\frac{dD(t)}{dt} = B(z) \cdot \big(f(z, I(t)) \cdot g(W) \cdot h(t) - D(t)\big)
```

```math
\frac{dHR(t)}{dt} = A(z) \cdot (HR(t) - HR_{min}(z))^{\alpha(z)} \cdot (HR_{max}(z) - HR(t))^{\beta(z)} \cdot (D(t) - HR(t))
```

次に過去のトレーニング履歴から _z_ を学習していきます。
学習には畳み込みニューラルネットワーク (CNN) を用い、心拍数予測の誤差を最小にするよう学習を行います。

こうして生成された _z_ は常微分方程式のパラメータとして使われ、心拍数の予測を行います。

# 結果
このハイブリッドモデルを用いた実験では、以下のような結果が得られました。

### 心拍数の予測
ニューラルネットワークのモデルであるseq2seqと比較したところ、一貫して提案するハイブリッドモデルの精度が上回りました。
予測がしづらいトレーニング開始時の心拍数だけでなく、2分後の心拍数の予測においても、ハイブリッドモデルが上回るという結果となりました。

以下が結果を表す図となります (詳しい図は[こちら](https://www.nature.com/articles/s41746-023-00926-4/figures/3)から) 。

![スクリーンショット 2024-11-27 11.29.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42150/fcbc3198-3fde-7b01-5512-148022d1967a.png)

(a) の表では、平均絶対誤差 (MAE) や平均絶対パーセント誤差 (MAPE) において、ハイブリッドモデルの精度が上回っていることが分かります。
個人の健康状態を表すベクトル _z_ を使わないseq2seqモデルとの比較もあり、 _z_ の有効性が分かります。

また、(b) のグラフは、灰色の線が実際の心拍数、赤色の線が予測した心拍数となっています。
点線は観測値の誤差範囲を表しており、高い確率で心拍数の予測ができていることが分かります。

実験ではランニングを対象としましたが、ウォーキングやサイクリングなど、他の運動にも応用できると考えられます。

### VO2 maxや消費カロリーの推定
VO2 max (心肺機能の指標) と学習されたパラメータには高い相関が見られました。
一般的にVO2 maxの測定は容易ではありませんが、心拍数やユーザ情報を使用してVO2 maxの概算が可能になります。

また、運動中に消費されるカロリーは、運動中の心拍数を使用して概算できます。
心拍数の予測により、カロリー消費のための運動計画の作成に役立つと考えられます。

# まとめ
Appleの研究は、多くのデータと機械学習の力を活用し、ウェアラブルデバイスを「未来を予測する健康管理ツール」に進化させています。
今回紹介した技術は、ウェアラブルデバイスのさらなる可能性を引き出し、個人に最適化された運動や健康管理を支援する新しい一歩となるでしょう。

興味のある方は、ぜひAppleの研究ブログやNatureの論文をチェックしてみてください。

https://www.nature.com/articles/s41746-023-00926-4

Medley Advent Calendar 2024、明日は [@yujittttttt](https://x.com/yujittttttt) さんです！

---

メドレーではエンジニアを募集しています！

https://www.medley.jp/jobs/

TechBlogはこちら！

https://developer.medley.jp/