梯度下降法的基本思想可以类比为一个下山的过程。假设这样一个场景:一个人被困在山上,需要从山上下来(i.e. 找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低。因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的路径。这个时候,他就可以利用梯度下降算法来帮助自己下山。具体来说就是,以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,同理,如果我们的目标是上山,也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走。然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。
梯度下降的三种方式:批量梯度下降,随机梯度下降,小批量梯度下降,下面我们用python代码实现这三种下降方式!
1.在实现梯度下降之前先做好准备工作.
- 导包
- 随机种子
- 保存图像
- 定义保存图像函数
- 过滤掉讨厌的警告信息
- 导包
import numpy as np
import os
#画图
%matplotlib inline
import matplotlib.pyplot as plt
- 保存图像
#保存图像
PROJECT_ROOT_DIR = "."
MODEL_ID = "linear_models"
- 随机种子
np.random.seed(42)
- 定义保存图像函数
#定义一个保存图像的函数
def save_fig(fig_id,tight_layout=True):
path = os.path.join(PROJECT_ROOT_DIR,"images",MODEL_ID,fig_id + ".png")#指定保存图像的路径
print("Saving figure",fig_id)#提示函数,正在保存图片
plt.savefig(path,format="png",dpi=300)#保存图片(需要指定保存路径,保存格式,清晰度)
#新建文件夹,'.images/linear_models/xx.png'
- 过滤掉讨厌的警告信息