神经网络解决与、或、非问题
一、感知机
感知机是一种最简单的神经网络模型,由两层神经元组成,其中每个神经元接收多个输入,通过加权求和后,经过一个激活函数得到输出。
感知机是一个线性分类器,可以用来解决线性可分问题。其模型可以表示为:
z=w⋅x+b z= \mathbf{w}\cdot\mathbf{x}+b z=w⋅x+b
其中,x=(x1,x2,...,xn)\mathbf{x}=(x_1,x_2,...,x_n)x=(x1,x2,...,xn)是输入向量,w=(w1,w2,...,wn)\mathbf{w}=(w_1,w_2,...,w_n)w=(w1,w2,...,wn) 是权重向量,bbb 是偏置项。不要把神经网络想想过于复杂,实际上就是一个常见的函数。
y=f(z) y = f(z) y=f(z)
f(⋅)f(\cdot)f(⋅) 是激活函数,通常采用阶跃函数或者sigmoid函数。它的作用是引入非线性性质,从而提高神经网络的表达能力和性能。下面介绍一个简单的激活函数用于对下文的讲解。

单层感知机的训练过程就是不断调整权重和偏置项,使得模型能够对样本进行正确分类。此过程通常采用梯度下降法进行参数优化。
二、感知机的局限性
感知机有以下几个局限性:
-
不能解决非线性可分问题。由于单层感知机只能表示线性决策边界,对于非线性决策边界,无法正确分类。比如异或问题。
-
对输入数据有强假设。单层感知机假设输入特征与输出结果之间是线性关系。这种假设限制了单层感知机在处理非线性关系时表现较差。
-
容易受到噪声干扰。单层感知机对噪声敏感,当输入数据出现错误时,模型会出现严重的分类错误。
-
无法处理多类别问题。单层感知机只能处理二元分类问题,无法推广到多类别分类问题。
因此,感知机的局限性限制了它在实际应用中的广泛应用。多层感知机则采用了多层神经元来组成更复杂的模型,并且引入了非线性激活函数,从而更好地解决这些局限性。
三、单层感知机解决与、或、非问题
感知机可以使用阶跃函数作为激活函数来解决一些简单的逻辑运算问题,如与、或、非问题。这里我们分别介绍在阶跃函数作为激活函数下,感知机如何解决这三种问题。
(1)“与”问题:
与问题是指对于两个二元输入 x1x_1x1 和 x2x_2x2,只有同时为 1 的情况输出 1,否则输出 0。我们可以先设定权重向量 w=(w1,w2)\mathbf{w}=(w_1, w_2)w=(w1,w2) 和偏置量 bbb 的值。
f(x)=sgn(wTx+b)=sgn(w1x1+w2x2+b) \begin{aligned} f(\mathbf{x}) &= \mathrm{sgn}(\mathbf{w}^T\mathbf{x}+b)\\ &= \mathrm{sgn}(\mathbf{w_1}x_1+\mathbf{w_2}x_2+b) \end{aligned} f(x)=sgn(wTx+b)=sgn(w1x1+w2x2+b)
但是如何设定权重和偏置呢?我们可以将这个问题转换成对直角坐标系的四个点进行分类,横坐标、纵坐标分别表示两个二元输入 x1x_1x1 和 x2x_2x2。感知器相当于是一条直线w1x1+w2x2+b=0 \begin{aligned} \mathbf{w_1}x_1+\mathbf{w_2}x_2+b=0 \end{aligned} w1x1+w2x2+b=0
①若点(红色)在直线上方,则w1x1+w2x2+b>0f(x)=sgn(w1x1+w2x2+b)=1 \begin{aligned} \mathbf{w_1}x_1+\mathbf{w_2}x_2+b>0\\ f(\mathbf{x}) = \mathrm{sgn}(\mathbf{w_1}x_1+\mathbf{w_2}x_2+b)=1 \end{aligned} w1x1+w2x2+b>0f(x)=sgn(w1x1+w2x2+b)=1
①若点(蓝色)在直线下方,则w1x1+w2x2+b<0f(x)=sgn(w1x1+w2x2+b)=0 \begin{aligned} \mathbf{w_1}x_1+\mathbf{w_2}x_2+b<0\\ f(\mathbf{x}) = \mathrm{sgn}(\mathbf{w_1}x_1+\mathbf{w_2}x_2+b)=0 \end{aligned} w1x1+w2x2+b<0f(x)=sgn(w1x1+w2x2+b)=0
由上层图像可知,该条直线可以有无数条,对应的神经网络(单层感知器)也有无数种画法。下面我们举一个例子,将神经网络的参数设置为w=(1,1)\mathbf{w}=(1,1)w=(1,1),b=−1.5b=-1.5b=−1.5 ,对应的直线方程为x1+x2−1.5=0 \begin{aligned} x_1+x_2-1.5=0 \end{aligned} x1+x2−1.5=0
| (X1,X2) | x1+x2-1.5 | f(x1+x2-1.5) |
|---|---|---|
| (0,0) | <0 | 0 |
| (0,1) | <0 | 0 |
| (1,0) | <0 | 0 |
| (1,1) | >0 | 1 |
所对应的神经网络结构为:
(2)“或”问题:
或问题是指对于两个二元输入 x1x_1x1 和 x2x_2x2,只有其中之一为 1 的情况输出 1,否则输出 0。我们可以先设定权重向量 w=(w1,w2)\mathbf{w}=(w_1, w_2)w=(w1,w2) 和偏置量 bbb 的值。
f(x)=sgn(wTx+b)=sgn(w1x1+w2x2+b) \begin{aligned} f(\mathbf{x}) &= \mathrm{sgn}(\mathbf{w}^T\mathbf{x}+b)\\ &= \mathrm{sgn}(\mathbf{w_1}x_1+\mathbf{w_2}x_2+b) \end{aligned} f(x)=sgn(wTx+b)=sgn(w1x1+w2x2+b)
但是如何设定权重和偏置呢?我们可以将这个问题转换成对直角坐标系的四个点进行分类,横坐标、纵坐标分别表示两个二元输入 x1x_1x1 和 x2x_2x2。感知器相当于是一条直线w1x1+w2x2+b=0 \begin{aligned} \mathbf{w_1}x_1+\mathbf{w_2}x_2+b=0 \end{aligned} w1x1+w2x2+b=0
①若点(红色)在直线上方,则w1x1+w2x2+b>0f(x)=sgn(w1x1+w2x2+b)=1 \begin{aligned} \mathbf{w_1}x_1+\mathbf{w_2}x_2+b>0\\ f(\mathbf{x}) = \mathrm{sgn}(\mathbf{w_1}x_1+\mathbf{w_2}x_2+b)=1 \end{aligned} w1x1+w2x2+b>0f(x)=sgn(w1x1+w2x2+b)=1
①若点(绿色)在直线下方,则w1x1+w2x2+b<0f(x)=sgn(w1x1+w2x2+b)=0 \begin{aligned} \mathbf{w_1}x_1+\mathbf{w_2}x_2+b<0\\ f(\mathbf{x}) = \mathrm{sgn}(\mathbf{w_1}x_1+\mathbf{w_2}x_2+b)=0 \end{aligned} w1x1+w2x2+b<0f(x)=sgn(w1x1+w2x2+b)=0
由上层图像可知,该条直线可以有无数条,对应的神经网络(单层感知器)也有无数种画法。下面我们举一个例子,将神经网络的参数设置为w=(1,1)\mathbf{w}=(1,1)w=(1,1),b=−0.5b=-0.5b=−0.5 ,对应的直线方程为x1+x2−0.5=0 \begin{aligned} x_1+x_2-0.5=0 \end{aligned} x1+x2−0.5=0
| (X1,X2) | x1+x2-0.5 | f(x1+x2-0.5) |
|---|---|---|
| (0,0) | <0 | 0 |
| (0,1) | >0 | 1 |
| (1,0) | >0 | 1 |
| (1,1) | >0 | 1 |
所对应的神经网络结构为:
(3)“非”问题:
非问题是指对于单个输入 xxx ,当输入为1(0)时,输出为0(1)。我们可以先设定权重向量 www 和偏置量 bbb 的值。
由上层图像可知,该条直线可以有无数条,对应的神经网络(单层感知器)也有无数种画法。下面我们举一个例子,将神经网络的参数设置为w=(−1,0)\mathbf{w}=(-1,0)w=(−1,0),b=0b=0b=0 ,对应的直线方程为−x1 \begin{aligned} -x_1 \end{aligned} −x1
| X | -X | f(-X) |
|---|---|---|
| 0 | 1 | 1 |
| 1 | 0 | 0 |
所对应的神经网络结构为:
更多推荐



所有评论(0)