1. 梯度下降法
梯度:
是一个theta 与 一条样本x 组成的 映射公式
可以看出梯度的计算量主要来自于 左边部分
所有样本参与 -- 批量梯度下降法
随机抽取一条样本参与 -- 随机梯度下降法
一小部分样本参与 -- 小批量 梯度下降法
2. epoch 与 batch
epoch:一次迭代 w t --> w t+1
batch:一次迭代中 一部分样本
例如: 背诵唐诗300首
循环背诵20次
n_sample = 300 (样本总量)
n_epoch = 20 (循环20次)
一次300首太多了 50首 50首的进行
batch_size = 50 (批次的大小 50)
n_batch = 6 (6个批次)
3. 代码实现
import numpy as np
# 创建数据集
X = 2 * np.random.rand(100, 1) # (100, 1) 0-1之间均匀分布
y = 4 + 3 * X + np.random.randn(100, 1) # 这里的 4,3需要求解的
X_b = np.c_[np.ones((100, 1)), X]
# 超参
learn_rate = 0.001
n_iterations = 10000
# 初始化theta
theta = np.random.randn(2, 1)
for _ in range(n_iterations):
gradient = X_b.T.dot((X_b.dot(theta) - y)) # 梯度的计算公式
theta = theta - learn_rate*gradient # 梯度下降法 为什么将梯度下降法 因为梯度的前面 有个负号
print(theta) # 可以看到 接近于 (4, 3)
标签:03,梯度,样本,50,np,线性,theta,100
From: https://www.cnblogs.com/cavalier-chen/p/17895462.html