机器学习笔记之配分函数(二)——随机最大似然

news2024/10/7 12:23:56

机器学习笔记之配分函数——随机最大似然

引言

上一节介绍了对包含配分函数的概率分布——使用极大似然估计求解模型参数的梯度(对数似然梯度),本节将基于上述结论,介绍随机最大似然(Stochastic Maximum Likelihood)。

回顾:对数似然梯度

已知样本集合 X = { x ( i ) } i = 1 N \mathcal X = \{x^{(i)}\}_{i=1}^N X={x(i)}i=1N,且随机变量 X = { x 1 , ⋯   , x p } \mathcal X = \{x_1,\cdots,x_p\} X={x1,,xp} p p p维实数域上有意义( X ∈ R p \mathcal X \in \mathbb R^p XRp)。
ML Learning :  \text{ML Learning : } ML Learning : 针对包含配分函数的概率模型 P ( X ; θ ) \mathcal P(\mathcal X;\theta) P(X;θ)中对模型参数 θ \theta θ进行求解。以极大似然估计为例,最优模型参数 θ ^ \hat \theta θ^表示如下:
θ ^ = arg ⁡ max ⁡ θ log ⁡ ∏ i = 1 N P ( x ( i ) ; θ ) = arg ⁡ max ⁡ θ ∑ i = 1 N log ⁡ [ 1 Z ( θ ) P ^ ( x ( i ) ; θ ) ] = arg ⁡ max ⁡ θ ∑ i = 1 N [ log ⁡ P ^ ( x ( i ) ; θ ) − log ⁡ Z ( θ ) ] \begin{aligned} \hat \theta & = \mathop{\arg\max}\limits_{\theta} \log \prod_{i=1}^N \mathcal P(x^{(i)};\theta) \\ & = \mathop{\arg\max}\limits_{\theta} \sum_{i=1}^N \log \left[\frac{1}{\mathcal Z(\theta)} \hat \mathcal P(x^{(i)};\theta)\right] \\ & = \mathop{\arg\max}\limits_{\theta} \sum_{i=1}^N \left[\log \hat \mathcal P(x^{(i)};\theta) - \log \mathcal Z(\theta)\right] \end{aligned} θ^=θargmaxlogi=1NP(x(i);θ)=θargmaxi=1Nlog[Z(θ)1P^(x(i);θ)]=θargmaxi=1N[logP^(x(i);θ)logZ(θ)]
其中 P ^ ( X ; θ ) \hat \mathcal P(\mathcal X;\theta) P^(X;θ)表示不包含配分函数的概率模型结果; Z ( θ ) \mathcal Z(\theta) Z(θ)表示配分函数(Partition Function),假设 X \mathcal X X连续型随机变量,配分函数可表示为:
Z ( θ ) = ∫ X P ^ ( X ; θ ) d X = ∫ x 1 , ⋯   , ∫ x p P ^ ( x 1 , ⋯   , x p ; θ )   d ( x 1 , ⋯   , x p ) \begin{aligned} \mathcal Z(\theta) & = \int_{\mathcal X} \hat \mathcal P(\mathcal X;\theta) d\mathcal X \\ & = \int_{x_1},\cdots,\int_{x_p} \hat \mathcal P(x_1,\cdots,x_p;\theta) \text{ } d(x_1,\cdots,x_p) \end{aligned} Z(θ)=XP^(X;θ)dX=x1,,xpP^(x1,,xp;θ) d(x1,,xp)
将上式进行整理,可表示为如下表达
{ L ( θ ) = 1 N ∑ i = 1 N log ⁡ P ^ ( x ( i ) ; θ ) − log ⁡ Z ( θ ) θ ^ = arg ⁡ max ⁡ θ L ( θ ) \begin{cases} \mathcal L(\theta) = \frac{1}{N} \sum_{i=1}^N \log \hat \mathcal P(x^{(i)};\theta) - \log \mathcal Z(\theta) \\ \quad \\ \hat \theta = \mathop{\arg\max}\limits_{\theta} \mathcal L(\theta) \end{cases} L(θ)=N1i=1NlogP^(x(i);θ)logZ(θ)θ^=θargmaxL(θ)
针对最大值的求解,常用方法是梯度上升法。对目标函数 L ( θ ) \mathcal L(\theta) L(θ)关于 θ \theta θ梯度
∇ θ L ( θ ) = 1 N ∑ i = 1 N ∇ θ log ⁡ P ^ ( x ( i ) ; θ ) − ∇ θ log ⁡ Z ( θ ) \nabla_{\theta}\mathcal L(\theta) = \frac{1}{N} \sum_{i=1}^N \nabla_{\theta} \log \hat \mathcal P(x^{(i)};\theta) - \nabla_{\theta} \log \mathcal Z(\theta) θL(θ)=N1i=1NθlogP^(x(i);θ)θlogZ(θ)
通常将 1 N ∑ i = 1 N ∇ θ log ⁡ P ^ ( x ( i ) ; θ ) \frac{1}{N}\sum_{i=1}^N \nabla_{\theta} \log \hat \mathcal P(x^{(i)};\theta) N1i=1NθlogP^(x(i);θ)看作正相,将 ∇ θ log ⁡ Z ( θ ) \nabla_{\theta} \log \mathcal Z(\theta) θlogZ(θ)看作负相
针对负相计算中的难点,将 Z ( θ ) \mathcal Z(\theta) Z(θ)展开,最终化为期望形式
∇ θ log ⁡ Z ( θ ) = E P ( X ; θ ) [ ∇ θ log ⁡ P ^ ( X ; θ ) ] \nabla_{\theta}\log \mathcal Z(\theta) = \mathbb E_{\mathcal P(\mathcal X;\theta)} \left[\nabla_{\theta} \log \hat \mathcal P(\mathcal X;\theta)\right] θlogZ(θ)=EP(X;θ)[θlogP^(X;θ)]
最终目标函数梯度 ∇ θ L ( θ ) \nabla_{\theta}\mathcal L(\theta) θL(θ)可表示为如下形式:
∇ θ L ( θ ) = 1 N ∑ i = 1 N ∇ θ log ⁡ P ^ ( x ( i ) ; θ ) − E P ( X ; θ ) [ ∇ θ log ⁡ P ^ ( X ; θ ) ] \nabla_{\theta}\mathcal L(\theta) = \frac{1}{N} \sum_{i=1}^N \nabla_{\theta} \log \hat \mathcal P(x^{(i)};\theta) - \mathbb E_{\mathcal P(\mathcal X;\theta)} \left[\nabla_{\theta} \log \hat \mathcal P(\mathcal X;\theta)\right] θL(θ)=N1i=1NθlogP^(x(i);θ)EP(X;θ)[θlogP^(X;θ)]
关于正相部分可以使用如基于 Batch/mini-Batch \text{Batch/mini-Batch} Batch/mini-Batch的梯度上升方法(因为样本是给定的);关于负相部分可以使用马尔可夫链蒙特卡洛方法进行近似求解。

关于 ∇ θ L ( θ ) \nabla_{\theta}\mathcal L(\theta) θL(θ)的简化

为了将正相负相的格式统一,也将正相写成期望形式,这里引入一个概率分布——真实分布 P d a t a \mathcal P_{data} Pdata

早在第一节极大似然估计与最大后验概率估计介绍过概率模型的概念。一个真实模型 P d a t a ( X ; θ ) \mathcal P_{data}(\mathcal X;\theta) Pdata(X;θ),可以通过模型参数 θ \theta θ生成无穷无尽的样本,而我们的样本集合 X \mathcal X X只是其中的一个 子集。由于噪声的原因,我们可能无法将真实模型的分布精确的求解出来,但可以通过样本集合 X \mathcal X X对真实分布进行近似。样本量越多,样本分布结果越接近真实分布
简单理解为,真实分布是基于问题客观存在的,但是它很‘缥缈’,我们只能得到它的近似结果。
通过已有样本集合 X \mathcal X X估计出的‘近似分布’称为‘经验分布’(Empirical Distribution)。

但是在这里,虽然经验分布只是真实分布的一个近似,但是在这里将正相看作是基于真实分布的期望。因为正相确实是通过采样真实样本的方式更新梯度的。
相比之下,概率模型 P ( X ; θ ) = 1 Z ( θ ) P ^ ( X ; θ ) \mathcal P(\mathcal X;\theta) = \frac{1}{\mathcal Z(\theta)} \hat \mathcal P(\mathcal X;\theta) P(X;θ)=Z(θ)1P^(X;θ)是基于概率图结构的假设。与 P d a t a \mathcal P_{data} Pdata相对应,称其为 P m o d e l \mathcal P_{model} Pmodel

至此,关于 ∇ θ L ( θ ) \nabla_{\theta}\mathcal L(\theta) θL(θ)的简化结果可表示为:
∇ θ L ( θ ) = 1 N ∑ i = 1 N ∇ θ log ⁡ P ^ ( x ( i ) ; θ ) − E P ( X ; θ ) [ ∇ θ log ⁡ P ^ ( X ; θ ) ] = E P d a t a [ ∇ θ log ⁡ P ^ ( x ( i ) ; θ ) ] − E P m o d e l [ ∇ θ log ⁡ P ^ ( X ; θ ) ] \begin{aligned} \nabla_{\theta}\mathcal L(\theta) & = \frac{1}{N} \sum_{i=1}^N \nabla_{\theta} \log \hat \mathcal P(x^{(i)};\theta) - \mathbb E_{\mathcal P(\mathcal X;\theta)} \left[\nabla_{\theta} \log \hat \mathcal P(\mathcal X;\theta)\right] \\ & = \mathbb E_{\mathcal P_{data}} [\nabla_{\theta} \log \hat \mathcal P(x^{(i)};\theta)] - \mathbb E_{\mathcal P_{model}} [\nabla_{\theta} \log \hat \mathcal P(\mathcal X;\theta)] \end{aligned} θL(θ)=N1i=1NθlogP^(x(i);θ)EP(X;θ)[θlogP^(X;θ)]=EPdata[θlogP^(x(i);θ)]EPmodel[θlogP^(X;θ)]

之所以称 E P d a t a [ ∇ θ log ⁡ P ^ ( x ( i ) ; θ ) ] \mathbb E_{\mathcal P_{data}} [\nabla_{\theta} \log \hat \mathcal P(x^{(i)};\theta)] EPdata[θlogP^(x(i);θ)]为正相,是因为 正向的增加了 ∇ θ L ( θ ) \nabla_{\theta}\mathcal L(\theta) θL(θ)梯度上升的过程;相反,由于负相 E P m o d e l [ ∇ θ log ⁡ P ^ ( X ; θ ) ] \mathbb E_{\mathcal P_{model}} [\nabla_{\theta} \log \hat \mathcal P(\mathcal X;\theta)] EPmodel[θlogP^(X;θ)]的增加使得 ∇ θ L ( θ ) \nabla_{\theta}\mathcal L(\theta) θL(θ)梯度上升的过程放缓(起到反作用)

基于MCMC求解负相

之前介绍过了,如果负相能够轻松地求解出结果,那么可以直接使用梯度上升法(Gradient Ascent)对模型参数 θ \theta θ进行近似求解:
η \eta η表示学习率~
θ ( t + 1 ) ⇐ θ ( t ) + η ∇ θ L ( θ ) \theta^{(t+1)} \Leftarrow \theta^{(t)} + \eta \nabla_{\theta} \mathcal L(\theta) θ(t+1)θ(t)+ηθL(θ)
如果负相无法求解出精确结果,那么通常采用马尔可夫链蒙特卡洛方法,如吉布斯采样(Gibbs Sampling)进行求解。

而这个采样过程本质上迭代过程。否则就是从分布 P m o d e l = P ( X ; θ ) \mathcal P_{model} = \mathcal P(\mathcal X;\theta) Pmodel=P(X;θ)中进行采样,而 θ \theta θ是我们要求解的量,两者之间相互矛盾

如果想要求解 t + 1 t+1 t+1次迭代的负相,需要从上一迭代的分布 P m o d e l = P ( X ; θ ( t ) ) \mathcal P_{model} = \mathcal P(\mathcal X;\theta^{(t)}) Pmodel=P(X;θ(t))中进行采样:
《深度学习》(花书)中称从 P m o d e l \mathcal P_{model} Pmodel中采集的样本称为“幻想粒子”(Fantasy Particle)。因为模型本身是基于’概率图结构‘假设的,那么 P m o d e l \mathcal P_{model} Pmodel自然不是真实的。对于它采集的样本不足够信任。
x ^ ( t + 1 ) = { x ^ t + 1 ( 1 ) ∼ P ( X ; θ ( t ) ) x ^ t + 1 ( 2 ) ∼ P ( X ; θ ( t ) ) ⋮ x ^ t + 1 ( M ) ∼ P ( X ; θ ( t ) ) \hat {x}^{(t+1)} = \begin{cases} {\hat x_{t+1}}^{(1)} \sim \mathcal P(\mathcal X;\theta^{(t)}) \\ {\hat x_{t+1}}^{(2)} \sim \mathcal P(\mathcal X;\theta^{(t)}) \\ \quad \vdots \\ {\hat x_{t+1}}^{(\mathcal M)} \sim \mathcal P(\mathcal X;\theta^{(t)}) \end{cases} x^(t+1)=x^t+1(1)P(X;θ(t))x^t+1(2)P(X;θ(t))x^t+1(M)P(X;θ(t))

至此,基于梯度上升法模型参数 θ \theta θ的迭代过程归纳如下:
θ ( t + 1 ) ⇐ θ ( t ) + η [ ∑ i = 1 M ∇ θ log ⁡ P ^ ( x ( i ) ; θ ( t ) ) − ∑ i = 1 M ∇ θ log ⁡ P ^ ( x ^ ( i ) ; θ ( t ) ) ] \theta^{(t+1)} \Leftarrow \theta^{(t)} + \eta \left[\sum_{i=1}^{\mathcal M} \nabla_{\theta} \log \hat \mathcal P(x^{(i)};\theta^{(t)}) - \sum_{i=1}^{\mathcal M}\nabla_{\theta} \log \hat \mathcal P({\hat x}^{(i)};\theta^{(t)})\right] θ(t+1)θ(t)+η[i=1MθlogP^(x(i);θ(t))i=1MθlogP^(x^(i);θ(t))]
个人理解:

  • 上面中括号中均少了 1 M \frac{1}{\mathcal M} M1应该是并在了 η \eta η中;
  • 这里仅是使用’吉布斯采样方法‘从平稳分布中采集若干样本,和吉布斯采样本身的迭代过程(在实现平稳分布过程中每一个step对个维度采样、固定)没有关联关系。

关于书中图像的解释

一维随机变量的概率分布表示如下(蓝色线):
真实分布与预测分布——示例
橙色线表示假设的概率模型 P m o d e l = P ( X ; θ ) \mathcal P_{model} = \mathcal P(\mathcal X;\theta) Pmodel=P(X;θ)在某迭代步骤概率分布预测结果

回顾梯度 ∇ θ L ( θ ) \nabla_{\theta}\mathcal L(\theta) θL(θ)梯度上升法的作用,我们希望每一次迭代,梯度结果越高,它的梯度方向就越指向最优模型参数
∇ θ L ( θ ) = E P d a t a [ ∇ θ log ⁡ P ^ ( x ( i ) ; θ ) ] ⏟ Positive Phase − E P m o d e l [ ∇ θ log ⁡ P ^ ( X ; θ ) ] ⏟ Negative Phase \nabla_{\theta}\mathcal L(\theta) = \underbrace{\mathbb E_{\mathcal P_{data}} [\nabla_{\theta} \log \hat \mathcal P(x^{(i)};\theta)]}_{\text{Positive Phase}} - \underbrace{\mathbb E_{\mathcal P_{model}} [\nabla_{\theta} \log \hat \mathcal P(\mathcal X;\theta)]}_{\text{Negative Phase}} θL(θ)=Positive Phase EPdata[θlogP^(x(i);θ)]Negative Phase EPmodel[θlogP^(X;θ)]
从而有:正相越高越好,负相越低越好

  • 首先,从 P d a t a \mathcal P_{data} Pdata中采集了 M \mathcal M M个样本,由于 P d a t a \mathcal P_{data} Pdata的概率密度函数,采集的样本更多概率聚集在0附近。
    P d a t a \mathcal P_{data} Pdata是真实分布,是基于问题客观存在的。

  • 拿到样本之后,对当前迭代步骤的正相进行求解。但求解并不是最终目的,而是希望使用极大似然估计,找到一款参数,使得 L ( θ ) \mathcal L(\theta) L(θ)达到最大
    L ( θ ) \mathcal L(\theta) L(θ)达到最大的目的是让假设概率模型的分布 P m o d e l \mathcal P_{model} Pmodel接近真实分布 P d a t a \mathcal P_{data} Pdata.

    观察上图0附近的关于 P m o d e l \mathcal P_{model} Pmodel的概率分布结果,很显然并不在 P m o d e l \mathcal P_{model} Pmodel波峰位置,这说明 此时的 P m o d e l \mathcal P_{model} Pmodel真实分布 P d a t a \mathcal P_{data} Pdata是有差距的

    如何缩小这种差距——通过修正模型参数 θ \theta θ让这些采集的样本对应的概率结果提高
    此时 P m o d e l \mathcal P_{model} Pmodel橙色线到绿色线的变化区域(横坐标)基本已经涵盖了 P d a t a \mathcal P_{data} Pdata(蓝色线)的有效范围。在 P d a t a \mathcal P_{data} Pdata有效范围内 P m o d e l \mathcal P_{model} Pmodel的概率结果提高,从图形的趋势上来看,它相比之前的橙色线,更接近于 P d a t a \mathcal P_{data} Pdata.
    图画的不好,见谅哈~
    正相修正后的结果——示例

  • 同理,观察负相,和正相不同的是,负相是从 P m o d e l \mathcal P_{model} Pmodel中进行采样,而不是 P d a t a \mathcal P_{data} Pdata。观察 P m o d e l \mathcal P_{model} Pmodel的高概率部分(波峰部分),与该部分样本点对应的 P d a t a \mathcal P_{data} Pdata概率结果明显存在差距
    如何缩小这种差距——调整模型参数 θ \theta θ让这些采样点对应的概率结果降低
    最终目标就是‘无限逼近’ P d a t a \mathcal P_{data} Pdata。因为 P d a t a \mathcal P_{data} Pdata是客观存在的,是恒定不变的。
    正相结果为基础,进行如下修正:
    负相修正后的结果——示例
    相比于初始状态,此时已经很接近真实分布 P d a t a \mathcal P_{data} Pdata了。
    需要注意的点:正相和负相不是各变各的,而是同时进行。

  • 迭代过程到什么状态下停止
    ∇ θ L ( θ ) \nabla_{\theta}\mathcal L(\theta) θL(θ)中可以看出:
    ∇ θ L ( θ ) = E P d a t a [ ∇ θ log ⁡ P ^ ( x ( i ) ; θ ) ] ⏟ Positive Phase − E P m o d e l [ ∇ θ log ⁡ P ^ ( X ; θ ) ] ⏟ Negative Phase \nabla_{\theta}\mathcal L(\theta) = \underbrace{\mathbb E_{\mathcal P_{data}} [\nabla_{\theta} \log \hat \mathcal P(x^{(i)};\theta)]}_{\text{Positive Phase}} - \underbrace{\mathbb E_{\mathcal P_{model}} [\nabla_{\theta} \log \hat \mathcal P(\mathcal X;\theta)]}_{\text{Negative Phase}} θL(θ)=Positive Phase EPdata[θlogP^(x(i);θ)]Negative Phase EPmodel[θlogP^(X;θ)]
    正相、负相期望中的函数部分完全相同,只有期望基于的概率分布( P m o d e l , P d a t a \mathcal P_{model},\mathcal P_{data} Pmodel,Pdata)不一样。如果 P m o d e l = P d a t a \mathcal P_{model} = \mathcal P_{data} Pmodel=Pdata ∇ θ L ( θ ) = 0 \nabla_{\theta}\mathcal L(\theta) = 0 θL(θ)=0,不会再更新梯度,此时迭代过程自然就停止了。

下一节将介绍对比散度
相关参考:
直面配分函数-2-Stochastic Maximum Likelihood(随机最大似然)
深度学习(花书)——第18章 直面配分函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/66189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5款高效率,但是名气不大的小众软件

今天推荐5款十分小众的软件,但是每个都是非常非常好用的,用完后觉得不好用你找我。 1.多窗口文件整理——Q-Dir Q-Dir 是一款多窗口文件整理工具,特别适合用户频繁在各个文件夹中跳转进行复制粘贴的文件归档操作。如果你的电脑硬盘中文件已经…

MySQL 数据库的增删查改 (2)

文章目录一. 数据库约束1. 约束类型2.NULL 约束3.UNIQUE 约束4.DEFAULT 约束5. PRIMARY KEY 约束6.FOREIGN KEY 约束二.表的设计三.插入四.查询1.聚合查询2.联合查询3.合并查询本篇文章继承与 MySQL 表的增删改查(1) 一. 数据库约束 1. 约束类型 NOT NULL -- 表示某一行不能…

下载安全证书到jdk中的cacerts证书库

最近在公司遇到访问https请求,JDK返回异常信息的问题。返回如下: java.lang.Exception: java.lang.Exception: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: u…

废弃阶段的风险评估

概述 风险评估应贯穿于评估对象生命周期 各阶段中。评估对象生命周期各阶段中涉及的风险评估原则和方法昆一致的,但由干各阶段实施内容对象、安全需求不同.使得风险评估的对象、目的、要求等各方面也有所不同。在规划设计阶段,通过风险评估以确定评估对…

线程安全介绍

线程安全 多线程程序处于一个多变的环境当中,可访问的全局变量和堆数据随时都可能被其他的线程改变。因此多线程程序在并发时数据的一致性变得非常重要。 竞争和原子操作 多个线程同时访问一个共享数据,可能造成很恶劣的后果。下面是一个著名的例子&a…

多数之和问题

文章目录多数求和问题1两数之和(无序)题解2两数之和(有序)题解3两数之和(二叉搜索树)题解4 三数之和题解5四数之和题解多数求和问题 针对给一组用例,和一个目标数target,求用例中多数相加等于target的所有数,且不能重复问题,一般有两种解法: 集合(不要求排序)双指针(要求排序…

万德L2接口代码执行工作的过程分享

在设计万德L2接口时,避免不了要用到 一些代码,今天小编来给各位分享一下万德L2接口代码执行工作的过程分享: 这里只分享部分功能执行的过程: OrderQueueRecord(委托队列) 字段名 类型 备注 stock_ex…

word文档

WORD行与行中间空出一行,怎么办? 这个情况又分两种情况: 第①种情况:行与行之间的空白行都多了一个回车符: Word中,当我们从网络上复制一些文本或者是拿到一些别人的文本,这种文本经常会有大…

自动切换背景的登录页面

自动切换背景的登录页面 有趣的小案例池子: JS实现定时器 JS实现关闭图片窗口 JS实现输入检验 获取焦点后隐藏提示内容的输入框 JS实现获取鼠标在画布中的位置 聊天信息框显示消息 JS点击切换背景图 自动切换背景的登录页面 JS制作跟随鼠标移动的图片 JS实现记…

电脑提示ISDone.dll错误怎么办?

在安装一些大型游戏时,容易出现ISDone.dll错误,那么这时我们该怎么办呢? 出现ISDone.dll错误的原因? ① RAM或硬盘空间不足,或内存和硬盘出现故障。 ② ISDone.dll和Unarc.dll文件损坏或丢失。 ③ 系统文件损坏。 …

JAVA基于局域网的聊天室系统(源代码+论文)

毕业论文 局域网聊天室系统的设计与实现 论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期: 基于局域网的视频聊天室系统的设计与实现 摘 要 视频聊天系统作为一种…

Python 采集77个教学课件PPT模板

源码下载链接:ppt.rar - 蓝奏云 PPT下载链接:https://pan.baidu.com/s/1oOIO76xhSw283aHTDhBcPg?pwddydk 提取码:dydk 采集的参数 page_count 1 # 每个栏目开始业务content"text/html; charsetgb2312"base_url "https:…

6个赚钱法则,后悔知道晚了,赚钱是为了需要时说可以而不是考虑下

2023年也在措不及防的时刻开始了 无论哪年新年愿望清单里赚钱一直都在前三位。 《财富的理想国》中说,钱不是人生的全部,甚至不能保证你一定能过上幸福的生活,但一定的金钱,能为幸福生活打造坚实的基础。 2023全新的一年&#x…

10月阿里面试总结:必问的Spring面试解析,面试时要注意的那些坑

什么是Spring IOC 容器? 控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转…

基于非局部滤波图像去噪方法

论文题目:A non-local algorithm for image denoising 1 摘要 我们提出了一种新的衡量噪声的方法,来评价和比较数字图像去噪方法的性能。我们首先计算和分析该方法的噪声类去噪算法,即局部平滑滤波器。其次,我们提出了一种新的算…

jar添加jre运行环境,即是电脑没有安装jdk也可以运行

目录 一、项目打包 二、生成jre文件 1、jdk8及一下版本 2、jdk9及其以上版本 三、添加jre运行环境 四、编写脚本 1、编写启动脚本start.bat 2、编写停止脚本stop.bat 注:查看jdk安装位置​ 一、项目打包 以idea工具,springboot项目为例&#xff0…

HikariCP实战 | 通过查看源码分析如何解决maxLifeTime配置问题

目录1、追本溯源2、解决hikariCP的maxLifetime配置出现以下warn问题3、具体解决步骤(查看源码)1、追本溯源 很多年前在stackoverflow上写过一篇文章: https://stackoverflow.com/questions/28180562/hikaricp-and-maxlifetime# hikariCP是非…

maven升级漏洞依赖jar包

最近在搞一些漏洞jar包升级,包括springboot、cloud等依赖,期间遇到了一些小坑,特此做这个记录一下。 目录1. 打印/获取该项目的依赖树2.判断依赖是否有漏洞3.版本兼容性查询4.常规依赖版本升级5.依赖升级5.1 jackson升级5.2 spring相关依赖、…

机器学习与深度学习的基本概念

目录 机器学习是什么? 机器学习的任务 回归Regression 分类Classification 创造学习Structed Learing 机器学习怎么找这个函数 定义含未知参数的函数 定义loss损失函数 定义优化器optimization 写出一个更复杂的有未知参数的函数 sigmoid 基本推理过程 si…

GitHub上架即下架!《分布式系统人人都是架构师》全彩笔记开源

小编又来给大家分享好书了:高翔龙老师的 《超大流量分布式系统架构解决方案:人人都是架构师2.0》,我在网上没找见开源的PDF版本所以分享一下!小编会在文末附电子版免费下载方式。 高翔龙是谁? 云集基础架构负责人&am…