神经网络:简介#
预计整个模块学习时长: 75 分钟
学习目标:
解释我们为什么要构建神经网络,以及它们解决了哪些使用场景的问题。
定义并说明深度神经网络架构中几个关键组件各自的作用:
- 节点(Nodes)
- 隐藏层(Hidden layers)
- 激活函数(Activation functions)
顺着推理过程一步步走一遍,建立「神经网络是怎么做出预测」的直觉。
借助反向传播算法,建立「神经网络是怎么被训练出来的」的高层直觉。
解释神经网络如何完成两种多类别分类:一对多(one-vs.-all)与一对一(one-vs.-one)。
先修要求:
本模块假设你已经熟悉以下模块中介绍的概念:
一个线性模型分不开的分类问题#
先回顾一个场景。在类别型数据模块的特征交叉练习里,我们见过这样一个分类问题:

从图中可以看到,这个问题是非线性的。所谓“非线性”,指的是你没法用 $b + w_1x_1 + w_2x_2$ 这种形式的模型准确预测标签,换句话说,它的「决策面」不是一条直线。
不过话说回来,如果我们对特征 $x_1$ 和 $x_2$ 做一次特征交叉,两个特征之间的非线性关系就能用一个线性模型来表示了:
$$b + w_1x_1 + w_2x_2 + w_3x_3$$这里 $x_3$ 就是 $x_1$ 与 $x_2$ 的特征交叉。结果是:

对比一下图 1 和图 2 就会发现:坐标平面还是那张坐标平面,模型也依然是那个线性模型,变的是它的输入——多出来的 $x_3$ 那一项,正好把弯曲的边界给撑了出来。
更难一点的非线性问题#
现在换一个数据集看看:

还记得吗,在特征交叉练习里,为了给这份数据找到一个能用的线性模型,我们要试上一轮又一轮、摸索上好一阵子,才能挑出合适的特征交叉。
把找交叉这件苦活交给模型自己#
那么,如果不让你自己去趟这些弯路呢?
神经网络(Neural networks)正是一族为「在数据里找非线性模式」而设计的模型架构。在训练神经网络的过程中,模型会自动学会在输入数据上该做哪些最优的特征交叉,从而最小化损失。
接下来的几节,我们就近距离看看神经网络到底是怎么工作的。
MLWM: 关于神经网络的核心思想,为什么需要自动化特征提取、为什么需要非线性变化以及为什么需要深度神经网络,可以参见内容「深度学习线性回归入门:多项式回归与神经网络建模基础」 的介绍。在思想上的理解,对于我们为什么需要从机器学习转向深度学习是很有帮助的。
关键术语:
- 激活函数(Activation function)
- 隐藏层(Hidden layer)
- 线性模型(Linear model)
- 模型(Model)
- 神经网络(Neural network)
- 节点(Nodes)
- 非线性(Nonlinear)