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 代码,嵌入到生产系统。

这四层的关系可以用下面的架构图表示。图中同时标出了每层对应的关键工具箱与典型对象,便于对照安装清单检查环境是否完整。

MATLAB 工程算法开发平台四层架构 部署与集成层 MATLAB Compiler MATLAB Coder GPU Coder 独立应用 / C++ / CUDA 工程组织层 Project 工程 +pkg 包 / 命名空间 Git 版本控制 依赖与路径管理 数据与算法层 table / array / datastore Statistics & ML Toolbox Deep Learning Toolbox App / 函数 / Simulink 计算资源层 多核 CPU NVIDIA GPU Parallel Computing 集群 / 云 工作流:数据准备 → 特征/网络设计 → 训练与验证 → 调参 → 评估 → 部署

1.3 工程化工作流:从数据到部署的闭环

平台搭好之后,真正决定开发效率的是工作流是否工程化。一个可复现的机器学习工程工作流通常包含六个环节,每个环节都有明确的输入、输出和判断依据:

  1. 数据准备:把原始数据整理为 table 或 datastore,划分训练集、验证集、测试集。常用 cvpartition 做分层划分,用 datastore 处理超大规模数据。
  2. 特征与网络设计:经典算法做特征工程,深度学习设计网络层。此阶段要固定随机种子,例如 rng(42),保证结果可复现。
  3. 训练与验证:用 fitcsvm、fitcensemble 或 trainNetwork 训练,用验证集监控过拟合。深度学习可用 trainingOptions 设置 'ValidationData' 与 'Plots','training-progress'。
  4. 调参:用 bayesopt 做贝叶斯优化,或 hyperparameters 函数配合 fitcauto 自动搜索。
  5. 评估:分类看混淆矩阵与 confusionchart,回归看 RMSE 与残差图,深度学习看验证损失曲线是否收敛。
  6. 部署:用 saveLearnerForCoder 或 exportONNXNetwork 导出模型,再用 Coder 生成目标代码。
工程化要点:把数据划分、随机种子、模型超参数、评估指标全部写入脚本或工程配置,而不是散落在命令行历史里。这样换一台机器、换一个数据集,只需改配置即可复现整条链路。

1.4 环境自检清单

在进入后续章节前,建议按下面这份清单逐项确认。每一项都对应一个可执行的验证命令,避免“以为装好了”却在训练时报错。

检查项验证命令期望结果
MATLAB 版本versionR2022b 或更高
统计与机器学习工具箱ver('stats')显示版本号
深度学习工具箱ver('deeplearning')显示版本号
并行计算工具箱ver('parallel')显示版本号
GPU 可用性canUseGPUtrue
GPU 设备信息gpuDevice显示型号与显存
随机种子可复现rng(42); rand每次运行结果一致

如果 canUseGPU 为 false 但 gpuDeviceCount 大于 0,通常是驱动与 MATLAB 版本不匹配。此时应到 NVIDIA 官网下载与 MATLAB 版本对应的驱动,而不是盲目升级到最新版。若 gpuDeviceCount 为 0,则先确认显卡是否在 MATLAB 支持列表中,再检查是否安装了 Parallel Computing Toolbox。