为了使前馈神经网络更加具体,通过解决一个简单的任务:学习XOR函数来加深理解。
XOR函数(异或)是两个二进制值x1和x2的运算。当x1和x2中恰有一个为1时,函数返回1,否则返回0。我们想要学习的目标函数y=f*(x),模型给出了一个函数y=f(x;θ),学习算法通过不断调整参数θ来使得f尽可能接近f*。
在该示例中,我们不关心模型的泛化能力。给定4个训练数据点X={[0,0]T,[0,1]T,[1,0]T,[1,1]T},我们希望模型能在数据集上正确拟合。
我们可以把这个问题当作时回归问题,并使用均方误差损失函数,这里使用该损失只是为了简化数学问题,在二进制数据建模中,MSE通常并不是一个合适的损失函数。那么,在整个训练数据集上,MSE损失函数为:
然后,选择模型f(x;θ)的表现形式,假设选择一个线性模型,θ包含w和b,那么模型定义如下:
通过最小化损失函数J(θ),得到w=0,b=1/2。由此可知,该线性模型在任意一点都输出0.5。为什么会这样呢?见下图: