本篇为《深度学习》系列博客的第五篇,该系列博客主要记录深度学习相关知识的学习过程和自己的理解,方便以后查阅。
上篇博客说道"均值和期望的联系是大数定理联系起来的
‘,这里这里看到一篇博客讲解了基本的极限定理,这里做一下记录。
人们在长期的实践中发现,虽然个别事件在某次试验中可能发生也可能不发生,但在大量重复实验
中却呈现明显的规律性,即一个随机事件发生的频率在某个固定数的附近摇摆,这就是所谓“频率的稳定性
”(概率是频率随样本趋于无穷的极限)。
切比雪夫不等式
设随机变量X的数学期望 E ( X ) = μ E(X)=\mu E(X)=μ,方差 D ( X ) = σ 2 D(X)=\sigma ^{2} D(X)=σ2,对任意的 ε > 0 \varepsilon >0 ε>0,有:
P ( ∣ X − μ ∣ > = ε ) < = σ 2 ε 2 (1) P({|X-\mu|>=\varepsilon }) <= \frac{\sigma ^{2}}{\varepsilon^2} \tag{1} P(∣X−μ∣>=ε)<=ε2σ2(1)
即:
P ( ∣ X − μ ∣ < ε ) > = 1 − σ 2 ε 2 (2) P(|X-\mu|<\varepsilon) >= 1-\frac{\sigma ^{2}}{\varepsilon^2} \tag{2} P(∣X−μ∣<ε)>=1−ε2σ2(2)
例题:
已知随机变量X的数学期望E(X)=100,方差D(X)=10,试估计X落在(80,120)内的概率
解:
由切比雪夫不等式
P
(
80
<
X
<
120
)
=
P
(
∣
X
−
100
∣
<
20
)
>
=
1
−
10
2
0
2
=
0.975
(3)
P(80<X<120) = P(|X-100|<20)>=1- \frac{10}{20^2}=0.975 \tag{3}
P(80<X<120)=P(∣X−100∣<20)>=1−20210=0.975(3)
大数定理
简单而言,大数定律讲的是样本均值收敛到总体均值(就是期望)
,像这个图一样:
切比雪夫大数定律
假设
{
X
n
}
(
n
=
1
,
2
,
…
)
\{X_n\}(n=1,2,…)
{Xn}(n=1,2,…)是相互独立的随机变量序列
,如果方差
D
X
i
(
i
>
=
1
)
DX_i(i>=1)
DXi(i>=1)存在,且一致有上界
,即存在常数C,使
D
X
i
<
=
C
DX_i<=C
DXi<=C对一切
i
>
=
1
i>=1
i>=1均成立,则
{
X
n
}
\{X_n\}
{Xn}服从大数定律:
1
n
∑
i
=
1
n
X
i
→
P
→
1
n
∑
i
=
1
n
E
X
i
(4)
\frac{1}{n}∑^n_{i=1}X_i→^P→ \frac{1}{n}∑^n_{i=1}EX_i \tag{4}
n1i=1∑nXi→P→n1i=1∑nEXi(4)
即:
lim n → ∞ P { ∣ 1 n ∑ i = 1 n X i − 1 n ∑ i = 1 n E ( X i ) ∣ < ε } = 1 (5) \displaystyle \lim_{n→∞}P\{| \frac{1}{n}∑^n_{i=1}X_i- \frac{1}{n}∑^n_{i=1}E(X_i)|<\varepsilon\}=1 \tag{5} n→∞limP{∣n1i=1∑nXi−n1i=1∑nE(Xi)∣<ε}=1 (5)
则有:
x
‾
=
1
n
∑
i
=
1
n
X
i
→
P
→
1
n
∑
i
=
1
n
E
X
i
=
E
{
1
n
∑
i
=
1
n
X
i
}
=
E
X
‾
(6)
\overline{x}= \frac{1}{n}∑^n_{i=1}X_i→^P→ \frac{1}{n}∑^n_{i=1}EX_i =E\{\frac{1}{n}∑^n_{i=1}X_i\} =E\overline{X} \tag{6}
x=n1i=1∑nXi→P→n1i=1∑nEXi=E{n1i=1∑nXi}=EX (6)
即:
x
‾
→
P
→
E
X
‾
(7)
\overline{x}→^P→E\overline{X} \tag{7}
x→P→EX(7)
辛钦大数定律
假设
{
X
n
}
(
n
=
1
,
2
,
…
)
\{X_n\}(n=1,2,…)
{Xn}(n=1,2,…)是相互独立
同分布
的随机变量序列,如果方差
E
X
i
=
μ
(
i
>
=
1
)
EX_i=\mu(i>=1)
EXi=μ(i>=1)存在
,则
1
n
∑
i
=
1
n
X
i
→
P
→
μ
\frac{1}{n}∑^n_{i=1}X_i→^P→ \mu
n1∑i=1nXi→P→μ ,即对任意
ε
>
0
\varepsilon >0
ε>0,有:
lim
n
→
∞
P
{
∣
1
n
∑
i
=
1
n
X
i
−
μ
∣
<
ε
}
=
1
(8)
\displaystyle \lim_{n→∞}P\{| \frac{1}{n}∑^n_{i=1}X_i-\mu|<\varepsilon\}=1 \tag{8}
n→∞limP{∣n1i=1∑nXi−μ∣<ε}=1 (8)
既有:
x
‾
=
1
n
∑
i
=
1
n
X
i
→
P
→
1
n
∑
i
=
1
n
E
X
i
=
1
n
n
μ
=
μ
(9)
\overline{x}= \frac{1}{n}∑^n_{i=1}X_i→^P→ \frac{1}{n}∑^n_{i=1}EX_i =\frac{1}{n}n\mu =\mu \tag{9}
x=n1i=1∑nXi→P→n1i=1∑nEXi=n1nμ=μ (9)
即:
x
‾
→
P
→
E
X
‾
(10)
\overline{x}→^P→E\overline{X} \tag{10}
x→P→EX(10)
伯努利大数定律
设
Y
n
Y_{n}
Yn是
n
n
n重伯努利试验中事件
A
A
A发生的次数,
p
p
p是事件
A
A
A在每次试验中发生的概率,对于任意的
ε
>
0
\varepsilon >0
ε>0,有
lim
n
→
∞
P
{
∣
Y
n
n
−
p
∣
>
=
ε
}
=
0
(11)
\displaystyle \lim_{n→∞}P\{| \frac{Y_n}{n}-p|>=\varepsilon\}=0 \tag{11}
n→∞limP{∣nYn−p∣>=ε}=0 (11)
该定理表明,当
n
n
n充分大时,事件
A
A
A发生的频率
Y
n
n
\frac{Y_{n}}{n}
nYn与概率
p
p
p的差的绝对值大于任意指定正数
ε
\varepsilon
ε的概率可以任意小。
模拟代码
根据不同的样本量,模拟样本均值的收敛性。
import numpy as np
from numpy import random as nprd
True_P=0.5
def sampling(N):
## 产生Bernouli样本,n重伯努利实验
x=nprd.rand(N)<True_P
return x
M=10000 #模拟次数
xbar=np.zeros(M)
N=np.array([i+1 for i in range(M)]) # 横坐标值
x=sampling(M) # x是布尔量
for i in range(M):
if i==0:
xbar[i]=x[i]
else:
xbar[i]=(x[i]+xbar[i-1]*i)/(i+1) # 求平均值,xbar[i-1]的分母是i
## 导入matplotlib
import matplotlib.pyplot as plt
## 使图形直接插入到jupyter中,本地运行时注释掉这句话
# %matplotlib inline
# 设定图像大小
plt.rcParams['figure.figsize'] = (10.0, 8.0)
plt.plot(N,xbar,label=r'$\bar{x}$',color='pink') ## xbar
xtrue=np.ones(M)*True_P
plt.plot(N,xtrue,label=r'$0.5$',color='black') ## true xbar
plt.xlabel('N')
plt.ylabel(r'$\bar{x}$')
plt.legend(loc='upper right', frameon=True)
plt.show() ## 画图
中心极限定理
而中心极限定理告诉我们,当样本量足够大时,样本均值
的分布慢慢变成正态分布
,就像这个图:
列维-林德伯格定理
设相互独立的随机变量
X
1
,
X
2
,
.
.
.
,
X
n
,
.
.
.
X_{1},X_{2},...,X_{n},...
X1,X2,...,Xn,... 服从相同的分布,且
E
(
X
i
)
=
μ
E(X_{i})=\mu
E(Xi)=μ ,
D
(
X
i
)
=
σ
2
≠
0
(
i
=
1
,
2
,
.
.
.
)
D(X_{i})=\sigma ^{2}\neq 0(i=1,2,...)
D(Xi)=σ2=0(i=1,2,...) ,则随机变量
Y
n
=
∑
i
=
1
n
X
i
−
n
μ
n
σ
(12)
Y_{n}=\frac{\sum^{n}_{i=1}X_{i}-n\mu }{\sqrt{n}\sigma } \tag{12}
Yn=nσ∑i=1nXi−nμ(12)
的分布函数
F
n
(
x
)
=
P
{
Y
n
⩽
x
}
F_{n}(x)=P\begin{Bmatrix} Y_{n}\leqslant x \end{Bmatrix}
Fn(x)=P{Yn⩽x}对任意实数
x
x
x,满足
l
i
m
n
→
∞
F
n
(
x
)
=
∫
−
∞
x
1
2
π
e
−
t
2
2
d
t
=
Φ
(
x
)
(13)
\underset{n\rightarrow \infty }{lim}F_{n}(x)=\int_{-\infty }^{x}\frac{1}{\sqrt{2\pi }}e^{-\frac{t^{2}}{2}}dt=\Phi (x) \tag{13}
n→∞limFn(x)=∫−∞x2π1e−2t2dt=Φ(x)(13)
该定理的结论也可以写为:对于任意的
a
<
b
a<b
a<b,有
l
i
m
n
→
∞
P
{
a
<
Y
n
⩽
b
}
=
l
i
m
n
→
∞
P
{
a
<
∑
i
=
1
n
X
i
−
n
μ
n
σ
⩽
b
}
=
Φ
(
b
)
−
Φ
(
a
)
(14)
\underset{n\rightarrow \infty}{lim}P\begin{Bmatrix} a<Y_{n}\leqslant b \end{Bmatrix}=\underset{n\rightarrow \infty}{lim}P\begin{Bmatrix} a< \frac{\sum^{n}_{i=1}X_{i}-n\mu }{\sqrt{n}\sigma }\leqslant b \end{Bmatrix}=\Phi (b)-\Phi(a) \tag{14}
n→∞limP{a<Yn⩽b}=n→∞limP{a<nσ∑i=1nXi−nμ⩽b}=Φ(b)−Φ(a)(14)
棣莫弗—拉普拉斯定理
设
Y
n
∼
B
(
n
,
p
)
,
n
=
1
,
2
,
.
.
.
,
Y_{n}\sim B(n,p),n=1,2,...,
Yn∼B(n,p),n=1,2,...,其中
0
<
p
<
1
,
q
=
1
−
p
0<p<1,q=1-p
0<p<1,q=1−p,则对任意实数
x
x
x,有
l
i
m
n
→
∞
P
{
Y
n
−
n
p
n
p
q
⩽
x
}
=
∫
−
∞
x
1
2
π
e
−
t
2
2
d
t
=
Φ
(
x
)
(15)
\underset{n\rightarrow \infty}{lim}P\begin{Bmatrix} \frac{Y_{n}-np }{\sqrt{npq} }\leqslant x \end{Bmatrix}=\int_{-\infty }^{x}\frac{1}{\sqrt{2\pi }}e^{-\frac{t^{2}}{2}}dt=\Phi (x) \tag{15}
n→∞limP{npqYn−np⩽x}=∫−∞x2π1e−2t2dt=Φ(x)(15)
模拟代码
根据不同的样本量(N),模拟2000次样本均值,并观察给定样本量的条件下2000次样本均值的分布情况。按照中心极限定理,当样本量足够大时,样本均值的分布应该趋向于正态分布。
没咋看懂整体思路!!!
import numpy as np
from numpy import random as nprd
def sampling(N):
## 产生一组样本,以0.5的概率为z+3,0.5的概率为z-3,其中z~N(0,1)
d=nprd.rand(N)<0.5 ## 产生布尔量
z=nprd.randn(N) ## 产生0到1之间的随机变量
x=np.array([z[i]+3 if d[i] else z[i]-3 for i in range(N)]) ## 产生测数据集的一组数据,一共需要2000组
return x
N=[2,3,4,10,100,1000] # sample size,测试的数据组数
M=2000 ## 每组数据的数据量
MEANS=[]
for n in N:
mean_x=np.zeros(M)
for i in range(M):
x=sampling(n)
mean_x[i]=np.mean(x)/np.sqrt(10/n) ## 标准化,因为var(x)=10
MEANS.append(mean_x)
## 导入matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
## 使图形直接插入到jupyter中,本地运行时注释掉这句话
# %matplotlib inline
# 设定图像大小
plt.rcParams['figure.figsize'] = (10.0, 8.0)
# plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots
# plt.rcParams['image.interpolation'] = 'nearest' # 设置 interpolation style
# plt.rcParams['image.cmap'] = 'gray'
# plt.rcParams['savefig.dpi'] = 300 #图片像素
# plt.rcParams['figure.dpi'] = 300 #分辨率
# # 默认的像素:[6.0,4.0],分辨率为100,图片尺寸为 600&400
# # 指定dpi=200,图片尺寸为 1200*800
# # 指定dpi=300,图片尺寸为 1800*1200
# # 设置figsize可以在不改变分辨率情况下改变比例
x=sampling(1000)
plt.xlabel('x')
plt.ylabel('Density')
plt.title('Histogram of Mixed Normal')
plt.hist(x,bins=50,normed=1) ## histgram
# x 为要绘制的数据,一维数组可用pandas的Series结构,二维数组使用DataFrame
# bins 指定条带bar 的总个数,个数越多,条形带越紧密。
# range :筛选数据范围,默认是最小到最大的取值范围
# normed :为True是频率图,默认False是频数图; 绘制概率密度函数pdf 和累计分布函数cdf时要指定normed=1;显示为每个条状图的占比例比;
plt.show() ## 画图
## 均值
ax1 = plt.subplot(2,3,1)
ax2 = plt.subplot(2,3,2)
ax3 = plt.subplot(2,3,3)
ax4 = plt.subplot(2,3,4)
ax5 = plt.subplot(2,3,5)
ax6 = plt.subplot(2,3,6)
## normal density 正态分布密度函数
x=np.linspace(-3,3,100) ## -3到3等间距的100个数
d=[1.0/np.sqrt(2*np.pi)*np.exp(-i**2/2) for i in x] ## 标准正态分布
def plot_density(ax,data,N):
ax.hist(data,bins=50,normed=1) ## histgram
ax.plot(x,d)
ax.set_title(r'Histogram of $\bar{x}$:N=%d' % N)
plot_density(ax1,MEANS[0],N[0])
plot_density(ax2,MEANS[1],N[1])
plot_density(ax3,MEANS[2],N[2])
plot_density(ax4,MEANS[3],N[3])
plot_density(ax5,MEANS[4],N[4])
plot_density(ax6,MEANS[5],N[5])
plt.show() ## 画图
以下内容没了解过,先记下,用到再看!!!
重对数率
重对数率(law of iterated logarithm)即,对于独立同分布的
Y
1
,
.
.
.
,
Y
n
Y_1, ... , Y_n
Y1,...,Yn,其中
E
(
Y
i
)
=
0
,
V
(
Y
i
)
=
1
E\left(Y_i\right)=0, V\left(Y_i\right)=1
E(Yi)=0,V(Yi)=1,有:
lim sup
n
→
∞
Y
1
+
.
.
.
+
Y
n
n
ln
ln
n
=
2
\limsup_{n\rightarrow \infty} \frac{Y_1+...+Y_n}{\sqrt{n\ln\ln n}}=\sqrt{2}
n→∞limsupnlnlnnY1+...+Yn=2
import numpy as np
import numpy.random as nprd
def gen_path(T):
X=[]
x=0
for t in range(T):
x+=nprd.normal()
X.append(x)
return X
import matplotlib.pyplot as plt
%matplotlib inline
# 设定图像大小
plt.rcParams['figure.figsize'] = (8.0, 8.0)
fig=plt.figure()
N=50
T=20000
t=list(range(T))
corlors=np.linspace(0,1,N)
for i in range(N):
x=gen_path(T)
plt.plot(t,x,color=(0.8,1-corlors[i],corlors[i]))
plt.plot(t,[np.sqrt(2*(n+1)*np.log(np.log(n+1))) for n in t],color=(0,0,0))
plt.plot(t,[-np.sqrt(2*(n+1)*np.log(np.log(n+1))) for n in t],color=(0,0,0))
plt.show() ## 画图
fig.savefig("law_iterated_log.pdf")
t=list(range(T))
fig1=plt.figure()
corlors=np.linspace(0,1,N)
for i in range(N):
x=gen_path(T)
plt.plot(t,[x[n]/np.sqrt((n+1)*np.log(np.log(n+1))) for n in t],color=(0.8,1-corlors[i],corlors[i]))
plt.plot(t,[np.sqrt(2) for n in t],color=(0,0,0))
plt.plot(t,[-np.sqrt(2) for n in t],color=(0,0,0))
plt.show() ## 画图
fig1.savefig("law_iterated_log2.pdf")
参考文章:
https://www.zhihu.com/question/22913867
https://blog.csdn.net/csdn___csdn/article/details/81704930
代码来源:
https://github.com/sijichun/MathStatsCode/blob/master/notebook_python/LLN_CLT.ipynb