《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结

2.5 模型保存

Numpy提供了save接口,可直接将模型权重数组保存为.npy格式的文件。

In [53]

np.save('w.npy', net.w)
np.save('b.npy', net.b)

总结

本节我们详细介绍了如何使用Numpy实现梯度下降算法,构建并训练了一个简单的线性模型实现波士顿房价预测,可以总结出,使用神经网络建模房价预测有三个要点:

  • 构建网络,初始化参数w和b,定义预测和损失函数的计算方法。
  • 随机选择初始点,建立梯度的计算方法和参数更新方式。
  • 将数据集的数据按batch size的大小分成多个mini-batch,分别灌入模型计算梯度并更新参数,不断迭代直到损失函数几乎不再下降。

作业1-2

  1. 样本归一化:预测时的样本数据同样也需要归一化,但使用训练样本的均值和极值计算,这是为什么?

我看课程中老师说的是为了尽可能地模拟真实的环境,不过这个我不是很明白,我自己的理解是这样,我觉得一开始我们是将数据集进行划分的,80%划分为训练集,20%划分为测试集,因此测试集的归一化需要使用训练集的均值和极值进行计算,因为训练集更多嘛,测试集相对来说数据还是有点少的。

  1. 当部分参数的梯度计算为0(接近0)时,可能是什么情况?是否意味着完成训练?

这个呢,一开始我是以为那应该就是到达极值点了,但实际上我把我的数学知识都还给老师了。这个应该是不一定的,首先它有可能是确实到达了全局的极值点;但是也有可能只是一个局部的极值点,这个时候我们就要去和其他的极值点进行比较,判断哪个是全局的极值点如图1所示;同样它还有可能根本不是一个极值点,比如说马鞍这样一个特殊的图形,如图2所示,沿着y轴来看,确实是一个极小值,但是沿着x轴来看却不是极小值,而是一个极大值了,这就很有意思,所以说我们在考虑问题的时候一定要从多个角度去考虑,另外数学基础真的很重要,一定要好好学习数学知识。

作业 1-3

  1. 随机梯度下降的batchsize设置成多少合适?过小有什么问题?过大有什么问题?提示:过大以整个样本集合为例,过小以单个样本为例来思考。

随机梯度下降的batchsize应该根据自身的情况进行设定,如果数据集不是很大,可以将全部数据读入;如果数据太大,可以考虑使用mini-batch。

如果设置过小的话,如单个样本,那么每个epoch就会花费较多的时间,同时由于每次都按照一个样本进行更新梯度,那么可能梯度会方向混乱,最后导致无法收敛;如果设置过大的话,如整个样本集合,虽然epoch的时间减少了,但是可能需要更大的epoch,同时对于数据集很大的情况来说,可能会导致内存崩溃。所以要合理地选择batchsize。

此题目在1.5.2.4也有解答

  1. 一次训练使用的配置:5个epoch,1000个样本,batchsize=20,最内层循环执行多少轮?

在《1.5训练过程和校验效果》的8:35左右,老师解答 一个epoch会执行1000/20 = 50次,50*5(epoch)=250轮:最内层循环执行250轮

作业1-4

《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结_第1张图片

基本知识

1. 求导的链式法则

链式法则是微积分中的求导法则,用于求一个复合函数的导数,是在微积分的求导运算中一种常用的方法。复合函数的导数将是构成复合这有限个函数在相应点的导数的乘积,就像锁链一样一环套一环,故称链式法则。如图9所示,如果求最终输出对内层输入(第一层)的梯度,等于外层梯度(第二层)乘以本层函数的梯度

《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结_第2张图片

图9:求导的链式法则

2. 计算图的概念

(1)为何是反向计算梯度?即梯度是由网络后端向前端计算。当前层的梯度要依据处于网络中后一层的梯度来计算,所以只有先算后一层的梯度才能计算本层的梯度

(2)案例:购买苹果产生消费的计算图。假设一家商店9折促销苹果,每个的单价100元。计算一个顾客总消费的结构如图10所示。

《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结_第3张图片

图10:购买苹果所产生的消费计算图

  • 前向计算过程:以黑色箭头表示,顾客购买了2个苹果,再加上九折的折扣,一共消费100*2*0.9=180元。
  • 后向传播过程:以红色箭头表示,根据链式法则,本层的梯度计算 * 后一层传递过来的梯度,所以需从后向前计算

最后一层的输出对自身的求导为1。导数第二层根据图11所示的乘法求导的公式,分别为0.9(本层梯度(乘法公式)为那个折扣0.9)*1(上层的梯度)和200(0.9下面的本层梯度是200)*1(上层的梯度)。同样的,第三层数量的反向梯度为100 (本层梯度)* 0.9(第二层的反向梯度)=90,2 * 0.9=1.8。

图11:乘法求导的公式

作业题
  1. 根据 图12 所示的乘法和加法的导数公式,完成 图13 购买苹果和橘子的梯度传播的题目。

《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结_第4张图片

图12:乘法和加法的导数公式

《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结_第5张图片

图13:购买苹果和橘子产生消费的计算图

《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结_第6张图片

加法不太会???看了大佬的感觉很对,加法就应该这样

  1. 挑战题:用代码实现两层的神经网络的梯度传播,中间层的尺寸为13【房价预测案例】(教案当前的版本为一层的神经网络),如 图14 所示。

图14:两层的神经网络

你可能感兴趣的:(《零基础实践深度学习》,numpy,深度学习,人工智能,大数据,机器学习,飞桨,百度云)