机器学习常识 20: 全连接 BP 神经网络

摘要: BP (Backpropagation ) 神经网络是一个万能的函数模拟器.

所有的神经网络, 本质都是特征提取器 – 斯 ⋅ \cdot 沃索地.

1. BP 神经网络的结构

机器学习常识 20: 全连接 BP 神经网络_第1张图片
图 1 给出一个四层神经网络.

  • 输入层有 3 个端口, 表示数据有 3 个特征;
  • 第一个隐藏层有 5 个节点, 表示从 3 个特征提出了 5 个新的特征, 每个新特征都是前一特征的加权和 (线性模型);
  • 第二个隐藏层有 4 个节点, 表示从上一层的 5 个特征提出了 4 个新的特征;
  • 输出层有 2 个节点, 表示从上一层的 4 个特征提出了 2 个新的特征.

神经网络可以解决各种机器学习问题:

  • 假设这里应对的是二分类问题, y 1 y_1 y1 对应于负例, y 2 y_2 y2 对应于正例, 那么, y 1 ≥ y 2 y_1 \ge y_2 y1y2 时, 就预测为负例, 否则预测为正例.
  • 对于 k k k 个类别的多分类问题, 输出端口数设置为 k k k.
  • 对于回归问题, 输出端口设置为 1 1 1.

2. 激活函数

仅仅是线性方案, 也就相当于 机器学习常识 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}
这种简单到令人发指的函数, 就可以改变线性特点.
于是, 神经网络就变成了万能的函数逼近器, 也就是说, 任意函数都可以用一个神经网络来逼近, 参见 为什么说神经网络可以逼近任意函数.

3. 与 PCA 的联系与区别

联系: 都是进行特征提取.
区别:

  • PCA 的特征提取是无监督的, 神经网络一般是有监督的;
  • PCA 的特征提取有理论依据, 神经网络的连边使用一些随机的初始权重, 然后不断调整;
  • PCA 的特征提取数量有理论依据, 神经网络每层节点数量 (特征数量) 是人为设置的超参数, 连激活函数的选取也是人为的.

4. 深度学习与宽度学习

如果数据集比较小, 特征比较少, 则应该使用较少的层数, 以及较少的节点数.
如果数据集比较大, 特征比较多, 则应该使用较多的层数, 以及较多的节点数. 所以形成了 深度学习. 换言之, 深度学习特别“吃”数据, 数据量小了就别玩, 去搞搞 机器学习常识 12: SVM之类的小样本学习吧.

宽度学习是指隐藏层的节点数非常多, 理论上已经证明, 宽度学习与深度学习是等价的. 我认为原因在于: 由于神经网络初始权重设置的随机性, 宽度学习提取的特征非常多, 总有几个是合适的.

5. 关于调参师

有些人诟病做神经网络 (特别是应用) 就是当网络调参师: 几层,什么激活函数,以及哪些组件 (这个在后面要介绍). 我还是有不同意见. 机器学习需要有洞察力 (insight), 如果基础不牢, 没有机器学习的基本思路, 就像在漆黑的屋子里面找东西一样, 纯碰运气是不气的. 本系列贴子也是希望为读建立一些 insight.

你可能感兴趣的:(机器学习常识,机器学习,神经网络,人工智能)