波士顿房价预测任务

  损失函数的设计不仅仅要考虑“合理性”(有物理意义),同样需要考虑“易解性”(易于求解)

模型的构建和训练

  数据处理 -> 模型设计 -> 训练配置  -> 训练过程 -> 模型保存

  在构建不同的模型时,只有模型三要素不同,其它步骤基本一致,才产生了深度学习框架来加速建模。

数据处理

  数据处理包含五个部分:数据导入、数据形状变换、数据集划分、数据归一化处理和封装load data函数。数据预处理后,才能被模型调用。

  将数据集划分成训练集和测试集,其中训练集用于确定模型的参数,测试集用于评判模型的效果。

  对每个特征进行归一化处理,使得每个特征的取值缩放到0~1之间。这样做有两个好处:一是模型训练更高效;二是特征前的权重大小可以代表该变量对预测结果的贡献度(因为每个特征值本身的范围相同)。

模型设计

  模型设计是深度学习模型关键要素之一,也称为网络结构设计,相当于模型的假设空间,即实现模型“前向计算”(从输入到输出)的过程。

  线性回归模型的完整输出是 y = wx b ,这个从特征和参数计算输出值的过程称为“前向计算”。

训练配置

  模型设计完成后,需要通过训练配置寻找模型的最优值,即通过损失函数来衡量模型的好坏。训练配置也是深度学习模型关键要素之一。

  我们需要有某种指标来衡量预测值 z 跟真实值 y 之间的差距。对于回归问题,最常采用的衡量方法是使用均方误差作为评价模型好坏的指标。

训练过程

  求解参数 w 和 b 的数值,这个过程称为模型训练过程。训练过程是深度学习模型的关键要素之一,其目标是让定义的损失函数尽可能的小,也就是说找到一个参数解 w 和 b ,使得损失函数取得极小值。

  梯度下降法  

    求解Loss函数最小值可以这样实现:从当前的参数取值,一步步的按照梯度的方向下降,直到走到最低点。(梯度描述了目标函数在当前位置上升最快的方向)

    eta:控制每次参数值沿着梯度反方向变动的大小,即每次移动的步长,又称为学习率。

  随机梯度下降法

    在实际问题中,数据集往往非常大,如果每次都使用全量数据进行计算,效率非常低。由于参数每次只沿着梯度反方向更新一点点,因此方向并不需要那么精确。一个合理的解决方案是每次从总的数据集中随机抽取出小部分数据来代表整体,基于这部分数据计算梯度和损失来更新参数。

    minibatch:每次迭代时抽取出来的一批数据被称为一个minibatch。

    batch size:每个minibatch所包含的样本数目称为batch size。

    Epoch:当程序迭代的时候,按minibatch逐渐抽取出样本,当把整个数据集都遍历到了的时候,则完成了一轮训练,也叫一个Epoch(轮次)。启动训练时,可以将训练的轮数num_epochsbatch_size作为参数传入。

    (通过大量实验发现,模型对最后出现的数据印象更加深刻。训练数据导入后,越接近模型训练结束,最后几个批次数据对模型参数的影响越大。为了避免模型记忆影响训练效果,需要进行样本乱序操作。)

总结

  使用神经网络建模房价预测有三个要点:

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

额外的知识点

  求导的链式法则

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

    

 

    

posted @ 2023-10-22 23:18  花都八达鸟  阅读(84)  评论(0)    收藏  举报