粉丝1.7万获赞14.7万

在贝耶斯方法中,马尔克夫列蒙特卡罗方法尤其神秘。什么是马尔克夫列蒙特卡罗 mcmc 方法? 简短的回答是他用于通过概率空间中的随机抽样来近似感兴趣参数的后院分布。参数只是总结我们感兴趣的现象的一些数字。 例如,如果想了解成年人的身高,我们感兴趣的参数可能是平均身高。分布是参数的每个可能值的数学表示,以及观察每个值的可能性。 最著名的例子是中型曲线,碰巧的是,人类身高确实遵循正太曲线,所以假设我们相信人类平均身高的真实只遵循如下中型 曲线。显然,这张图所代表的有信仰的人多年来一直生活在巨人中间。因为据他们所知,最有可能的成年人平均身高是一米八,但他们并不是特别自信。想象一下,他们去收集了一些数据, 可以在下面表示该数据以及另一条最能解释人类平均身高值的正派区县。在贝耶斯统计中,代表我们对参数认知的分布称为鲜艳分布,因为它存在于收集数据之前。 自然分布是通过参数解释我们观察到数据的可能性,估计最大化自然分布的参数值只是回答了这个问题。什么参数值最有可能解释我们观察到的数据? 在没有鲜艳信念的情况下,我们可能会止步于此。分析的关键是结合鲜艳分布和自然分布来确定后艳 分布。后验分布告诉我们,考虑到我们的先验信念,我们用哪些参数纸最有可能观察到特定的数据?上图红线代表后验分布,您可以将其视为先验分布和自然分布的一种平均值。 由于先宴分布范围更广,因此它代表了一组对人类平均身高的真实值不太确定的信念。同时私人总结了相对狭窄范围内的数据,因此它代表了对真实参数值的更确定的猜测。在正太区县的情况下,求解后宴分布非常容易, 有一个简单的公式可以将两者结合起来。但是,如果我们的鲜艳是更复杂的分布怎么办?和以前一样,存在一些厚艳分布,它给出了每个参数值的可能性,但很难判断它是什么分布, 并且不可能通过分析来解决。马尔克夫列蒙特卡罗方法允许我们在无法直接计算的情况下估计后宴分布的形状。蒙特卡罗模拟是一种通过重复生成随机数来估计参数的方法。假设我们像估计员的面积, 由于沿在边长唯一的正方形内,因此面积可以很容易的计算为零点七八五。但是我们可以在正方形内随机放置二十个点,然后我们计算落在圆圈内的点的比例,并将其乘以正方形的面积。 这个数字是原面机的一个很好的进四值。由于二十个点中有十五个位于园内,因此约为零点七五。对于只有二十个随机点的蒙特卡洛模拟来说不错。回想一下,我们正 在尝试估计人类平均身高分布。我们知道后宴分布在鲜艳和自然分布的范围内,但无论出于何种原因都无法直接计算它。 使用马尔克夫联盟特卡洛方法,我们将有效的从后院分布中抽取样本,然后计算统计数据,例如抽取样本的平均值。首先,马尔可夫联盟特卡洛方法选择一个随机参数值来考虑, 蒙特卡洛部分的工作是模拟生成随机值,马尔可夫恋部分的工作是如果随机生成的参数值比上一个更好,则以一定的概率将其添加到参数值链中。 让我们回想一下某个值的分布高度代表观察该值的概率,因此参数值 x 轴展示的高概率和低概 概率区域显示在歪轴上。马尔可夫列蒙特卡洛方法从严 x 轴随机采样开始。红点是随机参数样本,由于随机样本受固定概率的影响,他们往往会在一段时间后收敛于最高概率区域。 蓝点代表任意时间点之后的随机样本此时预计会发生收敛。注意,垂直堆叠点纯粹是为了说明目的。 收敛后,马尔克夫列蒙特卡罗采样会产生一组点,这些点是来自后院分部的样本围绕这些点会置之方土并计算 统计数据。在马尔克夫列蒙特卡罗模拟生成的样本级上,计算的任何统计量都是我们对真实后验分布统计量的最佳猜测。假设我们的目标分布是一个具有均值 i, n 和标准叉 s 的正态分布。 作为一个例子,考虑用均值按和标准偏差 s 来估计正态分布的均值。在这里我将使用对应于标准正态分布的参数。我们可以很容易的使用这个 orange 函数。从这个分布中抽样,图中是朝着真实均值零处的红线的收敛。 将 x 轴转换为对数刻度,并显示另外三十种随机方法。假设我们想要抽取一些目标分布,但是我们不能像从前那样抽取独立样本。有一个使用马尔科 苏联蒙特卡洛来做这个的解决方案。首先我们必须定义一些事情。我们要做的是试图构造一个马尔科夫列他抽样的目标分布作为他的平稳分布。假设我们有一个三派马尔科夫过程 p 位链中的转移概率举证。这个图表明了平稳分布的收敛性。脸运行了一百个步骤,绘制我们在每个状态随时间变化的时间分数,而不是绘制状态。 所以这里的关键是马尔可夫恋有一些不错的属性。马尔可夫恋有固定的分布,如果我们运行他们足够长的时间, 我们可以看看练在哪里花费时间,并对该平稳分布进行合理的估计。 metropolis 算法是最简单的马尔克夫列蒙特卡罗算法。 海洋单参数问题,这是两个正态分布的加权盒。这种分布相当简单,可以从马尔可夫恋蒙特卡罗中抽取样本。概率密度绘制。这里是马尔可夫恋的前一千步,目标密度在右边 运行更长时间,结果开始看起来更好。现在运行不同的方案,一个标准差很大,另一个标准差很小。 注意三条轨迹正在移动的不同方式。相反,红色的轨迹拒绝其中的大部分空间。蓝色的轨迹提出了倾向于被接受的小动作,但是它随着大部分的轨迹随机游走。 他需要数百次迭代才能达到概率密度的大部分。您可以在随后的参数中看到不同方案步骤在自相关中的效果。这些图显示了不同 同志后步骤之间自相关系数的衰减。蓝线表示统计独立性,显示一百一千,一万和十万步的结果 两个维度。瓦尔可夫列蒙特卡罗给出了一个多元正派密度,给定一个均值项量分布的中心和方叉斜方叉矩阵。 从多元正态分布采样也相当简单,但我们将使用马尔可夫眼蒙特卡罗从中抽取样本。 这里有一些不同的策略,我们可以同时在两个维度上提出动作,或者我们可以独立的沿着每个轴进行采样。这两种策略都能奏效,虽然他们的混合速度会有所不同。 假设我们实际上并不知道如何从多元正态分布中抽氧。让我们提出一个在两个维度上一致 的提议,分布从美边的宽度为地的正方形取样,比较抽样分布与一直分布。我们需要整合参数的所有可能值。那么因为目标函数本身并不是标准化的,所以我们必须将其分解为一维积分值。

欢迎观看数字到第十八集今天的内容,数据科学分析领域中的核心知识点,马尔克夫练希望我能通过通俗易懂的语言和案例,帮助大家更好的理解该知识点。 什么是马尔克夫列?先看一个简单的例子,小明家楼下有两家早餐铺,其中 a 主营小笼包、生煎, b 主营煎饼果子,而他每日的早餐选择遵循着下面的规律, 当小明某日早餐选择 a, 下一日他有百分之四十的可能性继续选择 a, 百分之六十的可能性转而选择 b。 而当小明某日选择的是 b, 下一日他有百分之五十的可能性继续选择 b, 百分之五十的可能性转而选择 a。 所以 小明的早餐只会从 ab 中进行选择,并且当日的选择只受前一日的结果以及对应的转移概率影响,与在之前的选择无关。而这样简单的一句话中便包含了马尔克夫恋的核心三要素, 一、状态空间 styes boss 在该例子中,早餐状态只可能来自于状态空间 ab 之中。二、无记忆性 maririss 当期选择的概率只受上期状态影响,我们可以用下面的数学公式进行表达。 三、转移矩阵选择寻美 x 我们可以把上面的转移概率数据放入二乘二的矩阵中,便于我们后续更好的进行分析和计算。 接下来我们看马尔可夫练的状态概率分布、推演及稳态分布。假如小明第一天早餐选择 a, 那么当天的状态概率分布为一零,将其与转移矩阵相乘,得到第二天的状态概率分布为零点四、零点六, 重复同样的操作,得到第三天的概率分布。零点四六零点五四,继续推演下去,很快我们就能够达到稳态分布。 stylest you you 选零点四五四五四五零点五四五四五五 如果初始状态概率分布不同,稳态分布是否会改变呢?假如小明第一天的选择为 b, 遵循上面同样的计算,我们也能够很快的达到相同的稳态 分布。零点四五四五四五零点五四五四五五大家也可以自己尝试将初始状态分布 c a、 ccb 设置为非负且相加和为一的任意值,看看稳态分布是否为一, 这说明在该马尔克夫殿下最终的稳态是不受初始状态影响的。 不过需要指出的是,并不是所有的马尔克夫练都具有唯一的稳态分布,比如下面的马尔克夫练, a, 根据相应的转移概率分别与 bc 单向连接,一旦进入到 b 或 c 中,均在对应状态下自循环,无法达到其他状态。该马尔克夫练的稳态分布数大于一,例如当进入到 b 或 c 时, 零一零零零一都可以作为其稳态分布存在。关于马可福练稳态唯一性的更多内容,我会在下期节目马可福练的便利性而够第四题中进行详细的介绍。 最后我们来看一下马克福列的应用。在自然羽翼处理方面,我们可以利用字符词语之间的转移矩阵去联想用户接下来想要说什么,想搜什么,也可以利用马克福列随机生成诗词文章等。 这里强烈推荐信息论支付卡罗迪香等在其一九四八年发表的著作,通信的数学理论 ammax max, clv f m 的可以选择在金融行业,马尔克夫店也可以用于分析 牛市、雄市状态转换、股票价格预测,信用评级等等。以上是他在机器学习自然语言处理金融行业的典型应用方向, 未来有机会我会为大家分享来自于不同行业更多的分析案例。那么我们今天的节目就到这里,期待大家的一建三联,让我们下期继续马尔克夫练的探讨。

马尔克夫算法,也被称为马尔克夫列,是一种基于马尔克夫过程的统计模型,用于描述一系列可能的事件中,一个事件的状态转移只依赖于前一个事件的状态,而与更早之前的事件无关。 这种特性被称为无后效性或马尔克夫性。马尔克夫算法的核心思想是利用概率来描述不同状态之间的转移。在马尔克夫恋中,每一个状态都有一个或多个可能的后续状态,每一个后续状态都对应一个转移概率。这些转移概率构成了一个转移矩阵, 用于描述从当前状态转移到下一个状态的可能性。在实际应用中,马尔克夫算法被广泛用于自然语言处理、语音识别、生物信息学、金融预测等领域。例如, 如,在自然语言处理中,马尔克夫模型可以用于文本生成和磁性标注的人物通过训练模型来学习词与词之间的转移。概率模型可以生成符合语法规则的文本序列, 或者对给定的文本进行磁性标注。马尔克夫算法的优点包括简单易懂、计算效率高和易于实现的。然而,他也存在一些局限性,例如,由于马尔克夫恋只考虑前一个状态的影响, 因此他可能无法捕捉更长距离的依赖关系。此外,马尔可忽略对于状态空间的定义和转移概率的估计。非常 不同的状态划分和概率估计方法可能会导致不同的结果。为了克服这些局限性,研究者们提出了许多改进方法,如以马尔克夫模型一天跟马尔克夫 随机场 mr 和马尔克夫角色过程 ndp 等,这些模型通过引入更多的上下文信息或考虑更复杂的状态转移关系来提高预测性。总的来说,马尔克夫算法是一种强大的统计工具, 能够处理一系列具有马尔克夫性质的事件。通过合理定义状态空间和转移概率,马尔克夫算法可以在多个领域发挥重要作用。然而,需要注意的是, 在实际应用中,需要根据具体问题和数据特点来选择合适的马尔克夫模型及其参数设置,以获得最佳的性能和结果。 虽然马尔克夫算法在多个领域得到了广泛应用,但在某些特定场景下,可能还需要结合其他技术或方法来进行优化。例如,在处理具有复杂依赖关系或非线性特征的数据时, 可以结合深度学习技术来构建更强大的模型。此外,随着大数据和计算能力的提升,如何更有效的利用数据来训练和优化马尔克夫模型也是一个值得研究的问题。 未来,随着技术的不断发展和运用场景的不断扩展,马尔克夫算法将继续发挥重要作用。我们可以期待更多的研究者将马尔克夫算法与其他先进技术相结合,以解决更复杂的问题并推动相关领域的进步。综上所述, 马尔克夫算法是一种基于马尔克夫过程的统计模型,具有简单易懂、计算效率高和易于实现等优点。通过合理应用和改进,马尔克夫算法可以在多个领域发挥重要作用,并为解决复杂问题提供有利的知识。

欢迎观看二零二二年树之道系列的第一期节目,这里祝所有的小伙伴新年快乐,新的一年里身体健康,事业、学业、家业顺利。 在之前五期节目中,我们分别用三期节目介绍了马尔克夫练的基础知识,两期节目介绍了蒙特卡洛模拟的两种抽样方法。 今天我会把这两个主题结合起来,带大家走进马尔克夫列蒙特卡罗方法 mark of chain monte carlo method 以下简称为 mc mc, 错过前面节目的朋友们完全不用担心,我会在本期节目中将重点概念再为大家重温一遍, 相信节目之后你一定能够更好的理解 mcmc 这以数据分析数据科学领域中的核心知识点。 由于本期内容涵盖知识点非常多,所以我会分四个章节进行介绍。一、从上两期节目中所介绍的逆转换接受拒绝抽样方法的局限性出发,引出为什么我们需要设计新的抽样方法。 二、为什么马尔克夫练元素的加入能够有效提升抽样效率?这背后的理论依据又是什么?三、 mcmc 方法之 metropolis hastings 算法的设计思路详解。 四、使用 r 语言对 metropolis 算法进行模拟演示。那么现在就让我们正式进入本期节目的核心内容。第一章,逆转换接受拒绝抽样的局限性在 前两期节目中,我们分别介绍了使用逆转换方法和接受拒绝方法进行抽样。在使用逆转换方法的过程中, 需要先对目标概率密度函数 pdf 求积分,得到累积分布函数 cdf, 再对 cdf 进行反函数求解,得到从均匀分布到目标分布的转化函数,这样就能实现从简单均匀分布出发,得到满足复杂目标分布的随机值了。 但之前求积分和求返函数的步骤却能给大家造成足够的麻烦,因此我们有了第二种抽样方法,接受拒绝方法。 接受拒绝方法中,我们需要设计一个简单的建议分布函数 gx, 再通过放大系数 m 让 m 乘 gx 落于目标函数 fx 上方,通过在 x 轴上根据 gx 生成随机值坐标 a, 然后在 y 轴上根据零到 m 乘 ga 的均匀分布生成随机坐标 b。 通过判断坐标 ab 是否能够落入接受区域来判定 a 能否最终被成功抽取。 不过该方法也有他的局限性,由于 m 乘 gx 需要处处大于我们的目标函数, 因此当目标函数是如图中形态的话,接受区域占比会非常小,真正实操阶段会耗费大量的时间和资源才能抽取足够的样本。了解了以上抽样方法的 线之后,我们再看 mcmc。 第二张 mcmc 为什么能够有效提升抽样效率呢?之前接受拒绝抽样效率低的原因之一是由于其没有充分利用前期的信息。 比如,当根据建议分布 gx 抽样出的 xn 恰好出现在其目标分布中的高密度区域时,如果下次抽样 xn 加一能够在这附近抽取,其接受的成功率自然也会相应较高。 但在接受拒绝方法中的每次抽样都是独立的,且建议分布函数不变, xn 的信息在下次抽样动作前会完全抹去,所以有相当的概率下次抽样会返回高拒绝区域的值。因此, 从直觉出发,我们需要让这个建议分布动起来,保留前期有用信息,并影响下次抽样。这样抽样效率是不是就更优了呢?为此,我们将马克夫恋的思想加入其中,最终流程会是这个样子的。 假设,我们根据初始的建议,正态分布 g x 零 c 个码进行抽样, x 零为初始设置的均值, c 个码为标准差得到 x 撇。假如 x 撇符合我们预设的规则, 我们则把 x 撇赋予 x e 作为鸡的均值参数用于下一次抽样。相反,假如 x 撇不满足规则,那么我们就会将原 零的值负于 x 一作为鸡的均值参数用于下一次抽样。这个链条会一直持续下去并收敛,达到稳态。 在马尔克夫练的节目中,我们介绍了稳态分布转移矩阵的概念。假如马尔克夫练的转移矩阵满足便利性,那么它存在唯一的稳态分布。现在你可以这样理解上面的 mcmc 链条, 我们就是需要设计这样一个判断规则,他能够起到转移矩阵的作用,让该链条能够收敛至稳态分布。而这个稳态分布就是我们目标函数概率密度分布了。 达到稳态后抽取的随机值就等同于从目标分布中进行抽样了。 到这里或许你还会有些迷茫,没关系,可以重温我们数字到十八到二十二级,然后再来体会我上面说的内容,一定会豁然开朗。 接下来让我们深入 mcmc 的具体算法之 match prolex hastings 算法。我会将上面的理论思路具象化,通过 mh 算法帮助大家更好的理解其精华。 第三张, metropolis hastings 算法 mh 算法的设计用到了马克夫链中一个叫做细致平稳 detailed balance 的概念。 我们假设有这样一个满足便利性的马尔克夫链,各状态已达到唯一的稳态分布 s, 如果其转移矩阵 t 满足下面的公式 s i i 乘以 t, i to j 等于 s, j 乘以 t, j to i, 我们撑起满足细致平稳条件。我会借用十九集中的例子介绍这里需要特别注意的两个点,第一点,并不是所有的稳态分布都满足细致平稳条件,比如该例中的稳态分布不满足细致平稳。 第二点,满足细致平稳条件的状态分布达到稳态分布。稳态分布有如下特点,项链 s 乘以矩阵 t 等于项链 s, 他的矩阵表达形式如下, 为了论证细致平稳条件也是稳态,我们就需要验证上述等式在细致平稳下也成立。 我们对细致平稳条件等式两边根据哀求和,然后等式右边做如下调整得到,因为从 j 状态转移去至所有状态的概率和为一。 因此最终下面的等式成立,符合稳态条件,证明完毕。我们可以用下面通俗的语言来进一步解释细致平稳公式。 从等式的两边来看,他等同于在说从处于状态 i 下期转移到状态 j 的概率与从处于状态 j 下期转移到状态 i 的概率相同, 他将对后面 mh 算法的构建起到决定性的作用。还记得第二章中的这句话吗? 需要设计这样一个判断规则,他能够起到转移矩阵的作用,让该链条能够收敛至稳态分布,而这个稳态分布就是我们的目标函数分布。那么我们就是需要设计这个规则,能够使上述等式成立。 其实,等式的每一边都包括了两个步骤,步骤一,从旧状态下选出新状态作为候选对象。步骤二,判断是否需要转移至新状态。 我们用具体的数学语言来对这两个步骤进行推倒。步骤一,当已达到稳态,处于状态 i 的概率为 s i, 然后根据建议正态分布 g i c 个码,生成新的随机 值 j。 我们用 g j 基于 i 代表着均值参数为 i 时, j 被抽取出的概率 s i 乘以 g j, g i 则代表了从处于状态 a 下,根据 g i c m 选出了下期后选状态 j 的概率。 步骤二,我们定义 a j 基于 a, 它代表了接受 j 作为 a 转移后状态的概率。 两步相乘得到 s i 乘以 g j, g i, 再乘以 a j g i, 这就完美表达了从处于状态 a 转移到状态 j 的概率。同样的, sj 乘以 gig 与 j 乘以 aig 与 j 则代表了从处于状态 j 转移到状态 i 的概率。 两个公式在细致平稳条件下相等则有,其中 g j 基于 i 乘以 a, j 基于 i 和 g i 基于 j 乘以 a i 基于 j 对应了我们转移矩阵中的 t i to j 和 t j to i。 我们将上面的等式变换一下,得到 metropolis hasting 算法提出了一个满足上市等式的结法如下, 值得注意的是,由于基服从正态分布,它是对称的,那么基埃基于 j 与 g j g i 相等,两者相处抵消上述公式进一步得到精简。现在最后的问题是怎么求 s? 由于我们知道函数 sx 就等同于我们的目标概率密度分布函数 pdfx, 而 pdfx 又等于我们的目标函数 fx 除以标准化常数 c, c 为 f, x 与 x 轴为成的积分值。很多时候 c 很难求解, 那么我们把 s j 等于 f j 除 c 和 s i 等于 f, i 除 c 带入上述等式,得到最终公式 a j 基于 i 等于一和 f j 除以 f i 中的最小值。这便是最初的 major produce 算法。而后期加入的 g i, g 与 j 除以 g, j 基于 i 作为 hastings 参数,则进一步扩大了该算法在非对称建议分布下使用的适用性。 到这里,之前提到的规则就已经设计出来了,我们有了建议分布 g, 同时有转移接受规则 a, 那么就可以顺着这个规则链条达到稳态分布,完美实现从目标分布中抽取随机值了。 让我们进入最中章第四章 metropolis 算法 r 语言实力在这个例子中,我们有一个,有两个正态分布,根据相应权重构成的新分布,设计一个 标准差位零点五变量 x 作为均值的正太分布。抽样公式 q, 为后续从该分布中抽取随机数做准备,需要提点标准差,可以尝试不同值来比较最终的抽样效果。 设置一个包含了一万个值的数据集合 x 覆盖初始变量 x 一为一 初始值,可以尝试不同值来比较最终的抽氧效果。接下来进入循环语句,循环九千九百九十九次, 每次循环哎。将当前的 xi 值作为变量 x 录入建议正太分布抽样公式 q 中得到心值 x j。 将 x i, x j 套入第三张 当中的 metropolis 公式,计算接受概率 a。 为了做出是否接受 xj 的决定,我们可以引入一个服从零到一间均匀分布的随机值,让他与 a 比较。 当 a 大的话,用 x j 值覆盖 x i 加一,否则用当前 x i 值覆盖 x i 加一。 完成循环后,我们可以绘制更新后的数据集合 x 的直方图,可以看到其能够很好的满足目标函数分布。 新年第一期数字到节目就到这里了,希望大家喜欢本期节目。今年除了本系列之外,我还会开一档新的节目,和大家分享一些工作学习方面的心得,让我们在新的一年里共同进步,那么下期节目再见!

蒙特卡罗算法,我虽然这么说,但是更准确的来讲,蒙特卡罗不是某一个算法,他更是一种方法,那么这种方法呢,是一种统计学的方法,是一种模拟的方法, 所以很多时候蒙特卡罗算法也可以称作为蒙特卡罗模拟。那么蒙特卡罗模拟是二战期间,为了解决这个原子弹中的一个问题,裂变物质的中子随机扩散问题,美国的数学家冯诺伊曼和乌拉姆等提出的一种统计方法。 那么由于是在战时,所以呢,他们没有为这种统计方法起一个看起来非常容易理解的名字,比如说这种方法不叫随机模拟方法,这样的话呢,如果敌方监听了他们的对话,可能就能猜出他们的研究手段,为此呢,他们起着 一个代号,这个代号呢叫蒙特卡罗。具体为什么使用蒙特卡罗这个代号呢?这是因为蒙特卡罗他是当时世界上最著名的一个赌城,在摩纳哥, 而我们这种随机模拟的手段和赌博的关系非常的大。那么在我们这一章的最后两小节,其实讲的都是将摩托卡罗方法用在类似于赌博的这种能不能中奖的游戏中,来计算玩家的盈率, 所以以这个城市的名字作为这个方法代号。当然了,现在这个世界上最著名的赌城应该叫做拉斯维加斯了, 也正因为如此呢,其实也有一个拉斯维加斯算法,那么有兴趣的同学呢,可以查一查资料,看看拉斯维加斯算法是什么意思。那么以后有机会的话,或许我还可以向同 同学们分享更多相关的问题,其实是非常有意思的,那么具体什么是蒙特卡罗方法呢?其实非常的简单,就是通过大量的随机样本来了解一个系统,进而得到索要计算的值,那么这里头的关键字就是大量随机。 我们在这一张的后续就要举三个使用蒙特卡罗方法的例子。在这一小节,我们尝试使用蒙特卡罗的方法来计算派制,这是蒙特卡罗方法的一个经典的应用, 所有了解蒙特卡罗方法的同学都应该知道这个应用,但是这个应用可能对于有些同学来说会觉得比较枯燥,那么在这一张的最后两小节,我会使用蒙特卡罗方法来求解两个类似于赌博问题的一个盈率的问题。 那么在这里大家要注意,蒙特卡罗方法使用大量的随机样本来去获得我们所要计算的这个值,但是获得的这个值不一定是真值, 而是一个近似纸。那么事实上蒙特嘎啦方法就是利用这样的一个原理,在一些问题中,我们可以使用大量的随机样本去模拟,我们的样本量越大,最终模拟出来的值就相应的会越准确。 那么在这一小节,我们首先来看用蒙特卡罗方法如何求派的值。大家知道我们可以用派的值去求圆的面积,或者是圆的周长,但是可能很少有同学们去追溯派这个值到底是怎么来的。那么对这个问题感兴趣的同学呢,可以查阅一下资料, 是一段非常有意思的数学历史。不过在这里我们探究一个问题,假设我们现在并不知道派的纸的话,希望你获得一个派的近似纸的话,那应该怎么做呢? 在这种时候我们就可以使用蒙特卡罗的方法,大家可以看在这个图中其实是一个正方形,在这个正方形中有一个直径和这个正方形的边长一样的圆。那么首先我们来看在这个图形中圆和这个正方形之间的关系, 我们知道圆的面积是等于派啊方,而我们的正方形的面积在这里,它的边长是二乘以啊,所以就是二啊,乘以二啊,最后等于四啊方。那么通过这两个式子,同学们就看出来了,我们圆的面积除以方的面积,这两个啊方就可以约去就应 该等于四分之派,进而派这个值就可以表达成四倍的圆的面积除以方的面积,所以我们想办法获得圆的面积和方的面积就可以了。那么现在剩下的问题就是,圆的面积我们怎么获得呢? 在这里就使用蒙特卡罗的方法来近似的模拟圆的面积,我们可以向这个正方形中随机的打入一个点, 那么这个点可能会落入园内,也可能会落入园外,那么在我这个图片里呢,落入园内的点我就用红色表示,落入园外的点我用绿色表示,这样的点大家可以想象,如果 打的非常多的话,红色点的数量就可以近似的来表示圆的面积,而红色点加绿色点的 数量就可以近似的来表示方的面积,当然这个面积的值会很不准确,但是红色点的数量去除以红色点加上绿色点的数量,也就是我们总点数的数量,这个笔值应该是接近于 圆的面积和方的面积的比值的,而且我们打的点数越多,这个值应该相应的就越接近,因此我们的派这个值就可以等于是四乘以我们打进来的红色点的数量除以总点数。 那么我们使用这样的方式,就利用随机模拟的方法来求出了派的值怎么样,是不是觉得很神奇?那么下面我们就来具体的实现一下,看看这样模拟的结果是怎样。

清华学霸小课堂,今天我们请到的是青年歌,我从小学到大 新年歌的家人们。大家好,我们来讲一讲概率题之 markovlan, 对吧?我们翻译一下马尔克夫恋,我们简单理解, what is markovlan? 我们来举一个简单的例子,小狗每天有两种状态,一种是奋斗,一种是躺拼。那第一天状态为奋斗,那我们 他第二天呢,就有零点六的概率是奋斗,零点四的概率躺平。那么相反,前一天的状态是躺平,那么他第二天啊,有零点六的概率为躺平,而零点四的概率为奋斗。 修狗这个人的人生,我们就把它看作一个链条,对吧?从第一天到无数天,每天都有一个状态,那么这个状态呢?他得到的概率只和前一天的 状态有关,那我们就可以把这个长长的链条缩短为只有两个元素的这样一个链条,对吧?从 n 减一天到 n 天,我们只要得到了 n 减一天的元素的状态,我们就可以预测第 n 天这个状态是如何。那我们来简单运用一下这样的思想,有 n 个编号为一到 n 的盒子, 第一个盒子中有两个白球,一个黑球啊,其余一个盒子有一个白球,一个黑球啊。从第一个盒子取一个球放到第二个盒子中, 再从第二个盒子中任取一个球放到第三个盒子中,以此类推。那么从第二个盒子中取到白球的概率是从第 n 个盒子中取到白球,概率是什么呢?啊?首先第一个小问,送文体秒杀,那么第二个第二个问,我们怎么去做呢?翻译一下题目,盒中球的组成 只有两种情况,第一种,两白一黑,也就是说在前一个盒子中他取出了白色的球,对吧? 还有一种情况,一白两黑,在前面一个盒子中啊,取出了黑色的球,就只有两种可能,那我们知道 dn 减一个盒中的状态,就可以愉快的得到 dn 个盒子中状态的概率, 那我们就可以进行地推的思想,对吧?设 d n 减一个盒子为状态一的概率是 d n 减一,设 为状态二的概率为 p n 减一 hat, 对吧?就是小减 hat, 显然 p n 减一加 p n 减一 hat 等于一,那么在此基础上表示 p n 和 p n hat 怎么表示呢? tn 我们可以翻翻译一下,对吧?有两种情况,一个是 dn 减一,合作为状态一的时候啊,两白一黑,非常简单,三分之二的概率,对吧?去到这个白色的球啊,那另一种就是 tn 减一 hat 里面三分之一的概, 取到白色的球,简单,好吧,非常简单,非常简单啊,我们继续来简单的部分,那么 p n 就可以表示成以下的式子,然后我们就可以简单的运用一下大家可能已经在之前学过的 简单的数列知识,构造出等比等差数列。我们一其实我们熟悉的同学就可以非常简单的发现,我们直接减去二分之一啊,两边就可以直接变成等比的形式, 于是我们就可以算出来了,具体的答案就留给同学们自行探索。那么今天的课程就讲到这里,你学会了吗?

哈喽,大家好,我是技术大数据工程师,今天跟大家分享关于这个强化学习相关的这个内容,就是说当我们了解到了关于这个强化学习涉及到一些敢说的像之前关于这他的一些基础性的这个知识, 以及就是说基于像动乃规划之类的这种逻辑来去实现,就是说是让这个智能体能够更好的去适应咱说的这个项目,是 变化多端的这个世界,对吧?而今天的历史给大家提到的这个东西称之为是蒙登卡罗,这个蒙登卡罗就是说在这个深度学习这个里面的内饰其实是起到非常重要的这个作用。而对于这个蒙特卡来说,你是他本身的内饰也是非常晦涩难动的,所以说在这些内饰 我们就是说是第一步首先要去就是说了解有一个这样的一个东西,后续我们可以不断的去做这个,不断的对他的这个了解下,逐渐的去加深对 他们这个认识,这样的话形体是有一种循序渐进的这个形体式学习的这个过程, 对于这个蒙特卡罗来说,你是他作为就是说是这个清华学习里面的律师,可以称之为是几种支柱性的这种技术,就是说在整个的这个后续的这种体系里面的意识,其实也会多次跟大家提到一个东西,所以说后续大家去遇到他的这个历史要多回想,多去联想, 因为今天也是下大雨的这个原形历史后续就是说这个相关的这个视频可能剪辑可能是或者是说是润社,可能会稍微的有一点这种心色, 就是希望大家能够理解,就是说是在这就是啊,就是跟大家就是说是过多的说这个题的话了。下面我们去开始去了解他的这个具体的这个内容。 和这个动态规划不同的是这个蒙德卡罗的方法,他其实不仅需要我们去知道环境的这种所有的这个信息, 就是说相比啊,说像之前跟大家提到的就说是我们可能去下象棋或者是下围棋这个棋子是我们是知道全部的一个信息的, 而有一些其实是我们是无法获取到这个全部的这个信息的。比方说我们去游戏打乒乓球,对吧?这个我们只知道一针一针的这个画面,你像如果只知道其中一针的话,其实是我们是很难知道这个球的这种移动的这个方向以及移动的这个速度的。 而这个蒙特卡罗来说仙女是他其实就可以基于这种不不知的就说是这种仙女是部分的这个信息来对这个相关的这个问题进行这个梳理。蒙特卡罗仙女是他可以只需就是说基于过去的这个经验 就可以进行这个学习,相当于他也是一种基于样本的这个分析这种方法。蒙特卡罗性历史他可以在就是说对这个环境中只有很少的这个限制,就是这个接近知识的这个情况下降历史也可以就是说是取得比较好的这种学习的这个效果。 降临时从这个上来看一下临时他其实能力还是非常强的,对吧?摩托卡罗限定时他可以用来泛指那些就是有很大水迹性的这个蒜软,就是说是 他这个东西呢是波动会稍微有一些大,就是说因为你这个前线知识是比较少的,而且就是说是也基于这种不安全的这个环境这种信息来进行这个分析, 那么就是由类似于是在说管中亏报的这个情况,那就有可能你你看到的可能是一只大象,那有也有可能是你看到的就是一个象腿,对吧?所以说这个东西你看到的这个 东西不同,他可能就是说后续这个结果可能就差别会比较大,所以说其实他的指的就是这个水晶性会比较大吗? 当我们在这个强化学习中使用这个蒙德卡罗方法的顺应力时,我们需要对来自不同片段的这个他们的这个动作,对,也就是壮大与这个动作转而相对于是他的这种相应的这种奖励值来去取。这个平均 一个例子就是上下我们的这种赌博机,就说在不同的这个机器上他有一个 led 灯,那么就是玩家他可以通过逐渐的去学习 led 灯的这个状态,以及这种相应的这种回报,对吗?他们之间的这种关系现在就是来去就说是不断的进行这个学习, 而就是说是我们在这里把灯的一种排列,或者是这种组合的这种形式作为他的一种状态形式,那么他 可能的这种奖励值也可以认为是这种状态的这种选题是定关系。最开始的时间题是我们可能无法,就是说对于这个状态价值他有一个很好的评论之最最开始的时间题是 我们可能是因为灯比较多,对吧?或者是灯他的这个状态可能是忽然,忽然不一定,我们可能很难去判断这个亮灯,或者是说多少亮灯,对我们的这个假意有大有小这些比较难以判断。但是随着这种积累问题是我们逐渐的就可以去掌握这个问题,是他们之间的规律, 这样的话题你是我们就可以逐渐向这个真实纸去进行这个靠近。就说在这一章节里面相当于是我们去回回去探索我们如何去更好的去合理去做出这个评估假设问题他是回合质量的话题,你是因而不论一个玩家相当于是他最终会做出哪些这个动作,相当于 一个二十回合只好限定时都会进行这个相关的这个结束。 今天就是说我们一起来看一下,就说给定一个策略判刑的时候,我们如何用这个蒙特卡罗这种方式来去评估状态价值的这种函数。 直观上的一种方法就是我们可以通过对具体策略产生的这个回报来去求这个平均值,从而从经验里面去评估这个状态价值函说的这个具体这种情况, 更具体的就是说是我们可以让这个函数为拍 s, 前提是作为在这个策略拍下面的这种状态价值函数的这个形式。我们接着收集一组经过状态 s 他的这个具体回合的这个情信息,相信是把每一个状态 s 他在这个回合里 这个出现的这个状态肯定是作为一次访问件事,就说是我们通过不断的就是说对于这种心理是就是他一次一次的这种心理是具体效果进行这个记录和这个分析,这样一来肯定是 我们具有两种这个评论方式。一,一首先是首次萌的卡罗,之后是每次萌的卡,你是初次和这个以后的这个每一次,对吧? 初次的或者是称为省次的。这个摩登卡罗星迪是他自考虑每一个回合中第一次到状的 s 他的这个访问,而每次的摩登卡罗星迪是他其实就要考虑每一次这个状态与 s 他这个具体访问形式。 把手撕门的卡拉变成每次门的卡拉,一定是在操作上其实也比较简单,行李师,我们只需要行李师把对手撕防蚊检查的这个条件去掉就行。李女士,我们条件就是我们 判断他是不是首次就会形体式,假设我们对于状态 s 有无限次访问的形体式,那么最终这两种方法形体式他其实都会收敛到这个没配 s, 相当于是我们都会逐渐的去逼近这个真实的这种情况。蒙特卡罗方法也是他可以独立的,就是说对不同状态值来进行这个估算。 和这个动态规划不同的就是蒙特卡罗他不仅仅就说是或者是说是,他就说是不仅仅是对于整个信息进行这个分析,或者是说是对于整个的这个展说的这种一,就是一次一次的这个状态来进行这个, 就是说是这种学习执法性历史,他基于这种不使用自举的这个方式,也就是说他不用其他状态的这种估算来去估算当前的这个抓的还是不是真的是他的那个, 对于之前的这个信息,你是不会说是以估算来去进行这个估算,这样的话有会有更大的这个误差,对吧?这个独特的这个性的心理是可以让我们直接的去通过采样的这种回报来去对这个他的这个状态,对或者是这个状态值进行这个评估, 从而有更小的这个偏差,但是他也会有更大的这个风差。 当我们有了环境的这个模型之后,先进时状态价值函数它其实就有了这个现在这个价值。 因为我们就可以通过比较对一个状态他的这种不同的这个动作,他的这个价值平均值,你是来去选择在合适的这个状态下,他的这个最好的这个动作是什么,就是说我在什么样的时间做什么样的这个动作是合适的,这就合在这个动态规划是非常类似当这个模 形式未知的时候,性律师我们需要把这个状态和这个动作价值来去扩散出来,每一个动作就是这个状态,动作性律师他其实都需要分别进行这个评估, 现在就是我们的这个学习目标就变成这个 qpsa, 也就是说在状态 s 下,根据这个撤离派采取动作 a 是他的这个预测的这种回报, 这在本质上就说是对这个状态价值,还是说一种评估的建议是基本只有一致,而我们现在只是说是取状态 s 在动作 a 上的这个平均值就行了。 不过有的事情是可能会有一些状态他从来都没有被访问过,所以说就没有了这个回报,为了选择这个追究的这个策略,问题是我们必须要去探索所有的这个状态。一个简单的这个方法,就说直接选择 那些就是说是没有可能被选择到的这个状态和这个动作队的前提是来作为他的这个初始的状态,这样的前提是因为你之后没有进行操作,而且之前也没有进行操作,对吧?之后现在是再对他进行操作的时候,他肯定是首次的, 这样一来前提是就可以保证在足够的这个回合组之后,你是所有的这个动作或者这个状态动作,对吧?你是他都可以被这个保温。现在是我们把这样的一个假设叫做是这种探索的这种开始 之后是这个萌的卡罗控制,现在兄弟是我们可以把这种泛化策略迭代运行到这个萌的卡罗当中,兄弟是来去看看他到底是如何来进行这个控制的。泛化策略迭代兄弟是他是由两部分组成,包括像这种策略的这个平, 以及这个策略的这种提升,我们会对这个状态动作就是这个动作值来去使用这种贪心的这个策略。关于这个贪心策略的历史也跟大家之前也提到过,对吧?就是说现历史我每次都选择是对我的历史就是最好的这种动作形式, 就是说基于这种情况下,你是我们就可以不需要就是使用这种环境的这个模型,胎心侧位性的他提升为一直选择在一个状态下他有最高值的这个动作 max, 对吧?对于每一次的这个策略提升行李时,我们都需要根据,就说假如说这个 qpat 来去构造这个 pat 加一, 这里就说是上面这个推倒师就代表了就是说是策略提升,他到底是如何去实现的?上面的这个四字称你是证明这个派就是这个七加一,他不会比这个派的内饰有 会经过这个地点形体式比例是来变得越来越好,这就意味着形体是我们可以对环境形体使用,就是说是没有,就是说是态度了解形体时而可以抑郁症产量的这个层面,就是说采取使用这个蒙根卡罗,这里相当于是我们需要解决两个,第一个价值就是探索的这种开始, 第二个假设就是有无穷的这种回合的这种这种情况。我们先跳过第一个假设,从第二个假设开始简化这种假设的一种简单的这个方式,就是 通过直接在单个状态的这个评估和改进之间来去交替进行这种病根来去避免策略评估,他所就是说需要的这种无限片段的这个情况 之后是这个争样的是摩登卡罗。 从上面的这个算法心理是我们可以看得出来,心理是我们需要对这个观察到的这个回报血来去求这个平均值,并且将这种价值就是比如说是这个状态价值与这个状态动作价值来取他的这个评估进行这个分开。其实心理时候呢还有一种更加高效的这种计算的这个办法, 他让我们能够像那个是把这个回报序列去省略掉,那是从而简化增量计算的这个步骤。这样一来前提示我们就需要一个回合,一个回合的去进行, 那是我们可以让这个 qstat 行李是作为他已经被选择体检一次的行李,是这种动作逮住的这个状态动作价值的这种评估,从而把这个公司来进行这个改写, 其实是将所有的这个回报来,就说这个具体这个记进行这个,把这个相关的这个记录记录下来,然后将他作为他的这个值得和除以他访问这个次数,也就是这个平均值,对吧?然后现在也是我们同样也可以通过以下的这个公式来去进行这个计算, 这个行驶线你是可以让我们在这个计算回报的时候,你是能够更加的进行简便的这个操作,它的这个通行性的就说是旧的这个平行值加上这个步伐大小乘以这个目标值与这个旧平工之间的这种关系,然后就得到的是新的这个平步值, 这个步伐整个大小行李是类似于是不长,对吧?是我们用来控制更新速度的一个参数,和我们去做体育下降或者是这种水晶体育下降,对吧?去调整不长,其实类似的形式一样,就是类似 这个步调是大是小的这个形式,通过这个行李时来去控制行李时,我们不断接待行李时,他的这个行李时,这个前提的这个速度,以此就是说规避,就是说是我们不说太大,就是超过你追求的这种对话,以及不说再小接待次数过多的这个问题, 这其实你是在这个可以看得出来就是说不懂技术之心,这里是他其实有很大的有相同的这个特点,也可以在很多的技术上来进行,这个就是有这个具体的这个使用一种展现,对吧? 技术这个他的贡献的历史,也方便我们在不同技术之间历史有一个更好的这种理念,就主要是粗类庞通。 好,这就是今天跟大家分享的这个小 内容,如果大家觉得这个视频对大家有帮助的话,大家可以点赞关注我的视频,后续也会持续的跟大家进行相关技术的这个分享。好,今天的这个分享内容就到这里,谢谢大家的观看。

大家好,欢迎观看数字到第十九集,我是 ty, 很高兴又和大家见面了。在上期的节目当中,我们简单介绍了马尔可夫练的基础知识和应用案例,包括其三大核心要素, 一、 fass 状态空间。二, marrysnas 无记忆性。三、选择性 max 转移矩阵,并对其稳态分布进行了推导。在今天的节目当中,我们将继续该话题的探讨。 相信大家一定还记得著名的大数定理捞 flat nimer 时,当我们所进行的实验,比如简单的硬币投掷实验,正面返回一,反面返回零,每次实验的结果是独立 且服从相同的概率分布,那么随着实验次数的增加,其算数平均值就越接近期望值。 而马可福链的稳态分布也向我们证明了独立性并非均值收敛的必要条件,即使非独立的随机过程也能收敛之稳态。在上期案例中,小明的早餐选择受前一日的影响, 我们可以从小明早餐选择的马尔克夫链中推倒,获得其稳态分布,进而了解他整体的早餐偏好。 接下来,我会在 xl 中通过对稍复杂一点的马可福电案例进行模型推导,帮助大家加深对稳态分布的理解, 同时也能了解高阶的 x 函数和功能是如何与数学理论相结合而发挥更大的作用。 这是一个包括 abc 三个状态的马卡福链,其转移矩阵 m 是这样的,我们可以随机设置初始状态的概率分布项链 x, 利用一个比较冷门但非常有用的 xl 矩阵公式 mate smarteparm max, 让 m 和 x 相乘,便能够得到下一期的状态概率分布了。 这里要注意一点,由于我们返回的结果是包括三个值的项链,因此我们需要在 xl 中先选择好三个单元格作为输出区域,再录入 m 冒头 函数,录入完成后,点击 ctrl shift ant 完成计算返回结果。其实在 xl 中,这类专门针对矩证或项链进行计算的函数被称为数组函数,这个我们以后有机会再深入聊。 在有了第二期的状态概率分布后,我们可以以此类推计算第三、四、五更多期的概率分布,观察最终是否会收敛至稳态分布, 这里的结果就显而易见了。当然,以上是一种求解稳态分布简单实用的方法。 其实稳态分布本身满足下面的特点,假如存在并已达到稳态,那么 m 乘 x 就应该等于 x, 这等同于只需要使用数学的方法求解矩阵 m 特征值为一的特征项链即可。 我们将 m 乘 x 等于 x 进行变换,得到 m 减单位矩阵 i, 再乘 x 等于零的方程式求解 x, 便能得到稳态分布解了。 你可以在草稿纸上进行求解,也可以借助 xl 的一个高阶功能 sorry 规划求解器进行求解 m 减 i 的矩阵结果。在 m 十九到 o 二十一的单元格区域中, p 十九到 p 二十一代表着稳态分布项链 x。 我们可以录入三个非负 和为一的随机值,并将和的结果体现在单元格 p 二十二中。 m 乘 x 的结果通过 m 帽函数返回。在 q 十九到 q 二十一中, 我们需要通过变化 p 十九到 p 二十一三个单元格的值,让 q 十九到 q 二十一的结果与目标结果 r 十九到 r 二十一相同。 掌握了模型求解思路后,我们打开数据栏中的规划求解功能,将刚刚的思想逐一进行设置, 目标值设置成最大化 p 二二。其实 p 二十二根据约束条件始终为一,这里只是为了单纯的满足设置要求,并不影响最终结果。 在满足约束条件的情况下,电话单元格区域 p 十九到 p 二十一直到达成目标为止。 在约束条件录入框中分别添加 p 二十二等于一、 q 十九到 q 二十一等于 r 十九到 r 二十一, 勾选变量设置,使概率参数满足非富条件算法。这里可以直接选择默认的 grg 囊里脸。如果大家感兴趣的话,我会在未来的节目中专门介绍 grg 囊里脸 f 六型、 cpx、 l、 p 三种不同算法的区别和应用场景。所以 xl 背后还蕴藏着无穷的宝藏。如果你想和我一起寻宝,别忘了关注方音扣, 当设置就绪后,点击求解,我们就得到了稳态分布节了。由于节目篇幅的关系,上期节目中提到的马尔克夫练的便利性二狗 st 我只能在下期安排上了。 另外关于马尔克夫电,我们还有很多可以谈,比如引马尔克夫电、马尔克夫电、蒙特卡洛算法、 mcmc 等等,我都会在二零二二年的节目中安排上。最后感谢大家的观看,让我们下期节目再见!

如图所示的是一个由三个节点构成的马尔可夫链。假设状态空间由红色与黑色组成。条件概率转移矩阵譬如图所示,现在假设节点 a 的状态是红色,节点 c 的状态是黑色, 问节点 b 是红色的概率是多少?由于 a 节点是红色的,根据条件概率矩阵批,可以得知,在 a 是红色的情况下, b 是红色的概率应该等于零点三,这个答案对吗?出乎几乎所有人意料的事,这个答案是错的, 因为他没有考虑 c 节点是黑的这个因素,可能你会说 b 是不受 c 影响的啊。可是,马尔可复恋是一种被夜思网络,后者在考虑问题时必须计算所有节点的联合概率,而跟节点之间有向胡的方向 没有关系。根据贝耶斯联合概率公示当前马尔可复练的联合概率 p、 a、 b、 c 应该等于 p a 乘以 p b 杠, a 乘以 p c 杠 b。 所以,要想求 a 等于红、 c 等于黑的条件下, b 等于红的概率,只需求出 a、 b、 c 分别等于红和黑的联合概率, 以及 a、 b、 c 分别等于红、黑、黑的联合概率。把上述联合概率公式带入,然后查条件概率表批,最后得到 a、 b、 c 分别等于红、红、黑的概率是零点二一, a、 b、 c 分别等于红、黑、黑的概率是零点二八,把红、红、黑的概率除以两个概率之和,最后结果是零点四二九。 显然,这跟我们直接查表得到的零点三的概率结果不同。这个例子充分证明了贝耶斯网络不可思议的能力,同时再次说明了人的直觉是靠不住的。

你们好,小伙伴们,欢迎来到这个视频。今天我心情超激动,因为在这段视频里,我将会示范如何使用马尔克夫恋来生成福尔摩斯探案故事。 更精确点说,我将教你们如何利用马尔克夫恋构建一个可以生成和给定数据及类似文本的语言模型。我会逐行解析代码。所以你们一定要看完整个视频哦! 我希望你们和我一样都非常兴奋。如果你想看我以后的视频,请记得订阅我的频道,我会定期发布有关机器学习和数据科学的视频。好了,废话不多说,我们开始吧。 首先,你需要有一些马尔克夫恋和自然语言处理的知识储备。因此,我建议你去看看我关于马尔克夫恋和 n l p 系列的视频。好的,我们的目标就是生成一些看起来像福尔摩斯探案故事的文本。这个问题有很 多种解决方式,但我们将选择用马尔克夫恋来解决。那么该怎么做呢?要构建马尔克夫恋,我们需要两样东西,一是一组状态,二是状态之间的转移概率。你能猜到在我们的问题中会是什么状态吗?没错,我们可以把单词当做状态。 假设有两个单词啊合卷,要找出从状态挨到状态句的转移概率。我们只需便利我们的文本计算当前单词为挨时,下一个单词为句的概率有多大。 如果在我们的文本中没有据紧接在之后的情况,那么转移概率就是零。理解这个技术的最好方式就是直接在一小段文本上应用。 让我们来看看柯南道尔的蓝宝石鹦鹉中的福尔摩斯名言。我叫福尔摩斯,知道别人不知道的事是我的职责。我们列出所有的独特单词。现在我会示范所 所有的转换。每个箭头上的数字表示一个词在前一个词之后出现的次数。因为这是一段短文本。你可以看到每次转换只发生一次。要把这些技术转化为概率。我只需要把技术处以从一个状态出去的总技术。 你可能会注意到有些词比其他词有更多的转换。如果我们有一大段文本,那么有些转换将比其他转换更常见。你可以把这些想象成给定文本数据的统计特性, 这些特性使得每一段文本都是独一无二的。我们的马尔克夫恋模型将根据这些统计特性来生成新的文本。这就是输出会看起来与原始数据相似的原因。挺神奇的,对吧? 好了,那我们如何从这个马尔克夫练声成新的文本呢?其实非常简单,你能猜到吗?我们可以从我们选择的一个状态开始进行 随机漫步模拟。换句话说,我们将根据转移概率从第一状态跳到第二状态。然后我们会重复这个过程,直到我们想要停止为止。这就是我们生成福尔摩斯探案故事的方法。现在我们转向代码部分。 欢迎来到编程部分。首先,我会向你们展示我在这个项目中使用的所有库,所以你要运行这段代码,所有需要的库都在这,明白了吗?接下来的重头戏就是数据了, 明显的我并为自己去收集数据。我是从开口上获取的,你可能从路径就能猜到。在视频描述里,我会放上我的开口笔记的链接,你到那去就能找到原始数据来源,明白了吗? 现在这些数据显然都是福尔摩斯探案故事。实际上,这个数据包含了所有的福尔摩斯 探案故事和小说。为了读取数据,我在这写了一个自定义函数,名叫 redo stories。 这个函数接收一个数据路径,他会读取数据中的每一个文本文件,并且把文本文件的每一行都添加到这个叫 text 的大列表里。 顺便提一句,这个数据集包含了六十多个文本文件。不用担心这两行代码,你可以选择使用,也可以选择不用。我只是用他们来剔除一些原数据。对我们的模型来说,那些东西没有任何帮助,明白了吗? 所以,为了读取所有的型,我在这里调用了函数。如果我打印出大列表的长度,结果会超过二十万行。好的,现在我们已经读取了数据,但我们刚刚读取的数据还未进行清洗。如果你看过我的 nlp 系列,你应该知道,对于 nlp 来说,清洗数据是必须的。 如果你想了解更多关于文本清洗的知识,请点击屏幕上现在出现的视频链接。好的,所以我在这里写了一个简单的函数,主要就是用来清洗数据。这个函数叫 clean test。 你可以看到这个函数会返回一个大列表。首先,我把所有内容都转换成小写,然后移除所有的标点符号。接着我对这段文本进行了分词。 分词是非常重要的,因为在理论部分,我告诉过你,我们会把单词试做状态来处理。分词其实就是把句子分割成单词,所以这是必要的。 在最后一行,他会排除所有不是英文字母的内容。好的,在这个函数里,我把所有的单词都添加到一个列表里,所以我在这里调用了函数来获取所有的单词。如果我打印出单词的数量,你会注意到数据集包含了超过二百万个单词。这是个大项目,他提供 丰富的余料库。好的,现在我要来到我们模型的关键部分,也就是说,我们现在需要创建马尔克夫模型。为了实现这个,我写了一个自定义函数,叫做 marker model。 这个函数需要两个参数。 首先我们得需要一份单词列表,然后再来个 in gram。 我在理论部分已经讲过,我们会把每个单词当成一个独立的状态,但在实际操作中,我会把两个单词当成一个整体的状态。这么做的原因是,我希望我的模型能获得一些上下文的信息。 想象一下,如果我们只有一个单词,那我就没法给模型提供任何上下文信息。但如果我提供了超过一个单词作为一个整体的状态,那我就能提供更多的上下文。结果就是我模型生成的文本会更有意义。实际上,你可以增加 的数量看看是否能生成更好的文本。好了,现在我们来深入理解这个功能。马尔克夫恋其实就是图,是吧?要实现图,字典绝对是首选。所以我们的马尔克夫模型就会是一个字典,实际上这会是一个嵌套的字典。为什么要是嵌套的字典呢? 因为我们不仅需要存储一个状态到另一个状态的转换,我们还需要存储这种转换对应的概率。字典的外层会把状态作为键存储起来,但在内层,我们会存储转换概率。如果你仔细看这张图,就会明白为什么了。如果你需要一些时间来理解,就暂停视频吧。 好,要实现这一点,我们需要便利我们数据集中的每个二元组,对吧?首先,我只是初始化当前状态和下一个状态为空字符串,然后我给他们附上正 确的值。我们需要这个内循环来真正制作 and grams。 最后的空字符串只是做个装饰。你运行这段代码后就会明白为什么需要他们。懂了吗?这段代码其实挺简单的,我就不浪费时间给你解释了。 好,一旦我们得到了我们的当前状态和下一个状态,我们需要将他们包含在我们的字典中。为了避免状态重复,首先我们需要检查当前状态是否已经存在于字典中。如果不存在,那我们就需要把这个状态作为键插入。当然,我们需要把计数器初始化为一。 另一方面,如果当前状态已经存在于字典中,那我们需要检查下一个状态是否也存在。如果他也存在,那我们只需将计数器加一。但如果下一个状态不存在,那你就需要插入下一个状态,并将计数器初始化为一,明白了吗? 好,现在我们需要从技术中计算转换概率。就像我在概念部分讲的那样,这个过程非常简单,你只需要将其除以总数。好,现在我将调用这个函数来创建我们的马尔克夫模型。 如果我仅仅打印出马尔克夫模型中的状态数量,你会发现他超过了两万,所以这个模型非常庞大,希望他能运行的很好。 现在,为了确保我们的模型真的有效,我们在制作模型的过程中没有出错。我将打印出从状态的 game 开始的所有可能的转换。 如果你是个福尔摩斯的粉丝,那么你应该知道的 game 后面跟的单词是 afford。 你看,我这里写的是 afford, 这里写的是 what's a fort。 这是过去式,所以我们的模型确实有效。我在制作这个模型的过程中没有犯任何错误。好啊,现在来到 最好的部分。现在我们要生成福尔摩斯的故事了。为此,我又在这里写了一个自定义函数,叫生成故事。这个函数需要马尔克夫模型,你可以设定他生成的状态数量。当然还需要初始状态, 因为根据初始状态,模型会生成一个全新的故事,所以我不打算解释这个函数。这个函数非常简单。如果你想看看这个函数里发生了什么,就在这里暂停, 我将直接进入结果。好吧,这里我生成了二十个句子,每个句子都以相同的起始状态开始,即 dear house。 我选择的限制为八,他将产生九个状态。好吧,既然我每个状态有两个单词,所以他会产生十八个单词。这些都是我的模型生成的句子。如果你逐句阅读,你会发现大部分句子虽然没有 意义,但语法结构却很正确。这是因为这个模型遵循了原始文本的统计特性。如果你仔细观察,你会发现一些句子的部分内容完全有意义。例如,如果你看这个 dear holmes, yes always answer me like this, 这完全是一个通顺的句子,对吧? 或者至少是句子的一部分。如果你想知道为什么有那么多句子中包含 ejaculating, 那是因为在那个时代, ejaculated 是 exclaim 的同义词。 好,我们再来看一组二十个句子,这次他们都以 my dear 开始。我们都知道 my dear 后面应该跟的是什么,是 washing 对吧?你会发现有很多句子都以 my dear washing 开始, 所以这个模型是有效的。再来一组二十个句子都以 i will 开始。我不打算读他们,你只需要看一遍,你会发现其中一些句子真的很有趣。好, 我将以这个结束这个视频。这里我将状态数量限制在一百个起始状态是 the case。 如果你只读第一行,那你会发现他有些意义。 请记住,这个项目中没有涉及高级自然语言处理。他完全是一个统计模型,他完全依赖马尔克夫性质。 七、你可以仅使用当前状态预测未来,你不需要看过去。我想这种简单模型能得到这种结果真是太神奇了。 那么这就是这个视频的所有内容。我希望你真的喜欢这个视频,请分享这个视频并订阅我的频道。如果你想建议一个新的主题,请在下面留言,感谢观看。