iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
AI & Data

感知你的動作與情緒:深度學習在人機互動的應用系列 第 18

Day 18 | 心跳、皮膚電、呼吸… 生理訊號與情緒感知的交叉應用

  • 分享至 

  • xImage
  •  

前言

心跳變快、手心微汗、呼吸變淺,這些微小的變化比語言更早發生,也更難「偽裝」。隨著穿戴感測器與邊緣運算普及,用多種生理訊號推估情緒狀態已不再只是實驗室話題;它能協助客服調整話術、車載系統預警疲勞、學習平台動態調難度、健康 App 早期偵測壓力過載。

今天帶你看:從「為什麼多模態」 → 怎麼前處理與標註 → 怎麼做融合與個體化 → 怎麼評估 → 最後給一個最小可行原型(MVP)清單。


一、為什麼要「多生理訊號」?

單一訊號常受環境或動作影響(例如運動時心跳上升未必等於焦慮)。多模態能互補:

  • 心跳(HR/HRV):交感/副交感張力的綜合指標,對「壓力/放鬆」敏感。
  • 皮膚電反應(EDA/GSR):交感神經直接驅動,對「喚醒度(arousal)」特別靈。
  • 呼吸(RSP):速率與變異反映緊張與放鬆節律。
    多訊號一起看,可將「喚醒度(高/低)」與「情緒效價(正/負)」拆解,對應到常見的二維情緒空間(valence–arousal)。

EDA ≈ 喚醒度、HRV/呼吸 + 語境 ≈ 情緒效價線索


二、訊號速覽

量什麼、看什麼、注意什麼?

1) 心跳:ECG/PPG → HR/HRV

硬體:胸貼 ECG、手錶 PPG。
常用特徵
* 時域 HRV:RMSSD, SDNN(R–R 間期變異)。
* 頻域 HRV:LF (0.04–0.15 Hz), HF (0.15–0.4 Hz), LF/HF
* 非線性:Poincaré SD1/SD2

  • 常見噪聲:運動造成 PPG 漂移;R 峰偵測錯誤。

2) 皮膚電反應:EDA(Tonic/Phasic)

  • 硬體:指尖或手掌電極、智慧手環。
  • 常用特徵
    • Tonic:皮膚導電水準 SCL(慢變化)。
    • Phasic:皮電反應 SCR 數量/幅度/上升速率(事件型)。
  • 注意:乾燥、溫度、接觸品質影響大;校正與基線很重要。

3) 呼吸:RSP(胸帶/鼻壓/PPG)

  • 硬體:胸腹帶、鼻壓感測、或由 PPG 導出呼吸率(Respiratory Sinus Arrhythmia)。
  • 常用特徵:呼吸率、深度、呼吸不規則度、呼氣/吸氣比。
  • 注意:說話與大動作會干擾;與語音任務需分離分析。

4) 輔助訊號

  • 皮膚溫度:緩慢反映壓力與環境。
  • 加速度/姿態:用來解釋心跳上升是否來自運動(去除假陰性/陽性)。

三、資料流程

  1. 同步
    目標: 讓不同感測器的資料時間對得上。
    怎麼做:
    • 用 NTP 校時,或記錄 App/藍牙送出的事件時間戳記。
    • 沒有共用時鐘時,做一個同步點:例如大家一起拍手 3 下或深吸一口氣,之後用這個動作在各訊號上對齊。
    小提醒: 多半把誤差壓在 ±100–200 ms 以內就夠用。

  2. 前處理

  • ECG/PPG(心電/光學心跳):帶通 0.5–40 Hz、處理動作干擾;做 R 峰(ECG)或脈搏峰(PPG)偵測。
  • EDA(皮膚電反應):去趨勢、低通 < 1–2 Hz;需要時用 cvxEDA 把慢變的 SCL和快變的 SCR分開。
  • RSP(呼吸):帶通 0.05–1 Hz,找呼吸峰/谷算呼吸率與節律。
  • 共同做法:用 30–60 秒移動視窗抽特徵(每 5–10 秒滑一下),並做以人為單位的 z-score 正規化(用個人平均/標準差標準化),避免個體差異吃掉效果。
  1. 標註
  • 事件式:丟刺激或設計情境(例如 IAPS 圖像、調整題目難度、客服情境腳本),記下開始/結束時間。
  • 自評:請使用者用 SAM 或 效價/喚醒度兩軸滑桿打分,或用 5 分量表簡單註記。
  • 弱監督:沒有標註時,先用分群或分位數把喚醒度明顯高/低的片段挑出來,當成高信心樣本讓模型先跑起來。
  1. 資料切分
  • 受試者內(intra-subject) 先做:每個人各自訓練/驗證,因為每人的基線不同,最容易先看到成果。
  • 跨受試者(inter-subject) 再做:加入個人特徵(例如年齡、性別、裝置位置)、做以人為單位的正規化或轉移學習,提升泛化能力

四、建模與融合

** 單一訊號的「基本款」**:
• 做法:把 HRV、EDA、RSP 各自抽出重點特徵(例如 HR、RMSSD;SCL、SCR/分鐘;呼吸率),丟進 邏輯迴歸或 XGBoost。
• 為什麼:這兩個模型可解釋、調整快,拿來 A/B 很方便。
• 你會得到:
• 每個模態自己的準確度/特徵重要度
• 哪些情況容易失準(例如跑步時 PPG 爆震)

小叮嚀:如果「基本款」都不到 0.6–0.7 的準確度,先回頭檢查感測品質/前處理,不要急著上深度學習。

深度學習
1D CNN / LSTM:把每條生理訊號當時間序列吃進去。
2D CNN(生理影像):把多個頻帶能量堆成一張圖(通道 × 頻帶),讓模型看形狀。
什麼時候值得:資料量夠、你需要跨人泛化或想抓更複雜的時序關係。

心法:深度模型請先小再大,避免過度擬合;先用較短的輸入窗(例如 6–8 秒)驗證可行,再拉長。

** 怎麼把多種訊號「合起來」** :
** Early fusion(早期融合)**:把 HRV + EDA + RSP 的特徵直接拼在一起,丟同一個模型。
• 像把三種食材拌成一盤沙拉再一起吃。
• 優點:模型一次學到所有關係。
• 缺點:有一種訊號很吵時,會拖累其他
Late fusion(後期融合):三個模態各自輸出一個「是/不是」的機率,再加權平均或丟給下一層小模型做決定。
注意力權重
• 若動作偵測高(手表加速度大),就降低 PPG 權重。
• 若正在說話或麥克風偵測到長句,短時間內降低呼吸權重。
• 這可以用簡單規則先做(例如把權重砍半),日後再換成可學的 attention。

  • 個體化
    z-score by subject:每個人用自己的平均/標準差做標準化,先把「體質差」消掉。
    快速微調:先用群體資料訓一個通用模型,再用少量個人資料(例如 2–5 分鐘)微調最後幾層或做後端校正(logistic recalibration)。
    常見做法:第一次使用 App 時跑一段短校正流程(放鬆 2 分鐘、專注 2 分鐘),把個人基線建起來。
  • 推論穩定
    時間平滑(推薦):對連續分數做 EMA(指數移動平均)。
    • 預設:視窗 2–3 秒,更新步長 0.5–1 秒。
    進出門檻不同(遲滯):進入「高喚醒」要 > 0.6,退出要 < 0.4,避免來回抖動。
    冷卻時間:狀態剛切換後 10–20 秒內不要再切,讓介面有可讀性。
    低信心就少動作:模型機率接近 0.5、或各模態打架時,先顯示「不確定」,不要推太進取的指令。

五、場景腳本

A. 客服與對話系統(語氣+生理)

  • 觸發:EDA SCR 連續上升 + HRV 下降 → 高喚醒/可能挫折。
  • 策略:縮短話術、提供一鍵捷徑、先反映情緒再提方案。
  • 話術模板:「我注意到你有點緊張,我們先用最快的方法:直接重設密碼(約 10 秒),可以嗎?」

B. 車內助理(安全優先)

  • 觸發:呼吸變慢變淺 + 眨眼頻率下降(結合視覺)→ 疲勞風險。
  • 策略:語音提醒 + 開窗/調溫、導航改為簡短指示、暫停複雜互動。

C. 學習/冥想 App(自我回饋)

  • 觸發:HRV(HF 成分)回升 + 呼吸率下降 → 放鬆進展。
  • 策略:即時視覺化進度條,給正向回饋,解鎖下一階段練習。

六、評估不要只看「準確率」

  • 離線:F1/Macro-F1、AUC;回歸任務看 CCC(concordance corr)。
  • 線上:任務完成率、平均處理時間、情緒弧線是否朝穩定收斂。
  • 魯棒性:運動干擾下的表現、不同溫濕度/皮膚狀態、不同裝置。
  • 公平性:年齡/性別/膚色/健康狀態對訊號品質影響,需做分層檢查。
  • 人因:是否造成壓力回授(biofeedback 過強讓人更緊張?)。

七、倫理與隱私

  • 明確告知與同意:用途、資料項目、保存期限、退出機制。
  • 最小化原則:只存必要特徵或匿名化後的衍生量,原始波形能不留就不留。
  • 在地法規:GDPR/CCPA/地方法規;生理資料常被視為敏感個資。
  • 邊緣優先:能在裝置端運算就不要上傳雲端;必要時做差分隱私/安全通道。

八、最小可行原型(MVP)清單

  1. 感測:手錶 PPG(取 HR/HRV)+指套 EDA+胸帶呼吸或由 PPG 推呼吸率。
  2. 前處理與特徵(30 秒窗,步進 5–10 秒):
    • HRV:HR, RMSSD, LF/HF;EDA:SCL, SCR/min;RSP:RR, irregularity
  3. 標註:簡單二分類(低/高喚醒),用問卷或腳本誘發;沒有標註時用分位數弱監督先跑起來。
  4. 模型:LogReg/XGBoost(baseline)+簡單 1D CNN(可選);late-fusion 出最終分數。
  5. 推論策略:閾值 τ + EMA 平滑 + 冷卻 10–20 秒。
  6. 儀表板:顯示狀態圈、信心條、近 2 分鐘趨勢;提供「我好/還好/不好」按鈕當線上校正。

從特徵到策略的對照表

訊號變化 可能意義 建議系統動作
HR 上升 + RMSSD 下降 + SCR ↑ 高喚醒/壓力 縮短路徑、預期管理、提供人工協助
HF↑(副交感)+ 呼吸變慢 放鬆 正向回饋、進入更深層練習
運動偵測↑ 但 EDA/HR 同步↑ 活動造成的生理變化 降低情緒判斷權重、延後決策
連續低信心 感測品質差 提醒調整配戴/接觸,暫停情緒推論

注意:

  • 把喚醒誤當情緒:高喚醒不一定是「負面」,要結合語境或行為。
  • 忽略個體差異:同一事件,不同人基線差很大;個體化校正是關鍵。
  • 沒有處理動作偽影:PPG/EDA 對運動很敏感;務必加入加速度訊號作為控制變數。
  • 過度自動化:低置信時請少做決策,改為詢問或等待更多證據。

結語

情緒感知不是要讓系統「讀心」,而是讓系統更會對人。把心跳、皮膚電、呼吸放在一起看,先用 可解釋的基線 確認訊號可用,再逐步引入深度模型與融合,並以 個體化校正時間平滑低置信保守策略守住體驗。當這條鏈路(感測→理解→回應)穩了,無論是客服、車載、學習或健康場景,都能把情緒感知當成一顆可靠的模組接進產品。


上一篇
Day 17 | OpenBCI 腦波數據 × 深度學習:從訓練到應用簡例
系列文
感知你的動作與情緒:深度學習在人機互動的應用18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言