多层感知器替换为单层感知器
Multilayer Perceptron replaced with Single Layer Perceptron
我在理解 MLP 和 SLP 之间的区别时遇到了问题。
我知道在第一种情况下,MLP 有不止一层(隐藏层)并且神经元有一个 非线性 激活函数,比如逻辑函数 (梯度下降所需要的)。但我读过:
"if all neurons in an MLP had a linear activation function, the MLP
could be replaced by a single layer of perceptrons, which can only
solve linearly separable problems"
我不明白为什么在 XOR 的特定情况下,它不是线性可分的,等效的 MLP 是一个两层网络,每个神经元都有一个线性激活函数,如阶跃函数。我知道我需要两行来分隔,但在这种情况下我不能应用前一条语句的规则(用 SLP 替换 MLP)。
异或的 Mlp:
http://s17.postimg.org/c7hwv0s8f/xor.png
在链接图像中,神经元 A B 和 C 具有线性激活函数(类似于阶跃函数)
线性函数是f(x) = a x + b
。如果我们采用另一个线性函数 g(z) = c z + d
,并应用 g(f(x))(相当于将一个线性层的输出作为下一个线性层的输入),我们得到 g(f(x)) = c (a x + b) + d = ac x + cb + d = (ac) x + (cb + d)
这本身就是另一个线性函数。
阶梯函数不是线性函数 - 不能写成a x + b
。这就是为什么使用阶跃函数的 MLP 严格来说比使用阶跃函数的单层感知器更具表现力。
我在理解 MLP 和 SLP 之间的区别时遇到了问题。
我知道在第一种情况下,MLP 有不止一层(隐藏层)并且神经元有一个 非线性 激活函数,比如逻辑函数 (梯度下降所需要的)。但我读过:
"if all neurons in an MLP had a linear activation function, the MLP could be replaced by a single layer of perceptrons, which can only solve linearly separable problems"
我不明白为什么在 XOR 的特定情况下,它不是线性可分的,等效的 MLP 是一个两层网络,每个神经元都有一个线性激活函数,如阶跃函数。我知道我需要两行来分隔,但在这种情况下我不能应用前一条语句的规则(用 SLP 替换 MLP)。
异或的 Mlp:
http://s17.postimg.org/c7hwv0s8f/xor.png
在链接图像中,神经元 A B 和 C 具有线性激活函数(类似于阶跃函数)
线性函数是f(x) = a x + b
。如果我们采用另一个线性函数 g(z) = c z + d
,并应用 g(f(x))(相当于将一个线性层的输出作为下一个线性层的输入),我们得到 g(f(x)) = c (a x + b) + d = ac x + cb + d = (ac) x + (cb + d)
这本身就是另一个线性函数。
阶梯函数不是线性函数 - 不能写成a x + b
。这就是为什么使用阶跃函数的 MLP 严格来说比使用阶跃函数的单层感知器更具表现力。