遇到的问题以及解决方案
- Question1:对于随机生成的x,y训练出来的拟合直线效果不理想。
解决方案:将权重的标准差调整为0后效果仍然不理想,然后根据线性回归的流程,对所有参数设置的一一进行排查,最后将错误定位到梯度下降法的步长,起初设置为0.0001,导致步长太小,使得直线拟合速度太慢,迭代5000步后仍然无法达到理想程度,因此加大步长,加快拟合速度,但步长又不可以太大,会导致最终结果在最佳收敛点附近徘徊。
调整随机分布的y的方差的结果:
图2:y值方差为0.1的拟合结果图
图3:y值方差为0.4的拟合结果图
从上图分析,改变y的方差值,三点均匀的分布在直线两侧,则说明拟合的结果较为不错。
- 调整梯度下降法的步长
图4:步长为0.01的拟合结果图
图5:步长为0.0001的拟合结果
从上图分析,步长太小会导致拟合速度变慢。
用tensorboard可视化线性回归模型:
图6:损失值变化曲线图
由上图可知,在迭代到700步之前,损失值迅速下降,迭代到600步之后,损失之几乎没有变化,呈现一条水平的直线,其值为0.1856。
图7:线性回归数据流图
图8:parameters结点中地内部结构图
由图7可以清晰地分析出各个结点之间地数据流向,结点表示一个命名空间,直线上的数据表示有多少个张量(数据)从一个结点流向另一个结点。双击其中一个结点patameters,如图8所示,又可以清楚地看到其内部包含两个变量,分别为weights和biases。
图9:偏差变化图
图10:权重变化图
图9分析可得,偏差在刚开始迭代时迅速下降,然后又迅速上升,大约迭代到700步之后区域稳定。
图10分析可得,在迭代到700步之前,权重迅速上升,700步之后趋于平衡,其值大约为1.40。
图11:偏差直方图
图12:权重直方图
经验与总结
1.模型的优缺点分析
优点:本次实验实现的是最简单的一元线性回归,实现方式较为简单,理解起来较为容易,适合tensorflow初学者快速入门。
缺点:
- 线性回归模型的实际意义是用于预测,而本实验是随机生成的原始数据,没有实际含义,不可以应用到实际应用问题中。
- 只设置了一个特征,不可以预测多特征的复杂线性回归问题,模型过于简单.
- 设计与实现过程中的各种错误与解决方法
模型中的相关参数设置:由于是tensorflow初学者,对线性回归中的相关参数设置一头雾水,导致拟合的结果不理想,通过查阅资料以及对线性回归模型的深入理解,根据实际模型不断地去调整参数,最后达到理想结果。
- 改进与拓展
根据模型分析的优缺点,可以将单一特征的线性回归模型改进为多特征的线性回归模型,设置多个权重(w1,w2....)。随机生成样本点不具有实际意义,也不利于初学者对线性回归模型的深入理解,可以通过具体的例子来理解,比如说可以参考房价预测模型,根据房子的大小,所处区域以及其他特征建立线性回归模型,最后得到的模型,可以用来预测更多其他房子的房价,更具有实际应用价值。
最后附上github链接https://github.com/aiyadehaijiao/LinearRegression