paddle学习——day2:波士顿房价预测任务

paddle学习——day2:波士顿房价预测任务

一、深度学习模型
paddle学习——day2:波士顿房价预测任务_第1张图片

1、数据处理
数据处理包含五个部分:数据导入、数据形状变换、数据集划分、数据归一化处理和封装load data函数。数据预处理后,才能被模型调用。
1)数据归一化处理
对每个特征进行归一化处理,使得每个特征的取值缩放到0~1之间。这样做有两个好处:一是模型训练更高效;二是特征前的权重大小可以代表该变量对预测结果的贡献度(因为每个特征值本身的范围相同)。
2)梯度下降法
paddle学习——day2:波士顿房价预测任务_第2张图片

3)随机梯度下降法( Stochastic Gradient Descent)
在上述程序中,每次损失函数和梯度计算都是基于数据集中的全量数据。对于波士顿房价预测任务数据集而言,样本数比较少,只有404个。但在实际问题中,数据集往往非常大,如果每次都使用全量数据进行计算,效率非常低,通俗地说就是“杀鸡焉用牛刀”。由于参数每次只沿着梯度反方向更新一点点,因此方向并不需要那么精确。一个合理的解决方案是每次从总的数据集中随机抽取出小部分数据来代表整体,基于这部分数据计算梯度和损失来更新参数,这种方法被称作随机梯度下降法(Stochastic Gradient Descent,SGD),核心概念如下:
min-batch:每次迭代时抽取出来的一批数据被称为一个min-batch。
batch_size:一个mini-batch所包含的样本数目称为batch_size。
epoch:当程序迭代的时候,按mini-batch逐渐抽取出样本,当把整个数据集都遍历到了的时候,则完成了一轮训练,也叫一个epoch。启动训练时,可以将训练的轮数num_epochs和batch_size作为参数传入。
2、通过大量实验发现,模型对最后出现的数据印象更加深刻。训练数据导入后,越接近模型训练结束,最后几个批次数据对模型参数的影响越大。为了避免模型记忆影响训练效果,需要进行样本乱序操作。
在这里插入图片描述

4、总结
本节我们详细介绍了如何使用Numpy实现梯度下降算法,构建并训练了一个简单的线性模型实现波士顿房价预测,可以总结出,使用神经网络建模房价预测有三个要点:
构建网络,初始化参数w和b,定义预测和损失函数的计算方法。
随机选择初始点,建立梯度的计算方法和参数更新方式。
从总的数据集中抽取部分数据作为一个mini_batch,计算梯度并更新参数,不断迭代直到损失函数几乎不再下降。
作业
作业1-2
样本归一化:预测时的样本数据同样也需要归一化,但使用训练样本的均值和极值计算,这是为什么?
答:不能直接对测试数据集按公式进行归一化,而是要使用训练数据集的均值和方差对测试数据集归一化;
原因
原因1:真实的环境中,数据会源源不断输出进模型,无法求取均值和极值的;
原因2:训练数据集是模拟真实环境中的数据,不能直接使用自身的均值和极值;
原因3:真实环境中,无法对单个数据进行归一化;
当部分参数的梯度计算为0(接近0)时,可能是什么情况?是否意味着完成训练?
答:梯度相当于多维的导数 导数你知道 是表示变化率的 导数为零表示常量
那么同样 某变量沿边界的梯度方向的偏导数为零即这一变量沿这一方向的变化率为零
就好像两点在一条等高线上

作业 1-3
随机梯度下降的batchsize设置成多少合适?过小有什么问题?过大有什么问题?提示:过大以整个样本集合为例,过小以单个样本为例来思考。
答:Batch size大小的选择也至关重要。为了在内存效率和内存容量之间寻求最佳平衡,batch size应该精心设置,从而最优化网络模型的性能及速度。
为单个样本时,可能会难以达到收敛状态
一次训练使用的配置:5个epoch,1000个样本,batchsize=20,最内层循环执行多少轮?
答:内层循环为:1000/20 = 50;
外层循环为:5

你可能感兴趣的:(paddle学习,深度学习)