1
確率的勾配降下は、標準の勾配降下と比較して、どのように時間を節約できますか?
標準勾配降下法は、トレーニングデータセット全体の勾配を計算します。 for i in range(nb_epochs): params_grad = evaluate_gradient(loss_function, data, params) params = params - learning_rate * params_grad 事前に定義された数のエポックの場合、最初にパラメーターベクトルparamsに対するデータセット全体の損失関数の勾配ベクトルweights_gradを計算します。 対照的に、確率的勾配降下法は、各トレーニング例x(i)およびラベルy(i)のパラメーター更新を実行します。 for i in range(nb_epochs): np.random.shuffle(data) for example in data: params_grad = evaluate_gradient(loss_function, example, params) params = params - learning_rate * params_grad SGDははるかに高速であると言われています。ただし、まだすべてのデータポイントでループが発生している場合、それがはるかに高速になる方法はわかりません。GDの勾配の計算は、各データポイントのGDの計算よりもはるかに遅いですか? コードはここから来ます。