4.1 从数据中学习
- 从数据中学习,是指可以由数据自动决定权重参数的值。
4.2.3 mini-batch学习
为什么使用mini-batch:
当数据很多很多时,一次性计算全部数据的损失函数是很漫长且不现实的。因此,从中挑选出一部分,作为全部数据的“近似”。
从代码中看具体流程:
-
- 假设总共有10000个数据,batch_size设置为500,总共训练80伦
-
- 训练中的每一轮,从10000个数据中随机挑选出500数据,用于训练
4.4 梯度
使用定义计算梯度。
def numerical_gradient(f, x):
h = 1e-4
grad = np.zeros_like(x)
for idx in range(x.size):
tmp_val = x[idx]
# f(x+h)
x[idx] = tmp_val + h
fxh1 = f(x)
#f(x-h)
x[idx] = tmp_val - h
fxh2 = f(x)
grad[idx] = (fxh1 - fxh2) / (2*h)
x[idx] = tmp_val
return grad
4.4.1 梯度法
- 机器学习的主要任务是在学习时寻找最优参数。
- 使用梯度来寻找函数最小值的方法就是梯度法。
- 梯度表示的是各点处函数值减小最多的方向。
def gradient_descent(f, init_x, lr=0.01, step_num = 100):
x = init_x
for i in range(step_num):
grad = numerical_gradient(f, x)
x -= lr * grad
return x
4.5.3 基于测试数据的评价
epoch:epoch是一个单位。一个epoch表示学习中所有训练数据均被使用过一次时的更新次数。比如,对于10000笔训练数据,用大小为100 笔数据的mini-batch进行学习时,重复随机梯度下降法100次,所 有的训练数据就都被“看过”了。此时,100次就是一个epoch。