机器学习流水线(10:54 - 15:16)
(10:54)机器学习流水线整体流程
机器学习完整流程:
收集数据
特征提取
模型训练
模型部署
推理(Inference)
(11:00)数据收集
深度学习通常需要大量数据。
常见数据格式:
| 数据类型 | 常见格式 |
|---|---|
| 音频 | WAV |
| 数值型传感器数据 | CSV |
| 内存数据 | 数组 Array |
(11:19)监督学习(Supervised Learning)
监督学习特点:
每个样本都有“标签”
标签用于指导模型学习
例如:
| 数据 | 标签 |
|---|---|
| 左右挥动加速度数据 | left_right |
| 上下挥动加速度数据 | up_down |
特征提取(11:28 - 12:32)
(11:28)什么是特征提取
原始数据通常不能直接给模型。
需要:
清洗数据
过滤噪声
提取有意义的信息
这个过程叫:
Feature Extraction(特征提取)
(11:39)常见特征
课程中提到:
| 特征 | 作用 |
|---|---|
| RMS均方根 | 表示整体能量 |
| 功率谱 | 查看频率信息 |
| FFT频谱 | 分析振动频率 |
(11:53)特征与标签必须对应
重点:
原始数据标签是什么,
提取后的特征标签也必须一致。
例如:
原始数据 -> label = "circle" 提取特征后: RMS特征 -> label 仍然是 "circle"模型训练(12:09 - 12:32)
(12:09)训练过程
模型训练本质:
不断调整内部参数。
训练流程:
输入特征 ↓ 模型预测 ↓ 计算误差 ↓ 反向传播 ↓ 更新参数 ↓ 重复很多次(12:20)为什么需要很多轮训练
通常需要:
几百轮
几千轮
原因:
模型需要不断修正自己的参数。
参数 vs 超参数(12:37 - 13:54)
这是机器学习里非常重要的概念。
参数(Parameter)
(12:46)什么是参数
参数:
模型内部自动学习得到的数值。
例如:
神经网络权重 Weight
偏置 Bias
这些值:
不需要手动设置。
训练时自动更新。
超参数(Hyperparameter)
(13:10)什么是超参数
超参数:
人为提前设定的配置项。
(13:24)常见超参数
| 超参数 | 作用 |
|---|---|
| 学习率 Learning Rate | 更新速度 |
| Epoch | 训练轮数 |
| Batch Size | 每批数据大小 |
| 模型大小 | 网络层数/节点数 |
| 特征提取方式 | RMS/FFT等 |
(13:34)记忆口诀
手动设置的,基本都是超参数。
模型部署与推理(13:56 - 15:16)
(13:56)模型部署
当模型效果满意后:
可以部署到:
单片机
开发板
嵌入式设备
(14:06)模型本质是什么
模型本质:
就是:
一堆数字 + 数学运算
这些数字:
就是训练得到的参数。
(14:27)把模型理解成函数
模型最简单理解:
输入特征 ↓ 模型函数 ↓ 输出预测结果推理(Inference)
(14:45)什么是推理
推理:
模型对新数据进行预测。
例如:
新加速度数据 ↓ 提取特征 ↓ 送入模型 ↓ 输出:circle(15:00)训练和推理必须一致
重点中的重点:
训练时怎么提特征,
部署时必须完全一样。
否则:
模型效果会崩。
数据流思想(15:16 - 15:39)
嵌入式AI通常是:
实时连续数据流。
例如:
传感器 ↓ 实时采样 ↓ 特征提取 ↓ 模型推理 ↓ 输出结果这就是:
TinyML实时推理
自动化与 ML Ops(15:41 - 17:28)
(15:41)数据采集可以自动化
Edge Impulse支持:
API自动上传数据
自动训练
自动化流水线
DevOps 与 ML Ops
(16:06)DevOps
DevOps:
开发 + 运维
目标:
快速稳定交付软件。
(16:41)ML Ops
ML Ops:
机器学习版 DevOps。
新增:
数据科学家
数据管理
模型更新
自动训练
自动部署
(17:00)嵌入式AI未来趋势
未来嵌入式AI:
可能需要:
OTA模型更新
云端重新训练
批量设备部署
其实这已经很接近:
AIoT(AI + IoT)
了。
前面课程总结(17:55 - 20:46)
(18:10)AI、机器学习、深度学习区别
关系:
AI └── Machine Learning └── Deep Learning(18:37)单板机 vs 单片机
| 类型 | 特点 |
|---|---|
| 单板机 SBC | 性能强,跑Linux |
| 单片机 MCU | 资源少,低功耗 |
TinyML主要偏向:
MCU(单片机)
(19:30)为什么需要特征提取
因为:
嵌入式设备算力有限。
不能像大模型一样:
直接吃原始数据。
所以:
必须人工提取有效特征。
(20:04)非常重要的工程经验
老师的经验:
先做出能运行的模型,
再慢慢优化。
这是非常真实的工程思想。
很多新手:
一开始就疯狂调参。
结果:
几个月都没结果。
神经网络入门(21:01 - 29:55)
什么是密集神经网络(21:37)
Dense Neural Network:
全连接神经网络
特点:
每层节点:
和下一层全部连接。
手写数字识别(22:00)
经典案例:
MNIST 手写数字识别。
例如:
识别:
0 1 2 3 4 5 6 7 8 9监督学习再次出现(22:34)
监督学习需要:
| 输入 x | 输出 y |
|---|---|
| 图片 | 数字标签 |
例如:
图片 -> 0 图片 -> 5感知器(Perceptron)(23:17)
神经网络最基础单元
类似人工神经元。
图片如何输入神经网络(24:05)
神经网络不能直接理解二维图片。
需要:
二维矩阵 → 一维数组。
例如:
28×28 图片:
28 × 28 = 784最终:
得到784维输入。
权重 Weight(24:36)
神经网络中的每个感知器都会对输入数据进行数学运算:
给每个输入乘一个权重。
数学形式:
其中:
| 符号 | 含义 |
|---|---|
| x | 输入 |
| w | 权重 |
| b | 偏置 |
激活函数(25:15)
作用:
引入非线性
否则:
神经网络就只是:
线性回归。
常见激活函数
| 激活函数 | 特点 |
|---|---|
| Sigmoid | 老版本常用 |
| Tanh | 输出范围-1~1 |
| ReLU | 现在最常用 |
神经网络结构(26:29)
三层结构:
输入层 ↓ 隐藏层 ↓ 输出层(27:40)输出层
手写数字识别:
输出层通常有10个节点。
分别代表:
0~9每个节点:
输出一个概率。
神经网络训练(28:07)
训练流程:
随机初始化参数 ↓ 输入数据 ↓ 前向传播 ↓ 得到预测 ↓ 计算损失 ↓ 反向传播 ↓ 更新参数 ↓ 重复前向传播(Forward Propagation)
(28:42)
前向传播:
数据从输入层一路算到输出层。
损失函数(Loss Function)
(29:03)
损失函数:
衡量:
模型错得有多严重
损失越小:
模型越准。
反向传播(Backpropagation)
(29:12)
反向传播核心思想:
“回头改答案”
模型发现:
预测错了。
于是:
沿着网络反方向:
一点点修改参数。
直到:
预测越来越准。
最核心总结(这一大段课程真正的重点)
机器学习本质:
数据 ↓ 特征 ↓ 模型 ↓ 损失 ↓ 反向传播 ↓ 更新参数 ↓ 越来越准而 TinyML 的核心难点:
不是“训练”。
而是: