下面的习题来自:机器学习实战:基于Scikit-Learn和TensorFlow

  1. 如果你的训练集有超过百万个特征,你会选择什么线性回归训练算法?
    答: 随机梯度下降或者小批量梯度下降。在内存允许时,还可以使用批量梯度下降。但是由于计算复杂度随特征数量的增加而快速提升(比二次方还高),因此不能使用标准方程。

  2. 如果你的训练集里特征的数值大小迥异,什么算法可能会受到影响?受影响程度如何?你应该怎么做?
    答:成本函数将呈现细长的碗状,导致梯度下降需要很长时间才能收敛。可以通过对数据进行缩放,但标准方程法不需要缩放就可以正常工作。

  3. 训练逻辑回归模型时,梯度下降是否会困于局部最小值?
    答: 不会,它的成本函数是凸函数,只有全局最优。

  4. 假设运行时间足够长,所有的梯度下降算法是不是最终会产生相同的模型?
    答: 在优化问题是凸的(线性回归和逻辑回归),学习率不太高的情况下,所有的梯度下降算法都可以接近全局最优,最终产生的模型非常相似。但除非降低学习率,否则随机梯度和小批量梯度下降都不会真正收敛。相反,他们在全局最优附近波动。此时,即使运行时间足够长,产生的模型还是会有轻微不同。

  5. 假设你使用的是批量梯度下降,并且每一轮训练都绘制出其验证误差,如果发现验证误差持续上升,可能发生了什么?你如何解决这个问题?
    答: 如果训练误差也开始上升,此时是由于学习率太高,应该降低学习率;否则,可能模型过度拟合,应该停止训练。

  6. 当验证误差开始上升时,立刻停止小批量梯度下降算法训练是否为一个好主意?
    答: 随机梯度下降和小批量梯度下降,可能在某次训练中无法取得进展,在开始上升时就停止,可能在达到最优之前过早停止训练。可以定时保存模型,当较长一段时间没有改善是,恢复保存的最优模型。

  7. 哪种梯度下降算法(所有我们讨论过的)能最快到达最优解的附近?哪种会收敛?如何使其他算法同样收敛?
    答: 随机梯度由于每次训练一个实例,会最快到达全局最优附近(或者批量很小的小批量梯度下降)。只有批量梯度下降经足够长的时间后收敛。对于其他的,只有降低学习率,否则将一直在最小值上下。

  8. 假设你使用的是多项式回归,绘制出学习曲线,你发现训练误差和验证误差之间存在很大的差距。发生了什么?哪三种方法可以解决这个问题?
    答:如果验证误差远远高于训练误差,可能是模型过拟合。此时,可以对多项式降阶或者对模型正则化或者扩大训练集。

  9. 假设你使用的是岭回归,你注意到训练误差和验证误差几乎相等,并且非常高。你认为模型是高方差还是高偏差?你应该提高还是降低正则化超参数?
    答: 可能是对训练集拟合不足,意味着偏差较高,应该尝试降低正则化超参数。

  10. 你为何要使用:
    ·岭回归而不是线性回归?
    ·Lasso回归而不是岭回归?
    ·弹性网络而不是Lasso回归?
    答: 1. 有正则化的模型比没有的表现更好。2.Lasso使用l1范数,倾向于将不重要的参数值降为0(生成稀疏模型),自动执行特征选择。如果觉得只有少数特征真正重要,可以选择Lasso,否则更倾向岭回归模型。3.在某些情况下,Lasso可能产生异常表现(例如当多个特征强相关,或者特征数量比训练实例多时)。弹性网络可以添加一个额外的超参数来设置。可以设置l1_ratio=1即可使用Lasso。

  11. 如果你想将图片分类为户外/室内以及白天/黑夜。你应该实现
    两个逻辑回归分类器还是一个Softmax回归分类器?
    答: 两个逻辑分类器。

  12. 用Softmax回归进行批量梯度下降训练,并实施早期停止法(不使用Scikit-Learn)。
    答: 暂时先略了~