IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 2021-07-13 -> 正文阅读

[人工智能]2021-07-13

简单过了一遍高数线代概率论数理统计的知识后,进入了随机过程和拒绝采样,MCMC采样方法的学习。

绘制Rosenbrock函数图并寻找局部最小值和全局最小值

给定下述Rosenbrock函数 f ( x ) = ( a ? x 1 ) 2 + b ? ( x 2 ? x 1 2 ) 2 f(x)=(a-x_1)^2+b*(x_2-x_{1}^{2})^2 f(x)=(a?x1?)2+b?(x2??x12?)2,其中 a , b ∈ R 2 a,b\in R^2 a,bR2。试编写程序完成下述工作:
1)为不同的a,b取值,绘制该函数的3D表面。请问 a,b取值对该表面形状有大的影响吗?所谓大影响就是形状不再相似。对a,b的取值区间,能否大致给出一个分类。
解:

a ∈ R a \in R aR
b ∈ ( ? ∞ , 0 ) b\in(-\infty ,0) b(?,0)开口向下的曲面
b = 0 b=0 b=0斜平面
b ∈ ( 0 , ∞ ) b\in(0 ,\infty) b(0,)开口向上的曲面

拒绝采样

对于概率分布不是常见的分布,一个可行的办法是采用接受-拒绝采样来得到该分布的样本。既然 p(x) 太复杂在程序中没法直接采样,那么我设定一个程序可采样的分布 q(x) 比如高斯分布,然后按照一定的方法拒绝某些样本,以达到接近 p(x) 分布的目的,其中q(x)叫做 proposal distribution。
在这里插入图片描述
具体采样过程如下:

  1. 设定一个方便采样的常用概率分布函数 q(x),以及一个常量 k,使得 p(x) 总在
    k ? ( q ( z 0 ) ) k*(q(z_0)) k?(q(z0?)) 的下方。如上图。
  2. 首先,采样得到q(x)的一个样本 z 0 z_0 z0?
  3. 从均匀分布 [ 0 , k ? ( q ( z 0 ) ] [0,k*(q(z_0)] [0,k?(q(z0?)]中采样得到一个值u
  4. 如果u落在了上图中的灰色区域,则拒绝这次抽样,否则接受这个样本z0(即可认为这个样本是p(x)采样得到的样本)
  5. 重复以上过程得到n个接受的样本 z 0 , z 1 , . . . , z n ? 1 z_0,z_1,...,z_{n?1} z0?,z1?,...,zn?1?,则最后的蒙特卡罗方法求解结果为:
    1 n ∑ i = 0 n ? 1 f ( z i ) p ( z i ) \frac{1}{n}\sum_{i=0}^{n-1}\frac{f(z_i)}{p(z_i)} n1?i=0n?1?p(zi?)f(zi?)?
    整个过程中,我们通过一系列的接受拒绝决策来达到用q(x)模拟p(x)概率分布的目的。

MCMC采样

MCMC是什么?

作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC)是马尔可夫链与蒙特卡罗方法这2个采样方法的结合。在机器学习,深度学习以及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础。

蒙特卡罗方法

蒙特卡罗方法是一种随机模拟的方法,最初的蒙特卡罗方法正如我们第一次在概率论课本的计算pi的“蒲丰投针”实验,主要用于测算不太好求解的求和、积分问题等。以[a,b]上 f ( x ) f(x) f(x)的积分问题为例,蒙特卡罗方法就是采样[a,b]区间的n个值:x0,x1,…xn?1,用它们的均值来代表[a,b]区间上所有的f(x)的值,这样定积分求解问题便简化为 b ? a n ∑ i = 0 n ? 1 f ( x i ) \frac{b-a}{n}\sum_{i=0}^{n-1}f(x_i) nb?a?i=0n?1?f(xi?)

虽然上面的方法可以一定程度上求解出近似的解,但是它隐含了一个假定,即x在[a,b]之间是均匀分布的,而绝大部分情况,x在[a,b]之间不是均匀分布的。如果我们用上面的方法,则模拟求出的结果很可能和真实值相差甚远。

怎么解决这个问题呢? 如果我们可以得到x在[a,b]的概率分布函数 p ( x ) p(x) p(x),那么我们的定积分求和可以这样进行:
θ = ∫ a b f ( x ) d x = ∫ a b f ( x ) p ( x ) p ( x ) d x ≈ 1 n ∑ i = 0 n ? 1 f ( x i ) p ( x i ) \theta=\int_{a}^{b} f(x)dx=\int_{a}^{b} \frac{f(x)}{p(x)}p(x)dx\approx \frac{1}{n}\sum_{i=0}^{n-1}\frac{f(x_i)}{p(x_i)} θ=ab?f(x)dx=ab?p(x)f(x)?p(x)dxn1?i=0n?1?p(xi?)f(xi?)?
上式最右边的这个形式就是蒙特卡罗方法的一般形式。当然这里是连续函数形式的蒙特卡罗方法,但是在离散时一样成立。

马氏链

就是马尔可夫链,特征是某一时刻状态转移的概率只依赖于它的前一个状态。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:51:52  更:2021-07-14 10:52:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年3日历 -2024/3/29 5:32:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码