模型选择、欠拟合和过拟合 讨论区

http://zh.diveintodeeplearning.org/chapter_deep-learning-basics/underfit-overfit.html

老师你好,打开jupyternotebook后,没有欠拟合和实战作业的代码文件是为什么呀,怎么更新到最新。谢谢

我们的课件在不断更新。请确保你local的repo同步到远程的repo:https://github.com/mli/gluon-tutorials-zh.git

例如:
git remote add zh https://github.com/mli/gluon-tutorials-zh.git
git pull zh master --rebase

定义的test(net, X, y)并没有用上,y_train与y_test也没有用上,train的时候直接用的y[:num_train]和y[num_train:].

老师,我是用的是conda装的,更新gluon-tutorials-zh的指令要在哪输啊。谢谢

解决啦,谢谢,之前没搞清楚文件之间的关系

test()函数的确没用到,估计小编忘了。。

至于

train(X[:num_train, :], X[num_train:, :], y[:num_train], y[num_train:])
train(x[:num_train, :], x[num_train:, :], y[:num_train], y[num_train:])

可能是为了看上去统一,不过建议传入参数改为y_train与y_test,这样更符合逻辑。

2赞

谢谢。已在最新pull request修复此问题。

所以是咋解决的?把gluon-tutorials-zh文件夹下的东西全删了,然后重新从git拉一个?

所有关于过拟合欠拟合的说明中都提到了多项式的阶数,我一直比较好奇,在教程中,是手动对数据进行了平方,立方,这并不涉及到模型本身的复杂度。换句话说,在深度学习模型中,这个阶数是如何表现出来的?我觉得除了RNN可能会实现对原始输入x进行乘方操作,其余的mlp,cnn都无法实现。

2赞

模型复杂度由于参数增加(不同阶数项的系数)而增加
深度学习模型不一定要通过表达阶数来拟合数据,有足够多的参数就可以了

1赞

嗯,我也觉得深度学习模型的复杂度某种意义上就等同于参数的数量,探讨深度学习模型的阶数是没有意义的,我觉得某种意义上,一般nn中的乘加操作根本也无法实现乘方操作。更别提阶数的问题了。

学渣:模型复杂度低(笨人),训练量小(不努力),训练误差大,泛化误差大,(训练集表现不好,测试集表现也不好,严重欠拟合)
学痞:模型复杂度高(聪明人),训练量小(不努力),训练误差小,泛化误差大,(训练集表现好,测试集表现不好,有些过拟合)
学痴:模型复杂度较低(笨人),训练量大(努力),训练误差大,泛化误差大,(训练集表现一般,测试集表现也一般,这种应该属于欠拟合,太笨)
学霸:模型复杂度较高(聪明人),训练量大(努力),训练误差小,泛化误差小,(模型复杂度和训练量结合的很好,既不欠拟合,也不过拟合)

8赞

2 如果用一个三阶多项式模型来拟合一个线性模型生成的数据,可能会有什么问题?为什么?

答:可能会发生过拟合。但是要看线性模型生成多少个点,如果点非常少,例如小于等于4,那么3次模型会有可能严重过拟合,在训练集上loss可以降为0,但是在测试集上表现很差。但是如果数据点非常多的话,例如1000个点,3次模型来你和还是不错的,因为高阶项的系数基本都是趋近于0的。因此在测试集上表现也不会很差的

3 在我们本节提到的三阶多项式拟合问题里,有没有可能把1000个样本的训练误差的期望降到0,为什么?

答:没有可能。除非这1000个样本中只有小于等于4个点不共线,这种情况才会使得loss为0,因为3次多项式最多可以完全你和4个不共线的点。

23赞

一个线性回归模型是怎么拟合三次独项式的呢?或者说,这里的非线性是怎么引入的呢?多层感知机还可以说是因为有了激活函数,可是本课程里的网络模型连激活函数都没有啊?

求大神稍微解释一下, L1和L2范数作为loss函数对网络训练结果的影响。

学痴不应该是过拟合么?

2赞

学渣:模型复杂度低(笨人),训练量小(不努力),训练误差大,泛化误差大,(训练集表现不好,测试集表现也不好,严重欠拟合) 学痞:模型复杂度高(聪明人),训练量小(不努力),训练误差小,泛化误差大,(训练集表现好,测试集表现不好,有些过拟合…

1赞

你的概念理解错了,这里的线性回归指的是参数上的选取

1赞