文章目录
多层感知机
单层感知机
常见的激活函数
Sigmoid系列
- Sigmoid
σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+e−x1 - Tanh
t a n h ( x ) = e x − e − x e x + e − x tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+e−xex−e−x
图像
性质
- 饱和函数;
- tanh是零中心化的;logistic函数恒大于0;
- 非中心化的输出会使得后一层神经元的输入发生偏移,使得梯度下降收敛速度变慢。
ReLU系列
图像
性质
- 计算上更高效;
- 生物学合理性;
- 单侧抑制、宽兴奋边界;
- 在一定程度上缓解梯度消失问题。
多层感知机
在单层感知机的基础上引入了隐藏层;
如果不添加激活函数的话,等价于一个单层感知机。
前馈神经网络
人工神经网络包含三个方面:
- 神经元的激活规则;(激活函数)
- 网络的拓扑结构;(网络结构)
- 学习算法;(学习数据)
前馈神经网络是人工神经网络的一种形式,信息向前传递,实现逐层编码处理的网络结构。
前馈神经网络又称全连接神经网络、多层感知机。
常见的网络结构有:
前馈神经网络的特征
- 各神经元分别属于不同的层,层内无连接;
- 相邻两层之间的神经元全部两两连接;
- 整体网络中无反馈,信号从输入层向输出层单向传播,可用一个无向图表示。
数学表示
整体表示为:
注意符号。下标先列后行。
通用近似定理
对于具有线性输出层和至少一个使用激活函数的隐藏层组成的前馈神经网络,只要其隐藏层神经元的数量足够,可以以任意精度近似任何一个定义在实数空间中的有界闭集函数。
神经网络可以作为一个“万能”函数来使用,可以进行复杂的特征转换或者逼近一个复杂的条件分布。
特征表示函数/概率密度函数
分类问题
通常在最后一层设置Softmax函数,相当于一个分类器,用于输出每个类的条件概率;
此时我们常常采用交叉熵损失函数来进行反向传播。
交叉熵损失函数
信息量:信息是用来消除随机不确定性的东西。信息量的大小与信息发生的概率成反比。概率越大,信息量越小。概率越小,信息量越大。设某一件事件发生的概率为
P
(
x
)
P(x)
P(x),其信息量表示为:
I
(
x
)
=
−
log
P
(
x
)
I(x)=-\log{P(x)}
I(x)=−logP(x)
信息熵:所有信息量的期望,x可理解为样本,每个样本对应的类别概率要大:
H
(
X
)
=
−
∑
i
=
1
n
P
(
x
i
)
log
P
(
x
i
)
H(X)=-\sum_{i=1}^nP(x_i)\log{P(x_i)}
H(X)=−i=1∑nP(xi)logP(xi)
相对熵(KL散度):衡量的是两个分布之间的差距。信息量差的期望。
D
K
L
(
p
∣
∣
q
)
=
∑
i
=
1
n
p
(
x
i
)
log
p
(
x
i
)
q
(
x
i
)
D_{KL}(p||q)=\sum_{i=1}^np(x_i)\log\frac{p(x_i)}{q(x_i)}
DKL(p∣∣q)=i=1∑np(xi)logq(xi)p(xi)
p为真实分布,q为预测分布。
交叉熵:
交叉熵等于KL散度加上一个常量(信息熵),公式比KL散度更容易计算。
梯度反向传播
梯度反向传播算法是根据前馈网络的特点而设计的高效方法。
链式法则
计算图
反向传播算法是链式求导法则的一个应用,计算图是这一过程的可视化表现。
反向传播是一种迭代的思想,由近及远地计算梯度。
loss.backward() #生成计算图
节点:撰写函数;
边:撰写求导结果。
对哪个点求导,就累乘到哪个点。
例子
反向传播
我们规定符号:
对最后一层输出求导。
求导部分分为三个组成成分,分别是误差项、权重梯度和偏置梯度。
误差项反映了输出对损失函数的影响以及损失函数对输出的敏感程度。
我们记误差函数的微分比上输出结果是该层的误差项:
误差项之间的关系是该层误差项等于激活函数导数乘上下一层权重乘上下一层误差项。
那么,由误差项可以表示权重梯度和偏置梯度:
自动微分
反向传播的实现依赖于自动微分。
自动微分是利用链式法则来自动计算一个复合函数的梯度。
我认为,是一种神经网络计算过程中的步骤。
其包含两种模式:
1.前向模式;
在计算图前向传播的同时计算输出值以及微分;最后更新参数。
- 反向模式;
对计算图进行一次正向计算,计算每一层的状态和激活值,直到最后一层;再进行反向传播,计算每一层的参数的偏导数;最后更新参数。
可以看出,反向模式的开销更大。