机器学习中的常见挑战与数据表示策略
1. 机器学习的可重复性挑战
传统编程中,程序输出具有可重复性和确定性。例如,一个反转字符串的 Python 程序,输入 “banana” 总是输出 “ananab”。若程序有 bug,同事使用相同输入也能复现错误。
然而,机器学习模型存在内在随机性。训练时,模型权重随机初始化,训练中逐渐收敛。相同模型代码和训练数据,不同训练运行可能得出不同结果,这带来可重复性挑战。比如,一次训练模型准确率达 98.1%,再次训练不一定能达到相同结果,这使实验对比变得困难。
为解决可重复性问题,常见做法是设置模型的随机种子值。在 TensorFlow 中,可在程序开头运行 tf.random.set_seed(value) 实现。在 scikit-learn 里,许多数据洗牌工具函数也支持设置随机种子,示例代码如下:
from sklearn.utils import shuffle
data = shuffle(data, random_state=value)
要确保不同实验结果可重复,训练模型时需使用相同数据和随机种子。此外,保证可重复性还需固定训练模型涉及的多个因素,如使用的数据、生成训练和验证数据集的分割机制、数据预处理、模型超参数、批量大小和学习率调度等。
机器学习框架的依赖也会影响可重复性。除手动设置随机种子,框架内部调用训练函数时也有随机元素。不同版本框架的底层实现不同,即使数据和模型代码相同,实验结果也可能有差异。例如,一个框架的 train()
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



