机器学习笔记之近似推断(二)推断的核心思想

news/2024/4/19 23:09:54/文章来源:https://blog.csdn.net/qq_34758157/article/details/129236965

机器学习笔记之近似推断——推断的核心思想

  • 引言
    • 回顾:推断的目的与困难
      • 推断的目的
      • 推断的困难
    • 推断的核心思想——优化

引言

上一节介绍了从深度学习的角度介绍了推断,并介绍了推断的目的和困难。本节将继续介绍推断的核心思想

回顾:推断的目的与困难

推断的目的

推断不仅局限于深度生成模型。实际上,所有基于概率图结构的模型,特别是基于隐变量的概率图模型,都需要推断任务。推断的目的主要包含两种情况:

并不是一上来就可以针对陌生的变量进行推断,必须要在模型给定,并且当前模型参数已知的情况下,才能够执行推断。

推断的困难

推断困难的原因主要有两个:

  • 随机变量的概率能够表示,但计算代价太大。依然以隐马尔可夫模型中的解码问题为例,它的目标可表示为如下形式:
    I^=arg⁡max⁡IP(I∣O;λ)\hat {\mathcal I} = \mathop{\arg\max}\limits_{\mathcal I} \mathcal P(\mathcal I \mid \mathcal O;\lambda)I^=IargmaxP(IO;λ)
    其中I\mathcal II表示基于时间/序列的随机变量集合:I={i1,i2,⋯,iT}\mathcal I = \{i_1,i_2,\cdots,i_T\}I={i1,i2,,iT},假设每一个随机变量it(t=1,2,⋯,T)i_t(t=1,2,\cdots,T)it(t=1,2,,T)均属于离散型随机变量
    it=qk(qk∈Q={q1,q2,⋯,qK})i_t = q_k(q_k\in \mathcal Q = \{q_1,q_2,\cdots,q_{\mathcal K}\})it=qk(qkQ={q1,q2,,qK})
    那么随机变量集合I\mathcal II可以得到 KT{\mathcal K}^TKT种不重复的状态序列组合。而最终目标仅需要一个最优组合
    I^={i^1,i^2,⋯,i^T}\hat {\mathcal I} = \{\hat {i}_1,\hat i_2,\cdots,\hat i_{T}\}I^={i^1,i^2,,i^T}
    如果将所有序列组合全部求解出来去比较,这个计算代价极大。因而可采用维特比算法这种基于贪心策略的方法进行求解。

  • 由于随机变量之间关系过于复杂,导致随机变量的概率根本无法表示玻尔兹曼机(Boltzmann Machine\text{Boltzmann Machine}Boltzmann Machine)就是一个典型的例子。玻尔兹曼机中观测变量、隐变量内部可能存在关联关系,这种结构导致后验概率P(Z∣X)\mathcal P(\mathcal Z \mid \mathcal X)P(ZX)没有办法精准地梳理开。
    当然,Hinton\text{Hinton}Hinton老爷子也给出了一种基于MCMC\text{MCMC}MCMC的求解方式。

    假设观测变量集合V\mathcal VV与隐变量集合H\mathcal HH 分别表示如下:
    {H={h1,h2,⋯,hm}V={v1,v2,⋯,vn}\begin{cases} \mathcal H = \{h_1,h_2,\cdots,h_m\} \\ \mathcal V = \{v_1,v_2,\cdots,v_n\} \end{cases}{H={h1,h2,,hm}V={v1,v2,,vn}
    那么某一隐变量hj(j∈{1,2,⋯,m})h_j(j \in \{1,2,\cdots,m\})hj(j{1,2,,m})后验概率分布可表示为:
    推导过程详见玻尔兹曼机——MCMC\text{MCMC}MCMC求解后验概率,就是因为hjh_jhjh−jh_{-j}hj存在关联关系,才导致P(hj∣V)≈P(hj∣V,h−j)\mathcal P(h_j \mid \mathcal V) \approx \mathcal P(h_j \mid \mathcal V,h_{-j})P(hjV)P(hjV,hj)的近似操作。
    P(hj∣V,h−j)=P(hj,V,h−j)P(h−j,V)=P(H,V)∑hjP(H,V)h−j=(h1,⋯,hj−1,hj+1,⋯,hm)\begin{aligned} \mathcal P(h_j \mid \mathcal V,h_{-j}) & = \frac{\mathcal P(h_j,\mathcal V,h_{-j})}{\mathcal P(h_{-j},\mathcal V)} \\ & = \frac{\mathcal P(\mathcal H,\mathcal V)}{\sum_{h_j}\mathcal P(\mathcal H,\mathcal V)} \quad h_{-j} = (h_1,\cdots,h_{j-1},h_{j+1},\cdots,h_m) \end{aligned}P(hjV,hj)=P(hj,V)P(hj,V,hj)=hjP(H,V)P(H,V)hj=(h1,,hj1,hj+1,,hm)

推断的核心思想——优化

推断的推导过程EM\text{EM}EM算法变分推断过程中已经详细地介绍过。其底层逻辑就是:将隐变量的后验概率求解问题 转化成优化问题,即基于极大似然估计,将观测变量(样本)的对数似然函数(log-likelihood\text{log-likelihood}log-likelihood) log⁡P(V)\log \mathcal P(\mathcal V)logP(V)转化成证据下界ELBO\text{ELBO}ELBO + KL\text{KL}KL散度,并最大化ELBO\text{ELBO}ELBO的问题

  • 已知样本集合V\mathcal VV包含NNN个样本,并包含nnn随机变量
    V={v(i)}i=1Nv(i)=(v1(i),v2(i),⋯,vn(i))T\mathcal V = \{v^{(i)}\}_{i=1}^N \quad v^{(i)} = (v_1^{(i)},v_2^{(i)},\cdots,v_n^{(i)})^TV={v(i)}i=1Nv(i)=(v1(i),v2(i),,vn(i))T

  • 关于观测变量集合V\mathcal VV的对数似然函数log⁡P(V)\log \mathcal P(\mathcal V)logP(V)可表示为如下形式:

    • 样本之间‘独立同分布’。
    • 配分函数——对数似然梯度中提到,可以在最前面乘以一个常数项1N\frac{1}{N}N1,即1N∑i=1Nlog⁡P(v(i))\frac{1}{N}\sum_{i=1}^N \log \mathcal P(v^{(i)})N1i=1NlogP(v(i))
      该常数项本身恒正,在极大似然估计求解过程中并不会产生影响。但从蒙特卡洛方法(Monte Carlo Method\text{Monte Carlo Method}Monte Carlo Method)逆向推导的思路中可以观察到,它明显是一个期望:1N∑i=1Nlog⁡P(v(i))≈Ev(i)∼Pdata[log⁡P(v(i))]\frac{1}{N} \sum_{i=1}^N \log \mathcal P(v^{(i)}) \approx \mathbb E_{v^{(i)} \sim \mathcal P_{data}} \left[\log \mathcal P(v^{(i)})\right]N1i=1NlogP(v(i))Ev(i)Pdata[logP(v(i))],其中Pdata\mathcal P_{data}Pdata表示真实样本分布。
      log⁡P(V)=log⁡[∏i=1NP(v(i))]=∑i=1Nlog⁡P(v(i))\begin{aligned} \log \mathcal P(\mathcal V) & = \log \left[\prod_{i=1}^N \mathcal P(v^{(i)})\right] \\ & = \sum_{i=1}^N \log \mathcal P(v^{(i)}) \end{aligned}logP(V)=log[i=1NP(v(i))]=i=1NlogP(v(i))
  • 继续观察关于某个样本v(i)v^{(i)}v(i)对数似然函数log⁡P(v(i))\log \mathcal P(v^{(i)})logP(v(i))是如何分解的。

    基于贝叶斯定理,引入观测变量v(i)v^{(i)}v(i)对应模型的隐变量h(i)h^{(i)}h(i),可将log⁡P(v(i))\log \mathcal P(v^{(i)})logP(v(i))表示成如下形式:
    log⁡P(v(i))=log⁡[P(v(i),h(i))P(h(i)∣v(i))]\log \mathcal P(v^{(i)}) = \log \left[\frac{\mathcal P(v^{(i)},h^{(i)})}{\mathcal P(h^{(i)} \mid v^{(i)})}\right]logP(v(i))=log[P(h(i)v(i))P(v(i),h(i))]
    引入一个人为设定的分布Q(h(i)∣v(i))\mathcal Q(h^{(i)} \mid v^{(i)})Q(h(i)v(i)),并将其转化为如下形式:

    • 需要注意的是,这个分布Q(h(i)∣v(i))\mathcal Q(h^{(i)} \mid v^{(i)})Q(h(i)v(i))是一个以v(i)v^{(i)}v(i)为条件的后验概率分布。
    • log⁡P(v(i))\log \mathcal P(v^{(i)})logP(v(i))使用I\mathcal II进行替代。
      I=log⁡[P(v(i),h(i))Q(h(i)∣v(i))⋅Q(h(i)∣v(i))P(h(i)∣v(i))]=log⁡[P(v(i),h(i))Q(h(i)∣v(i))]+log⁡[Q(h(i)∣v(i))P(h(i)∣v(i))]\begin{aligned} \mathcal I & = \log \left[\frac{\mathcal P(v^{(i)},h^{(i)})}{\mathcal Q(h^{(i)} \mid v^{(i)})} \cdot \frac{\mathcal Q(h^{(i)} \mid v^{(i)})}{\mathcal P(h^{(i)} \mid v^{(i)})}\right] \\ & = \log \left[\frac{\mathcal P(v^{(i)},h^{(i)})}{\mathcal Q(h^{(i)} \mid v^{(i)})}\right] + \log \left[\frac{\mathcal Q(h^{(i)} \mid v^{(i)})}{\mathcal P(h^{(i)} \mid v^{(i)})}\right] \end{aligned}I=log[Q(h(i)v(i))P(v(i),h(i))P(h(i)v(i))Q(h(i)v(i))]=log[Q(h(i)v(i))P(v(i),h(i))]+log[P(h(i)v(i))Q(h(i)v(i))]

    观察第一项log⁡[P(v(i),h(i))Q(h(i)∣v(i))]\log \left[\frac{\mathcal P(v^{(i)},h^{(i)})}{\mathcal Q(h^{(i)} \mid v^{(i)})}\right]log[Q(h(i)v(i))P(v(i),h(i))]log⁡P(v(i))=log⁡[P(v(i),h(i))P(h(i)∣v(i))]\log \mathcal P(v^{(i)}) =\log \left[\frac{\mathcal P(v^{(i)},h^{(i)})}{\mathcal P(h^{(i)} \mid v^{(i)})}\right]logP(v(i))=log[P(h(i)v(i))P(v(i),h(i))]之间,可以将其理解成:人为设定分布Q(h(i)∣v(i))\mathcal Q(h^{(i)} \mid v^{(i)})Q(h(i)v(i))替代了P(h(i)∣v(i))\mathcal P(h^{(i)} \mid v^{(i)})P(h(i)v(i))分布的位置;而log⁡[Q(h(i)∣v(i))P(h(i)∣v(i))]\log \left[\frac{\mathcal Q(h^{(i)} \mid v^{(i)})}{\mathcal P(h^{(i)} \mid v^{(i)})}\right]log[P(h(i)v(i))Q(h(i)v(i))]可理解为:分布Q(h(i)∣v(i))\mathcal Q(h^{(i)} \mid v^{(i)})Q(h(i)v(i))与分布P(h(i)∣v(i))\mathcal P(h^{(i)} \mid v^{(i)})P(h(i)v(i))之间存在的某种关联关系

    分别对等式两端基于Q(h(i)∣v(i))\mathcal Q(h^{(i)} \mid v^{(i)})Q(h(i)v(i))求解积分
    其中I\mathcal II中不包含h(i)h^{(i)}h(i),因而有∫h(i)I⋅Q(h(i)∣v(i))dh(i)=I∫h(i)Q(h(i)∣v(i))dh(i)=I⋅1=I\int_{h^{(i)}} \mathcal I \cdot \mathcal Q(h^{(i)} \mid v^{(i)}) dh^{(i)} = \mathcal I \int_{h^{(i)}} \mathcal Q(h^{(i)} \mid v^{(i)}) dh^{(i)} = \mathcal I \cdot 1 = \mathcal Ih(i)IQ(h(i)v(i))dh(i)=Ih(i)Q(h(i)v(i))dh(i)=I1=I(概率密度积分),因而关注点在等式右侧的积分过程。
    I=∫h(i)Q(h(i)∣v(i))log⁡[P(v(i),h(i))Q(h(i)∣v(i))]dh(i)+∫h(i)Q(h(i)∣v(i))log⁡[Q(h(i)∣v(i))P(h(i)∣v(i))]dh(i)=EQ(h(i)∣v(i)){log⁡[P(v(i),h(i))Q(h(i)∣v(i))]}⏟Evidence of Lower Bound,ELBO+KL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))]⏟KL Divergence\begin{aligned} \mathcal I & = \int_{h^{(i)}} \mathcal Q(h^{(i)} \mid v^{(i)}) \log \left[\frac{\mathcal P(v^{(i)},h^{(i)})}{\mathcal Q(h^{(i)} \mid v^{(i)})}\right] d h^{(i)} + \int_{h^{(i)}} \mathcal Q(h^{(i)} \mid v^{(i)}) \log \left[\frac{\mathcal Q(h^{(i)} \mid v^{(i)})}{\mathcal P(h^{(i)} \mid v^{(i)})}\right] dh^{(i)} \\ & = \underbrace{\mathbb E_{\mathcal Q(h^{(i)} \mid v^{(i)})} \left\{\log \left[\frac{\mathcal P(v^{(i)},h^{(i)})}{\mathcal Q(h^{(i)} \mid v^{(i)})}\right]\right\}}_{\text{Evidence of Lower Bound,ELBO}} + \underbrace{\text{KL} \left[\mathcal Q(h^{(i)} \mid v^{(i)}) || \mathcal P(h^{(i)} \mid v^{(i)})\right]}_{\text{KL Divergence}} \end{aligned}I=h(i)Q(h(i)v(i))log[Q(h(i)v(i))P(v(i),h(i))]dh(i)+h(i)Q(h(i)v(i))log[P(h(i)v(i))Q(h(i)v(i))]dh(i)=Evidence of Lower Bound,ELBOEQ(h(i)v(i)){log[Q(h(i)v(i))P(v(i),h(i))]}+KL DivergenceKL[Q(h(i)v(i))∣∣P(h(i)v(i))]
    可以将ELBO\text{ELBO}ELBO继续向下分解,得到如下形式:
    I=EQ(h(i)∣v(i))[log⁡P(v(i),h(i))−log⁡Q(h(i)∣v(i))]+KL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))]=EQ(h(i)∣v(i))[log⁡P(v(i),h(i))]−EQ(h(i)∣v(i))[Q(h(i)∣v(i))]⏟H[Q(h(i)∣v(i))];Entropy+KL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))]\begin{aligned} \mathcal I & = \mathbb E_{\mathcal Q(h^{(i)} \mid v^{(i)})} \left[\log \mathcal P(v^{(i)},h^{(i)}) - \log \mathcal Q(h^{(i)} \mid v^{(i)})\right] + \text{KL} \left[\mathcal Q(h^{(i)} \mid v^{(i)}) || \mathcal P(h^{(i)} \mid v^{(i)})\right] \\ & = \mathbb E_{\mathcal Q(h^{(i)} \mid v^{(i)})} \left[\log \mathcal P(v^{(i)},h^{(i)})\right] \underbrace{- \mathbb E_{\mathcal Q(h^{(i)} \mid v^{(i)})} \left[\mathcal Q(h^{(i)} \mid v^{(i)})\right]}_{\mathcal H[\mathcal Q(h^{(i)} \mid v^{(i)})];\text{Entropy}} + \text{KL} \left[\mathcal Q(h^{(i)} \mid v^{(i)}) || \mathcal P(h^{(i)} \mid v^{(i)})\right] \end{aligned}I=EQ(h(i)v(i))[logP(v(i),h(i))logQ(h(i)v(i))]+KL[Q(h(i)v(i))∣∣P(h(i)v(i))]=EQ(h(i)v(i))[logP(v(i),h(i))]H[Q(h(i)v(i))];EntropyEQ(h(i)v(i))[Q(h(i)v(i))]+KL[Q(h(i)v(i))∣∣P(h(i)v(i))]

  • 最终,对数似然函数log⁡P(V)\log \mathcal P(\mathcal V)logP(V)可表示为:
    log⁡P(V)=∑i=1NI=∑i=1N{EQ(h(i)∣v(i))[log⁡P(v(i),h(i))]−EQ(h(i)∣v(i))[Q(h(i)∣v(i))]⏟H[Q(h(i)∣v(i))];Entropy+KL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))]}\begin{aligned} \log \mathcal P(\mathcal V) & = \sum_{i=1}^N \mathcal I \\ & = \sum_{i=1}^N \left\{\mathbb E_{\mathcal Q(h^{(i)} \mid v^{(i)})} \left[\log \mathcal P(v^{(i)},h^{(i)})\right] \underbrace{- \mathbb E_{\mathcal Q(h^{(i)} \mid v^{(i)})} \left[\mathcal Q(h^{(i)} \mid v^{(i)})\right]}_{\mathcal H[\mathcal Q(h^{(i)} \mid v^{(i)})];\text{Entropy}} + \text{KL} \left[\mathcal Q(h^{(i)} \mid v^{(i)}) || \mathcal P(h^{(i)} \mid v^{(i)})\right]\right\} \end{aligned}logP(V)=i=1NI=i=1NEQ(h(i)v(i))[logP(v(i),h(i))]H[Q(h(i)v(i))];EntropyEQ(h(i)v(i))[Q(h(i)v(i))]+KL[Q(h(i)v(i))∣∣P(h(i)v(i))]
    根据极大似然估计,将推断任务:求解P(h(i)∣v(i))\mathcal P(h^{(i)} \mid v^{(i)})P(h(i)v(i))转换为了:

    • 使用Q(h(i)∣v(i))\mathcal Q(h^{(i)} \mid v^{(i)})Q(h(i)v(i))替代了P(h(i)∣v(i))\mathcal P(h^{(i)} \mid v^{(i)})P(h(i)v(i))
    • 选择合适的Q(h(i)∣v(i))\mathcal Q(h^{(i)} \mid v^{(i)})Q(h(i)v(i))优化目标函数,使得目标函数ELBO=L[v(i),h(i),Q(h(i)∣v(i))]\text{ELBO} = \mathcal L \left[v^{(i)},h^{(i)},\mathcal Q(h^{(i)} \mid v^{(i)})\right]ELBO=L[v(i),h(i),Q(h(i)v(i))]达到最大:
      arg⁡max⁡Q(h(i)∣v(i))L[v(i),h(i),Q(h(i)∣v(i))]\mathop{\arg\max}\limits_{\mathcal Q(h^{(i)} \mid v^{(i)})} \mathcal L \left[v^{(i)},h^{(i)},\mathcal Q(h^{(i)} \mid v^{(i)})\right]Q(h(i)v(i))argmaxL[v(i),h(i),Q(h(i)v(i))]

相关参考:
(系列二十五)近似推断2-推断即优化

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

写给交互设计新手的信息架构全方位指南

目录什么是信息架构?通用方法日常工作可以关注的大神常用工具相关书籍什么是信息架构?信息架构是一个比众多其他领域更难定义的领域。内容策划由内容策划师来完成,交互设计由设计师来完成,而信息架构的完成与它们不同,…

达梦数据库(DM8)集成使用 Geotools(27.2)

达梦数据库(DM8)集成使用 Geotools(27.2)系统环境版本达梦 8 集成 Geotools 环境安装达梦8,请参照项目 pom.xml 添加 geotools 配置项目 pom.xml 添加达梦数据库驱动包Geotools 使用示例Geotools 连接数据库Geotools 空…

CLion Remote Debug CrossCompile

CLion远程Docker调试ROS(交叉编译)的设置步骤 准备一个好用的docker,运行起来(Docker Image一定可以跑cuda和图形界面的,否则启动不了CLion,可以不用浪费时间看本教程了) 在docker镜像中配置好ssh和rsync,…

测量 R 代码运行时间的 5 种方法

简介 平常在撰写论文时,会需要比较算法之间的计算时间。本篇文章给出几种测量 R 代码运行时间的方法。本文是小编学习过程中的笔记,主要参考博客1,2。 1. 使用 Sys.time() 小编通常使用 Sys.time() 函数来计算时间。首先记录当前运行时刻&…

数据结构与算法之Huffman tree(赫夫曼树 / 霍夫曼树 / 哈夫曼树 / 最优二叉树)

目录赫夫曼树概述定义构造赫夫曼树步骤代码实现赫夫曼树概述 HuffmanTree因为翻译不同所以有其他的名字:赫夫曼树、霍夫曼树、哈夫曼树 赫夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点…

如何在logback.xml中自定义动态属性

原文地址:http://blog.jboost.cn/trick-logback-prop.html 当使用logback来记录Web应用的日志时,我们通过在logback.xml中配置appender来指定日志输出格式及输出文件路径,这在一台主机或一个文件系统上部署单个实例没有问题,但是…

超店有数分享:2023还有哪些tiktok数据值得关注?

目前,tiktok是全球增长最迅猛的社交媒体软件之一。很多商家瞄准了tiktok的变现转化潜力,纷纷入局tiktok电商赛道。在入局这个赛道之前,我们需要了解一些tiktok的相关数据,这样才能更好的了解大局,及时调整自己的业务情…

Python 简单可变、复杂可变、简单不可变、复杂不可变类型的copy、deepcopy的行为

copy模块:copy:浅拷贝deepcopy:深拷贝简单可变类型、复杂可变的copy()、deepcopy():简单不可变、复杂不可变类型的copy()、deepcopy():结论:对于简单类型的可变类型copy是深拷贝,改变了该拷贝变…

TIA博途Wincc中自定义配方画面的具体方法示例

TIA博途Wincc中自定义配方画面的具体方法示例 前面和大家分享了通过TIA博途自带的配方视图组态配方功能的具体方法,具体内容可参考以下链接中的内容: TIA PORTAL wincc中配方recipe组态及配方视图的使用方法 但是,使用配方视图的时候感觉不是很方便,同时一部分使用人员也感…

机房运维6大隐患,你中了几个?

随着医院的看诊预约、缴费、打印报告等众多业务转至线上进行,对医院的网络及数据处理能力提出越来越高的要求,那么,机房的稳定、安全运行是医院网络信息系统的关键因素。 机房运维6大隐患 01.电源电力系统不稳定,网络设备运转遭到…

C/C++语法练习之顺序结构篇

名人说: 如果你问一个善于溜冰的人怎样获得成功时, 他会告诉你:“跌倒了,爬起来”,这就是成功。——牛顿 专栏:牛客刷题 顺序结构篇〇、知识引入一、内容1004-学姐的“Helloworld”1005-乘法表1019-hellowo…

TCP粘包|拆包和解决方案

1 产生原因TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务端)都要有一一成对的socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化算法&…

【算法题】最大矩形面积,单调栈解法

力扣:84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 题意很简单,翻译一下就是:求该图中…

预训练BERT

与PTB数据集相比,WikiText-2数据集保留了原来的标点符号、大小写和数字,并且比PTB数据集大了两倍多。 我们可以任意访问从WikiText-2语料库中的一对句子生成的预训练(遮蔽语言模型和下一句预测)样本。 原始的BERT有两个版本&…

BI的作用,体现在企业的哪些方面

对市场异常敏感的商业世界自然不会放过获取数字经济的机会,以国企和央企为首的众多企业开始进行数字化转型,通过信息化建设,部署商业智能BI来完成转型工作。 为什么会出现BI 有一点可能出乎很多人意料,虽然 BI 是因为信息化、数…

智能家居项目(六)之摄像头模块

目录 一、树莓派mipg-streamer实现监控功能调试 1、实现基本思路 2、安装摄像头模块 2.1、在安装sudo apt-get install libv4l-dev 的命令时报错 3、开启摄像头 以下内容是针对树莓派是stretch版本的修改办法: 一、树莓派mipg-streamer实现监控功能调试 1、…

spring boot maven打包jar包太大,怎么办?这个方法解决你的烦恼

在springboot maven项目中,有两种打包方式,一种是war包,一种是jar,今天我们讲一下jar的打包方式。但是在jar包打包只要我们发现,我们的项目jar太大了,每次上传到服务器的时候非常的慢,接下来我们…

大数据处理各组件概念及作用

一、数据采集: 1.1 Flume集群:数据采集工具,如写脚本将不同源端的数据采集后进行数据存储,或推送至Kafka等; 1.2 FTP集群:文件传输工具; 1.3 Kafka集群:消息队列,未避免…

高压放大器在应力波法套筒灌浆密实度检测研究中的应用

实验名称:高压放大器在应力波法套筒灌浆密实度检测研究中的应用研究方向:无损检测测试目的:钢筋套筒灌浆连接技术被广泛应用于装配式建筑节点连接中,但灌浆不密实将导致节点失效的风险。因此,施工中对套筒灌浆的密实度…

Spark 分析计算连续三周登录的用户数

前言:本文用到了窗口函数 range between,可以参考这篇博客进行了解——窗口函数rows between 、range between的使用 创建数据环境 在 MySQL 中创建数据测试表 log_data: create table if not exists log_data( log_id varchar(200) comm…