线性神经网络
我们应该从线性神经网络开始,去逐步了解深度神经网络(深度学习)的各种复杂结构和底层原理。
1. 线性回归
用一个线性的模型来拟合数据与它们的标签之间的映射,用于回归问题。
1.1 构造线性模型:
y
=
ω
^
T
x
(1-1)
y=\widehat{\omega}^Tx\tag{1-1}
y=ω
Tx(1-1)
图1 线性回归与神经网络的关系
由(1-1)不难发现,线性回归其实就是单层线性神经网络。
1.2 最小二乘损失函数:
可以证明,让线性回归偏差的L2范数(均方误差)最小 等价于 对线性模型的极大似然估计…
L
(
ω
^
)
=
∑
i
=
1
N
∣
∣
ω
^
T
x
i
−
y
i
∣
∣
2
2
(1-2)
L(\widehat{\omega})=\sum_{i=1}^N||\widehat{\omega}^Tx_i-y_i||^2_2\tag{1-2}
L(ω
)=i=1∑N∣∣ω
Txi−yi∣∣22(1-2)
1.3 求解:
(1-2)是一个凸优化问题,而且比较简单,可以求得解析解。所以可以令求导=0的方式对其求解析解:
ω
^
=
(
X
T
X
)
−
1
X
T
Y
(1-3)
\widehat{\omega}=(X^TX)^{-1}X^TY\tag{1-3}
ω
=(XTX)−1XTY(1-3)
当然梯度下降应该能求出非常接近解析的效果…
1.4 预测:
求解出参数向量之后把x代入线性模型即可预测。
1.5 小节:
不难理解吧?最经典、古老、简单的模型了吧…
2. 线性分类
线性分类就要是把线性回归设法用于分类问题。相对于回归问题来说,变化有以下几点:
2.1 多输出
最直观的改动应该是一个输出变成多个了。我们期望用多个输出神经元来达到估计每个类别分布的目的。
图2 线性分类与神经网络的关系
2.2 输出层
搞清楚多输出的网络结构之后,输出层应该使用怎样的策略呢?对每个输出神经元应用(1-1)那样的前向传播方法来计算不可以吗??其实不行:
因为对于分类问题,必须要使所有神经元的输出满足:
- 均≥0
- 和=1
- 输出层的传递函数必须可导
对于以上3个特点,分类问题的输出层有着独特的设计——softmax激活函数:
y
j
^
=
e
o
j
∑
k
N
e
o
k
(2-1)
\widehat{y_j}=\frac{e^{o_j}}{\sum_{k}^{N}e^{o^k}}\tag{2-1}
yj
=∑kNeokeoj(2-1)
(2-1)中,oj为输出层第j个【原输出】,经过这样的处理后yj为最终输出,可以保证以上三点。
softmax激活函数的具体工作方式如下图所示:
图3 由softmax激活函数连接到输出层示意
2.3 损失函数
这样搞了之后我们的损失函数采用交叉熵损失,这是由极大对数似然估计推导而来的损失函数,可以证明和MSE损失是等价的:
l
(
y
,
y
^
)
=
−
∑
j
=
1
N
y
i
l
o
g
y
i
^
(2-2)
l(y,\widehat{y})=-\sum_{j=1}^{N}y_ilog\widehat{y_i}\tag{2-2}
l(y,y
)=−j=1∑Nyilogyi
(2-2)
(2-2)中,y为独特编码的分类标签向量,yi为y的第i个分量。
3. 逻辑回归
逻辑回归这个名称容易造成误解。它并不是处理回归问题的,而是分类问题。经典的逻辑回归用来解决二分类问题。它需要预先估计分类数据点的分布,然后通过引入非线性函数(logistic/sigmoid)来估计把数据分为某类别的概率,输出的是概率分布函数P(y|x,θ)。
下面先以二分类举例推导:
3.1 估计数据边界(分类超平面是线性or非线性?)
一般假设它是线性的,即:
y
=
θ
^
T
x
(3-1)
y=\widehat{θ}^Tx\tag{3-1}
y=θ
Tx(3-1)
3.2 构造预测函数:
其实就是只有两个类的softmax函数:
p
(
y
=
1
∣
x
,
θ
)
=
h
θ
(
x
)
p
(
y
=
0
∣
x
,
θ
)
=
1
−
h
θ
(
x
)
h
θ
(
x
)
=
1
1
+
e
−
θ
T
x
(3-2)
p(y=1|x,θ)=h_θ(x)\\ p(y=0|x,θ)=1-h_θ(x)\\ h_θ(x)=\frac{1}{1+e^{-θ^Tx}}\tag{3-2}
p(y=1∣x,θ)=hθ(x)p(y=0∣x,θ)=1−hθ(x)hθ(x)=1+e−θTx1(3-2)
3.3 构造损失函数:(极大似然估计)
l ( x ) = ∑ i = 1 N y i l o g h θ ( x i ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) J ( θ ) = − l ( θ ) m (3-3) l(x)=\sum_{i=1}^{N}y_ilogh_θ(x_i)+(1-y_i)log(1-h_θ(x_i))\\ J(θ)=-\frac{l(θ)}{m}\tag{3-3} l(x)=i=1∑Nyiloghθ(xi)+(1−yi)log(1−hθ(xi))J(θ)=−ml(θ)(3-3)
J(θ)就是极大似然函数的负对数,求J(θ)的最小值即可。