1.2 机器学习的特点

机器学习的特点如下(此处用编程模型MapReduce来进行比对)。[1]

• 算法是密集型:机器学习算法使用线性代数进行运算开发,是计算和通信密集型的算法。

• 具有迭代性:MapReduce的特点是一次完成,没有迭代性。与MapReduce不同,机器学习的模型更新并非一次就能完成,需要循环迭代多次来逐步逼近最终模型。机器学习迭代算法有特定的数据访问模式,即每次迭代都基于输入数据的一些样本来完成训练。

• 容错性强:机器学习程序通常对中间计算中的微小错误具有鲁棒性。即使更新次数有限或存在传输错误,机器学习程序仍能在数学上保证收敛到一组最佳模型参数,即机器学习算法能够以正确的输出结束(尽管可能需要更多的迭代次数来完成)。

• 参数收敛具有非一致性:有些参数只进行几轮迭代就能收敛,有些参数可能需要成百上千次迭代才能收敛。

• 具有更新的紧凑性:机器学习程序的某些子集展示了更新的紧凑性。比如由于数据结构稀疏,Lasso的更新通常只涉及少量模型参数。

• 存在网络瓶颈:频繁更新模型参数需要消耗大量带宽,而GPU速度越快,网络瓶颈就越成为问题所在。