神经网络常用公式表

主体内容

随缘,想到什么说什么,出现问题会在后面补充,不建议跳读,发现问题可以在评论区进行回复。

分类器与神经网络

分类器最基本的就是线性分类器,一般是通过一个权重矩阵对输入的样本进行处理,他的方程式一般写作:
$$
y=ω_{ij}x+b_{ij}
$$
其中ω就是权重矩阵,对传入的x进行有规则的变换,然后偏置。

当然,线性分类器也叫做简单神经元模型(感知器),一般神经元是具有多个输入和一个输出的模型,所以只需增加权重矩阵和输入样本的种类就实现了最基本的神经元模型,写成通式为:
$$
y=\sum ^N_{(i)}ω_{i}x_{i}+b
$$

常用损失函数

损失函数中两个不同的函数比如p(x)可以看作实际输出,q(x)看作预期输出

交叉熵

$$
H(p,q)=-\sum_xp(x)·log,q(x)
$$

对于两组信息p和q,交叉熵用于衡量这两组信息不确定性的差异,也相当于分散的差异,对于两组不同的分布,可以用交叉熵衡量分布的差异

相对熵

$$
KL(p||q)=-\sum_xp(x)·log,\frac{q(x)}{p(x)}
$$

相对熵也叫KL散度,相对熵是在距离空间上衡量两者距离,KL散度则是衡量不相似性

其中有一个恒等式
$$
H(p,q)=H(p)+H(p||q)
$$

Softmax函数

$$
Softmax(x)=\frac{e^{y_i}}{\sum_{n=1}^{N}e^{y_n}}
$$

其中y对应了不同情况下的的输出值,得出的结果非负且和等于1

SVM损失函数

$$
L=\sum_{j≠y_i},MAX(0,s_j-s_{y_i}+1)
$$

正向传播与反向传播[DNN]

在深度学习中,深度神经网络DNN有两种算法,都是基于链式法则的计算,通过根树结构进行正向和反向的计算

正向传播

假设一个感知器有n个输入,激活函数假定为sigmoid(σ)那么我们有:
$$
a_i=\sigma(\sum_i ω_ix_i+b)
$$
所以最终输出值的偏导数基于链式法则就是:
$$
\frac{\partial a_n}{\partial x_α}=\prod_{i}^{n} \frac{\partial a_i}{\partial x_i}
$$
根据这个表达式,我们得到的就是反向传播

反向传播

如果我们知道最后的结果以及表达式,基于链式法则,我们可以求出各层的梯度,所以反向传播公式就是:
$$
\prod_{i}^{n} \frac{\partial a_i}{\partial x_i} = \frac{\partial a_n}{\partial x_α}
$$
虽然公式与正向传播相似,但是意义不同

计算图也是一个需要掌握的点

梯度消失:在传播的表达式中观察到,链式法则中,如果乘数是很小的,结果也会随之变小,当偏导数趋近于0时,结果就会因浮点精度在计算机中显示为0。

梯度爆炸:在梯度下降法中由递推公式有:
$$
f_n=\alpha \nabla f_{n-1}
$$
当学习率过大时,就会出现f步长过大,导致结果异常大。解决办法就是改变学习率

激活函数

ELU是基于指数的激活函数,一般存在饱和区域

sigmoid

这是一种非线性激活单元,属于logistic函数,提出者是皮埃尔·弗朗索瓦·韦吕勒,最开始用于生物学。一般使用在隐含层的输出,通式为:
$$
Logistic(f)=\frac{K}{1+e^{-f}}
$$

Hyperbolic Tangent

双曲正切函数属于双曲函数,基于基本的双曲线得来,双曲正切函数表达式如下:
$$
tanh,x=\frac{sinh,x}{cosh,x}=\frac{e^x-e^{-x}}{e^x+e^{-x}}
$$
Softmax

这是一种基于指数函数值域性质的函数,常用于多分类神经网络的显层输出,表达式为:
$$
Softmax(x)=\frac{e^{y_i}}{\sum_{n=1}^{N}e^{y_n}}
$$

ReLU是修正线性单元,是线性分段函数

ReLU

线性整流单元是分段函数,常用于隐含层神经元的输出,一般表示为:
$$
LReLU(x)=
\begin{cases}
kx_i&&x<0\
x&&x>0\
\end{cases}
$$

当k=0就是标准的ReLU函数,当k>0就是Leakly ReLU函数,当k满足分布函数F(x)时就得到了RReLU即Redomized Leakly ReLU

Swish

这是一种门式的激活函数,sigmoid($\beta x$)能够趋近与1时,门开,当其趋近于0时,门关。
$$
swish=\frac{xK}{1+e^{-\beta x}}
$$

梯度下降法

梯度是高等代数的内容,对于一个多元函数f(x,y,z),他的梯度用$\nabla$表示,计算方法为:
$$
\nabla f(x,y,z)=\frac{\partial f(x,y,z)}{\partial x}\vec i+\frac{\partial f(x,y,z)}{\partial y}\vec j+\frac{\partial f(x,y,z)}{\partial z}\vec t
$$
梯度本身就是一种方向导数,所以当梯度最大时,坡度也就最大。梯度下降的表达式为:
$$
\theta=\theta_0-\eta \nabla f(x,y,z)
$$
其中$\eta$是步长,通过迭代$\theta$就可以实现优化。

动量法

根据物理的动量守恒公式,得到函数的最低点。其中梯度的计算公式为:
$$
gard=\frac{1}{m}\nabla \sum _{i=1}^{n}Lose(x,f(x))
$$

速度更新是在下滑过程中有摩擦,所谓摩擦实际上是对速度的变化。μ为摩擦,gard就是梯度

$$
v=μv+gard
$$

权重更新,α是学习率,v为实时的速度。

$$
\theta=\theta-\alpha v
$$

同理衍生出Adagard,即改变不同位置不同方向上的学习率,δ为稳定用的数值,一般为$10^{-5}$,改变的规则为:
$$
\omega=\omega-\frac{ε}{\sqrt{r}+\delta}\theta
$$
其中的r为梯度的累加值,即:
$$
r=r+(grad)^2
$$
自适应也有RMSPorp。

滤波器

高通滤波

$$
y=\cos\left(\frac{\pi}{2}\log_{2}\left(\frac{2x}{\pi}\right)\right)(\frac{\pi}{4}<x<\frac{\pi}{2})
$$

低通滤波器

$$
y=\cos\left(\frac{\pi}{2}\log_{2}\left(\frac{4x}{\pi}\right)\right)(\frac{\pi}{4}<x<\frac{\pi}{2})
$$

计算方式为对噪声进行傅里叶变换,然后转化为极坐标的格式。

对于概率模型,可以用玻尔兹曼方程进行计算。

总结

本期主要讲解了神经网络的基础公式,大家可以看到很多关于神经网络的基础,虽然欠缺解释,但是可以当作公式表看


神经网络常用公式表
https://blog.minloha.cn/posts/2009132232337a2023080937.html
作者
Minloha
发布于
2023年8月9日
更新于
2024年3月1日
许可协议