引言
了解计算机组成原理的我们都知道,计算机处理的所有复杂任务和计算,实际都可以通过简单的与非门叠加实现。而从上文中,我们知道了神经网络是可以通过叠加层的方式来叠加各类计算逻辑的。
那么只要我们能够通过简单网络实现基础的与或非
逻辑运算,是否就可以通过叠加层的方式,将神经网络的表达能力扩展到可以表达计算机的所有复杂运算呢?
答案是肯定的!我们从感知机
来展开说明。
基本概念
感知机
(准确的说是单层感知机)是由两层神经元组成的最简单的神经网络模型,输入层接收外界输入信号,输出层是 M-P 神经元。
x 1 、 x 2 x_1、x_2 x1、x2 是输入信号,y 是输出信号, w 1 、 w 2 w_1、w_2 w1、w2 是权重。感知机的信号只有 1/0 两种取值,0 表示不传递信号,1 表示传递信号。
输入层:接收特征向量,如 ( x 1 , x 2 ) (x_1, x_2) (x1,x2),每个输入特征对应一个感知机的输入。
权重:每个输入特征都有一个相应的表示该特征对输出的影响的权重(weight),如 ( w 1 、 w 2 ) (w_1、w_2) (w1、w2)。
输入信号被送往神经元时,会被分别乘以固定的权重 ( w 1 x 1 、 w 2 x 2 ) (w_1x_1、w_2x_2) (w1x1、w2x2),神经元会计算传入信号的总和,只有当这个总和超过某个阈值
θ \theta θ(),才会输出 1,也就是这个神经元被激活。
数学表示
感知机计算逻辑的直观表示为数学式 1:
y = { 0 ( w 1 x 1 + w 2 x 2 ≤ θ ) 1 ( w 1 x 1 + w 2 x 2 > θ ) (1) y = \begin{cases} 0 & (w_1x_1 + w_2x_2 \leq \theta) \\ 1 & (w_1x_1 + w_2x_2 > \theta) \tag{1} \end{cases} y={ 01(w1x1+w2x2≤θ)(w1x1+w2x2>θ)(1)
用偏置项 b 表示阈值
θ \theta θ,其中 b=- θ \theta θ,感知机的计算逻辑可以表示为式 2:
y = { 0 ( w 1 x 1 + w 2 x 2 + b ≤ 0 ) 1 ( w 1 x 1 + w 2 x 2 + b > 0 ) (2) y = \begin{cases} 0 & (w_1x_1 + w_2x_2 + b \leq 0) \\ 1 & (w_1x_1 + w_2x_2 + b > 0) \tag{2} \end{cases} y={ 01(w1x1+w2x2+b≤0)(w1x1+w2x2+b>0)(2)
偏置:为了使模型更加灵活,感知机还包含一个偏置(bias)项 b,帮助调整分类边界。
更一般的,我们将式 2 拆分为激活函数
的表示方式:
σ ( x ) = { 0 ( x ≤ 0 ) 1 ( x > 0 ) (3) \sigma(x) = \begin{cases} 0 & (x \leq 0) \\ 1 & (x > 0) \end{cases} \tag{3} σ(x)={ 01(x≤0)(x>