感知机(Perceptron)为什么不能表示异或(XOR)
2017-12-11 10:23
465 查看
1.感知机不能表示异或
在很早之前学Pattern Recognition相关课程的时候,老师在课堂上就说过感知机遇到的一个大问题就是无法表示异或问题(XOR)。后来接触深度学习相关的内容,开头部分肯定会提到感知机,提到感知机也必会提到不能表示异或的问题。正好抽出点时间,稍微搞明白一下为什么感知机不能表示异或。2.感知机的数学定义
感知机到底是什么呢?首先来看一下他的数学定义:假设输入空间(即样本的特征空间)为X⊆Rn,输出空间为y={+1,−1}。输入位x⊂X表示样本的特征向量,对应于输入空间(特征空间)的点;输出y⊂Y表示样本类别。由输入空间到输出空间对应的函数关系如下:
f(x)=sign(w⋅x)+b
此函数被称为感知机。其中,w与b为感知机的模型参数,w⊂Rn为权重(weight)或权值向量(weight vector),b⊂R为偏置(bias),w⋅x表示w与x的内积,而sign是符合函数,即:
sign(x)={+1,x≥0−1,x≤0
感知机是一种线性分类模型,属于判别模型。
3.异或是线性不可分
异或之所以重要,是因为它相对于其他逻辑关系,例如与(AND), 或(OR)等,异或是线性不可分的。由这幅简单的示意图可以看出来,and(与)、or(或)、not and(与非)等运算很容易用一条直线分开,但是异或运算中,图示的1,2,3条许仙都无法分开,异或运算就是典型的非线性问题!
具体的数学证明过程可以看后面的参考内容
参考文献:
1.https://zh.wikipedia.org/wiki/%E6%84%9F%E7%9F%A5%E5%99%A8
2.https://www.zybuluo.com/ArrowLLL/note/827264 有数学证明过程
3.https://zhuanlan.zhihu.com/p/30155870
相关文章推荐
- 证:单层感知机不能表示异或逻辑
- 证:单层感知机不能表示异或逻辑
- 你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的颜料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自己混合一些颜料。混合两种不一样的颜色A和颜色B颜料可以产生(A XOR B)这种颜色的颜料(新产生的颜料也可以用作继续混合产生新的颜色,XOR表示异或操作)。本着勤俭节约的
- 感知机不能表示“异或”
- C语言为什么不能精确表示浮点数
- 十进制的0.1 为什么不能用二进制很好的表示?
- C语言为什么不能精确表示浮点数
- 关于类簇表示类为什么不能被继承,不忍独享
- 既然float不能表示所有的int_那为什么在类型转换时C++将int转换成float?
- 既然float不能表示所有的int_那为什么在类型转换时C++将int转换成float?
- 既然float不能表示所有的int,那为什么在类型转换时C++将int转换成float?
- 为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?
- 为什么要用补码表示
- 为什么Java的String对象不能改变
- 为什么MD5不能解密
- Python - 在定义函数时,为什么默认参数不能放在必选参数前面?
- 为什么我不能用Windows Live Writer发文章了?
- HDU 3949 XOR 异或
- POJ 3764 The xor-longest Path 字典树 异或性质
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?