BGD每次迭代都用了所有的样本,每一轮都是朝着极小值方向更新的,当函数只有一个极小值点时BGD能过够比较快的收敛的全局最优,当函数有多个极小值点时BGD容易陷入局部最优,而且当数据量很大时BDG需要消耗大量的内存,计算代价也会很高。SGD每次只用小批量的数据来计算,内存消耗小,计算代价也更低,而且SGD每次迭代不一定都沿着局部极小值点更新,但是所有轮总的的方向还是沿着局部极小值点的方向更新的,相当于引入了噪声,SGD往往还会具有跳出一些局部极小值点的能力。
BGD每次迭代都用了所有的样本,每一轮都是朝着极小值方向更新的,当函数只有一个极小值点时BGD能过够比较快的收敛的全局最优,当函数有多个极小值点时BGD容易陷入局部最优,而且当数据量很大时BDG需要消耗大量的内存,计算代价也会很高。SGD每次只用小批量的数据来计算,内存消耗小,计算代价也更低,而且SGD每次迭代不一定都沿着局部极小值点更新,但是所有轮总的的方向还是沿着局部极小值点的方向更新的,相当于引入了噪声,SGD往往还会具有跳出一些局部极小值点的能力。