为什么神经网络无法用解析解来解?

这个是面试是遇到的这个问题。说对于线性回归,可以用normal equation来解,但是为何deep learning没法用解析解?当时答得略差。从网上找答案暂时也没有特别好的答案,因此我自己想了一下,总结在这里。

  1. 对于类似于sigmoid、tanh还有什么softplus之类奇奇怪怪的激活函数来说,以及类似交叉熵之类的损失函数来说,前向推断直接求导之后等于0,求极值,这个方程是超越方程,没有解析解。事实上人类能解的方程很少的。即使是最简单的多项式方程来说,大于等于5次的,都没有解析解求解( Abel–Ruffini theorem),更别说类似什么sigmoid套sigmoid套sigmoid之类的这种方程了。

  2. 最简单一些的网络,比方说前向的,激活函数是relu。由于relu是分段线性函数,前向推断可以是分段线性函数。这个时候假如loss又是l2 loss啊,l1 loss啊这类简单的,确实可以求解析解。但是要考虑的是规模。比方说,一共2层神经元,每层2个,ok,那就是16段线性( 2 2 × 2 = 16 2^{2\times2}=16 22×2=16),分16个段求解得到最佳值。如果是2层神经元,每层3个,那就是64段线性了( 2 2 × 3 = 64 2^{2\times3}=64 22×3=64),这才是多小规模的网络啊。所以如果真的分段,就得 2 N 2^N 2N个段去用解析解求解方程(N是神经元数量),现代的神经网络参数量都是million起,随随便便都是billion,要对神经网络分段分成 2 N 2^N 2N段,解析解求到猴年马月啊。而且还有一个问题,特别大规模的线性方程求解,比方说million量级,也不是那么容易的事。而且正规方程里边还有矩阵的逆,求逆又是 O ( n 3 ) O(n^3) O(n3)计算复杂度,然后N又是million。就算一个million量级的normal equation就坑死,更别说2的N次方个normal equation了。

你可能感兴趣的:(学习笔记,神经网络,深度学习,数学)