1. 平台环境搭建与工程化认知
在开始任何机器学习算法开发之前,先把“能跑起来”这件事做扎实,是后续所有工作的前提。本章要解决两个层面的问题:一是把 MATLAB 及其机器学习、深度学习、GPU 支持等组件安装配置到位;二是建立对“工程算法开发平台”整体架构与工作流的认知,知道数据、算法、训练、部署各环节在平台中处于什么位置、如何衔接。
1.1 安装配置:从 MATLAB 主程序到工具箱
MATLAB 的安装分为主程序和附加工具箱两部分。主程序提供语言内核、矩阵运算、绘图与 App 环境;工具箱则按领域提供函数与 App。机器学习工程至少需要以下组件:
- MATLAB 主程序:建议 R2022b 及以上版本,对深度学习与 GPU 支持更完整。
- Statistics and Machine Learning Toolbox:提供分类、回归、聚类、降维等经典算法,以及
fitcsvm、fitctree、fitrensemble等函数和 Classification Learner、Regression Learner 两个交互式 App。 - Deep Learning Toolbox:提供
dlnetwork、trainingOptions、trainNetwork等接口,支持 CNN、LSTM、Transformer 等网络构建与训练。 - Parallel Computing Toolbox:启用多核 CPU 并行与 GPU 计算,是使用 GPU 训练的前置条件。
- GPU 支持:需要 NVIDIA 显卡且计算能力 3.5 以上,安装对应版本的 CUDA 驱动。MATLAB 通过
gpuDevice检测设备,通过canUseGPU判断可用性。
安装时可在安装器中勾选上述工具箱,也可在已安装主程序后通过“附加功能”管理器补充。安装完成后,用以下命令验证环境是否就绪:
ver % 查看已安装工具箱及版本
gpuDevice % 查看 GPU 设备信息
canUseGPU % 返回逻辑值,判断 GPU 是否可用
license('test','Statistics_Toolbox') % 检查许可证
若 canUseGPU 返回 false,常见原因有三类:显卡不在支持列表、驱动版本过低、Parallel Computing Toolbox 未安装。排查顺序建议先看 gpuDeviceCount 是否为 0,再核对驱动版本与 MATLAB 版本对应关系。
1.2 工程算法开发平台的整体架构
把 MATLAB 当作“工程算法开发平台”,而不是一个单纯的计算器,关键在于理解它的分层结构。自下而上可以划分为四层:
- 计算资源层:CPU、GPU、集群。MATLAB 通过 Parallel Computing Toolbox 统一调度,用户代码无需大幅改动即可从单机切换到 GPU 或集群。
- 数据与算法层:数据以 table、array、datastore 等形式组织;算法以函数、App、Simulink 模块三种形态提供。经典机器学习多用函数与 App,深度学习多用函数与网络层。
- 工程组织层:用工程(Project)、包(package)、命名空间管理代码与依赖,用
+pkg目录和import语句避免函数名冲突。 - 部署与集成层:通过 MATLAB Compiler、MATLAB Coder、GPU Coder 将算法导出为独立应用、C/C++ 代码或 CUDA 代码,嵌入到生产系统。
这四层的关系可以用下面的架构图表示。图中同时标出了每层对应的关键工具箱与典型对象,便于对照安装清单检查环境是否完整。
1.3 工程化工作流:从数据到部署的闭环
平台搭好之后,真正决定开发效率的是工作流是否工程化。一个可复现的机器学习工程工作流通常包含六个环节,每个环节都有明确的输入、输出和判断依据:
- 数据准备:把原始数据整理为 table 或 datastore,划分训练集、验证集、测试集。常用
cvpartition做分层划分,用datastore处理超大规模数据。 - 特征与网络设计:经典算法做特征工程,深度学习设计网络层。此阶段要固定随机种子,例如
rng(42),保证结果可复现。 - 训练与验证:用
fitcsvm、fitcensemble或trainNetwork训练,用验证集监控过拟合。深度学习可用trainingOptions设置'ValidationData'与'Plots','training-progress'。 - 调参:用
bayesopt做贝叶斯优化,或hyperparameters函数配合fitcauto自动搜索。 - 评估:分类看混淆矩阵与
confusionchart,回归看 RMSE 与残差图,深度学习看验证损失曲线是否收敛。 - 部署:用
saveLearnerForCoder或exportONNXNetwork导出模型,再用 Coder 生成目标代码。
1.4 环境自检清单
在进入后续章节前,建议按下面这份清单逐项确认。每一项都对应一个可执行的验证命令,避免“以为装好了”却在训练时报错。
| 检查项 | 验证命令 | 期望结果 |
|---|---|---|
| MATLAB 版本 | version | R2022b 或更高 |
| 统计与机器学习工具箱 | ver('stats') | 显示版本号 |
| 深度学习工具箱 | ver('deeplearning') | 显示版本号 |
| 并行计算工具箱 | ver('parallel') | 显示版本号 |
| GPU 可用性 | canUseGPU | true |
| GPU 设备信息 | gpuDevice | 显示型号与显存 |
| 随机种子可复现 | rng(42); rand | 每次运行结果一致 |
如果 canUseGPU 为 false 但 gpuDeviceCount 大于 0,通常是驱动与 MATLAB 版本不匹配。此时应到 NVIDIA 官网下载与 MATLAB 版本对应的驱动,而不是盲目升级到最新版。若 gpuDeviceCount 为 0,则先确认显卡是否在 MATLAB 支持列表中,再检查是否安装了 Parallel Computing Toolbox。