梯度下降
一般我们不特指的话,梯度下降就是指的是Batch Gradient descent。
Batch Gradient descent
一般来说,Batch Gradient descent 的伪代码如下:
// A code block
for i in range ( epochs ): #epoch中文名字叫训练周期,epoch每增加1,就代表训练集上的所有数据被使用一次
params_grad = evaluate_gradient ( loss_function , training_data , params )#表示使用batchsize个数据来更新参数。这里Batch恰好等于训练集上的所有数据
params = params - learning_rate * params_grad
#完成一个Batch训练,相当于参数迭代(iteration/updata)一次
Stochastic Gradient descent
一般来说,Stochastic Gradient descent 的伪代码如下:
for i in range ( nb_epochs ): #epoch中文名字叫训练周期,epoch每增加1,就代表训练集上的所有数据被使用一次
np. random . shuffle (training_data)
for example in training_data :
params_grad = evaluate_gradient ( loss_function , example , params )#表示使用单个样例来进行参数更新/迭代,这里的batchsize=1。每个Batch恰好等于单个样例
params = params - learning_rate * params_grad
##完成一个Batch训练,相当于参数迭代(iteration/updata)一次
Min Batch Gradient descent
一般来说,Stochastic Gradient descent 的伪代码如下:
for i in range ( nb_epochs ):#epoch每增加1,就代表训练集上的所有数据被使用一次
np. random . shuffle ( training_data )#打乱训练集上的数据
for batch in get_batches (training_data , batch_size =50):#每次从训练集上拿50个样例,直到拿完为止。
params_grad = evaluate_gradient ( loss_function , batch , params )#一次参数更新/迭代(iteration/updata)需要用到batchsize个样例,这里的batchsize=50。每个Batch恰好等于50个样例
params = params - learning_rate * params_grad
#每个 Epoch 具有的 Iteration 个数: training_data/batchsize(完成一个Batch训练,相当于参数迭代一次)
参考文献链接: link.