摘要: BP (Backpropagation ) 神经网络是一个万能的函数模拟器.
所有的神经网络, 本质都是特征提取器 – 斯 ⋅ \cdot ⋅沃索地.
神经网络可以解决各种机器学习问题:
仅仅是线性方案, 也就相当于 机器学习常识 11: logistic 回归 的水平, 肯定不能让 BP 神经网络达到现有的高度. 而且, 仅仅是线性方案, 多层与两层没有区别, 因为三层的 X W 1 W 2 \mathbf{XW}_1\mathbf{W}_2 XW1W2 可以替换为两层的 X W 3 \mathbf{XW}_3 XW3, 其中 W 3 = W 1 W 2 \mathbf{W}_3 = \mathbf{W}_1\mathbf{W}_2 W3=W1W2.
激活函数将加权和变成另一个值, 如
f ( x ) = max { 0 , x } f(x) = \max\{0, x\} f(x)=max{0,x}
这种简单到令人发指的函数, 就可以改变线性特点.
于是, 神经网络就变成了万能的函数逼近器, 也就是说, 任意函数都可以用一个神经网络来逼近, 参见 为什么说神经网络可以逼近任意函数.
联系: 都是进行特征提取.
区别:
如果数据集比较小, 特征比较少, 则应该使用较少的层数, 以及较少的节点数.
如果数据集比较大, 特征比较多, 则应该使用较多的层数, 以及较多的节点数. 所以形成了 深度学习. 换言之, 深度学习特别“吃”数据, 数据量小了就别玩, 去搞搞 机器学习常识 12: SVM之类的小样本学习吧.
宽度学习是指隐藏层的节点数非常多, 理论上已经证明, 宽度学习与深度学习是等价的. 我认为原因在于: 由于神经网络初始权重设置的随机性, 宽度学习提取的特征非常多, 总有几个是合适的.
有些人诟病做神经网络 (特别是应用) 就是当网络调参师: 几层,什么激活函数,以及哪些组件 (这个在后面要介绍). 我还是有不同意见. 机器学习需要有洞察力 (insight), 如果基础不牢, 没有机器学习的基本思路, 就像在漆黑的屋子里面找东西一样, 纯碰运气是不气的. 本系列贴子也是希望为读建立一些 insight.