iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
AI & Data

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

Day 21 | 推薦系統 × 情緒 × UI:互動設計實作

  • 分享至 

  • xImage
  •  

前言

大多數推薦系統只學「你點了什麼」,很少理解「你當下的狀態」。但人在不同情緒下,偏好會位移:通勤路上想看輕鬆短內容,下班後才有耐心讀長文;焦慮時偏向保守選項,放鬆時較願意探索。把情緒訊號導入推薦,能讓系統少一點「理所當然」、多一點「懂當下的你」。今天的內容,把情緒融入推薦的關鍵做法逐步拆解:資料蒐集 → 模型思路 → 互動介面 → 監測與倫理。


為什麼把情緒放進推薦?

  • 情境敏感:同一位用戶在不同時段/場所/心境,需求不同。
  • 探索/利用切換:激發程度高時可多探索、疲憊時優先穩妥。
  • 降低反感:避免在壓力高時推送容易造成負擔或爭議的內容。

心理學常用 價性–激發(Valence–Arousal) 二維情緒分析:

  • 價性:一個人的情緒正面/負面程度
  • 激發:情緒激動/平靜程度
    實務上不必輸出「快樂/憤怒」等離散情緒,估一個(價性、激發)或「低/中/高」就夠用。

資料與標註:怎麼知道用戶當下狀態?

資料來源(依侵入度由低到高):

  1. 行為線索(最低成本):停留時間、滑動節奏、夜間使用、取消/收藏、重讀率。
  2. 語意線索:搜尋/對話用詞中的情緒強度(例如:「崩潰」「放空」)。
  3. 裝置情境:時間、位置類型(家/通勤/公司)、系統鈴聲模式。
  4. 自我回報(最可靠):簡單選單或滑桿(「現在想放鬆 / 想學習」)。
  5. 生理訊號:心率變異、皮膚電、呼吸;僅在自願且本地處理。

標註策略:

  • 弱標註:用行為門檻(如連續快滑+停留 < 2s)推估高激發;收集高置信樣本起步。
  • 輕量問答:每天一次「今天想要輕鬆還是刺激?」作為校正點。
  • 冷啟動問卷:兩題就好,避免打擾。

系統藍圖(MVP)

感知層:行為/語意/自報 → 情緒估計器(valence, arousal)
特徵層:把情緒、時間、情境合併進用戶/內容特徵
排序層:基礎候選集召回 → 內容打分(點擊/全文讀畢/滿意度混合目標)
重排層:依情緒做 re-ranking(探索/利用、風險控管)
UI 層:可見/可控的心情開關、解釋、低干擾提醒
回饋層:👍👎/略過原因/「不要這類」→ 線上持續學習


模型設計:先簡單、能解釋,再慢慢加深

  • Baseline:內容嵌入 + 協同過濾 + 情境特徵(時間/裝置)
    • 在特徵中加入 (valence_bucket, arousal_bucket)mood_onehot
    • Loss 用多目標混合:0.6*點擊 + 0.4*全文讀畢/停留,避免只學到釣魚標題。
  • 重排序(Re-ranking)
    • 規則版:激發高→提高短內容/簡單任務分數;價性負→降低爭議類內容分數。
    • 模型版:加一層 𝑓(候選×情緒特徵) 的小 MLP re-ranker。
  • 線上學習(Bandit/偏好學習)
    • 保留 10% 探索名額,讓系統不會被舊偏好鎖死。
    • 以「採納/停留/回訪」作為獎勵回饋,逐日微調權重。

UI 設計:把「情緒」做成好用不打擾的體驗

三個必備元件:

  1. 心情微控
    • 兩鍵切換:「想放鬆/ 想刺激」;或三段式「輕鬆 / 一般 / 挑戰」。
    • 預設跟著模型推斷,永遠可手動覆蓋,且 1 小時後自動恢復預設。
  2. 微型解釋
    • 例如「今晚幫你排多一點輕鬆讀物(因為你最近都看 5 分鐘以下的篇幅)。」
  3. 低干擾提醒
    • 當情緒估計變化大時,以 訊息條 提示「要不要換成輕鬆一點的內容?」(不跳對話框)。

讓回饋成本降到最低:

  • 卡片上放 「減少這類」/「太長」/「太刺激」 三個原因,一鍵送回。
  • 永遠有 撤銷(Undo),減少誤觸成本。

決策邏輯

  • 探索/利用切換
    • 激發高 or 時段 = 早上通勤 → 增加探索比例(短、廣)。
    • 激發低 or 夜深 → 降低探索,優先穩定高滿意內容。
  • 風險與敏感度
    • 價性負 & 高激發 → 降低爭議/刺激內容權重;必要時改推中性/舒緩類。
  • 冷卻(緩衝)時間
    • 一旦使用者手動切換心情,至少 30 分鐘不自動覆蓋
  • 低信心交回人
    • 情緒模型信心 < 0.55 時,僅採用行為與時間情境特徵,不使用情緒 re-ranking。

評估指標:離線 + 線上 + 體驗

  • 離線:AUC/Recall@K、Coverage(覆蓋度)、Novelty(新鮮度)。
  • 線上:採納率、全文讀畢率、回訪率、探索點擊率、撤銷率(過高表示打擾)。
  • 體驗:簡版 NASA-TLX(工作負荷),CSAT(滿意度),被理解感量表。
  • 分層監測:新舊用戶、不同時段、不同群體的指標是否一致。

隱私與倫理(務必預先內建)

  • 在地化告知與同意:清楚說「可能會用你的操作與自願回報來調整推薦」。
  • 最小化:不必收就不收;生理訊號若使用,盡量只做裝置端處理,不上傳原始波形。
  • 關閉與導出:提供「不要用我的資料做個人化」的選項與資料匯出機制。
  • 風險守門:敏感主題(身心健康、財務)在負面情緒下減少曝光。

MVP 實作清單

  • 資料:事件流水(曝光、點擊、停留、略過原因),每日匯總。
  • 情緒估計:先用 行為弱標註 + 每日一次心情小問,估出 3 段激發;裝置端快取。
  • 模型
    • 召回(協同或向量相似)→ 打分(GBDT/小 MLP)→ 規則重排(看激發)。
    • 線上保留 10% 探索流量;每日小篇幅更新。
  • UI:心情切換鈕、微型解釋、三個「減少這類」原因、Undo。
  • 監測:採納率、全文讀畢率、探索率、撤銷率;分時段分群展示。
  • 守則:低信心不使用情緒重排、敏感類別降權、緩衝 30 分鐘。

小文案

  • 心情切換:「今天想放鬆看點輕鬆的?還是想來點刺激挑戰?」
  • 解釋:「因為你最近都看短篇,我把篇幅 5 分鐘內的排前面。」
  • 提醒:「需要喘口氣嗎?要不要先看一些輕鬆內容?」
  • 撤銷:「已還原推薦。之後我們會少推這類內容。」

結語

把情緒放進推薦,不是要讀心,而是把情境納入決策。
從低侵入的行為線索起步,配上可見且可關閉的心情開關;用簡單可解釋的重排規則先上線,再逐步加入 bandit 與小型深度模型。記得把緩衝時間、低信心退回、敏感內容降權寫進規格,用「不打擾」當第一原則。當你的系統懂得看場合、願意被修正、持續學習,推薦就會真正「懂當下的你」,也更值得長期信任。


上一篇
Day 20 | AI 人機協作互動設計:與模型共同學習的新模式
下一篇
Day 22 | 多模態情緒感知的設計骨架
系列文
感知你的動作與情緒:深度學習在人機互動的應用24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言