神经网络系列--感知机(1)
我们知道神经网络是对生物神经网络的模拟。生物神经网络是一个个神经元相互连接形成的,其中神经元是生物神经网络的基本单元。神经元实现的功能是将多个输入信号整合为一个输出信号传递给下一个神经元。根据“多对一”的结构,我们可以很容易地想到函数这个概念,由于我们知道神经网络的基本单元是感知机,那么为什么不用函数去作为神经网络的基本单元,而是是一个新的概念—-感知机呢?
感知机(Perceptron)是一种二元分类算法,它接受一组向量然后根据激活函数判断这组向量属于哪一类。例如一个垃圾邮件判断器是一个简单的二元分类问题,其输出结果是1(判断错误)或者0(判断正确),它还可以运用在很多方面:判断胖瘦;判断猫还是狗等等,只要是二元分类问题均可用感知机去解决。它的数学表达式由一组线性函数和激活函数组成,线性函数是为二分问题划一个分界线,而激活函数则是判断该数据是属于分界线的左边还是右边,公式如下:,其中功能w权重(相当于每个x所占比重是多大)和x(输入值)都是一组向量,w和x之间的关系是点积(点积在机器学习是度量x与w的相似度),而b偏置是一个值,作用是为了模型有更加广泛的表示能力。
其实到这里我们看到了感知机似乎在本质上与函数的概念并没有什么区别,因为两者都是从多到一的映射。虽然感知机符合函数的定义,但是我们无法找到一个统一的函数去描述感知,因为我们确实可以通过数据训练来得到关于胖瘦分类问题的模型,但是如果我们换一个分类问题判断是不是猫,那么这个模型就会改变,而感知机真正的作用子在于它提供了一个解决二分问题统一的模版,我们可以利用这个模版去找到不同问题的模型。
感知机提出的最大意义在于它提供了一个解决二分问题的模版,对于不同的二分问题,我们只需要调节w参数旋钮去找到最合适该二分问题的参数向量即可,感知机用一个线性函数和一个简单的激活函数能够解决一些复杂的二分问题。
但是感知机的提出在当时使神经网络的发展停滞了很久一段时间,原因是感知机只能完成三种基本逻辑运算:1. 与and 2. 或or 3. 非not,不能完成异或运算。因为感知机只是一个简单的线性分类器,而异或问题却是非线性分类问题,那么也就是说感知机无法处理非线性问题,而我们知道世界上的大多数问题是非线性的。那么什么是线性与非线性呢?线性就意味着简单,直接和可预测,比如说我买苹果,苹果价格为1斤/10元,那么我买一斤花10元,两斤花20元;而非线性是跳跃的和不可预测的,比如说我今天不想买苹果,而是去买香蕉;天气的变化;人的行为都是不可预测的。我相信你看到这里可能跟我一样困惑:为什么逻辑运算如此重要?我暂时没有深刻理解这个问题。我相信之后会有所回答。
由于我们知道现在神经网络蓬勃发展,它可以解决很多问题(包括非线性),那么想必它肯定解决了异或问题。
参考资料: Perceptron