梯度下降是一个最优化算法,通常也称为最速下降。
梯度下降是求解无约束优化问题最简单和最古老的方法之一,许多有效算法都是以它为基础进行改进和修正而得到的。
最速下降是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。
虽然古老而简单,但是很多时候依然可以将它用在一些情况中,也很适合快速入门。
Spark中的优化组件
Spark中的MLlib下的optimization包含了梯度下降的相关组件。
从数理基础和很多改进算法来看,梯度下降的主要抽象集中在两个方面,即如何度量梯度和如何更新参数。
Spark中的梯度抽象为Gradient.scala
abstractclass Gradient extends Serializable {
def compute(data: Vector, label: Double, weights: Vector): (Vector, Double) = {
val gradient = Vectors.zeros(weights.size)
val loss = compute(data, label, weights, gradient)
(gradient, loss)
}
def compute(data: 


