Day4 神经网络的函数基础
二次函数
单个自变量的二次函数
- y = a x 2 + b x + c ( a , b , c 为常数, a ≠ 0 ) y = ax^2 + bx + c \quad (a, b, c \text{为常数,} a \neq 0) y=ax2+bx+c(a,b,c为常数,a=0)
学习神经网络,需要掌握这个图像中重要的一点是,a 为正数时图像向下凸,从而存在最小值。这个性质是后面讲到的最小二乘法的基础。
多个自变量的二次函数
-
y
=
a
x
1
2
+
b
x
1
x
2
+
c
x
2
2
+
p
x
1
+
q
x
2
+
r
\begin{equation} y = ax_1^2 + bx_1x_2 + cx_2^2 + px_1 + qx_2 + r \end{equation}
y=ax12+bx1x2+cx22+px1+qx2+r
- 其中, a 、 b 、 c 、 p 、 q 、 r 为常数,且 a ≠ 0 , c ≠ 0 。 \text{其中,} a、b、c、p、q、r \text{为常数,且} a \neq 0, c \neq 0。 其中,a、b、c、p、q、r为常数,且a=0,c=0。
对于有两个以上的自变量的情形,就难以在二维平面上画出图像了。只能像上图那样画出
多维图像。
实际的神经网络需要处理更多变量的二次函数。不过,记住这里考察的二次函数的图像后,在理解多变量的情形时应该不难。
单位阶跃函数
- 神经网络的原型模型是用单位阶跃函数作为激活函数的 Day1,它的图像如下所示。
由于单位阶跃函数在原点处不连续,也就是在原点不可导。由于这个不可导的性质,单位阶跃函数不能成为主要的激活函数。
指数函数与Sigmoid函数
指数函数
-
y = a x ( a 为正的常数, a ≠ 1 ) y = a^x \quad (a \text{ 为正的常数,} a \neq 1) y=ax(a 为正的常数,a=1)
-
常数a 称为指数函数的底数。纳皮尔数e 是一个特别重要的底数。
- 纳皮尔数(Napier’s number),通常被称为自然对数的底数或欧拉数,用符号
e
e
e 表示。它是一个无理数,且是一个超越数,这意味着它不能表示为两个整数的比。
- e e e 的近似值通常取为: e ≈ 2.718281828459 e \approx 2.718281828459 e≈2.718281828459
在数学中, e e e 出现在许多重要的公式和定理中,如欧拉公式、复利公式、正态分布等。它之所以重要,是因为它在描述自然界中许多现象时具有广泛的应用,特别是在描述增长、衰减和振荡等过程时。
例如,在描述连续复利时,如果本金为 P P P,年利率为 r r r,那么经过 t t t 年后的金额 A A A 可以用以下公式表示:
A = P × e r t A = P \times e^{rt} A=P×ert
这个公式中的 e e e 就是纳皮尔数。总之,纳皮尔数 e e e 是数学中一个非常重要的常数,它在描述自然界中的许多现象时具有不可替代的作用。
- 纳皮尔数(Napier’s number),通常被称为自然对数的底数或欧拉数,用符号
e
e
e 表示。它是一个无理数,且是一个超越数,这意味着它不能表示为两个整数的比。
-
Sigmoid函数
- σ ( x ) = 1 1 + e − x = 1 1 + exp ( − x ) \sigma(x) = \frac{1}{1 + e^{-x}} = \frac{1}{1 + \exp(-x)} σ(x)=1+e−x1=1+exp(−x)1
- exp 是exponential function(指数函数)的简略记法,exp(x) 表示指数函数 e x e^x ex
- 这个函数的图像如上图所示。可以看出,这个函数是光滑的,也就是处处可导
- 函数的取值在0和1之间,因此函数值可以用概率来解释
正态分布
- 正态分布(Normal Distribution),又称高斯分布(Gaussian Distribution),是统计学中最重要的分布之一。它描述了许多自然现象的概率分布情况,如人的身高、考试成绩、测量误差等。正态分布具有对称性,且其形状呈钟形,因此也常被称为“钟形曲线”。
正态分布的概率密度函数
- 正态分布的概率密度函数 Probability Density Function, PDF 描述了随机变量取某一特定值的概率。对于正态分布
(
N
(
μ
,
σ
2
)
(N(\mu, \sigma^2)
(N(μ,σ2),其概率密度函数为:
- f ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=σ2π1e−2σ2(x−μ)2
- μ \mu μ是平均值(期望值),表示分布的中心位置
- σ \sigma σ 是标准差(Standard Deviation),表示分布的离散程度
- π \pi π 是圆周率,约等于3.14159
-
e
e
e 是自然对数的底数,约等于2.71828
标准正态分布
- 标准正态分布(Standard Normal Distribution)是正态分布的概率密度函数的一种特殊情况,其均值
μ
\mu
μ = 0,标准差
σ
\sigma
σ = 1。因此,标准正态分布的概率密度函数简化为:
- f ( z ) = 1 2 π e − z 2 2 f(z) = \frac{1}{\sqrt{2\pi}} e^{-\frac{z^2}{2}} f(z)=2π1e−2z2
- 其中, z z z 是标准正态分布的随机变量。
上图中红色曲线就是标准正态分布的示例。
正态分布随机数
- 正态分布随机数,即服从正态分布(也称为高斯分布)的随机数。正态分布的概率密度函数为:
- f ( x ∣ μ , σ 2 ) = 1 2 π σ 2 exp ( − ( x − μ ) 2 2 σ 2 ) f(x|\mu,\sigma^2)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp(-\frac{(x-\mu)^2}{2\sigma^2}) f(x∣μ,σ2)=2πσ21exp(−2σ2(x−μ)2)
其中,
μ
\mu
μ是均值,
σ
2
\sigma^2
σ2是方差。正态分布随机数在统计学、机器学习、物理学、工程学等多个领域有广泛应用。生成正态分布随机数的方法有多种,例如在Python中可以使用numpy.random.normal
函数或torch.randn
函数来生成。
生成按照正态分布的随机数在统计学和模拟实验中非常重要。一种常用的方法是使用Box-Muller变换,将两个均匀分布的随机数转换为标准正态分布的随机数。然后,通过线性变换,可以将这些标准正态分布的随机数转换为任意均值和标准差的正态分布随机数。
生成正态分布随机数的数学步骤:
- 生成两个均匀分布在(0,1)区间的随机数 u 1 u_1 u1 和 u 2 u_2 u2
- 使用Box-Muller变换:
z 0 = − 2 ln u 1 cos ( 2 π u 2 ) z_0 = \sqrt{-2 \ln u_1} \cos(2\pi u_2) z0=−2lnu1cos(2πu2)
z 1 = − 2 ln u 1 sin ( 2 π u 2 ) z_1 = \sqrt{-2 \ln u_1} \sin(2\pi u_2) z1=−2lnu1sin(2πu2)
其中, z 0 z_0 z0 和 z 1 z_1 z1 是独立的标准正态分布随机数。- 对于任意均值 μ \mu μ 和标准差 σ \sigma σ 的正态分布,可以通过线性变换得到:
x = μ + σ z x = \mu + \sigma z x=μ+σz
其中,(z) 是标准正态分布随机数。
正态分布在神经网络中的运用
- 权重初始化:在神经网络训练之前,需要对权重进行初始化。使用正态分布作为初始值是一种常见且有效的策略。通过调整正态分布的均值和标准差,可以控制初始化参数的范围,从而影响模型的学习过程。例如,在较深的网络中,未标准化的权重初始化可能导致梯度爆炸或消失问题。为了解决这一问题,研究者提出了不同策略,如Xavier初始化和He初始化,它们都是基于正态分布的初始化方法。
- 批量归一化(BN):在深度神经网络训练的过程中,由于网络中参数变化而引起网络中间层数据分布发生变化的这一过程被称为内部协变量偏移(Internal Covariate Shift),而BN层可以解决这个问题。BN层通过对每一层的输入数据进行归一化处理,使其服从正态分布(或接近正态分布),从而加快神经网络训练速度,提高模型稳定性。
- 损失函数:在某些机器学习模型中,正态分布被用作损失函数的一部分。例如,在最大似然估计中,负对数似然损失函数就与正态分布密切相关。通过最小化负对数似然损失函数,可以估计模型参数,使得模型预测的分布与实际数据分布尽可能接近。
- 生成模型:在深度生成模型中,如变分自编码器(VAE)和生成对抗网络(GAN),正态分布常被用作潜在空间变量的先验分布。通过学习数据的分布,这些模型可以生成与真实数据相似的新数据,从而实现数据扩充、图像生成等任务。
关于批量归一化、损失函数会在后续Day中深入解释,可以先留个印象。