机器学习-TopicModel

news2024/12/29 1:56:49
  1. 概率图模型基础
  2. 概率潜在语义分析(PLSA)
  3. LDA
概率图模型基础
猜球游戏
有两个信封,其中一个装有一个红球,一个黑球。另一个信封有两个黑球。
假设红球价值100元,黑球价值1元。
你随机从其中拿起一个信封,从里面随便取出一个球,然后你发现这个球是黑色的。
请问此时,如果让你选择其中一个信封,你会选择哪个?已经检查过的还是未被检查过的?
分析: 如果在没有看之前,选择两个信封的概率都是1/2。由于增加了已知条件,后验概率P(E=1|B=b)改变了。
定义两个随机变量:信封编号:E∈{1,2},1号含有红球。小球颜色:B∈{r,b}
根据定义:P(E=1)=P(E=2)=1/2   ;   P(B=r|E=1)=1/2  ;  P(B=r|E=2)=0
问题:P(E=1|B=b)>=1/2 ??
P(E=1|B=b):刚才看的黑球的信封是 1 号信封的概率如果大于1/2,那么就选择这个信封,否则选择那个未开封的信封。
思路一:
概率图模型:有节点和边的集合构成,节点集表示一组 随机变量 X1,X2...Xn,连接节点的边表示变量之间的关联(概率)
为什么要用概率图模型:
如果不用概率图模型,我们要表示一个P(x1,x2,...xn)联合概率(如果 x∈{0 , 1} ),则总共需要 存 2^n-1 个概率值。如
p(x1=0,x2=0,...xn=0) ,p(x1=1,x2=0,...xn=0),p(x1=0,x2=1,...xn=0)...
难以解释条件独立关系。
已知: x1    x2    x3    和 p(x1,x2,x3,y1,y2,y3)
未知:y1     y2    y3
那么要求p(y1|x1,x2,x3)  p(y2|x1,x2,x3)   p(y3|x1,x2,x3) 
如果我们用概率图表示:
假设图为
如果我们要求 P(A|C,E,F,B)  由于A 与B 条件独立,那么我们就不需要B                                                                         , P(A|C,E,F,B) =P(A|C,E,F)
我们根据图就可以看出A与B条件独立。
概率图模型两个任务:
  • 推理(Inference)
     给定联合分布 P(x1,x2...xn) ,计算 ,其中 (已知节点与未知节点并集为全图)
     例如:Q={n},E={1,2...n-1}
     
根据联合概率和已知节点求未知节点取值的概率。
  • 学习(Learning)
     从训练数据中 X(1),X(2)...X(n)(其中 X(i)=(X(i)1,X(i)2...X(i)n)) 中估计联合分布p(x1,x2...xn)
注意:有边有点不等于图模型。
神经网络,决策树,网络流都是不是。
因为节点不是“随机变量”,边不是概率概率关系(因为概率无向图模型中的边不是概率,是概率关系,因为势函数定义在最大团上,很难说边是概率)。
概率有向图模型,也叫贝叶斯网。
一个基于 有向无环图的贝叶斯网可以用下面的分布表示。
  • 其中Pak 是 xk 的父节点集合
  • p(xk|Pak)是在 xk 点上的条件概率分布
  • 通过确定所有点上的条件概率分布,能唯一的确定一个图模型p(X)
如:下贝叶斯网:
本图模型需要存储的数据:P(x1=1),P(x2=1),P(x3=1)   注意:P(x1=0) 可用1-P(x1=1) 表示。  3个
P(x4|x1,x2,x3)   2^3 (x1,x2,x3 的排列组合)   8个
p(x5|x1,x3)  2^2 =4 个
p(x6|x4)    2^1= 2 个
p(x7|x4,x5)    2^2=4 个
3+8+4+2+4=21< 2^7-1 =128-1=127
贝叶斯网的精简表示:
例如:我们在朴素贝叶斯中假设文章的特征由所有词来表示,所有词的都是独立的。所以我们根本不能精确地表示出来。
         
               所有词表示文章                       精简型
精简型中蓝筐中是所有词,N 表示词的个数。w 表示文章。
概率条件独立性
如果随机变量 A,B 独立则,P(A,B)=P(A)P(B) 或者 P(A|B)=P(A)
如果随机变量 A,B 关于C条件独立则,P(A,B|C)=P(A|C)P(B|C) 或者 P(A|B,C)=P(A|C)
以上公式可以扩展到多变量。
我们可以根据上边的公式去证明A,B是否独立。但是我们我可以用D-Separation 图,我们一眼就能看出来是否独立。
贝叶斯网中的条件独立性可以用Directed separation 精确表示。
D-separation
任意两组节点 A 和 B 关于另一个节点 C 条件独立,如果所有从 A中任一节点到 B 中任一节点的无向路径都被阻断。
某一路径是阻断的。
证明独立性:P(AB)=P(A)P(C)
证明条件独立性:P(A,B|C)=P(A|C)P(B|C) 
情景一:A,B 总的来说相互依赖,但是A,B 关于C 条件独立。
一个可见点 C 是一个 tail-to-tail 节点,阻断了路径A-B,所以A,B 独立
          图 a                         图 b
证明:P(A,B,C)=P(C)P(A|C)P(B|C)    (由图模型结果得,图 b)
          P(A,B,C)=P(A,B|C)P(C)             (条件概率公式)
          P(A,B|C)=P(A|C)P(B|C)            (结论A,B关于C条件独立)
          
          如果 C 已知(如图 b)P(A,B|C)=P(A)P(B)
          如果 C 已知,P(A,B,C)=P(C)P(A|C)P(B|C)==>P(A,B,C)=P(A,B)P(C)=P(C)P(A)P(B)
情景二:A,B 总的来说相互依赖,但是A,B 关于C 条件独立。
一个可见点 C 是一个 head-to-tail 节点,阻断了路径A-B,所以A,B 独立。
P(A,B,C)=P(A)P(C|A)P(B|C)=P(A,C)P(B|C)=P(C)P(A|C)P(B|C)           与情景一等价。
证明:P(A,B,C)=P(A)P(C|A)P(B|C)    (由图模型结果得)
   
如果 C 已知(如图 b)P(AB|C)=P(A)P(B)
如果 C 已知(如图 b)P(A,B,C)=P(A)P(C|A)P(B|C)==>P(A,B,C)=P(A)P(C)P(B)==>P(A,B)=P(A)P(B)     (A,B 关于条件独立)
其实情景一与情景二是等价的。
情景三:A,B 总的来说相互独立:如果C是一个可见点(已知)那么A,B 关于 C 条件依赖。
一个可见点 C 是一个 head-to-head 节点,打开了路径A-B
证明:P(A,B,C)=P(A)P(B)P(C|A,B)    (由图模型结果得)
          P(C|A,B)P(A,B)=P(A,B,C)          (条件概率公式)
          P(A,B)=P(A)P(B)                      (A,B 独立)
如果 C 已知(如图 b)P(A,B|C)=P(A)P(B)          
练习1:给定 C 的条件下,A和B 不独立。
分析:给定 C ,那么 E 也已知部分信息(就上最开始的猜球游戏,一旦我们知道一个球的信息,那么就也知道部分信封的信息),那么A 与 F 之间的路径被打开,A 与 F 关于 E 条件依赖,F 与 B依赖,那么 A 与 B 不独立。
如果 C 未知,A B 独立,因为A,F关于E 是Head to Head 那么A与F 独立,所以路径被阶段。
练习2:给定 F 的条件下,A和B 独立。
分析:A 与 F 独立,没有路径从 A 到 B。
一般图模型是由我们根据自己知识画出来的。像特征一样,我们根据自己知识设置特征的个数与种类。但是也有高级方法自动学习图模型,自动学习特征。
概率无向图模型
概率无向图模型也叫马尔科夫随机场 MRF(Markov Random Fields)
无向图中的团:一个全连接的节点集。
最大团:团中数量最多的一些团。
最大团为蓝色框内的 { x2,x3,x4 },x1 不包括在内,因为x1和x4 之间的没有连线。
定义一个最大团 C 上的非负势函数,    φ(x1,x2,...xn)>0  
这表示:自定义一个势函数:(x^2,e ^x 等)φc,自变量 Xc 是最大团中随机变量的一组随机变量如:x2,x3,x4,输出是大于0 的实数。
φc 在物理中叫能量函数。
势函数定义好以后就可以写出图模型的概率分布写出来。
   
P(X)=所有 最大团的势函数的连乘。1/Z  的作用是归一化。
Z 对于图模型(离散型)求和。
如果势函数不是定义在最大团上,那么在连乘时比较麻烦,找全所以的项。项也比较多。
Z 是分配函数(partition function)
下边我们看一个马尔科夫随机场简单的例子:
x1,x2 属于{-1,1} 单一团C,定义函数:
我们希望达到什么目标,都是通过势函数来反映。
            
由于x1,x2 属于{-1,1},所以一共有4中组合:{1,1},{-1,-1},{-1,1},{1,-1}
Z 是这四种参数的势函数之和。
我们可以看到符号相同的概率相同。
当a>0时,e^a>e^-a ,所以p(1,1)和P(-1,-1)的概率大于P(-1,1)和P(1,-1)。
  • 当a>0,模型倾向x1,x2同类(概率大)
  • 当a<0,模型倾向x1,x2异类(概率大)
我们看一下这样一个应用(图像的恢复,图像的去噪)。
           
      原图                    丢失数据图         无向图模型
我们将图片中每个像素定义为一个随机变量,这个随机变量可以取两个值(黄色,蓝色),所在模型中构成一层,组成网络。每个随机变量都对应另外一个随机变量。下边相连的节点表示真实图像中的像素点的取值。上边那一次是“丢失数据图”上像素点的取值(可观察去预测真实图像的像素值(未知,是空白))。
模型中有两种最大团,一种下边层中 x 与 x 的最大团,一种是上下层间的 x 与 y 之间的最大团。
概率最大时,就是能力函数值最小。
因为物理上,能量越小,越稳定。
:表示先验,就是图像80%是背景色。
:表示上下最大团。
  :表示下边那层网的最大团。
我们找一组随机变量X,Y 是我们图模型的概率最大,那么这组随机变量的组合,就是我们要找的。
如果 β η 同为正数,那么我们希望相邻像素的颜色相同。真实像素的颜色(x)应该跟我们看到颜色(y)应该相同。
如果 β 很大: 在 丢失数据图 中要求相邻元素尽可能相似,过度去噪,可能造成上边那个蓝点消失,甚至使整个图片都是黄色。
如果 η 很大:在丢失数据图 中要求每个元素与生产的元素尽可能相似,那么可能造成生成的图片与  丢失数据图 一摸一摸样。
势函数决定了无向图能做什么!
马尔科夫随机场的条件独立性
如图:两组变量 A,B 关于 C 条件独立,假如除去C 中的节点及所有与其连接的边后,A,B 变成非联通状态。
在马尔科夫随机场中,如果任意个节点可达,都不独立。
概率潜在语义分析    Probabilistic Latent Semantic Analysis(PLSA)
概率有向图模型(贝叶斯网)
分析观察数据背后的潜在影响因素:
应用:
1:根据用户行为挖掘兴趣。一个用户多个兴趣,不同用户相同的兴趣。
2.一词多义和一义多词。
假设一个电商要预测用户兴趣,给用户推荐更合适的商品。如果用概率模型做,这是个回归问题。需要回归用户对每件商品的概率。
     
                         图a                                       图b
图a 计算量:亿级别 * 亿级别                   
图b,将用户聚类(K个)。计算量:K * 亿级别
图b 是将用户硬分类。如果我们要将用户软聚类。
                图c
图 c
z 就是用户兴趣组。
计算量:2 * k * 亿级别 (如果 k 比用户和商品数小的很多的话,性能提升不少)    
图 c 就是 PLSA 的原理。
PLSA 最早出现在搜索领域,在PLSA出现之前,只能与关键词匹配才能搜索到信息。不能根据语义搜索。
PLSA的实现
所需的数据结构:
  • 词表 W={w1,w2...wm}
  • 文档集 D={d1,d2...dn}
  • 词文档矩阵 N,,表示wj 在di 中出现次数。
PLSA 模型
假设一个Topic集合:Z={z1,z2,...,zk}
 N 中每一个词都对应一个 z 值。
所以图模型为
黄球是:word                 ( m 个)
篮球是:topic                 ( k 个)
红球是:document          ( n 个)
共需存储 n*k + k*m + n 
n:p(d)
n*k:p(z|d)
m*k:p(w|z)
PLSA 图模型表示:
这两图模型是等价的。d,w 关于 z 条件独立。
参数估计:
在训练开始前,我们知道 d 和 w 但是我们知道 z 的信息,根据已知信息推出隐藏变量信息我们用EM算法(在不完全数据上估计)。
E-step 求隐藏变量的后验概率。(正是所缺少的  z 信息 )P(z|d,w) 已知d 和 w ,z 的概率。
M-step 有了P(z|d,w) 最大似然来更新 (解析解)
n(d,w):词频
注意:M-step:之所以我们要将p(d|z),p(w|z),p(z) 转化为正比于  p(z|d,w) ,是因为E-Step 求出了后验概率。
p(z|d,w)推导:
优化:在每次迭代 E 中,我们需要p(z),p(d|z),p(w|z) 三个数相乘,其实我们可以通过公式变形,减少变量的统计,及计算。
这样只有p(z|w)p(d|z) 两个概率相乘。
注意:在开始时,我们还没有p(z|d,w)的数据,我们为每个文章,每个词随机生成一个概率值。
由于EM 算法循环,我们也可以随机出来p(z|w) 和 p(d|z) 这两个值。当然根据公式不同,我们也可以随机p(d|z) 和 p(w|z),然后根据p(d|z) 和 p(w|z)计算出p(z)。
最大似然:由于文章时独立同分布。P(D)=∏ p(d) 等号两边取对数。
log(P(D))=∑log(p(d))
E-Step
这一步就是根据公式计算后验概率(在没有看到文章时 z 是先验概率,在看到文档和词时,z 的概率是后验概率)。
M-Step
如图:橘黄色的圆圈是词,是可见的。蓝色的圆圈是Topic,是不可见的。
计算p(d|z):横向 sum [z1,z2...,zk]=n(d,z)
计算p(d|z):纵向 sum [z1,z2...,zk]=n(w,z)   假设每列都是同一个Word。
计算p(z):sum(n(d,z),n(w,z))=n(z)=[z1,z2...zk]
p(d,zi)∝n(d,zi)
p(d|zi)=n(d,zi)/n(zi)
p(w|zi)=n(w,zi)/n(zi)
p(zi)=n(zi)/sum(n(z))
p(z|d,w) 是在每篇文章中对每个词Z1,Z2...Zk 分别统计,然后归一化(注意乘以词频)。
一义多词:
这相当于对词进行聚类。
最后我们能得到 P(w|z) ,我们可以根据 z 中概率最大的词作为标头。
一词多义:p(z|d,w) 得出。
PLSA 总结:
PLAS 是无监督。
我们可用PLSA做文章和词聚类(根据Topic)。
当然我们也可以用PLSA做分类。
来了一篇新文章来“预测”(这里预测是计算出新文章的所属Topic 的概率分布,这和分类还是有一定区别的,因为Topic并不是我事先指定的。甚至我们不知道他们的含义),由于我们没有新文章的p(d|z) 所以没有办法预测,这正是PLSA泛化能力不足之处。但是我们可以P(w|z)来模拟.p(d|z) 所以没有办法预测,这正是PLSA泛化能力不足之处。但是我们可以P(w|z)来模拟p(d|z)
p(d|z)模拟:
topic1topic2...tk
word1...
word2...
......
word m...
我们根据文章中词,在上边的词词表所有的Topic 相加,然后归一化。然后根据公式
,
计算p(z|d).
如果训练数据足够大,这样的方法还是比较靠谱的。
PLSA 可以解决有标注数据的稀疏问题(标注数据很少)。
假设我们有1000篇标注文章数据,有100万篇未标注的数据。
我们先用100万未标注的数据用PLSA得到词的 topic ,将1000篇标注文章套那些 topic ,计算出来这1000篇文章的 topic ,作为特征向量,进行模型的训练。这样比直接用词作为特征向量来训练模型好的多。
PLSA 的不足:
  1. 参数数量随着文档集大小线性增长。
  2. 泛化能力不足(解决方案:加入对文章的先验分布,参数化p(z|d),也就是LDA)  
LDA (Latent Dirichlet Allocation) 潜在狄利克雷分配:
基本思想:
如图:PLSA 就是图中黑点是每篇文章都对应一个P(d|z),是离散的,对于新文章就没有p(d|z)。为了解决这个问题,我们想拟合一个分布(如图中线),这样就将离散的文章变成连续的值。来了新文章,我们可以找到对应的p(d|z)。
LDA 用的是Dirichlet 分布。
在解释Dirichlet 分布,我们先看一下Bate分布。Bate 分布一元概率分布,Dirichlet 分布是将Bate分布扩展到多元。
这几条线就像,几家造币厂。有些造币厂造的币比较均匀了,像那根绿线,大部分硬币上抛正反面的概率都是0.5。粉红那条线表示的造币厂质量稍微有偏差,80%都是正面,20%是背面。这些表示概率分布。
Dirichlet 分布:
三个角表示三个Topic。
图 a,文档集中文章大部分都在讨论第 3 个话题。
图 b,文档集中文章大部分都在讨论第1,2个话题。
图 c,文档集中文章讨论 3 个 比较均匀。
图 d,文档集中文章大部分都在讨论第1,3个话题。
θ:是 topic θ∈(0,1) 是概率。
LDA 过程:建模文档生成过程
1.确定文章词的个数(n)
2.θ=[],θ=dir(α) ,由 参数为 α 的Dirichlet 分布生成一个θ (就像在参数 α 的分布下抛了一个硬币,注意每次可能都一不一样,并且此处的 θ 是多元的Topic分布。之前PLSA文章的Topic是唯一确定,这里是由另一个分布产生的)。
3. for i in range(n):  每次循环生成一个词。本篇文章在同一个参数 θ 的Dirichlet 分布下产生。
      topic=Multinomial(q)    由 θ 的多项分布生成一个 topic.  这是一个具体的topic
      word=Multinomial(topic)  相当于在topic 下所有词中又抛出一个词。
     
有这个过程我们可以画出LDA的图模型了。
由于只有 w 是已知的,所以我们用全概率公式将θ 积分积掉。z 用求和去掉。
P(D|α,β) 是整个文档集的似然。
β 就是word and topic的矩阵。
topic1topic2...tk
word1...
word2...
......
word m...
θ:就是文章所属 topic 的分布。θ 从分布而来。z:词所属的 topic(一个Topic) 。θ,z 是隐藏变量(θ,α 是 k 维的实数向量),
N 是一篇文章中词个数(特征数)。
M 是文档集中文档数。
P(w|α,β) :全概率公式。θ 是连续,求积分。对z 求和。
图模型可以做推理
p(θ,z|w,α,β):已知w 和α,β 来计算文章所有的Topic,即词所属的topic。
根据条件概率公式我们知道上边的公式。p(θ,z,w|α,β) 蛮好求的。
P(w|α,β) 很难计算
P(w|α,β)  是无法计算的。没有办法用EM算法,E 步骤后验概率 p(θ,z|α,β,w) 计算不了。
可以用变分法和Gibbs 采样法。
Smoothed LDA
LDA 中,如果遇到没有训练集中没有遇到过的词,当然可以很暴力的丢弃掉。也可以像LDA解决PLSA的泛化能力问题一样,让词也从分布而来。
每个topic 在词集上分布 βi 也是随机变量,服从参数为 ηi 的Dirichlet分布。
图模型:
k: 是topic 个数(相当于服从参数为 ηi 的Dirichlet分布,k个筛子同时抛)
N:表示一篇文章中的词个数
M:文档个数
Gibbs 采样法
模型:smoothed 的LDA
参数估计:1.对每个词所对应的 topic 进行采样。
                2.根据整个文档集采样的结果估计参数。
φj:第 j 个topic w(词 的概率
θj:第 j 个topic 文章 的概率
在PLSA中 P(z|d),P(z|w),P(z)是通过行统计和列统计出来的。Gbbis 采样的是通过抛硬币得出来的。硬币不是随便抛的。先计W5 的[z1,z2...zk],根据概率大小抛硬币,抛出哪个就哪个。
在这样一个区间上抛硬币,z的区间越大,被抛中的概率越大。
这里蓝色球时某一个Topic,不是列表(topic,[z1,z2...zk])。对所有蓝色节点都采完样后,我们就可以最大似然进行计算。
上边介绍的方法其中要计算出w5 [z1,z2...zk]。
1.在全表(除 w5 )找到出现的w5的词 A。如果一列是同一个词,就是一列上统计。
2.统计A中zi 的个数 len(zi),len(zi)/len(A)   与图左边的公式(加了平滑)一致。这样就计算出W5 [z1,z2...zk]
我们要找d1[z1,z2,...zk]
1.在一行中出w5 词外,其他的词A
2.统计A中zi 的个数 len(zi),len(zi)/len(A)   与图左边的公式(加了平滑)一致。这样就计算出d1 [z1,z2...zk]
将w5[z1,z2,...zk] 和d1[z1,z2,...zk] 相乘,然后归一化就得到 z 的后验概率分布。
然后循环上1000轮后,就可以用W5 [z1,z2...zk]和d1 [z1,z2...zk]作为最后结果了。
评价和应用:
perplesity(混乱度)
由于我们优化时是最大似然优化的,所以用最大似然来评价当然是最好的,似然值越大越好。
但是log似然的值太小,写报告不好看,所以用了尺度变换,是最后的数字比较好看。
训练完毕后我们得到 p(z|d) 和 p(z|w) 。
p(z|d):文档分类,聚类,检索
p(z|w):词分类,词聚类
我们可以直接用p(z|d) 直接作为文章的特征向量。之前所有对文章的机器学习方法都可以用了。
下边我们看一下使用文档的topic 分布作为特征和用词作为词效果比较。
文本分类:
有图看到:训练数据比较少时,LDA Features 效果还是比较好。随着训练数据增大两者差不多,最后甚至word Features 可能会更好。因为LDA 假设先验分布(Dirichlet分布),真实数据可能不是Dirichlet分布,而是长尾分布。
协同过滤
训练:利用用户对电影的喜好数据建模
预测:基于用户的部分数据Wobs预测其对新电影 W 的喜好程度。

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

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

相关文章

Linux高阶IO之select多路转接

文章目录 select多路转接timeoutfd_set返回值执行过程总结 select多路转接 多路转接有三种方案,分别是select,poll和epoll,我们都会讲解和介绍 select的函数原型是这样的 他一共有五个参数,但是可以分为三组 nfds:需要监视的最大的文件描述符值1readfds:可读文件描述符集合 …

C#邮件发送:实现自动化邮件通知完整指南!

C#邮件发送性能怎么优化&#xff1f;使用C#发送邮件的设置步骤&#xff1f; 无论是用于客户服务、内部沟通还是项目管理&#xff0c;自动化邮件通知都能显著提高效率和响应速度。AokSend将详细介绍如何使用C#邮件发送功能来实现自动化邮件通知系统。 C#邮件发送&#xff1a;配…

二、词法分析,《编译原理》(本科教学版),第2版

文章目录 一、词法分析器1.1 词法分析器的作用1.2 词法分析器的设计方法1.3Antlr 词法分析器生成器1.3.1 环境准备1.3.2 词法分析器自动生成初体验&#xff08;需了解少许正则表达式概念&#xff09;1.3.2.1 创建工程1.3.2.2 空白符逻辑1.3.2.3 实现INT类型1.3.2.4 实现单行注释…

ClkLog常见问题-埋点集成篇Sec. 2

本篇将继续解答ClkLog使用过程中【埋点集成】阶段的常见问题。 1.【埋点集成】 问&#xff1a;receiver数据接收是不是一定要有ssl证书&#xff1f; 答&#xff1a;不是。 2.【埋点集成】 问&#xff1a;接收服务地址从哪里获取&#xff1f; 答&#xff1a;接收服务地址参考&am…

死磕P7: JVM垃圾回收那点事,轻松拿捏不是事儿(一)

这是「死磕P7」系列第 003 篇文章&#xff0c;欢迎大家来跟我一起 死磕 100 天&#xff0c;争取在 2025 年来临之际&#xff0c;给自己一个交代。 上两篇介绍了 JVM 内存区域划分&#xff0c;简单记忆一下就可以了&#xff0c;后面再不断深入吧。 死磕P7: JVM内存划分必知必会…

Spring邮件发送:配置与发送邮件详细步骤?

Spring邮件发送教程指南&#xff1f;怎么用Spring邮件发送服务&#xff1f; Spring框架提供了强大的邮件发送支持&#xff0c;使得开发者能够轻松地在应用程序中集成邮件发送功能。AokSend将详细介绍如何在Spring应用中配置和发送邮件&#xff0c;帮助开发者快速掌握这一关键技…

浙大数据结构:06-图2 Saving James Bond - Easy Version

这道题是稍复杂版的dfs或bfs&#xff0c;此处我采用bfs实现 机翻&#xff1a; 1、条件准备 n为鳄鱼数量&#xff0c;jump为跳一次最大距离。 eyu数组对存每条鳄鱼的坐标位置&#xff0c;visit数组判断该鳄鱼是否走过&#xff0c;isalive判断到达该鳄鱼时能否逃离。 #includ…

探索图像生成大模型Imagen:原理、比较与应用

目录 目录 1. 引言 2. 图像生成模型的发展背景 2.1 生成对抗网络&#xff08;GAN&#xff09; 2.2 变分自编码器&#xff08;VAE&#xff09; 2.3 自回归模型 2.4 扩散模型 3. Imagen简介 3.1 模型架构 3.2 关键技术 3.3 训练数据与方法 4. Imagen与其他模型的比较 …

ArcGIS Pro高级地图可视化—双变量符号地图

ArcGIS Pro高级地图可视化 ——双变量符号地图 1 背景 “我不是双变量&#xff0c;但我很好奇。”出自2013 年南卡罗来纳州格林维尔举行的 NACIS 会议上&#xff0c;双变量地图随着这句俏皮的话便跳跃在人们的视角下&#xff0c;在讨论二元映射之后&#xff0c;它不仅恰逢其…

AOT源码解析4.5-AOT整体结构

论文阅读 papergithub论文阅读笔记AOT源码解析1-数据集处理AOT源码解析2-encoderdecoderAOT源码解析3-模型训练AOT源码解析4.1-model主体AOT源码解析4.2-model主体AOT源码解析4.3-model主体AOT源码解析4.4-model主体AOT源码解析4.5-model主体 4.1~4.4小节详细讲解了ref_imgs相…

15年408-数据结构

第一题 解析&#xff1a; 栈第一次应该存main的信息。 然后进入到main里面&#xff0c;要输出S(1)&#xff0c;将S(1)存入栈内&#xff0c; 进入到S(1)中&#xff0c;1>0,所以还要调用S(0) S(0)进入栈中&#xff0c;此时栈内从下至上依次是main(),S(1),S(0) 答案选A 第二题&…

Java基于相似算法实现以图搜图

一、简述 本文主要讲如何利用图片相似性算法&#xff0c;基于LIRE来实现图片搜索。 二、依赖 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-core --><dependency><groupId>org.apache.lucene</groupId><…

Apache Solr:深入探索与常见误区解析

Apache Solr&#xff1a;深入探索与常见误区解析 Apache Solr 是一个强大的搜索引擎&#xff0c;基于 Lucene 构建&#xff0c;广泛应用于电商平台、日志分析、内容管理系统等领域。Solr 的功能强大&#xff0c;然而它的配置和使用过程却不乏一些容易误解和出错的地方。本文将…

Spring validation校验框架

第1步&#xff1a;导入依赖 <!-- 校验框架--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency> 第2步&#xff1a;为需要校验的参数&…

Leetcode 739.42. 每日温度 接雨水 单调栈 C++实现

问题&#xff1a;Leetcode 739. 每日温度 算法1&#xff1a;从右到左 栈中记录下一个更大元素的「候选项」。 代码&#xff1a; class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {int n temperatures.size();vector<…

【echarts】报错series.render is required.

总结&#xff1a;就是echarts无法保存renderItem函数到json里&#xff0c;因为renderItem是个封装方法&#xff0c;因此需要初始化加载时重新插入renderItem即可 1.描述&#xff1a;控制台报错series.render is required. 原数据json如下&#xff1a; {type: "bar"…

【数学分析笔记】第3章第4节闭区间上的连续函数(2)

3. 函数极限与连续函数 3.4 闭区间上的连续函数 3.4.4 中间值定理 【定理3.4.4】若 f ( x ) f(x) f(x)在 [ a , b ] [a,b] [a,b]上连续&#xff0c;则它一定能取到最大值 M M M与最小值 m m m之间的任何一个值。 M max ⁡ f ( x ) , x ∈ [ a , b ] , m min ⁡ f ( x ) , …

Vmware 静态ip配置

虚拟机网络设置NAT 查看当前的网络接口 ip addr编辑网络接口配置文件 sudo vi /etc/sysconfig/network-scripts/ifcfg-<接口名>配置静态 IP 地址 Vmware ➡ 编辑 ➡ 虚拟网络编辑器 ➡ Nat设置 参考上图进行配置&#xff0c;千万不要配置宿主机的配置 BOOTPROTOstat…

2023_Spark_实验十一:RDD基础算子操作

一、RDD的练习可以使用两种方式 使用Shell使用IDEA 二、使用Shell练习RDD 当你打开 Spark 的交互式命令行界面&#xff08;也就是 Spark shell&#xff09;的时候&#xff0c;它已经自动为你准备好了一个叫做 sc 的特殊对象&#xff0c;这个对象是用来和 Spark 集群沟通的。你…

女性在网络安全行业崛起,引领行业新风向

1、网络安全自诞生之日起&#xff0c;就与女性有着不解之缘。 ●二战期间&#xff0c;美国雇佣了1万名女性作为“密码女孩”来破译日本人和德国人发送的密信。 ●英国同样雇用了7000多名女性在英国密码分析中心工作&#xff0c;约占全部工作人员的四分之三。 ●世界上的第一…