深度学习应用:学习XOR

《深度学习》这本书提到一个深度学习实例,挺有意思的。

XOR函数(异或逻辑)是两个二进制x1和x2的运算,x1和x2相同,则输出0,x1和x2不同则输出1。XOR函数提供了我们想要学习的目标函数y = f'(x),我们的模型给出了一个函数y = f(x;θ),并且我们的学习算法会不断调整参数θ来使f尽可能接近f'。

XOR函数一共就4个数据:
1.(0,0)= 0
2.(1,1)= 0
3.(1,0)= 1
4.(0,1)= 1

如果用二维坐标系表示,就长成下面这样:


图片发自App

如果用线性模型y = w1 x1 + w2 x2 + b进行学习,会得到w1=w2=0, b=0.5,因为不可能画一条线能把上图的四个点都连起来。

那怎么办呢?我们可以引入神经网络:

具体来说,这个网络有一层隐藏层,它包含两个神经元,这个网络有一个通过函数f1(x;W,c)计算得到的隐藏单元的向量h。h随后被用作第二层的输入。第二层就是这个网络的输出层。输出仍然只是一个线性模型,只不过现在它作用于h而不是x。网络现在包含链接在一起的两个函数:

h = f1(x; W, c)和y=f2(h;w,b),完整的模型是f(x; W, c, w, b)= f2 (f1 (x))。图示如下:
图片发自App

那么f1应该是哪种函数呢?大多数神经网络使用这样的函数形式:

h = g(WTx + c)

其中W是线性变换的权重矩阵,c是偏置。g是一个激活函数g(z) = max{0, z}

虽然感觉挺有意思的,但是还是有些术语不是很懂,需要补充很多基础知识。

你可能感兴趣的:(深度学习应用:学习XOR)