当前位置: 首页 > news >正文

文登区住房和城乡建设局网站wordpress添加热门文章

文登区住房和城乡建设局网站,wordpress添加热门文章,西安淘宝网页设计,wordpress仪表盘打不开目录 摘要 Abstract 一、MCMC 1、马尔科夫链采样 step1 状态设定 step2 转移矩阵 step3 马尔科夫链的生成 step4 概率分布的估计 2、蒙特卡洛方法 step1 由一个分布产生随机变量 step2 用这些随机变量做实验 3、MCMC算法 4、参考文章 二、flow-based GAN 1、引…

目录

摘要

Abstract

一、MCMC

1、马尔科夫链采样

 step1 状态设定

step2 转移矩阵

step3 马尔科夫链的生成

step4 概率分布的估计

2、蒙特卡洛方法

step1 由一个分布产生随机变量

step2 用这些随机变量做实验

3、MCMC算法 

4、参考文章

二、flow-based GAN 

1、引入 

2、数学基础回顾 

总结 


摘要

本周主要学习了MCMC算法,其中包含马尔科夫链采样和蒙特卡洛方法。通过视频资料的学习,对以上提到的两种方法进行规律总结以及简单的代码实践。还回顾了flow-based GAN理论的简单数学基础。

Abstract

This week is focused on MCMC algorithm which contains Markov chain sampling and Monte Carlo method. The video material was used to summarize the laws of the two methods mentioned above as well as simple code practice. The simple mathematical foundations of flow-based GAN theory are also reviewed. 

一、MCMC

1、马尔科夫链采样

 Markov Chains马尔科夫链:未来的状态只取决于前一个状态,而不依赖于更往前的状态。并且所有状态出箭头的概率之和都为1。

随机漫步random walk 

问题:行走着无规则的向着四面八方行走,最终形成的各个方向的概率是否收敛于一定值?

解决:稳态分布(平衡状态) 

稳态分布:与初始概率分布无关,马尔科夫链在有限次状态转移之后到达的平稳状态分布即为稳态分布。

\pi (j)=\sum_{i=0}^{\infty }\pi (i)P_{ij} 

\pi (j)所得到的向量值代表了某个时刻(第j个时刻)的概率分布值\pi (i)则代表i个状态的概率分布。由于每个状态的输出之和都为1,所以有\sum_{i=0}^{\infty }\pi (i)=1


 step1 状态设定

一家快餐店售卖三种食物:pizza、buger、hotdog。将每种食物设定为不同状态分别为1、2、3

#定义3种状态
state = {0 : "Burger",1 : "Pizza",2 : "Hotdog"
}
state

step2 转移矩阵

每个数值代表着对应行列的权重,如果两个节点之间用箭头连线连接,那么该数值也叫转移概率

#定义过渡矩阵
A = np.array([[0.2, 0.6, 0.2], [0.3, 0.0, 0.7], [0.5, 0.0, 0.5]])

step3 马尔科夫链的生成

#随机生成马尔科夫链——random walk的过程
n = 15
start_state = 0
curr_state = start_state
print(state[curr_state], "--->", end=" ")while n-1:curr_state = np.random.choice([0, 1, 2], p=A[curr_state])print(state[curr_state], "--->", end=" ")n-=1
print("stop")

随机选定一个初始状态,接着用np库中的random.choice函数在备选状态集中选择下一状态,直至循环到设置最大值。 生成结果如下:

step4 概率分布的估计

法一:Monte Carlo方法

steps = 10**6
start_state = 0  #其中A[curr_state]只有三种状态:pizza、buger、hotgog
curr_state = start_state
pi = np.array([0, 0, 0])  #初始状态均为0
pi[start_state] = 1   #把初始状态开始的state设为1i = 0
while i<steps:curr_state = np.random.choice([0,1,2], p=A[curr_state])  #随机从p中选择一种状态pi[curr_state]+=1i +=1print("π = ", pi/steps)

输出结果如下:

法二:矩阵连乘法 

steps = 10**3  #设置矩阵相乘的次数
A_n = Ai=0
while i<steps:A_n =  np.matmul(A_n, A)  #矩阵乘法i+=1print("A^n = \n", A_n, "\n")
print("π = ", A_n[0])

输出结果如下:

法三:求解左特征值

pi向量代表各个状态的概率分布,也就是每一行的概率分布

可以看出,上面关于pi的等式要成立,有些类似于线性代数中特征值和特征向量的求解,pi相当于是特征向量,特征值为1

import scipy.linalg
values, left = scipy.linalg.eig(A, right = False, left = True)  #计算左特征向量和特征值print("left eigen vectors = \n", left, "\n")
print("eigen values = \n", values)

特征值和特征向量输出结果如下:

 将特征向量进行归一化处理:

pi = left[:,0]  #提取第一个左特征向量
pi_normalized = [(x/np.sum(pi)).real for x in pi]   #归一化第一个左特征向量

pi的向量输出结果如下:

Markov Chains的概率预测

def find_prob(seq, A, pi):start_state = seq[0]prob = pi[start_state]prev_state, curr_state = start_state, start_statefor i in range(1, len(seq)):curr_state = seq[i]prob *= A[prev_state][curr_state]prev_state = curr_statereturn probprint(find_prob([1, 2, 2, 0], A, pi_normalized))

预测一条给定的markov chains的概率P(pizza——>hotdog——>hotdog——>burger)

预测结果如下:

2、蒙特卡洛方法

step1 由一个分布产生随机变量

step1 分布函数CDF的反函数

#随机线性选取x,得到概率密度f和概率分布F
x = np.linspace(0,3,100)  #初始、结束、总数
f = 2*np.exp(-2*x)
F = 1-np.exp(-2*x)#绘图
plt.figure(figsize=(8,3))
plt.plot(x, f, label=r'$f(x)$')
plt.plot(x,F, label=r'$F(x)$')
plt.legend()
plt.xlabel('$x$', fontsize=20)
plt.legend()
plt.show()

上述代码以泊松分布为例 

分布函数的反函数 

#设定反函数
Us = np.random.rand(10000)
F_inv_Us = -np.log(1-Us)/2#绘图
plt.figure(figsize=(8,3))
plt.plot(x, f, label=r'$f(x)$')
plt.hist(F_inv_Us, histtype='step', color='red', density='norm', bins=100, label='$F^{-1}(u)$')
plt.legend()
plt.xlabel('$x$', fontsize=20)
plt.legend()
plt.show()

step2 查找排序算法 

#设定自变量及概率密度和分布函数的定义式
x, y, F1, F2, E1, E2 = smp.symbols('x y F_1 F_2 E_1 E_2', real=True, positive=True)
fs = F1*smp.exp(-smp.sqrt(x/E1)) + F2*smp.exp(-smp.sqrt(x/E2))
Fs = smp.integrate(fs, (x,0,y)).doit()#写成只需要传递参数的函数形式
Fn = smp.lambdify((y, E1, E2, F1, F2), Fs)  #目的就是输入前面的数值y, E1, E2, F1, F2)带入后面的式子Fs中去
fn = smp.lambdify((x, E1, E2, F1, F2), fs)#给定参数的实际数值
E1 = E2 = 0.2
F1 = 1.3
F2 = 1.4
x = np.linspace(0,5,1000)
f = fn(x, E1, E2, F1, F2)
F = Fn(x, E1, E2, F1, F2)#绘图
plt.figure(figsize=(8,3))
plt.plot(x,f, label=r'$f(x)$')
plt.plot(x,F, label=r'$F(x)$')
plt.legend()
plt.xlabel('$x$', fontsize=20)
plt.legend()
plt.show()

加入分布函数的反函数

#反函数
F_inv_Us = x[np.searchsorted(F[:-1], Us)]#绘图
plt.figure(figsize=(8,3))
plt.plot(x, f, label=r'$f(x)$')
plt.hist(F_inv_Us, histtype='step', color='red', density='norm', bins=100, label='$F^{-1}(u)$')
plt.legend()
plt.xlabel('$x$', fontsize=20)
plt.legend()
plt.xlim(0,2)
plt.show()

上面的函数分布是正太分布 

step3 建立随机变量 

#rayleigh分布
r = np.random.rayleigh(size=1000)#绘图
plt.hist(r, bins=100)
plt.show()

step2 用这些随机变量做实验

累积计算detector的energy  

N = 100000# Part 1 
X = np.random.poisson(lam=4, size=N)  #采样泊松分布# Part 2
x = np.linspace(0,5,1000)   
F = Fn(x, E1, E2, F1, F2)   #分布函数
Us = np.random.rand(X.sum()) #随机生成指定维度的样本数据  
E = x[np.searchsorted(F[:-1], Us)]  #样本数据在分布函数中的索引,E是分布中的原有数据

在n轮实验之后,检测到的粒子总数净和 

idx = np.insert(X.cumsum(), 0, 0)[:-1] #累积求和插入到空列表中
E_10s = np.add.reduceat(E, idx)  #分段求和,E是一个完整的数组,ind给出的是分段的位置,然后每一段分别进行求和
#也就是,0-2求和、3-5求和、6-11求和#绘图
plt.figure(figsize=(5,3))
plt.hist(E_10s, bins=100)
plt.xlabel('Energy [GeV]', fontsize=20)
plt.ylabel('# Occurences')
plt.show()

结果绘制如下: 

3、MCMC算法 

MCMC:该方法将马尔科夫(Markov)过程引入到Monte Carlo模拟中,实现抽样分布随模拟的进行而改变的动态模拟,弥补了传统的蒙特卡罗积分只能静态模拟的缺陷。 

4、参考文章

参考视频:https://www.youtube.com/watch?v=i3AkTO9HLXo

 https://www.youtube.com/watch?v=U00Kseb6SB4

参考文章: 动态规划之——矩阵连乘(全网最详细博文,看这一篇就够了!)-CSDN博客

原创 | 一文读懂蒙特卡洛算法

二、flow-based GAN 

1、引入 

 

问题:一般的GAN无法直接optimize模型的function,也就是无法使得G^*取得最大值

解决:flow-based GAN 

2、数学基础回顾 

Jacobian matrix 

向量z是输入、向量x是输出 ,Jacobian matrix 就是分别在各自位置上进行偏微分操作。由此引申出了Jacobian的逆矩阵。二者互为逆矩阵的关系,有公式如下:

J_fJ_f^{-1}=1

determinant 

 

几何意义的表示如下: 

 

几维向量就代表了该矩阵能够组成几维空间的图形。 

change of variable theorem

 

已知输入z的正态分布\pi (z)以及输出的一个复杂分布p(x)。首先,将z作为输入、x作为输出,f是连接输入输出的函数,体现二者之间的关系;接着,将z{}'对应到x{}'上去,找到x{}'在分布中对应的p({x}');最后,找到两个分布之间的关系。

无论输入输出是什么分布,蓝色方块和绿色方块的面积要保持一致。

 

 

总结 

本周对GAN的变形算法进行数学基础学习,并且拓展学习了MCMC算法的基本内容和代码。下周将继续学习flow-based GAN算法的基本理论推导,并且对MCMC算法进行总结,找到马尔科夫链和蒙特卡罗方法的关联及在该算法中各自的应用。

http://www.yayakq.cn/news/948012/

相关文章:

  • flash网站建设公司企业网站开发需求
  • 网站建设 APP网站方案策划书
  • 湖北网站注册设计公司网站做微信支付功能
  • 成品网站建设郑州做的比较好网站公司吗
  • 网站流量 收益网站分几种
  • 建设职业技术学院网站网站建设湖南岚鸿建设
  • 淄博乐达信息技术网站做平台网站
  • 布吉商城网站建设哪家便宜网站设计需求文档范例
  • 公司网站代做seo基本步骤顺序
  • 免费网站设计作业网站开发需要多钱
  • 东阳企业网站微商城建设制作网站的过程
  • 网络营销企业网站优化网站制作 牛商网 岳阳 公司
  • app网站排名推广赚钱项目
  • 网站后台登入模板衡水移动网站建设费用
  • cms网站建设系统合益环保东莞网站建设
  • 武胜建设局网站wordpress 调用近期文章
  • 网件app淄博网站优化
  • 免费的静态网站托管wordpress4.9.6 漏洞
  • 网站建设建站在线建站皮革 东莞网站建设
  • 都网站建设龙岩市城乡规划建设局网站
  • 自己房子做民宿挂什么网站呼和浩特网络公司
  • 专门做985招聘信息的网站柳城企业网站建设公司
  • 院校门户网站建设方案招聘网站做专题的目的
  • 选择建设网站公司要注意什么网页设计策划案范文
  • asp网站链接access广州北京网站建设公司
  • 三只松鼠网站建设品牌茶业都在哪些网站做宣传
  • 企业大型网站开发设计建站流程Wordpress打开速度优化插件
  • 怎么做一个简易网站怎么制作网站接口
  • 给公司做一个网站流程wordpress机械模板下载
  • 网站优化制作公司代理上海电子商务网站建设