模型的学习过程
将数据的特征分为,有用特征和无用特征(噪声).有用特征与任务有关,无用特征与任务无关.
模型的学习过程就是增大有用特征的权重并减少无用特征的权重的过程.
神经网络反向传播过程简化如下:
y = a 0 x 0 + a 1 x 1 , l o s s = 0.5 ∗ ( y l a b e l − y ) 2 y = a_0x_0 + a_1x_1, loss = 0.5*(y_{label}-y)^2 y=a0x0+a1x1,loss=0.5∗(ylabel−y)2
d l o s s / d y = y − y l a b e l d_{loss}/d_y = y-y_{label} dloss/dy=y−ylabel
d l o s s / d a = d l o s s / d y ∗ d y / d a = ( y − y l a b e l ) ∗ x d_{loss}/d{a} = d_{loss}/d_y*d_y/d_a = (y-y_{label})*x dloss/da=dloss/dy∗dy/da=(y−ylabel)∗x
a n e x t = a + η ( y l a b e l − y ) ∗ x , η > 0 a_{next} = a+\eta (y_{label}-y)*x,\eta>0 anext=a+η(ylabel−y)∗x,η>0
假设x0为无用特征,x1为有用特征
增大有用特征的权重
考虑上述公式:
假设x1和label正相关,a1为正:
若x1增大(减少),则label也增大(减少),由于学习需要过程,y的增大(减少)跟不上,则此时(y_{label}-y)>0(<0),所以此时a1增大,即学习到了正相关有用特征.
假设x1和label负相关,a1为负:
若x1增大(减少),则label减少(增大),由于学习需要过程,y的增大(减少)跟不上,则此时(y_{label}-y)<0(>0),所以此时a1减少,即模型学习到了负相关的有用特征.
注释:上述的跟不上指学习过程中,如果跟上了就是学习完成了
减少无用特征的权重
考虑上述公式:
x0是无用特征,x和label无关
假设a0为正:
若x0增大(减少),而label不变,y也增大(减少),则此时(y_{label}-y)<0(>0),所以此时a减少,即抑制了无用特征.
假设a0为负:
若x0增大(减少),而label不变,y也减少(增大),则此时(y_{label}-y)>0(<0),所以此时a增大,即抑制了无用特征.
总结以下:在学习过程在,有用特征的权重,总是同向增强(正增负减).无用特征反向减弱(负增正减).
至于如何学习有用特征抑制无用特征,就是让这些特征出现在学习过程中,反向传播自然就是调整它们的梯度.
过拟合
过拟合是指模型在训练数据上表现很好,但在未知数据上表现不佳。这通常是因为模型在训练数据上学习了过多的噪声和异常值,导致在新的、未见过的数据上泛化能力下降。
在学习过程中,如果无用特征的出现次数太少,其权重就会没有得到抑制,训练集可以通过调整权重,组合有用特征和无用特征,仍然可以输出正确的结果.而测试集上无用特征稍微变化一下,原有的有用特征和无用特征组合就不再适用.
小数据训练trick
小数据集训练指通过单gpu/单batch/无数据增强训练少量数据,快速验证模型的拟合能力.这个学习过程就是过拟合过程,学习了大量无用特征,因此如果想测试,就需要和原有一模一样的数据处理pipeline.