概率计算

模拟退火算法

允我心安 提交于 2020-03-14 17:29:10
著名的模拟退火算法,它是一种基于蒙特卡洛思想设计的近似求解最优化问题的方法。 一点历史——如果你不感兴趣,可以跳过 美国物理学家 N.Metropolis 和同仁在1953年发表研究复杂系统、计算其中能量分布的文章,他们使用蒙特卡罗模拟法计算多分子系统中分子的能量分布。这相当于是本文所探讨之问题的开始,事实上,模拟退火中常常被提到的一个名词就是Metropolis准则,后面我们还会介绍。 美国IBM公司物理学家 S.Kirkpatrick、C. D. Gelatt 和 M. P. Vecchi 于1983年在《Science》上发表了一篇颇具影响力的文章:《以模拟退火法进行最优化(Optimization by Simulated Annealing)》。他们借用了Metropolis等人的方法探讨一种旋转玻璃态系统(spin glass system)时,发觉其物理系统的能量和一些组合最优(combinatorial optimization)问题(著名的旅行推销员问题TSP即是一个代表例子)的成本函数相当类似:寻求最低成本即似寻求最低能量。由此,他们发展出以 Metropolis 方法为本的一套算法,并用其来解决组合问题等的寻求最优解。 几乎同时,欧洲物理学家 V.Carny 也发表了几乎相同的成果,但两者是各自独立发现的;只是Carny“运气不佳”,当时没什么人注意到他的大作

给定1-a的随机数生成器,产生1-b的随机数生成器

自闭症网瘾萝莉.ら 提交于 2020-03-14 11:07:49
转自 http://www.code123.cc/959.html 先给出一个例子,后面会有扩展 题目 给你一个能生成1到5随机数的函数,用它写一个函数生成1到7的随机数。 (即:使用函数rand5()来实现函数rand7())。 解答 rand5可以随机生成1,2,3,4,5;rand7可以随机生成1,2,3,4,5,6,7。 rand5并不能直接产生6,7,所以直接用rand5去实现函数rand7似乎不太好入手。 如果反过来呢?给你rand7,让你实现rand5,这个好实现吗? 一个非常直观的想法就是不断地调用rand7,直到它产生1到5之间的数,然后返回。 代码如下: 1 2 3 4 5 6 int Rand5 ( ) { int x = ~ ( 1 << 31 ) ; // max int while ( x > 5 ) x = Rand7 ( ) ; return x ; } 等等,这个函数可以等概率地产生1到5的数吗?首先,它确确实实只会返回1到5这几个数, 其次,对于这些数,都是由Rand7等概率产生的(1/7),没有对任何一个数有偏袒, 直觉告诉我们,Rand5就是等概率地产生1到5的。事实呢?让我们来计算一下, 产生1到5中的数的概率是不是1/5就OK了。比如说,让我们来计算一下Rand5生成1 的概率是多少。上面的函数中有个while循环

随机数生成器

▼魔方 西西 提交于 2020-03-13 09:27:00
一个特例:已知一个随机数生成函数f3(),即以相同的概率随机返回0, 1, 2(返回每个数的概率均为1/3),现要求通过调用f3()实现一个函数f5()。 解答方法: (1)最基本的思路: 计算机中所有的数都是由二进制表示,所以如果能得到一个函数f2(),以50%的概率得到0或者1,那就可以通过这个函数来生成任何一个随机数产生器了。 f2(){int a; while((a = f3()) > 1); return a;} 然后f5()就能通过f2()实现。 (2)一次简单扩展: 既然任何一个数能用二进制表示,那也能用三进制表示,f3()就是一个生产三进制各位数字的函数,所以可以通过f3()直接得到f5()。伪代码: int f5() { int a; do { a = 3 * f3() + f3(); }while(a > 4); return a; } 因为a的范围是[0, 8],且概率相等,当a>4的时候,重新调用两次f3(),所以最后返回的是[0, 4],且概率相等。 (3)两种方法调用f3()函数次数的期望: 方法(2)中一次求得a处于[0, 4]的概率是5/9,每次调用两次f3(),所以期望是2/(5/9) = 18/5 = 3.6次; 方法(1)中a = 4 * f2() + 2 * f2() + f2(),a取值为[0, 7],所以生成一个随机数调用f2(

强化学习-7.策略梯度算法

Deadly 提交于 2020-03-12 08:47:31
文章目录 引言 强化学习方法的分类 基于值函数的方法的局限性 策略梯度算法的优缺点 策略模型的建模方式 策略梯度算法 策略梯度目标函数 策略梯度的推导 弥补策略梯度的缺陷 引入基线 修改回报值函数 Actor-Critic MC 策略梯度 (REINFORCE) 使用 Critic 函数减小方差 使用优势函数减小误差 使用 TD 误差替代优势函数 策略梯度多种形式的总结 A2C 算法 引言 强化学习方法的分类 强化学习方法可以分为:基于值函数的方法、基于策略的方法和Actor-Critic。 基于值函数的方法: 用 值函数 进行策略评价+策略优化,用值函数导出策略 基于策略的方法: 直接学习 策略 Actor-Critic: 学习 值函数 + 策略 之前的强化学习方法都是基于值函数的方法,在值函数近似中,我们使用带参数w的函数去近似值函数,如下: 在基于值函数的方法中,策略是从值函数中导出的 使用贪婪的方法导出 最优策略 (最终收敛得到的策略) 使用 ϵ \epsilon ϵ -贪婪方法导出 行为策略 (智能体真正做的策略) 而基于策略的方法,直接将策略进行参数化。 基于值函数的方法的局限性 针对确定性策略 存在策略退化: 收敛后,若存在误差,则很容易因为微小的值函数差,发生策略退化现象 难以处理高维度的状态/动作空间 不能处理连续的状态/动作空间 收敛速度慢: 反复进行策略迭代

t分布, 卡方x分布,F分布

非 Y 不嫁゛ 提交于 2020-03-12 02:32:01
T分布:温良宽厚 本文由“医学统计分析精粹”小编“Hiu”原创完成,文章采用知识共享Attribution-NonCommercial-NoDerivatives 4.0国际许可协议(http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可,转载署名需附带本号二维码,不可用于商业用途,不允许任何修改,任何谬误建议,请直接反馈给原作者,谢谢合作! 命名与源起 “t”,是伟大的Fisher为之取的名字。Fisher最早将这一分布命名为“Student's distribution”,并以“t”为之标记。 Student,则是William Sealy Gosset(戈塞特)的笔名。他当年在爱尔兰都柏林的一家酒厂工作,设计了一种后来被称为t检验的方法来评价酒的质量。因为行业机密,酒厂不允许他的工作内容外泄,所以当他后来将其发表到至今仍十分著名的一本杂志《Biometrika》时,就署了student的笔名。所以现在很多人知道student,知道t,却不知道Gosset。(相对而言,我们常说的正态分布,在国外更多的被称为高斯分布……高斯~泉下有知的话,说不定会打出V字手势~欧耶!) 看懂概率密度图 这一点对于初学者尤为重要,相信还是有不少人对正态分布或者t分布的曲线没有确切的理解。 首先,我们看一下频率分布直方图,histogram:

论文笔记:蒸馏网络(Distilling the Knowledge in Neural Network)

一笑奈何 提交于 2020-03-09 17:12:28
Distilling the Knowledge in Neural Network Geoffrey Hinton, Oriol Vinyals, Jeff Dean preprint arXiv:1503.02531, 2015 NIPS 2014 Deep Learning Workshop 简单总结 主要工作(What) “蒸馏”( distillation ):把大网络的知识压缩成小网络的一种方法 “专用模型”( specialist models ):对于一个大网络,可以训练多个专用网络来提升大网络的模型表现 具体做法(How) 蒸馏 :先训练好一个大网络,在最后的softmax层使用合适的温度参数T,最后训练得到的概率称为“软目标”。以这个软目标和真实标签作为目标,去训练一个比较小的网络,训练的时候也使用在大模型中确定的温度参数T 专用模型 :对于一个已经训练好的大网络,可以训练一系列的专用模型,每个专用模型只训练一部分专用的类以及一个“不属于这些专用类的其它类”,比如专用模型1训练的类包括“显示器”,“鼠标”,“键盘”,...,“其它”;专用模型2训练的类包括“玻璃杯”,“保温杯”,“塑料杯”,“其它“。最后以专用模型和大网络的预测输出作为目标,训练一个最终的网络来拟合这个目标。 意义(Why) 蒸馏 把大网络压成小网络

有哪些令人拍案叫绝的算法?

帅比萌擦擦* 提交于 2020-03-09 13:57:06
介绍一个简单易懂然后又让你拍案叫绝的算法! 这个算法的代码量很少,却很惊艳。 它就是传说中的 洗牌算法 ! 小技巧:看到一个好答案,想点赞又嫌麻烦,可以双击屏幕自动点,既能鼓舞作者,又能很方便自己下次再看。我用这个方法,已经快速标记 10 来个好文章了。 先来思考一个问题:有一个大小为 100 的数组,里面的元素是从 1 到 100 按顺序排列,怎样随机的从里面选择 1 个数? 最简单的方法是利用系统的方法 Math.random() * 100 ,这样就可以拿到一个 0 到 99 的随机数,然后去数组找对应的位置就即可。 接下来在思考一个问题: 有一个大小为100的数组,里面的元素是从 1 到 100 按顺序排列,怎样随机的从里面选择 50 个数? 注意数字不能重复! 注意数字不能重复! 注意数字不能重复! 如果根据上面的思路,你第一想法是:随机 50 次不就行了? 但是,这样做有个很明显的 bug :数字是会重复的。 修改一下? 弄一个数组,把每一次随机的数都放到数组里,下一次随机就看这个数组里面有没有这数,有的话就继续随机,直到这个数组里面有 50 个数字就停止。 这样是可以的! 但,还是有个小问题,考虑一下极端情况:有一个大小为100的数组,里面的元素是从 1 到 100 按顺序排列,怎样随机的从里面选择 99 个数。 如果按照上面的方法操作

导航定位向高精定位的演进与实践

大城市里の小女人 提交于 2020-03-09 11:00:24
导读 地图软件现在已成为人们出行必备的重要辅助工具。为了实现准确的导航,首先必须准确确定人或车的当前位置。因此,定位技术就是实现导航功能的基石。 本文较系统的介绍了手机、车机导航定位中使用的关键技术,以及高德地图在这些关键技术中的进展。最后,讨论了在传统导航向自动驾驶的演进过程中,定位技术的演进路径。 1.导航定位框架 导航定位的核心业务目标是为导航服务提供连续可靠的定位依据,包括:当前在哪条路上,是否偏离路线,距离下一个路口有多远,等等。 为实现这一目标,首先需要接收定位信号输入。最常见的定位信号是GPS,其可以提供全域米级精度(5~10m)的位置信息。在此基础上,大部分手机同时配置了惯性传感器(陀螺仪、加速度计)和磁力计,还有部分手机配置了气压计,可以感知高程方向的位置变化。 对于车机,通过CAN总线获取的车速脉冲、方向盘转角等信息是另一类重要的定位输入。基于上述定位信号,应用姿态融合、航位推算等算法,计算出连续可靠的位置和姿态。再依据地图数据将人/车的实际位置与地图道路关联,实时判断当前是否已经偏离导航路线,或更新当前在导航路线中的相对位置。 图1 导航定位框架 在上述定位框架中,针对不同端的形态(手机/车机),输入定位信号的配置不同,使用的定位技术及覆盖的定位场景也不同。 对于手机,存在步行、骑行、驾车等多种使用场景,需要对用户行为进行识别。在步行场景下,由于速度较低

简单粗暴理解与实现机器学习之神经网络NN(四):词向量-word2vec、Word2Vec模型介绍、统计语言模型、神经网络语言模型NNLMNNLM、Word2Vec案例Word2vec、词向量工具使用

青春壹個敷衍的年華 提交于 2020-03-08 03:50:06
文章目录 7.4 词向量-word2vec 学习目标 7.3.1 Word2Vec模型介绍 7.3.1.1 为什么学习词嵌入 7.3.1.2 词向量是什么 7.3.1.3 词向量训练来源思想-统计语言模型 统计语言模型案例 统计语言模型缺点 7.3.1.4 神经网络语言模型NNLMNNLM 神经网络语言模型例子 7.3.1.4 Word2Vec 举例:CBOW前向计算与向量(参数)更新推导 7.3.1.5 拓展- Word2vec 的训练trick(优化) 7.3.2 Word2vec 词向量工具使用 7.3.3 总结 7.4 词向量-word2vec 学习目标 目标 知道统计语言模型 掌握神经网络语言模型NNLM原理 掌握wor2vec的实现方式以及优化特点 应用 无 7.3.1 Word2Vec模型介绍 7.3.1.1 为什么学习词嵌入 图像和音频处理系统采用的是庞大的高维度数据集,对于图像数据来说,此类数据集会编码为单个原始像素强度的向量。不过,自然语言处理系统一直以来都将字词视为离散的原子符号,将字词表示为唯一的离散 ID 还会导致数据稀疏性,并且通常意味着我们可能需要更多数据才能成功训练统计模型。使用向量表示法可以扫除其中一些障碍。 计算相似度 寻找相似词 信息检索 作为 SVM/LSTM 等模型的输入 中文分词 命名体识别 句子表示 情感分析 文档表示 文档主题判别

[Scikit-learn] 2.5 Dimensionality reduction - ICA

丶灬走出姿态 提交于 2020-03-07 09:59:16
写在前面 数据降维的几种形式 数据降维的几种方法,包括 PCA 、 LDA 、 ICA 等,另外还有一种常用的降维方法就是 因子分析 。 关于这几种方法的各自的优劣,有必要之后跟进一下。 概率图角度理解 打开prml and mlapp发现这部分目录编排有点小不同,但神奇的是章节序号竟然都为“十二”。 prml:pca --> ppca --> fa mlapp:fa --> pca --> ppca 这背后又有怎样的隐情?不可告人的秘密又会隐藏多久? 基于先来后到原则,走prml路线。 首先,这部分内容,尤其是pca,都是老掉牙且稳定的技术,既然是统计机器学习,这次的目的就是借概率图来缕一遍思路,以及模型间的内在联系。 PPCA's PGM 我们要建立的是一套完整的知识体系,而非“拿来一用,用完就扔”的态度。 有菜鸡问了,为何你总是强调“体系”? 因为我是马刺队球迷。 首先,我希望大家重视prml的第12章开章这段话: " 本章中,我们⾸先介绍标准的、⾮概率的PCA⽅法,然后我们会说明,当求解线性⾼斯潜在变量模型的 ⼀种特别形式的最⼤似然解 时, PCA如何 ⾃然地产⽣ 。这种概率形式的表⽰⽅法会带来很多好处,例如在参数估计时可以使⽤EM算法,对混合PCA模型的推广以及主成分的数量可以从数据中⾃动确定的贝叶斯公式。最后,我们简短地讨论潜在变量概念的几个推广