6.1-6.3节主要讲的是前向神经网络,前言主要讲为什么要用神经网络;6.1节举例说明线性的无法解释XOR学习,非线性的可以很好解释,引出神经网络的介绍;6.2节讲述基于梯度的学习;6.3节说的是隐藏层,主要是介绍不同的激活函数。
3层神经网络结构图
输入变量xx,经过一层层的传递 输出层:采用f(x;θ)f(x;\theta)来刻画。 输入层:f(1)f^{(1)} 隐藏层:f(2)f^{(2)} 输出层:f(3)f^{(3)}
函数经过复合后得到:f(x;θ)=f(3)(f(2)f(1)(x))f(x;\theta)=f^{(3)}(f^{(2)}f^{(1)}(x))
使用上面的复合函数来逼近f∗(x)f^{*}(x)
神经网络是非线性的,如何来描述呢?
类似于Logistic回归、线性回归是线性模型,有容易拟合、可靠、凸优化等性质,缺点在于任意两个变量之间缺乏交互的作用,无法阐述之间的联系。
如何将线性模型转化为非线性模型呢?这里使用一个非线性函数ϕ(x)\phi(x)对输入变量进行映射。下面关于ϕ(x)\phi(x)的选择有3个技巧:
6.1 XOR,简称异或
数学表达式:a⨂b=(¬a∩b)∪(a∩¬b)a \bigotimes b = (\neg a \cap b) \cup (a \cap \neg b)
特点是:a与b相同时,结果为0;a与b不同时结果为1。
X1 | X2 | 结果 |
---|---|---|
1 | 0 | 1 |
1 | 1 | 0 |
0 | 0 | 1 |
0 | 1 | 0 |
它的均方误(MSE)损失函数为:
J(θ)=14∑x∈X(f∗(x)−f(x;θ))2J(\theta) = \frac{1}{4} \sum_{x\in X} (f^{*}(x) - f(x;\theta))^{2}
坐标轴上的分布,左边是XOR的结果 如果f(x;θ)f(x;\theta)是一个线性函数,表达式f(x;ω,b)=xT omega+bf(x;\omega , b) = x^{T} \ omega + b 。从左边的图知道,x1=0x1 = 0时,XOR结果随x2x2增加而增加;x1=1x1= 1时,XOR结果随x2x2增加而减少。显然线性的无法来表示。
6.2 基于梯度的学习:采用梯度的方法来对代价函数进行优化
采用交叉熵来定义训练数据与模型的预测数据的代价函数。
∑XPlogPQ\sum_{X} P log \frac {P} {Q}
用于评价P与Q的相似度
高斯元输出 sigmoid 元的伯努利分布 定义: y^=σ(ωTh+b)\hat{y} = \sigma (\omega^{T} h + b) σ(x)=11+exp(−x)\sigma (x) = \frac {1}{1 + exp(-x)} softmax
定义:z=WTh+bz = W^{T} h + b softmax(z)i={zi}∑jexp(zj)softmax(z)_{i} = \frac{z_{i}} {\sum_{j} exp(z_{j})}
两边取对数后变换为: log(softmax(z)i)=zi−log(∑jexp(zj)) log(softmax(z)_{i}) = z_{i} - log(\sum_{j} exp(z_{j}))
6.3隐藏层:主要讲述了几种激活函数。 定义:z=WTx+bz = W^{T} x +b