所谓线性变换,个人理解为:scaling和shifting混合,各自混合比例是任意的。直白说就是:
f(x) = ax + b, a负责scaling,b负责shifting
所谓线性变换的组合,个人理解为:前一次线性变换的输出作为本次线性变换的输入(有一种等差数列既视感)。
线性变换的多次连续使用,等效于一次(特定的)线性变换。用公式表示会很直接:
多次线性变换的结果还是线性变换.jpg
正因为多次连续线性变换等价于单次线性变换,连续stacking多个线性层到网络中是吃力不讨好的事情,并不能增加网络表达能力。例如单层网络没法解决XOR问题,stacking多个线性层后依然解决不了XOR问题。
=>
于是乎,神经网络中的每个线性层后面都要带个非线性层来增加表达能力,这成了一种必须而不是可选。
=>
进而,很多文献里面把”一个线性层,以及它紧接着的非线性层“看成是一个layer。这本来无可厚非,但是layer的概念就被混淆了。例如:当人们说到卷积层,他/她的意思是conv+relu,还是只有conv而不带relu?有人会说conv肯定带relu,这是实践出来的常识。但是别忘记BN其实也是一种激活函数,conv+bn+relu的结构就不是conv紧挨着relu,而人们又往往喜欢把BN称为一个层。
网友评论