关于谷歌云机器学习工程师专家认证

Feb 7, 2025

对认证这类一直并无多大兴致,不过随着年龄渐长以及市场变化,却又似乎需要它来“证明”资历。尽管从多年前接触投放分析到现在,实操和应用环境会遇到的问题大致清楚,但缺乏系统性的知识结构。

考试本身问题不会太大,在webassessor注册考试,单科目费用是200美金,可以查询附近的授权考点,如果网络允许也可以远程考试,这需要全程视频监考,且限制性条件很多,一定要充分熟悉规则和流程。考试语言可以选择英语和日语等,没有中文。整体上全程还是很顺利。考前在reddit上看到一些经验传授,确实对基础概念的认识至关重要,但应用场景还是更为关键。试题内容都是应用题(假设场景选择方案),这样的感觉也很新鲜。

这次花了一些时间,参照官方指南简单过了一下谷歌云机器学习的知识结构,在Gemini的帮助下做个整理:


1. ML基础与问题建模

  • 业务用例转为 ML 问题:
    • 核心: 识别业务目标 -> 找到匹配的 ML 方法。
    • 考虑: 影响、成功标准、可用数据、预算、时间线。
    • 案例: 预测房价 (回归), 识别图像中的物体 (分类)。
  • 机器学习方法 (类型):
    • 监督学习 (Supervised): 数据有标签。
      • 用途: 分类 (预测类别,如狗/猫)、回归 (预测数值,如房价)。
      • 案例: 图像分类 (狗 vs 猫)。
    • 无监督学习 (Unsupervised): 数据无标签。
      • 用途: 聚类 (分组,如按位置聚集房屋)、主题建模 (分组文档)。
      • 案例: 将房屋按地理位置分组。
    • 半监督学习 (Semi-supervised): 少量标签数据 + 大量无标签数据。
      • 用途: 当标签数据稀缺时扩展训练集。
      • 案例: 欺诈检测 (已知部分欺诈案例)。
  • ML 成功指标: 衡量模型性能。
    • 分类:
      • Accuracy: 总正确率 (简单用例)。
      • Precision: 预测为正例中实际为正例的比例 (降低假正例)。
        • 案例: 垃圾邮件检测 (不希望将非垃圾邮件标记为垃圾邮件)。
      • Recall: 实际为正例中预测为正例的比例 (降低假负例)。
        • 案例: 疾病检测 (不希望漏检病人)。
      • F1: Precision 和 Recall 的调和平均值。
      • AUC ROC: 衡量分类器区分正负例的能力 (平衡数据)。
      • AUC PR: Precision-Recall 曲线下面面积 (不平衡数据)。
        • 案例: 信用欺诈检测 (欺诈案例很少)。
    • 回归:
      • MAE: 平均绝对误差 (对异常值鲁棒)。
      • RMSE: 均方根误差 (惩罚大错误)。
        • 案例: 预测房价,不希望出现极大预测误差。
      • RMSLE: 均方根对数误差 (惩罚低估)。
  • 负责任的 AI: 考虑公平性、可解释性、隐私、安全。
    • 公平性 (Fairness): 检测并减轻模型中的偏见。
      • 案例: 信用评分不因种族/性别产生偏见。
    • 可解释性 (Explainability): 理解模型为何做出特定预测。
      • 案例: 解释拒绝贷款申请的原因。
    • 隐私 (Privacy): 保护敏感数据。
      • 案例: 训练数据包含病人的医疗记录。
    • 安全 (Security): 防止模型/数据的意外泄露或攻击。

2. 数据与特征工程

  • 数据可视化: 探索和理解数据。

    • 箱线图 (Box Plot): 显示分位数、中位数、异常值。
      • 用途: 理解数据分布、识别异常值。
    • 散点图 (Scatterplot): 显示两个变量关系。
      • 用途: 查找特征间的相关性。
  • 统计基础:

    • 均值 (Mean): 平均值 (受异常值影响)。
    • 中位数 (Median): 中间值 (对异常值鲁棒)。
    • 众数 (Mode): 出现次数最多的值。
    • 标准差 (Standard Deviation): 数据分散程度 (用于识别异常值)。
    • 相关性 (Correlation): 特征间关系的归一化度量 (-1到+1)。
      • 用途: 检测特征间的强关系、潜在的标签泄露。
      • 案例: 预测疾病时,医院名称与目标变量高度相关。
  • 数据质量与可靠性:

    • 数据偏差 (Data Skew): 数据分布不均匀 (如收入分布)。
      • 处理: Log 缩放、归一化、欠采样/过采样。
    • 异常值检测 (Outlier Detection): 值远超其他数据点 (如收入中的亿万富翁)。
      • 处理: 删除、填充 (均值/中位数/众数)、剪裁 (Clipping)。
    • 缺失数据 (Missing Data): 数据缺失。
      • 处理: 删除行/列 (如果缺失多)、填充 (Impute: 均值/中位数/众数/最频繁值)、LOCF (Last Observation Carried Forward)、插值 (时间序列)、使用可处理缺失值的算法。
  • 建立数据约束: 定义数据模式 (Schema: 类型、范围、格式、分布)。

    • 工具: TensorFlow Data Validation (TFDV)。
    • 用途: 在管道中一致地验证数据、捕获异常 (Skew/Drift)。
  • 数据拆分策略:

    • 随机拆分: 简单用例。
    • 基于时间拆分: 时间序列数据或在线系统,训练数据早于测试/验证数据。
      • 案例: 预测未来 30 天用户生命周期价值 (LTV),训练用前 29 天数据,验证用第 30 天数据。
    • 处理不平衡数据: 下采样多数类,同时给少数类更高权重 (Downsample/Upweight)。
      • 案例: 1000 个非欺诈交易,5 个欺诈交易。
  • 数据泄露 (Data Leakage): 测试集信息意外泄露到训练集。

    • 原因: 目标变量作为特征、随机拆分时间序列、对完整数据集进行预处理。
    • 避免: 基于时间拆分、对训练/测试集独立预处理。
  • 特征工程 (Methods): 将原始数据转换为有用特征。

    • 一致的数据预处理: 训练和服务期间应用相同转换。
      • 方法: 预训练转换 (转换代码独立) vs 模型内转换 (转换代码在模型内)。
      • 工具: tf.Transform (确保预处理一致性,避免训练-服务偏差)。
    • 编码结构化数据类型:
      • 数值特征: 归一化 (Normalization: Min-Max, Z-score)、缩放 (Scaling)、分桶 (Bucketing)。
        • 用途: 帮助梯度下降收敛、防止 NaN、处理宽范围/偏差数据。
      • 类别特征:
        • 标签编码 (Label Encoding)/整数编码: 赋整数 (适合有序/小词汇量)。
        • 独热编码 (One-Hot Encoding): 创建二元列 (适合无序)。
          • 案例: 编码颜色 (红 -> 00, 蓝 -> 01)。
        • 词汇表外 (OOV): 将稀有类别归为一类 (减少训练时间)。
        • 特征哈希 (Feature Hashing): 应用哈希函数直接映射到索引 (适合大词汇量,无需词汇表)。
        • Embedding: 密集向量表示 (文本、大词汇量)。
    • 特征交叉 (Feature Crosses): 组合两个或多个特征来捕捉非线性关系。
      • 案例: 纬度 x 经度 x 时间段 预测区域人群密度。
    • 特征选择: 选择最重要的特征子集。
      • 用途: 减少噪音、训练时间、计算资源、提高性能。
      • 方法: 降维 (Dimensionality Reduction: PCA, t-SNE)、基于模型的选择 (如随机森林特征重要性)。
  • 类不平衡: 训练数据中不同类的样本数量不等。

    • 处理: 下采样、上采样、类权重 (Upweighting)。
    • 影响: 导致模型偏向多数类。Precision/Recall/AUC PR 是关键指标。

3. 模型构建与训练

  • 框架选择与模型并行:

    • 分布式训练: 在多节点/多 GPU 上训练大模型。
    • 数据并行 (Data Parallelism): 数据分块,模型复制到每个节点/GPU。同步 (Synchronous) vs 异步 (Asynchronous)。
    • 模型并行 (Model Parallelism): 模型层/部分分到不同 GPU (解决模型过大单 GPU 放不下)。
    • TensorFlow 分布式策略: tf.distribute.Strategy (Mirrored, MultiWorkerMirrored, TPUStrategy, ParameterServerStrategy)。
  • 建模技术:

    • 神经网络: ANN (一层隐藏层), DNN (多层隐藏层), CNN (图像), RNN/LSTM (序列数据)。
    • 损失函数 (Loss Function): 衡量预测误差 (与输出层激活函数/问题类型相关)。
      • 案例: 均方误差 (回归),二元交叉熵 (二元分类),分类交叉熵 (多类分类)。
    • 梯度下降 (Gradient Descent): 优化算法,调整模型权重。
    • 学习率 (Learning Rate): 调整步长 (太小慢,太大跳过最优值)。
    • 批量大小 (Batch Size): 每次梯度更新使用的样本数 (大小影响训练速度和泛化能力)。
    • Epoch: 完整数据集遍历一次。
  • 超参数 (Hyperparameters): 模型训练前设置的参数 (学习率、批量大小、层数、单元数)。

    • 调优重要性: 影响模型性能和收敛。
  • 迁移学习 (Transfer Learning): 在一个任务上训练的模型,复用于另一个相关任务。

    • 用途: 利用预训练模型快速启动、处理数据量少的情况。
      • 案例: 使用 ImageNet 预训练模型识别特定物体。
  • 半监督学习 (Semi-supervised Learning): 利用少量标签数据指导大量无标签数据的学习。

    • 用途: 标签数据稀缺时的分类或聚类。
  • 数据增强 (Data Augmentation): 对现有数据进行微小修改以生成新训练样本。

    • 用途: 增加训练数据量、减轻过拟合。
    • 方法: 离线 (预生成) vs 在线 (训练时即时生成)。
    • 案例: 旋转、翻转、剪裁图像。
  • 模型泛化 (Generalization): 模型在新数据上表现良好。

    • 欠拟合 (Underfitting): 模型太简单,无法学习到数据模式 (高 Bias, 低 Variance)。
      • 处理: 增加模型复杂度、增加特征、增加 Epoch。
    • 过拟合 (Overfitting): 模型学习到训练数据的噪音 (低 Bias, 高 Variance)。
      • 处理: 正则化、Dropout、Early Stopping、数据增强、交叉验证。
    • Bias-Variance Trade-Off: 模型复杂度和泛化能力之间的权衡。
    • 正则化 (Regularization): 在损失函数中加入惩罚项,限制模型复杂度。
      • L1 (Lasso): 强制权重接近 0 (特征选择)。
      • L2 (Ridge): 强制权重变小但不为 0 (模型更稳定)。
    • 梯度问题:
      • 梯度爆炸 (Exploding Gradients): 梯度变得非常大 (处理: Batch Normalization, 降低学习率)。
      • 梯度消失 (Vanishing Gradients): 梯度变得非常小 (处理: ReLU 激活函数)。
  • 模型训练与超参数调优 (Vertex AI): 在 Vertex AI 中运行训练。

    • Vertex AI Workbench: 基于 JupyterLab 的开发环境。
      • 用途: 探索数据、开发模型、与 GCP 服务集成。
      • 笔记本类型: 用户管理 (更多控制) vs 托管 (更易管理,自动关机、集成存储)。
      • 功能: 集成 GCS/BigQuery、Git 集成、可调整计算资源 (CPU/GPU)、可执行/计划笔记本。
    • Vertex AI 训练: 托管服务运行训练作业。
      • 作业类型: 自定义作业 (运行自定义代码)、超参数调优作业、训练管道。
      • 数据集选项: 非托管 (直接 GCS/BQ) vs 托管 (Vertex AI Dataset,用于标签、谱系、自动拆分)。
      • 容器选项: 预构建容器 (支持流行框架)、自定义容器 (打包自己的环境/代码)。
      • 分布式训练: 配置 Worker Pool 指定机器类型、副本数、加速器。
    • 超参数调优: Vertex AI 的一项功能,自动搜索最佳超参数组合。
      • 原理: 运行多次试验 (Trials),优化指定指标。默认使用 Bayesian Optimization。
      • Vertex AI Vizier: 独立的黑盒优化服务,可用于 ML 和非 ML 场景。
    • 跟踪训练指标: 监控训练过程。
      • 工具: Interactive Shell (调试容器内部)、TensorFlow Profiler (性能分析)、What-If Tool (模型行为、预测解释)。
  • 再训练/重新部署评估:

    • 数据漂移 (Data Drift): 生产数据统计分布变化 (输入数据本身)。
    • 概念漂移 (Concept Drift): 输入与目标变量关系变化。
    • 何时再训练: 定期、基于性能下降、基于数据变化。

4. 部署与服务

  • 伸缩预测服务: 将训练好的模型投入生产。
    • TensorFlow Serving: 托管 TensorFlow SavedModel、处理模型版本和服务。
      • SavedModel: 训练输出,包含完整图和参数,无需原始代码。
      • 预测请求: REST/gRPC,输入数据通常为 JSON。
      • SignatureDef: 定义模型的输入/输出格式。
  • 服务选项 (Google Cloud):
    • Vertex AI Prediction: 托管在线和批量预测服务。
    • 在线预测 (Online Prediction): 实时低延迟预测。
      • 部署: 部署 Model 到 Endpoint。
      • 流量拆分: 将流量按比例路由到不同模型版本 (A/B测试)。
      • 卸载 Endpoint: 不使用时停止计费。
    • 批量预测 (Batch Prediction): 对批量数据进行预测 (关注吞吐量/成本)。
      • 输入: 指向 BigQuery 表或 Cloud Storage 文件 (JSONL, TFRecord, CSV)。
      • 输出: 保存到 BigQuery 表或 Cloud Storage。
    • 实时特征:
      • 静态特征: 值不随时间快速变化 (存储在低延迟 NoSQL DBs)。
        • 架构: Dataflow 处理 -> Datastore/Firestore 存储 -> ML Gateway (App Engine) 查询。
      • 动态特征: 基于实时事件计算/聚合 (需要流式处理)。
        • 架构: Pub/Sub -> Dataflow (流处理/聚合) -> Bigtable (低延迟存储) -> ML Gateway。
    • 预测缓存: 预计算批量预测结果到低延迟存储,在线服务直接查询 (降低延迟)。
      • 架构: 批量预测作业 -> Firestore (Predictions Store) -> ML Gateway。
    • 最小化延迟:
      • 模型层面: 使用更小/更简单的模型。
      • 服务层面: 使用低延迟存储、缓存、高效硬件。
  • 测试目标性能: 确保模型在生产环境中按预期工作。
    • 检查: 训练-服务偏差 (Training-serving skew)、数据质量、模型年龄、数值稳定性 (NaN/null)。
    • 工具: Vertex AI Model Monitoring, Vertex AI Feature Store。
  • 配置触发器与管道调度: 自动化训练和预测作业。
    • 工具: Cloud Scheduler (Cron 作业), Vertex AI Managed Notebooks (内置调度), Cloud Build (CI/CD 触发), Cloud Functions (事件触发, Pub/Sub), Cloud Workflows (编排服务链)。

5. MLOps 与维护

  • 自动化与编排 ML 管道:

    • MLOps 管道: 自动化机器学习工作流的步骤 (数据处理、训练、部署)。
    • 编排框架: 管理和调度管道。
      • Vertex AI Pipelines: 托管、无服务器、集成元数据/谱系、运行 Kubeflow/TFX 管道。
      • Kubeflow Pipelines: 基于 Kubernetes,可移植、灵活 DSL,运行在 GKE 或本地。
      • Apache Airflow (Cloud Composer): 托管、基于 Python DAG,通用工作流编排 (尤其 ETL/ELT)。
      • TFX (TensorFlow Extended): 基于 TensorFlow,提供预构建组件 (数据验证、转换、训练等),可由上述框架编排。
    • 系统设计:
      • Kubeflow DSL: 使用 Python 定义管道组件和关系。
      • TFX: 使用 TFX 库和组件构建管道。
    • 调度管道:
      • Vertex AI Pipelines: Cloud Scheduler 或 Cloud Function (Pub/Sub 触发)。
      • Kubeflow Pipelines: Cloud Scheduler, Pub/Sub/Cloud Functions 事件触发, 或内置调度 (Argo)。
  • 自动化模型再训练:

    • 再训练策略: 基于性能下降、数据变化 (Data/Concept Drift) 或定期。
    • CI/CD: 集成持续集成/持续交付到 ML 管道 (Level 2 MLOps)。
  • 跟踪与审计元数据:

    • Vertex ML Metadata: 托管服务,记录和查询 ML 系统产生的元数据和 artifacts。
      • 数据模型: Artifacts (数据、模型等)、Context (分组,如实验)、Execution (步骤)。
      • 谱系 (Lineage): 跟踪 artifacts 的来源和关系。
    • 模型监控: Vertex AI Model Monitoring。
  • 识别 ML 解决方案风险:

    • 构建安全 ML 系统: 加密 (静止、传输、使用), IAM (权限)。
    • 负责任的 AI 实践: Bias, Fairness。
    • 模型可解释性: Vertex Explainable AI。
  • 维护 ML 解决方案 (MLOps 细节):

    • MLOps 成熟度级别:
      • Level 0 (手动/战术): 手动步骤,模型文件移交部署团队。
      • Level 1 (战略自动化): 自动化持续训练 (CT),基于新数据触发。模型训练过程编排。
      • Level 2 (CI/CD 自动化): 自动化 CI/CD 流程,从代码到部署完全自动化。集成测试。
    • 再训练与版本控制:
      • 再训练触发: 基于性能下降、数据变化、定期。考虑成本和再训练时间。
      • 模型版本控制: 对输入/输出相似且用途相同的模型,部署新版本 (解决向后兼容)。Model Registry 跟踪。
      • 模型 vs 版本: 行为不同/用途不同时部署新模型,行为相似/用途相同时部署新版本。
    • Feature Store (详见 Ch12):
      • 问题: 特征 ad hoc、难以共享、训练/服务差异。
      • 解决方案: 集中式存储、版本控制、批/在线访问。
      • Vertex AI Feature Store: 托管服务。数据模型: Featurestore -> EntityType -> Feature -> FeatureValue (时间序列模型)。支持批/流摄取。
    • Vertex AI 权限模型: IAM (项目级、资源级角色)。自定义服务账号 (最小权限)。
    • 访问透明度: Cloud Audit Logs, Access Transparency Logs (记录 Google 员工访问)。
    • 常见训练/服务错误: 输入格式/编码、Tensor Shape 不匹配、内存不足、签名不匹配。

6. BigQuery ML

  • 是什么: 在 BigQuery 中使用 SQL 进行 ML。无服务器、易于使用,适合数据分析师。
  • 数据访问:
    • BigQuery Web Console: 直接写 SQL 查询。
    • Vertex AI Workbench Notebooks: 使用 BigQuery Magic (%%bigquery) 或 Python Client API。
    • Python API: google.cloud.bigquery 库。
  • BigQuery ML 算法: 支持回归、分类、预测 (ARIMA_PLUS)、聚类 (KMEANS)、矩阵分解 (推荐系统)、降维 (PCA, AUTOENCODER)、DNN (DNN_CLASSIFIER, DNN_REGRESSOR 等)。
    • 创建模型: CREATE MODEL model_name OPTIONS(...) AS SELECT ...。指定 model_type (回归, 分类, 预测, 聚类等), input_label_cols (目标列)。SELECT 语句用于准备训练数据。
  • 模型训练: CREATE MODEL 语句触发训练作业。
  • 模型评估: ML.EVALUATE(MODEL model_name, table_name)
  • 预测: ML.PREDICT(MODEL model_name, table_name)。输出包含预测结果和输入列的表。
  • 可解释性: 在 CREATE MODEL 时设置 OPTIONS(enable_global_explain=TRUE)
    • 全局解释: ML.GLOBAL_EXPLAIN(MODEL model_name) (特征重要性)。
    • 预测解释: ML.EXPLAIN_PREDICT(MODEL model_name, table_name) (单个预测归因)。
  • BigQuery ML vs Vertex AI Tables:
    • BQML: 适合分析师 (熟悉 SQL, 表格数据)。
    • Vertex AI Tables: 适合 ML 工程师 (熟悉 Python/框架, 所有数据类型, 更多控制)。
  • 与 Vertex AI 的互操作性:
    • 访问公共数据集: 在 BQ 和 Vertex AI 中均可访问 BQ 公共数据集。
    • 导入数据: 从 BQ 直接导入数据到 Vertex AI Dataset。
    • Vertex AI Workbench: 直接访问 BQ 表。
    • 分析测试预测数据: 从 Vertex AI 导出预测结果到 BQ 进行分析。
    • 导出 BQML 模型: 导出到 Vertex AI Model Registry (注意: 包含 TRANSFORM 的模型不可导出)。
  • BigQuery 设计模式:
    • Hashed Feature: 使用哈希函数 (如 FARM_FINGERPRINT) 处理高基数类别特征。
      • 解决: 词汇表不完整、高基数缩放问题、冷启动。
    • Transforms: 在 CREATE MODEL 中使用 TRANSFORM 子句进行特征预处理 (如 ML.FEATURE_CROSS, ML.QUANTILE_BUCKETIZE)。
      • 用途: 确保训练和预测预处理一致性。
      • 注意: 包含 TRANSFORM 的 BQML 模型不可导出到 Vertex AI。