UCB Machine Learning Systems (Fall 2019) Machine Learning Lifecycle Note 3
Published:
因为前两门课更多的是做introduction, 所以这门课的第三节课才是第一节真正意义上的课程. 这门课的主要是目的是介绍Machine learning的生命周期(包括不限于模型开发, 模型训练以及推理). 并希望了解 1. 整个ML生命周期中的机遇与挑战. 2. 如果区分ML中的研究与工程.
Model Development
- Data Collection & Cleaning & Visualization (Data Engineering)
- 判断数据源的潜力 Identify potential data sources
- 联合来自不同数据源的数据 Join data from different sources
- 处理缺省或者离群值 Handle missing or outlier values
- 绘制趋势以识别异常 Plot trends to identify anomalies
这里有一个小插曲, 之前lifeifei的弟子Andrej Karpathy在做演讲时提到: PhD阶段(学术界)下他会花费大多数睡眠时间在模型和算法的开发上, 但是在Tesle(工业界), 他会花费大多数时间在数据的清洗和处理上. 这也是为什么很多人会说: 数据科学家的80%时间都花在了数据的清洗上.
- Feature Eng & Model Design & Training & Validation (Data Science)
- 建立信息丰富的特征方程 Building informative features functions
- 设计新的模型架构 Designing new model architectures
- 调整超参数 Tuning hyperparameters
- 评估预测准确性 Validate prediction accuracy
Training
模型训练的需求:
- 根据实时数据大规模训练模型
- 基于新的数据来retratin模型
- 自动的验证模型的准确性
- 管理模型的版本
- 需要最少的专业知识 针对这些需求,应运产生了一系列的新的工具和框架, 例如: Tensorflow, Pytorch, MXNet, Caffe, Caffe2等
模型热训练, 比如Stochastic Gradient Descent(SGD), 也就是随机梯度下降法 .
- 新的数据会使得模型的参数发生变化
基于已有的权重来更新模型参数而非随机生成. 这是迁移学习的一种形式,并且非常适用于新数据产生缓慢的场景. 但同时也会带来一些问题:
- 需要一种自适应更新学习率的方法. 2. 对于非凸优化问题, 会有局部最优解的问题. 3. 灾难性遗忘 (Catastrophic forgetting), 如果只训练新数据可能会降低旧数据的模型性能
模型微调(Fine Tuning)
使用较小的学习率来训练预训练或部分训练, 用于新数据集或预测任务的预训练模型。这个词在最近很火的预训练大语言模型中很常见,是指根据使用场景来调整模型的参数. 例如在电商场景下,将预训练好的GPT使用大量已有且准确的商品描述文本在进行微调后, 可以用来生成较为专业和准确的商品描述.
Inference
在突发负载(bursty load)下约 10 毫秒内做出预测, 这件事会随着神经网络的规模而更加复杂.因此需要新的机器学习算法和系统来解决.
一些工程上的启发和反馈
对于模型更新可以从两个角度出发实现:
周期性(Periodically), 可以借助批处理来实现和验证 要注意的是, 周期性更新的缺点是会有一定的延迟, 但是优点是可以减少计算资源的使用.
持续性(Periodically), 也就是当新数据到来时就进行更新 这样可以减少模型更新的延迟, 但是会增加计算资源的使用. 而且需要调节更新的频率, 以及更新的数据量.
特征更新 新的数据可能会产生新的feature, 比如新的数据包括额用户对每个类型网站的点击次数, 那么就需要将这些数据作为新的feature来更新模型, 帮助预测用户的行为.
此外, 模型本身也会对未来收集到的数据产生影响, 也就是说模型的更新也会影响到数据的收集. 这就是所谓的数据采集的反馈循环.这类问题可以归类为此Exploration – Exploitation Trade-off. 探索(Exploration)是指收集新的数据, 以便于更新模型. 开发(Exploitation)是指使用已有的模型来进行预测. 有一些已有算法缓解这个类问题, 例如: Thompson Sampling, Upper Confidence Bound(UCB), Epsilon Greedy等. 对于熟悉强化学习的同学来说, 这些词应该非常耳熟, 因为