math - 多层感知器替换为单层感知器

标签 math machine-learning neural-network linear-algebra 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 具有线性激活函数(如阶跃函数)

异或: http://s17.postimg.org/n77pkd81b/xor1.png

最佳答案

线性函数是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 比使用阶跃函数的单层感知器更具表现力。

关于math - 多层感知器替换为单层感知器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30559405/

相关文章:

machine-learning - 交叉验证是否用于找到最佳模型/架构或模型/架构的最佳参数?

machine-learning - TimeDistributed(Dense) 与 Keras 中的 Dense - 相同数量的参数

java - 如何通过Java中的纬度/经度点计算两条相交线之间的角度?

c++ - 将函数作为参数传递以使用 lambda 集成对象

python - 如何在 sklearn 中将线性回归与分类变量结合使用

python - 与 CNN 交叉验证

machine-learning - 哪种(机器学习)方法可以识别多元时间序列中不稳定移动的 3D 结构?

python - 在 Keras 模型中使用 fit_generator

performance - 最快的数学编程语言?

generics - 均值函数的 Rust 泛型语法