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

简介: 使用Numpy实现梯度下降算法来构建和训练线性模型进行波士顿房价预测的过程,并提供了模型保存的方法,同时提出了几个关于梯度计算、参数更新和神经网络训练的作业题目。

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. 求导的链式法则

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

图9:求导的链式法则

2. 计算图的概念

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

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

图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 购买苹果和橘子的梯度传播的题目。

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

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

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

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

图14:两层的神经网络

相关文章
|
2月前
|
机器学习/深度学习 数据采集 算法
深度学习和机器学习中针对非时间序列的回归任务,有哪些改进角度?
本文探讨了在深度学习和机器学习中针对非时间序列的回归任务的多种改进策略,包括数据预处理、数据集增强、特征选择、模型选择、模型正则化与泛化、优化器选择、学习率调整、超参数调优以及性能评估与模型解释,旨在提升模型的性能和可解释性。
61 1
深度学习和机器学习中针对非时间序列的回归任务,有哪些改进角度?
|
2月前
|
机器学习/深度学习 数据采集 人工智能
《零基础实践深度学习》基于线性回归实现波士顿房价预测任务1.3.3
这篇文章详细介绍了如何使用线性回归算法实现波士顿房价预测任务,包括数据读取、形状变换、集划分、归一化处理、模型设计、前向计算以及损失函数的计算等步骤,并提供了相应的Python代码实现。
 《零基础实践深度学习》基于线性回归实现波士顿房价预测任务1.3.3
|
25天前
|
机器学习/深度学习 存储 自然语言处理
深度学习之任务序列中的快速适应
基于深度学习的任务序列中的快速适应是指模型在接连处理不同任务时,能够迅速调整和优化自身以适应新任务的能力。这种能力在动态环境和多任务学习中尤为重要,旨在减少训练时间和资源需求。
27 3
|
1月前
|
机器学习/深度学习 人工智能 算法
操作系统的未来:从多任务到深度学习的演变之路
本文将探讨操作系统如何从处理简单多任务发展到支持复杂的深度学习任务。我们将分析现代操作系统面临的新挑战,以及它们如何适应人工智能和大数据时代的要求。文章不仅回顾过去,也展望未来,思考操作系统在技术演进中的角色和方向。
48 3
|
2月前
|
机器学习/深度学习 算法 数据处理
《零基础实践深度学习》波士顿房价预测任务1.3.3.4训练过程
这篇文章详细阐述了如何使用线性回归对波士顿房价进行预测,包括构建神经网络模型、数据处理、模型设计、训练过程、梯度下降法以及随机梯度下降法(SGD)的应用,并提供了完整的Python代码实现。
|
2月前
|
机器学习/深度学习 算法 程序员
《零基础实践深度学习》波士顿房价预测任务 02
这篇文章通过"波士顿房价预测"任务,介绍了使用Python和Numpy构建神经网络模型的基本思路和操作,首先以线性回归模型为例,解释了神经网络中损失函数的选择和模型的构建过程。
|
2月前
|
机器学习/深度学习 算法 程序员
《零基础实践深度学习》使用飞桨重写波士顿房价预测任务
这篇文章通过使用飞桨(PaddlePaddle)框架重写波士顿房价预测任务,展示了飞桨的易用性和高效性,同时比较了基于Python原生编写模型与使用飞桨框架的异同,让读者体验到飞桨在简化深度学习模型开发方面的强大能力。
|
2月前
|
机器学习/深度学习 自然语言处理 并行计算
|
5月前
|
机器学习/深度学习 自动驾驶 算法
【计算机视觉+自动驾驶】二、多任务深度学习网络并联式、级联式构建详细讲解(图像解释 超详细必看)
【计算机视觉+自动驾驶】二、多任务深度学习网络并联式、级联式构建详细讲解(图像解释 超详细必看)
254 1
|
5月前
|
机器学习/深度学习 自然语言处理 数据格式
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类