嵌入式机器学习 - 学习笔记1.1.1 - 什么是机器学习?

1. 本章学习目标

学完本章后,你应该能够理解:

  1. Artificial Intelligence,人工智能,Machine Learning,机器学习,Deep Learning,深度学习之间的关系。

  2. 为什么 AI 近几年受到高度关注,以及深度学习革命背后的关键推动因素。

  3. 监督学习、回归、分类、无监督学习分别解决什么问题。

  4. 传统算法和机器学习算法的本质区别。

  5. 为什么这些基础概念对后续 Edge Impulse、TinyML、Arduino / ESP32 / Nordic 等嵌入式机器学习项目很重要。

  6. 如何把本章的 AI / ML 基础知识迁移到 EEG、ECG、EMG、PPG、HRV、GSR / EDA 等生理信号监测 TinyML 项目中。

2. 本章内容导读

本章由 Alexander Fred-Ojala 讲解,主题是 "What is Machine Learning",也就是"什么是机器学习"。这一章不是直接动手做项目,而是为后续 TinyML 实战打基础。课程先从人工智能为什么重要讲起,再解释人类智能和人工智能的关系,随后梳理 Data Science、Artificial Intelligence、Machine Learning 和 Deep Learning 的层级关系。接着,本章回顾了 AI 的发展历史、几次 AI 热潮和低谷,并总结当前深度学习革命背后的四个关键推动因素:更多数据、更强算力、新算法和更广泛的社会关注。最后,本章介绍机器学习的主要类型,包括监督学习中的回归和分类,以及无监督学习中的聚类、降维、异常检测等任务。

3. 正文笔记

3.1 为什么学习 TinyML 前要先理解 AI 和机器学习?

很多初学者一接触 Edge Impulse、Arduino、ESP32 或 TinyML,就容易直接关注"怎么训练模型""怎么部署到开发板"。但如果不先理解 AI 和机器学习的基本概念,后面很容易出现几个问题:

复制代码
只知道点按钮训练模型
→ 不知道模型到底在学什么
→ 不知道为什么要打标签
→ 不知道分类、回归、异常检测怎么选
→ 不知道模型为什么能泛化或不能泛化
→ 到 MCU 部署时也不知道如何根据任务选择模型

本章的作用就是补上这一块基础知识。TinyML 虽然强调"在微控制器上运行机器学习",但它的核心仍然是机器学习:先从数据中学习规律,再把这个规律部署到设备端进行推理。

在 Coursera 的课程介绍中,这门课的目标就是让学习者理解机器学习系统的基本原理,并学习如何把模型部署到微控制器上运行。也就是说,TinyML 的完整学习路线并不是从硬件开始,而是从"数据、模型、训练、推理、部署"这一整套机器学习流程开始。


3.2 AI 为什么会被认为如此重要?

课程中引用了 Google / Alphabet CEO Sundar Pichai 对 AI 的评价:AI 是人类正在研究的最重要技术之一,甚至可能比电或火更深刻。类似说法现在已经非常常见,比如"数据是新的石油""AI 是新的基础设施"等。

这些说法听起来有点夸张,但背后有一个核心原因:AI 的本质是人类正在创造一种外部智能。

过去,机器主要帮助人类完成体力劳动或重复性计算,例如:

复制代码
汽车 → 增强人的移动能力
电力 → 增强人的生产和生活能力
计算机 → 增强人的计算和信息处理能力
互联网 → 增强人的连接和信息传播能力
AI → 尝试增强人的判断、识别、预测和决策能力

这就是为什么 AI 不只是一个软件工具,而是会影响各个行业的底层技术。Stanford HAI 的 AI Index 也把 AI 描述为一种正在影响技术、经济和社会的重要技术,并持续跟踪 AI 的技术进展、经济影响和社会影响。

对于 TinyML 来说,这种影响会进一步下沉到嵌入式设备中:AI 不再只运行在云服务器或电脑上,而是可以运行在手表、传感器、耳机、工业节点、医疗可穿戴设备和低功耗 MCU 上。


3.3 人类智能和人工智能的关系

课程中先解释了人类智能。人类智能并不容易被严格定义,哲学家、神经科学家、心理学家和计算机科学家都讨论过这个问题。但从工程角度看,人类智能至少包括以下能力:

复制代码
解决问题
设定目标并实现目标
分析过去、现在和未来
进行推理和判断
与他人沟通
协作完成任务
影响他人的决策
形成社会和文明
拥有意识、情绪、直觉、想象力和创造力

人工智能并不是完整复制人类智能,而是让机器、系统、模型或计算机在某些方面模拟甚至增强人类智能。

更正式地说,Russell 和 Norvig 在《Artificial Intelligence: A Modern Approach》中把 AI 统一到"智能体 Intelligent Agent"的框架下:AI 研究的是能够从环境中接收感知信息,并采取行动影响环境的智能体。这个定义很适合嵌入式系统,因为一个 TinyML 设备通常也是这样工作的:传感器感知环境,模型进行判断,设备再通过显示、通信、控制或报警产生动作。

例如,一个 生理信号监测设备可以这样理解:

复制代码
环境 / 人体状态
→ 生理信号传感器采集电信号
→ MCU 读取数据
→ TinyML 模型判断当前状态
→ 设备输出提示、记录数据或通过 BLE 发送结果

这个过程本质上就是一个小型的智能体系统。


3.4 Data Science、AI、Machine Learning、Deep Learning 的关系

本章用一个由大到小的层级关系来解释几个核心术语:

复制代码
Data Science 数据科学
└── Artificial Intelligence 人工智能
    └── Machine Learning 机器学习
        └── Deep Learning 深度学习
3.4.1 Data Science:数据科学

Data Science,数据科学,是最宽泛的概念。只要使用科学方法、统计方法、算法或工具从数据中提取知识,并帮助做出更好的决策,都可以算作数据科学。

它可以出现在很多场景中:

场景 数据科学在做什么
金融投资 用历史数据辅助投资策略
电商平台 分析用户行为和推荐商品
医疗健康 从生理数据中寻找健康状态变化
工业设备 分析振动、电流、温度判断设备状态
TinyML 项目 从传感器数据中训练可部署模型

所以,数据科学不一定等于 AI,也不一定等于深度学习。Excel 统计、Python 数据分析、机器学习建模,都可以属于数据科学的一部分。

3.4.2 Artificial Intelligence:人工智能

AI 是数据科学中的一个重要方向,强调让机器表现出某种"智能行为"。

在 TinyML 场景中,AI 不是指科幻电影中的机器人意识,而是指设备能够根据传感器数据做出某种判断,例如:

复制代码
听到关键词 → 唤醒语音助手
检测到异常振动 → 判断机器可能故障
检测到特定手势 → 控制设备
检测到生理信号变化 → 判断压力、疲劳或疼痛状态可能变化
3.4.3 Machine Learning:机器学习

Machine Learning,机器学习,是 AI 的一个子集。它的核心思想是:不再完全由人手写规则,而是让模型从训练数据中学习规则。

传统程序一般是:

复制代码
人写规则
+ 输入数据
→ 程序输出结果

机器学习则是:

复制代码
输入数据
+ 正确答案 / 标签
→ 训练过程
→ 学到模型规则

然后在实际使用时:

复制代码
新输入数据
+ 训练好的模型
→ 预测结果

IBM 对机器学习算法的分类中,也将机器学习算法分为监督学习、无监督学习和强化学习等基本类别。

3.4.4 Deep Learning:深度学习

Deep Learning,深度学习,是机器学习中的一个子集。它通常使用多层神经网络,通过一层一层的计算学习数据中的表示。

可以这样理解:

复制代码
传统机器学习:人先设计特征,模型再学习分类规则
深度学习:模型尝试从原始数据中逐层学习特征和规律

例如在图像识别中,深度学习模型可能从边缘、纹理、局部形状逐渐学到物体类别。在语音识别中,它可能从声音频谱中学习关键词特征。在生理信号项目中,深度学习模型可能从 ECG、EMG、PPG、GSR / EDA 波形中学习状态变化模式。

但对于 TinyML 来说,并不是越深越好。因为 MCU 的 RAM、Flash、算力和功耗有限,很多时候需要轻量模型、量化模型,甚至传统特征 + 小型分类器。


3.5 AI 不是新东西:从早期数学方法到几次 AI 热潮

本章强调一个重要观点:AI 并不是最近几年才出现的新技术。

很多机器学习中的数学思想,比如线性回归、最小二乘、概率统计、分类模型,早在现代深度学习之前就已经存在。只是近几年由于数据、算力、算法和社会关注度同时成熟,AI 才进入了新的爆发期。

3.5.1 1950 年代:AI 作为一个研究领域诞生

1956 年 Dartmouth Summer Research Project on Artificial Intelligence 通常被认为是人工智能作为研究领域的重要起点,Dartmouth 官方资料也将其描述为 AI 领域的一个奠基性事件。

在这个时期,人们开始非常乐观地设想"智能机器"和"认知计算机"。Frank Rosenblatt 的 Perceptron,感知机,也在这一时期成为神经网络早期历史中的重要模型。Cornell 的资料介绍,Rosenblatt 的感知机工作在当时远远超前,并为后来的神经网络发展埋下伏笔。

3.5.2 AI Winter:为什么 AI 会经历低谷?

AI 的发展并不是一直向上。历史上曾出现过几次 AI 热潮,然后又因为技术能力没有达到公众预期,进入所谓 AI Winter,人工智能寒冬。

这对今天学习 TinyML 很有提醒意义:不要因为某个模型在演示中效果很好,就直接认为它可以在真实场景中稳定可靠。尤其是生理信号项目,如果模型只在少量数据上表现不错,还不能说明它已经适合真实医疗或健康监测应用。

3.5.3 2010 年代以来:深度学习革命

课程中把当前这轮 AI 热潮称为 Deep Learning Revolution,深度学习革命。它大致从 2010 年代开始,被认为是 AI 真正进入大规模应用的时期。

本章总结了当前深度学习革命的四个推动因素:

推动因素 通俗解释 对 TinyML 的意义
更多数据 互联网、传感器、手机、可穿戴设备产生大量数据 可以训练更好的模型,也能建立传感器数据集
更强算力 CPU、GPU、专用加速器发展迅速 训练可以在云端完成,推理可以压缩后部署到端侧
新算法 深度学习、优化算法、模型压缩等不断进步 让小模型也能完成有效识别
广泛关注 政府、大学、企业和开发者都投入 AI 工具链成熟,学习资源和硬件平台更多

其中算力进步与摩尔定律密切相关。Intel 对 Moore's Law 的说明是,集成电路上的晶体管数量大约每两年翻倍且成本增长很小,这一趋势长期影响了半导体和计算机行业发展。

对 TinyML 来说,深度学习革命的意义不是把大型模型直接塞进 MCU,而是让我们可以在云端训练模型,再通过量化、压缩和优化,把适合任务的小模型部署到嵌入式设备上。


3.6 机器学习的三类基本任务

本章重点介绍了机器学习算法的主要类别,其中最重要的是监督学习和无监督学习。

3.6.1 Supervised Learning:监督学习

Supervised Learning,监督学习,是指训练数据中同时包含输入数据和正确答案,也就是标签 Label。IBM 对监督学习的解释是:它使用带标签的数据集训练 AI 模型,使模型学习数据中的模式和关系,并在新数据上预测正确输出。

监督学习可以理解为"带答案的练习题":

复制代码
输入:一段传感器数据
答案:这个数据属于哪一类
模型:根据大量样本学习输入和答案之间的关系

在 TinyML 中,监督学习非常常见,例如:

项目 输入数据 标签
手势识别 加速度计 / 陀螺仪窗口 上下挥动、左右挥动、静止
关键词识别 麦克风音频窗口 yes、no、unknown、noise
ECG 分类 心电波形 正常、异常、不同心律类别
EMG 动作识别 肌电信号 握拳、张手、屈腕、伸腕
GSR / EDA 疼痛监测 皮肤电时间序列 无痛、轻度疼痛、中度疼痛等

监督学习又可以继续分成回归和分类。


3.6.2 Regression:回归

Regression,回归,用于预测连续数值。

例如:

复制代码
输入:房屋面积、位置、房龄
输出:房价

在生理信号项目中,回归可以用于:

复制代码
输入:GSR / EDA、HRV、PPG、EMG 等窗口特征
输出:预设标签

或者:

复制代码
输入:PPG 波形
输出:心率数值

回归任务的重点是预测一个连续变量,而不是判断类别。IBM 对监督学习中回归的说明也强调,回归方法常用于理解变量之间关系并预测数值结果。


3.6.3 Classification:分类

Classification,分类,用于预测离散类别。

例如:

复制代码
输入:一张图片
输出:猫 / 狗 / 其他

在 TinyML 中,分类是最常见的任务之一:

应用 分类目标
手势识别 判断是哪一种手势
语音关键词识别 判断是否说出某个关键词
工业异常检测 判断设备正常或异常
ECG 状态识别 判断心律类别
GSR / EDA 状态识别 判断压力 / 疼痛 / 放松状态

如果你后续在 Edge Impulse 中看到 "Classification" 学习模块,它对应的就是这种任务。


3.6.4 Unsupervised Learning:无监督学习

Unsupervised Learning,无监督学习,是指训练数据没有人工提供的正确标签,模型需要自己从数据中寻找结构。IBM 对无监督学习的解释是:无监督学习使用 ML 算法分析和聚类未标注数据,从中发现隐藏模式或数据分组。

无监督学习常见任务包括:

任务 含义 生理信号项目中的例子
Clustering 聚类 把相似数据分组 自动发现不同生理状态模式
Dimensionality Reduction 降维 把高维数据压缩成低维表示 可视化多通道 EEG / EMG 特征
Outlier Detection 异常检测 找出与正常模式不同的数据 发现异常心电、异常皮肤电反应
Segmentation 分段 根据模式变化切分数据 把长时间生理信号分成不同状态片段

无监督学习特别适合早期探索数据。例如你还没有可靠疼痛标签,但已经采集了多组 GSR / EDA、PPG、HRV 数据,就可以先用聚类或可视化方法看看不同实验阶段的数据是否自然分开。


4. 传统算法和机器学习算法的区别

本章最后用一个非常重要的对比来总结机器学习的本质。

4.1 传统算法:人写规则

传统算法通常是:

复制代码
人类设定规则
+ 输入数据
→ 程序输出结果

例如:

复制代码
如果温度 > 38℃
→ 判断发热

这种方法的优点是简单、可解释、可控;缺点是面对复杂数据时,很难手写完整规则。

4.2 机器学习算法:模型从数据中学习规则

机器学习则是:

复制代码
输入数据
+ 正确答案
→ 训练过程
→ 学到模型参数 / 规则

训练好以后:

复制代码
新输入数据
+ 训练好的模型
→ 预测结果

这就是本章最核心的思想:机器学习不是完全不要规则,而是把规则从"人手写"变成"模型通过数据学习"。

4.3 Generalization:泛化能力

Generalization,泛化能力,是判断机器学习模型是否真正有用的关键。

如果模型只在训练数据上表现好,但遇到新数据就失效,说明它只是"背题",没有真正学到规律。

对于 TinyML 和生理信号项目,泛化能力尤其重要:

复制代码
同一个人在不同时间测量 → 信号会变
不同人之间 → 生理差异更大
不同电极位置 → 信号会变
不同运动状态 → 噪声会变
不同设备和 ADC → 数据分布也会变

因此,模型训练时要注意数据集划分、交叉验证、受试者差异、实验标签可靠性和真实场景测试。


5. 关键概念解释

概念 通俗解释 技术解释 在本章中的作用
Data Science 数据科学 用数据帮助做判断 使用统计、算法和科学方法从数据中提取知识 是 AI / ML 所在的大背景
Artificial Intelligence 人工智能 让机器表现出智能行为 构建能感知、推理、决策或行动的系统 是本章讨论的最大技术方向
Machine Learning 机器学习 让机器从数据中学规律 通过训练数据学习模型参数,并对新数据预测 是 TinyML 的算法基础
Deep Learning 深度学习 多层神经网络学习复杂规律 使用多层模型逐级学习数据表示 是当前 AI 热潮的重要来源
Supervised Learning 监督学习 带答案训练模型 使用输入和标签训练模型 对分类、回归、生理信号识别非常重要
Regression 回归 预测连续数值 输出连续变量,例如评分、心率、趋势 可用于疼痛评分、心率估计
Classification 分类 判断属于哪一类 输出离散类别 可用于手势、语音、生理状态分类
Unsupervised Learning 无监督学习 没有答案,让模型自己找规律 从未标注数据中发现结构 可用于聚类、异常检测、数据探索
Training 训练 让模型做练习题 使用训练数据优化模型参数 生成可部署模型
Inference 推理 用训练好的模型判断新数据 在新输入上运行模型得到输出 MCU 端运行的主要阶段
Generalization 泛化 换一批新数据也能判断对 模型对未见数据保持性能的能力 决定模型是否有真实应用价值
TinyML 小设备上的机器学习 在 MCU 等资源受限设备上运行 ML 推理 后续课程核心方向

6. 本章案例复盘

本章没有直接完成一个 Edge Impulse 项目,但通过几个典型例子帮助理解机器学习。

案例 / 例子 说明 对 TinyML 入门的启发
垃圾邮件识别 判断邮件是 spam 还是 legitimate 是典型分类任务
房价或数值预测 根据输入特征预测连续结果 是典型回归任务
手写数字识别 用神经网络识别信封或包裹上的数字 说明神经网络很早就用于模式识别
数据聚类 在无标签数据中发现分组 可用于未标注传感器数据探索
传统算法 vs 机器学习 人写规则 vs 数据学习规则 解释为什么 ML 适合复杂传感器任务

如果迁移到 Edge Impulse 中,可以这样对应:

复制代码
采集数据
→ 给数据打标签
→ 选择 Processing block 提取特征
→ 选择 Learning block 训练分类 / 回归 / 异常检测模型
→ 测试模型泛化能力
→ 部署到 MCU 端实时推理

Edge Impulse 的 Processing blocks 用于从原始数据中提取特征,Learning blocks 用于训练分类、回归、异常检测等模型,这正好对应本章讲的"数据 → 特征 → 模型 → 预测"的机器学习流程。


7. 与生理信号监测 TinyML 项目的联系

7.1 共性:生理信号识别本质上也是机器学习问题

本章虽然讲的是 AI / ML 基础概念,但它与 EEG、ECG、EMG、PPG、HRV、GSR / EDA 生理信号项目关系非常大。

因为生理信号监测也可以被看作:

复制代码
输入:一段生理信号时间序列
输出:某种状态、类别或数值

例如:

生理信号任务 常见生理信号 机器学习类型 常见机器学习模型 任务说明 / 典型输出
判断是否疼痛 GSR / EDA、HRV、PPG、ECG、EMG 分类 Logistic Regression、SVM、Random Forest、XGBoost、MLP、1D CNN 输出"疼痛/不疼痛"或"有明显疼痛反应/无明显疼痛反应"
预测疼痛评分 0~10 GSR / EDA、PPG、HRV、ECG、EMG 回归 Linear Regression、SVR、Random Forest Regressor、XGBoost Regressor、MLP、1D CNN 输出连续数值,如 NRS/VAS 疼痛评分
判断是否疲劳 EEG、HRV、PPG、EMG、IMU 分类 SVM、KNN、Random Forest、XGBoost、MLP、CNN、LSTM 输出"疲劳/不疲劳"或"轻度/中度/重度疲劳"
估计心率 PPG、ECG 回归 Linear Regression、SVR、Kalman Filter + Regression、1D CNN、LSTM 输出心率值,单位 bpm
检测异常 ECG 波形 ECG 异常检测 / 分类 One-Class SVM、Isolation Forest、Autoencoder、CNN、LSTM、Random Forest 输出"正常/异常"或异常类型
自动发现不同压力状态 GSR / EDA、HRV、PPG、ECG 无监督聚类 K-means、DBSCAN、Gaussian Mixture Model、Hierarchical Clustering 在无明确标签时发现不同状态簇
情绪状态识别 GSR / EDA、PPG、HRV、EEG、ECG 分类 SVM、Random Forest、XGBoost、MLP、CNN、LSTM 输出"平静/紧张/兴奋"等情绪状态
压力检测 GSR / EDA、HRV、PPG、ECG 分类 / 回归 Logistic Regression、SVM、Random Forest、XGBoost、MLP、LSTM 输出"有压力/无压力"或压力评分
睡眠阶段识别 EEG、ECG、PPG、HRV、呼吸信号 分类 Random Forest、XGBoost、CNN、LSTM、CNN-LSTM 输出清醒、浅睡、深睡、REM 等阶段
注意力 / 专注度识别 EEG、PPG、HRV 分类 / 回归 SVM、Random Forest、MLP、CNN、LSTM 输出"专注/分心"或注意力分值
癫痫 / 异常脑电检测 EEG 分类 / 异常检测 SVM、Random Forest、CNN、LSTM、Autoencoder 输出"正常脑电/异常脑电"
心律失常识别 ECG 分类 SVM、Random Forest、XGBoost、CNN、LSTM 输出正常窦律、房颤、室早等类别
HRV 状态评估 ECG、PPG 分类 / 回归 Logistic Regression、SVM、Random Forest、XGBoost、MLP 输出压力、疲劳或自主神经状态
血氧估计 PPG 回归 Linear Regression、SVR、Random Forest Regressor、MLP、1D CNN 输出 SpO2 数值
呼吸频率估计 PPG、ECG、呼吸带、胸阻抗 回归 Linear Regression、Kalman Filter、SVR、LSTM 输出呼吸频率
跌倒检测 / 运动异常检测 IMU、EMG、PPG 分类 / 异常检测 Decision Tree、Random Forest、SVM、CNN、LSTM 输出"跌倒/未跌倒"或异常活动告警
手势 / 动作识别 EMG、IMU 分类 KNN、SVM、Random Forest、XGBoost、MLP、CNN 输出握拳、张手、屈腕等动作类别
肌肉疲劳识别 EMG 分类 / 回归 SVM、Random Forest、XGBoost、CNN、LSTM 输出"疲劳/不疲劳"或疲劳程度
康复动作评估 EMG、IMU、PPG 分类 / 回归 Random Forest、XGBoost、MLP、CNN、LSTM 输出动作是否标准、恢复程度
异常皮肤电反应检测 GSR / EDA 异常检测 / 分类 One-Class SVM、Isolation Forest、Autoencoder、Random Forest 输出"正常反应/异常反应"
个体身份识别 / 生物特征识别 ECG、EEG、EMG 分类 SVM、Random Forest、CNN、Siamese Network 输出受试者身份类别
多模态健康状态识别 ECG、PPG、HRV、GSR / EDA、EMG、EEG 分类 / 回归 Random Forest、XGBoost、MLP、CNN、LSTM、Transformer 输出压力、疲劳、疼痛、情绪等综合状态

这说明本章的监督学习、分类、回归、无监督学习,不是抽象概念,而是后续生理信号 TinyML 项目的任务选择依据。


7.2 不同生理信号的共同开发流程

无论是 EEG、ECG、EMG、PPG、HRV 还是 GSR / EDA,都可以统一放到 TinyML 流程中理解:

复制代码
传感器采集
→ 原始信号预处理
→ 数据分段 / 窗口化
→ 标注标签
→ 构建 Dataset
→ 特征提取
→ 模型训练
→ 模型评估
→ 量化与压缩
→ 部署到 MCU
→ 端侧实时推理

不同生理信号虽然来源不同,但在 TinyML 项目中都可以按照"采集 → 预处理 → 窗口化 → 标注 → 特征提取 → 模型训练 → MCU 部署 → 实时推理"的思路设计。下面分别以 EEG、ECG、EMG、PPG、HRV 和 GSR / EDA 为例说明。可以参考下列设计:

复制代码
EEG 脑电信号项目:
EEG 电极采集脑电信号
→ 模拟前端放大与滤波
→ MCU / 采集模块读取多通道脑电数据
→ 去除工频干扰、眼电伪迹、肌电伪迹
→ 按 1s / 2s / 5s 切成时间窗口
→ 标注清醒、疲劳、注意力集中、睡眠阶段等状态
→ 提取 Delta、Theta、Alpha、Beta、Gamma 频带能量等特征
→ 训练分类模型
→ 部署到 MCU 或边缘设备
→ 实时判断注意力、疲劳或睡眠状态

ECG 心电信号项目:
ECG 电极采集心电信号
→ 模拟前端 AFE 放大、滤波、保护
→ MCU ADC / SPI / I2C 读取心电波形
→ 去除基线漂移、工频干扰和高频噪声
→ 检测 R 峰、QRS 波群等关键波形
→ 按心搏或固定时间窗口切片
→ 标注正常心律、异常心律、运动前后状态等标签
→ 提取 RR 间期、心率、QRS 宽度、波形形态等特征
→ 训练分类或异常检测模型
→ 部署到 MCU
→ 实时判断心率、心律状态或异常 ECG 波形

EMG 肌电信号项目:
EMG 电极采集肌肉电活动
→ 模拟前端放大、带通滤波
→ MCU ADC 读取肌电信号
→ 整流、平滑、去除工频干扰
→ 按 100ms / 200ms / 500ms / 1s 切成窗口
→ 标注握拳、张手、屈腕、伸腕、肌肉疲劳等状态
→ 提取 RMS、MAV、ZC、SSC、频域能量等特征
→ 训练动作分类或疲劳识别模型
→ 部署到 MCU
→ 实时识别手势动作、肌肉活动或疲劳程度

PPG 光电容积脉搏波项目:
PPG 传感器采集脉搏波信号
→ MCU 通过 I2C / SPI 读取红光、红外光或绿光通道数据
→ 去除运动伪迹、环境光干扰和高频噪声
→ 检测脉搏波峰值和峰间距
→ 按 5s / 10s / 30s 切成窗口
→ 标注静息、运动、疲劳、压力等实验状态
→ 提取心率、峰间距、波形幅值、脉搏波形态等特征
→ 训练分类或回归模型
→ 部署到 MCU
→ 实时估计心率、血氧趋势、疲劳或压力状态

HRV 心率变异性项目:
ECG 或 PPG 采集心搏信息
→ 检测 R 峰或脉搏峰
→ 计算 RR 间期或 NN 间期
→ 去除异常心搏和错误峰值
→ 按 30s / 1min / 5min 切成分析窗口
→ 标注放松、压力、疲劳、疼痛前后等状态
→ 提取 SDNN、RMSSD、pNN50、LF、HF、LF/HF 等 HRV 特征
→ 训练分类或回归模型
→ 部署到 MCU 或边缘设备
→ 实时评估自主神经状态、压力或疲劳程度

GSR / EDA 皮肤电项目:
GSR / EDA 传感器采集皮肤电信号
→ MCU ADC 读取电压或电导变化
→ 滤波、平滑、去除明显异常值
→ 分离 SCL 皮肤电水平和 SCR 皮肤电反应
→ 按 5s / 10s / 30s 切成窗口
→ 标注无痛、轻度疼痛、中度疼痛、压力或情绪唤醒状态
→ 提取均值、斜率、峰值、SCR 次数、上升时间、恢复时间等特征
→ 训练分类或回归模型
→ 部署到 ESP32 / Nordic / STM32 等主控
→ 实时判断疼痛、压力或情绪唤醒状态

Biomedical TinyML 领域已经有面向低功耗可穿戴设备的基准研究,例如 BiomedBench 提出了一套面向实时患者监测的端到端 TinyML 生物医学应用,用于评估不同低功耗平台在采集、处理和空闲阶段的表现。


7.3 不同生理信号之间的差异

信号 信号来源 常见采集方式 采样率要求 常见预处理 常见特征 适合的 TinyML 任务 嵌入式部署难点
EEG 大脑电活动 头皮电极 通常较高 去工频、带通滤波、伪迹去除 频带能量、节律特征 注意力、疲劳、睡眠、脑机接口 信号弱、噪声大、电极要求高
ECG 心脏电活动 心电电极、AFE 中等到较高 基线漂移去除、QRS 检测 RR 间期、心率、波形形态 心率、心律异常、HRV 医学标签要求高,误判风险大
HRV 心搏间期变化 ECG 或 PPG 推导 依赖心搏检测质量 异常 RR 间期剔除 SDNN、RMSSD、频域指标 压力、疲劳、自主神经状态 需要较稳定心搏检测和较长窗口
EMG 肌肉电活动 表面肌电电极 通常较高 整流、包络、带通滤波 RMS、MAV、ZC、频域特征 手势识别、肌肉疲劳、康复评估 电极位置和肌肉状态影响大
PPG 脉搏波 / 血容量变化 光电传感器 中等 去运动伪迹、平滑滤波 峰间距、心率、脉搏波形 心率、血氧、疲劳检测 运动干扰明显
GSR / EDA 皮肤电活动 皮肤电电极 较低到中等 平滑、去趋势、分离 SCL / SCR 均值、峰值、上升时间、恢复时间 情绪唤醒、压力、疼痛反应 个体差异大,受汗液和接触影响

这张表的重点不是死记每个信号,而是理解:不同生理信号虽然采样方式和特征不同,但在 TinyML 中都要经历"采集、预处理、窗口化、特征提取、训练、部署"的共同流程。


7.4 VOFA+ 与 CSV 数据在 TinyML 项目中的作用

在 TinyML 项目中,CSV 不是普通表格,而是 Dataset 数据集的原始形态。如果通过 VOFA+ 采集 EEG、ECG、EMG、PPG、HRV、GSR / EDA 等生理信号并保存为 CSV 文件,这些数据后续就可以用于窗口化、特征提取、模型训练和 MCU 部署。不同生理信号的 CSV 列名会因采集设备、软件平台和采样方式不同而变化,例如 EEG 可能包含多个 EXG 通道,ECG 可能包含心电电压或 R 峰信息,PPG 可能包含 BVP、红光、红外光或绿光通道,EDA 可能包含皮肤电导、ADC 原始值或 SCR / SCL 特征,HRV 则可能由 IBI 或 RR 间期进一步计算得到。但从 TinyML 项目的角度看,这些 CSV 通常都可以统一整理成"时间戳 + 一个或多个信号通道 + 标签 + 实验信息"的结构。Edge Impulse 支持 CSV / TXT / Parquet 等数据导入方式,并可以通过 CSV Wizard 配置复杂数据的解析规则;OpenBCI / BrainFlow 等 EEG 采集工具也支持保存 CSV 或类 CSV 文本数据,其中 BrainFlow 的 EXG 通道通常以 μV 表示,时间戳可使用 Unix timestamp;Empatica E4 等可穿戴设备则常把 BVP / PPG、EDA、HR、IBI 等信号分别保存为多个 CSV 文件。因此,在生理信号 TinyML 项目中,合理设计 CSV 格式相当于提前规范数据集结构,是后续完成模型训练、评估和嵌入式部署的基础。(Edge Impulse Documentation)

7.5不同生理信号常见 CSV 格式示例

7.5.1. EEG 脑电信号 CSV

EEG 通常是多通道数据,列名常用电极位置命名,例如 Fp1、Fp2、C3、C4、O1、O2 等。OpenBCI 等设备会记录原始 EEG / EXG 数据,后续可用于离线处理、训练和实验分析。(OpenBCI)

复制代码
timestamp_s,eeg_fp1_uV,eeg_fp2_uV,eeg_c3_uV,eeg_c4_uV,eeg_o1_uV,eeg_o2_uV,marker,label
0.000,12.4,10.8,-5.2,-4.9,8.1,7.6,baseline,relaxed
0.004,13.1,11.0,-5.0,-4.7,8.5,7.8,baseline,relaxed
0.008,12.8,10.5,-5.4,-5.1,8.0,7.4,baseline,relaxed
...

常见列含义:

列名 含义
timestamp_s 时间戳,单位秒
eeg_fp1_uV、eeg_c3_uV 等 不同 EEG 电极通道,单位通常为 μV
marker 实验事件标记,例如 baseline、stimulus、rest
label 标签,例如 relaxed、focused、fatigue、sleep_stage
7.5.2. ECG 心电信号 CSV

ECG 可以是单导联,也可以是多导联。TinyML 入门项目中常见的是单导联 ECG,用于心率估计、心律异常识别或 HRV 计算。PhysioNet 是常用的生理信号数据库平台,长期提供 ECG 等多种生理信号数据和分析工具。(美国心脏协会期刊)

复制代码
timestamp_s,ecg_mV,r_peak,rr_interval_ms,heart_rate_bpm,label
0.000,0.12,0,,,
0.004,0.15,0,,,
0.008,0.21,0,,,
0.412,1.05,1,812,74,normal
0.416,0.72,0,,,
...

常见列含义:

列名 含义
timestamp_s 时间戳
ecg_mV ECG 电压值,单位 mV
r_peak 是否检测到 R 峰,1 表示检测到
rr_interval_ms 相邻 R 峰间隔,单位 ms
heart_rate_bpm 由 RR 间期计算得到的心率
label 标签,例如 normal、arrhythmia、exercise、rest

多导联 ECG 也可以写成:

复制代码
timestamp_s,lead_I_mV,lead_II_mV,lead_III_mV,V1_mV,V2_mV,label
0.000,0.12,0.18,0.06,-0.03,0.04,normal
0.004,0.14,0.20,0.07,-0.02,0.05,normal
0.008,0.20,0.31,0.11,0.01,0.08,normal
...
7.5.3. EMG 肌电信号 CSV

EMG 通常用于动作识别、肌肉疲劳识别、康复训练评估等任务。NeuroKit2 等工具也把 EMG 与 ECG、PPG、EDA 一起作为常见生理信号处理对象。(neuropsychology.github.io)

复制代码
timestamp_s,emg_ch1_uV,emg_ch2_uV,emg_ch3_uV,emg_ch4_uV,motion_label,fatigue_label
0.000,15.2,18.5,12.4,10.1,rest,no_fatigue
0.001,22.8,25.1,16.9,14.3,rest,no_fatigue
0.002,35.6,39.2,28.5,22.7,grip,no_fatigue
0.003,48.1,52.4,35.9,31.2,grip,no_fatigue
...

常见列含义:

列名 含义
timestamp_s 时间戳
emg_ch1_uV、emg_ch2_uV 不同肌电通道
motion_label 动作标签,例如 rest、grip、open_hand、wrist_flexion
fatigue_label 疲劳标签,例如 no_fatigue、fatigue

如果是做 TinyML 动作识别,可以只保留:

复制代码
timestamp_s,emg_ch1_uV,emg_ch2_uV,label
0.000,15.2,18.5,rest
0.001,22.8,25.1,rest
0.002,35.6,39.2,grip
...
7.5.4. PPG 光电容积脉搏波 CSV

PPG 常用于心率、血氧、疲劳、压力等任务。Empatica E4 的 BVP 信号就是由 PPG 传感器获得的血容量脉搏信号,相关数据常以 CSV 文件导出;一些公开可穿戴数据集也说明 PPG / BVP 采样率可为 64 Hz,EDA 可为 4 Hz。(empatica.com)

复制代码
timestamp_s,ppg_ir,ppg_red,ppg_green,acc_x,acc_y,acc_z,label
0.000,52341,42156,38520,0.01,0.02,0.98,rest
0.016,52388,42190,38560,0.01,0.02,0.98,rest
0.032,52410,42221,38605,0.02,0.01,0.97,rest
...

常见列含义:

列名 含义
timestamp_s 时间戳
ppg_ir 红外光 PPG 通道
ppg_red 红光 PPG 通道
ppg_green 绿光 PPG 通道
acc_x、acc_y、acc_z 三轴加速度,用于判断运动干扰
label 标签,例如 rest、walking、exercise、stress

如果是单通道 BVP / PPG,也可以写成:

复制代码
timestamp_s,bvp,heart_rate_bpm,label
0.000,0.014,72,rest
0.016,0.018,72,rest
0.032,0.025,73,rest
...
7.5.5. HRV 心率变异性 CSV

HRV 不是直接由一个独立传感器采集出来的原始信号,而是通常从 ECG 的 R-R 间期或 PPG / BVP 的 IBI 间期计算出来的特征。Empatica E4 数据中常见的 IBI.csv 就是心搏间期文件,资料中说明 IBI 文件通常包含检测到的心搏时间以及与前一次心搏之间的时间间隔。(Nature)

7.5.5.1 逐心搏 IBI / RR 间期格式
复制代码
beat_time_s,ibi_s,rr_interval_ms,heart_rate_bpm,label
1.024,0.812,812,74,rest
1.836,0.798,798,75,rest
2.634,0.805,805,75,rest
3.439,0.780,780,77,stress
...

常见列含义:

列名 含义
beat_time_s 当前心搏出现的时间
ibi_s Inter-Beat Interval,心搏间期,单位秒
rr_interval_ms RR 间期,单位 ms
heart_rate_bpm 心率
label 标签,例如 rest、stress、fatigue、pain
7.5.5.2 窗口级 HRV 特征格式

TinyML 训练时,更常见的是把 HRV 整理成窗口级特征:

复制代码
window_start_s,window_end_s,mean_hr_bpm,sdnn_ms,rmssd_ms,pnn50,lf_power,hf_power,lf_hf_ratio,label
0,60,72,48.2,35.6,0.18,530.2,420.5,1.26,rest
60,120,81,32.4,22.1,0.08,610.8,260.4,2.35,stress
120,180,78,36.7,25.9,0.11,580.1,310.7,1.87,fatigue
...

这种格式更适合传统机器学习模型,例如 SVM、Random Forest、XGBoost、MLP,也更容易用于疼痛、压力、疲劳状态分类。

7.5.6. GSR / EDA 皮肤电 CSV

GSR / EDA 常用于压力、情绪唤醒、疼痛反应等任务。Empatica E4 等设备会把 EDA 单独保存为 CSV 文件;公开数据集也常把 EDA 与 PPG / BVP、HR、IBI 等一起保存。(MindWare Technologies Support)

复制代码
timestamp_s,eda_uS,gsr_adc,gsr_voltage,scl_uS,scr_amplitude_uS,label
0.000,1.24,1234,1.21,1.20,0.00,no_pain
0.250,1.25,1238,1.22,1.21,0.00,no_pain
0.500,1.31,1245,1.25,1.22,0.08,mild_pain
0.750,1.42,1260,1.30,1.25,0.17,mild_pain
...

常见列含义:

列名 含义
timestamp_s 时间戳
eda_uS 皮肤电导,单位 μS
gsr_adc MCU ADC 读取到的原始数值
gsr_voltage 传感器输出电压
scl_uS Skin Conductance Level,皮肤电水平,偏慢变化
scr_amplitude_uS Skin Conductance Response,皮肤电反应幅值
label 标签,例如 no_pain、mild_pain、stress、relaxed

如果你现在是 VOFA+ + MCU 采集,最简单可以先保存成:

复制代码
timestamp_s,gsr_adc,label
0.00,1234,no_pain
0.01,1238,no_pain
0.02,1245,no_pain
...

后续再逐步增加:

复制代码
timestamp_s,gsr_adc,gsr_voltage,filtered_gsr,slope,label
0.00,1234,1.21,1.20,0.00,no_pain
0.01,1238,1.22,1.21,0.01,no_pain
0.02,1245,1.25,1.23,0.02,mild_pain
...
7.5.8汇总表:不同生理信号 CSV 常见列设计
生理信号 原始数据常见列 特征数据常见列 常见标签
EEG timestamp、Fp1、Fp2、C3、C4、O1、O2 delta、theta、alpha、beta、gamma 频带能量 relaxed、focused、fatigue、sleep
ECG timestamp、ecg_mV、lead_I、lead_II R 峰、RR 间期、心率、QRS 宽度 normal、arrhythmia、rest、exercise
EMG timestamp、emg_ch1、emg_ch2 RMS、MAV、ZC、SSC、频域能量 rest、grip、open_hand、fatigue
PPG timestamp、ppg_ir、ppg_red、ppg_green、bvp 峰间距、心率、脉搏波幅值、SpO2 相关特征 rest、walking、stress、fatigue
HRV beat_time、IBI、RR interval SDNN、RMSSD、pNN50、LF、HF、LF/HF rest、stress、fatigue、pain
GSR / EDA timestamp、eda_uS、gsr_adc、gsr_voltage SCL、SCR 幅值、SCR 次数、上升时间、恢复时间 no_pain、mild_pain、stress、relaxed

在 Edge Impulse 或 Python 训练流程中,这些 CSV 可以继续被整理成:

复制代码
训练集 Training set
验证集 Validation set
测试集 Test set

如果数据已经有标签,可以做监督学习;如果暂时没有可靠标签,可以先做数据可视化、聚类或异常检测。


7.6 Edge Impulse 在生理信号项目中的作用

结合本章机器学习流程,Edge Impulse 可以承担以下角色:

环节 Edge Impulse 的作用
数据管理 上传、管理不同类别或不同实验阶段的数据
数据标注 给窗口或样本添加标签
信号切片 按固定窗口长度切分时间序列
特征提取 使用 Raw Data、Spectral Analysis、Flatten、自定义 DSP 等处理块
模型训练 训练分类、回归或异常检测模型
模型评估 查看准确率、混淆矩阵、测试结果
模型部署 导出 Arduino / C++ / TFLite Micro 等部署格式

但要注意,Edge Impulse 不能替代医学验证。它可以帮助你快速完成原型验证,但不能证明模型已经具备临床诊断能力。


7.7 主控平台迁移分析

本章讲机器学习基础时没有重点讲硬件,但后续 TinyML 项目一定会回到 MCU 选型问题。

主控平台 适合方向 与本章 ML 概念的关系
Arduino Nano 33 BLE Sense TinyML 入门、IMU、语音案例 适合快速理解分类、训练、部署流程
ESP32 / ESP32-S3 Wi-Fi / BLE、生理信号原型、边缘推理 适合把模型结果通过无线传输到上位机或 App
Nordic nRF52 / nRF53 BLE 低功耗可穿戴设备 适合长时间采集 ECG、PPG、EDA、HRV
STM32 工业和低功耗嵌入式部署 适合对 ADC、实时性和低功耗要求更高的项目
RP2040 / Raspberry Pi Pico 低成本实验和基础部署 适合学习基础 TinyML 流程
Edge Impulse 支持的其他开发板 快速验证不同任务 适合比较不同硬件上的模型推理性能

选择主控时,不要只看"能不能跑模型",还要看:

复制代码
ADC 精度
采样率
RAM
Flash
主频
功耗
BLE / Wi-Fi
开发环境
Edge Impulse 部署便利性
外设接口
电池供电能力

8. 本章内容对未来项目的启发

8.1 疼痛监测

本章说明,疼痛监测既可以做分类,也可以做回归。分类可以输出"无痛 / 轻度 / 中度 / 重度",回归可以输出 0~10 疼痛评分。但无论哪种方式,都需要可靠标签和足够数据,不能只靠少量样本得出结论。

8.2 情绪识别

GSR / EDA、HRV、PPG 等信号可以反映自主神经相关变化,但模型输出只能理解为"状态估计",不能简单等同于真实情绪本身。

8.3 疲劳检测

疲劳检测可以使用 EEG、HRV、PPG、EMG、IMU 等多种信号。监督学习适合已有疲劳标签的数据,无监督学习适合早期探索不同状态下的数据分布。

8.4 运动状态识别

运动状态识别和课程后续手势识别非常接近。IMU、EMG、PPG 运动干扰等数据都可以按照时间序列分类任务处理。

8.5 可穿戴生理信号监测

TinyML 的优势在于低功耗、本地推理和低延迟。对于可穿戴设备来说,这可以减少原始数据上传,提升隐私性,并延长电池续航。

8.6 多模态生理信号融合

未来可以把 GSR / EDA、PPG、HRV、EMG、IMU 等信号融合。多模态可以提高鲁棒性,但也会增加同步、功耗、模型大小和标签设计难度。


9. 本章还不能解决的问题

本章是 AI / ML 基础概念介绍,还不能直接解决以下问题:

  1. 生理信号采集电路如何设计。

  2. 模拟前端 AFE 如何选择。

  3. 电极与人体接触噪声如何处理。

  4. ADC 精度和采样率如何设置。

  5. EEG / ECG / EMG / PPG / GSR 的滤波算法如何实现。

  6. 疼痛、压力、疲劳等标签如何可靠标注。

  7. 小样本数据如何避免过拟合。

  8. 个体差异如何处理。

  9. TinyML 模型如何在不同 MCU 上优化推理速度和内存占用。

  10. 医疗安全性、伦理和临床验证如何开展。


10. 本章总结

本章最重要的收获是:机器学习不是神秘的黑箱,而是一种让模型从数据中学习规则的方法。AI 是更大的概念,机器学习是 AI 的一个子集,深度学习又是机器学习中的一个重要方向。传统算法依赖人写规则,而机器学习通过训练数据学习规则,并希望对新数据具有良好的泛化能力。对于 TinyML 项目来说,这些基础概念非常关键:后续无论是语音识别、手势识别,还是 EEG、ECG、EMG、PPG、HRV、GSR / EDA 生理信号监测,本质上都离不开数据、标签、特征、模型训练、模型评估和端侧推理。

11. 参考资料

序号 资料名称 类型 链接 与本章内容的关系
1 Introduction to Embedded Machine Learning 官方课程页面 [Introduction to Embedded Machine Learning | Coursera](https://www.coursera.org/learn/introduction-to-embedded-machine-learning "Introduction to Embedded Machine Learning Coursera")
2 Alexander Fred-Ojala, Instructor 官方讲师资料 [Alexander Fred-Ojala, Instructor | Coursera](https://www.coursera.org/instructor/~23954429 "Alexander Fred-Ojala, Instructor Coursera")
3 Artificial Intelligence: A Modern Approach 教材 / 权威定义 Artificial Intelligence: A Modern Approach, 4th US ed. 用于解释 AI 中"智能体"的正式定义,也是人工智能领域常用教材。(aima.cs.berkeley.edu)
4 Artificial Intelligence Coined at Dartmouth 官方历史资料 [Artificial Intelligence (AI) Coined at Dartmouth | Dartmouth](https://home.dartmouth.edu/about/artificial-intelligence-ai-coined-dartmouth "Artificial Intelligence (AI) Coined at Dartmouth Dartmouth")
5 Rosenblatt's Perceptron 大学历史资料 [Professor's perceptron paved the way for AI -- 60 years too soon | Cornell Chronicle](https://news.cornell.edu/stories/2019/09/professors-perceptron-paved-way-ai-60-years-too-soon "Professor’s perceptron paved the way for AI – 60 years too soon Cornell Chronicle")
6 Moore's Law --- Intel 官方资料 https://www.intel.com/content/www/us/en/history/virtual-vault/articles/moores-law.html 支持本章关于计算能力提升推动 AI 发展的解释。(英特尔)
7 AI Index --- Stanford HAI 权威报告 [AI Index | Stanford HAI](https://hai.stanford.edu/ai-index "AI Index Stanford HAI")
8 What Are Machine Learning Algorithms? --- IBM 权威定义 https://www.ibm.com/think/topics/machine-learning-algorithms 用于解释机器学习算法的主要类别、训练过程和泛化目标。(IBM)
9 What Is Supervised Learning? --- IBM 权威定义 https://www.ibm.com/think/topics/supervised-learning 用于解释监督学习、标签和预测输出。(IBM)
10 What Is Unsupervised Learning? --- IBM 权威定义 https://www.ibm.com/think/topics/unsupervised-learning 用于解释无监督学习、聚类和隐藏模式发现。(IBM)
11 Edge Impulse Processing Blocks 官方文档 Processing blocks - Edge Impulse Documentation 对应 Edge Impulse 中特征提取和数据预处理流程。(Edge Impulse Documentation)
12 Edge Impulse Learning Blocks 官方文档 Learning blocks - Edge Impulse Documentation 对应 Edge Impulse 中分类、回归和模型训练流程。(Edge Impulse Documentation)
13 Edge Impulse: An MLOps Platform for Tiny Machine Learning 学术论文 2212.03332 Edge Impulse: An MLOps Platform for Tiny Machine Learning 说明 Edge Impulse 作为 TinyML MLOps 平台的作用。(arXiv)
14 BiomedBench: A benchmark suite of TinyML biomedical applications for low-power wearables 学术论文 2406.03886 BiomedBench: A benchmark suite of TinyML biomedical applications for low-power wearables 支持生理信号与低功耗可穿戴 TinyML 项目的迁移分析。(arXiv)
相关推荐
qq5752173191 小时前
Notepad++下载和安装
笔记·notepad++·记事本
一次旅行1 小时前
AI 前沿日报 | 2026年7月10日
人工智能·chatgpt
程序猿小泓1 小时前
从 Claude Code 学 Agent Harness:一个前端工程师的 AI Agent 学习笔记
前端·人工智能·学习
woohuwan1 小时前
CST 匝数比和采样电阻怎么算?
单片机·嵌入式硬件
Promise微笑1 小时前
红外分辨率 160×120、320×240、384×288 与 640×480实战选型指南
大数据·运维·人工智能·物联网
米小虾1 小时前
GPT-5.6一小时破解50年数学猜想!OpenAI公开700词Agent编排密文
人工智能·chatgpt
QN1幻化引擎2 小时前
给 AI 做一次「意识体检」——基于 QN1 幻化引擎的灵鉴意识识别框架与 DalinX V5 实测
大数据·数据结构·人工智能·算法·架构
米小虾2 小时前
中国首个十万卡集群落成!国产算力如何撑起"十万卡时代"
人工智能
长风2302 小时前
Day14: 极限异常演练 —— 验证系统韧性与错误告警生成
人工智能·安全