7.1 全局变量一致性优化(Global Variable Consensus Optimization)

首先,考虑一个全局变量的情况,把目标函数和约束分为N个部分(这里的划分并不是对参数空间进行划分,而是类似于并行思想的那种把参数分成若干份,因此参数维度不变):

x∈Rx \in Rx∈R。fi:Rn→+∞f_i:R^n \rightarrow {+ \infty }fi​:Rn→+∞是凸的,是第i个子目标函数。当违反约束时(这里我认为就是在解题过程中不断试错的情况),每一个子函数都可以自己处理元素(如线程和处理器)。这个问题在很多情况下都会出现(个人理解就是局部内进行解算,通过协作去关联到整体)。这样可以重写成:

(个人理解:这里是说,我把目标问题分成了这么多份,但是我最终目标是原问题的解,那么问题来了,子问题的解和原问题的解有什么关系?肯定是一致性了,在数字上表示是不是就是相等了呢?而且这只是一个约束条件,约束条件在计算过程中就是尽力去满足这个约束,找到可以接受的解。应该就是这样理解了。)

问题(7.1)的ADMM可以直接从增广的拉格朗日方程导出:

或者简单地作为变量(x1,....,x−n)∈RnN(x_1, ....,x-n) \in R^{nN}(x1​,....,x−n)∈RnN和约束集约束优化问题(5.1)的特例

生成ADMM算法如下:

此处疑问,z的迭代是怎么的出来的。目前理解是,z和x在式子上是相等的,因此会是x加上一个类似于导数或者步长的东西)

算法进一步简化,可以用平均数来表示:


把上面z-迭代代入y-迭代,发现对偶变量$\bar{y}^{k+1} = 0 $,对偶变量在第一次迭代后平均值为0.我们使用 zk=xˉkz^k = \bar{x} ^ kzk=xˉk ,ADMM算法可以写成(在平均数的情况下才这样写):

对偶变量分别更新,并趋于一致(有x的平均数,这点是肯定的)。而二次正则化有助于将变量拉向其平均值(就是防止过拟合的那种嘛),同时仍试图最小化每个局部fif_ifi​(记得似乎二次项有防止图像趋近于平行x轴功效,待考证)

我们可以将一致ADMM解释为一种解决目标和约束分布在多个处理器上的问题的方法。每个处理器只需处理自己的目标和约束项,外加一个二次项,该二次项在每次迭代中都会更新。二次项(或者更准确地说,二次项的线性部分)的更新方式使得变量收敛到一个公共值,这是整个问题的解。 (我觉得就是解决:如何把问题分解,分解了才能并行,还得想办法让子问题的解一致(我觉得功劳还是x的平均数,因为每次参数迭代都和平均值有关,而平均值是整个系统的或者说全局的变量,这样算出来不一致才怪。不过在并行实行的时候,如何计算平均值、分发平均值可能是极其麻烦的)。而且上一次笔记提到了,ADMM扩展性极好,即使不精确的执行也能收敛到一个满意的结果,所以,分解搞很有道理啊)。这里突然想到了小批量随机梯度,不过好像没有随机梯度更方便。

对于一直ADMM,原始残差和对偶残差为 :


他们的平方范数:

前项是N倍残差,文章说这是一致性的度量

当一致性原始问题是拟合问题时,x更新步骤具有直观的统计解释.这里其实需要说一下xˉ\bar xxˉ的合理性,其实在概率论与数理统计中有这种说法的,就是用前面出现的平均概率代替估计。这里rkr^krk残差也用到了。像第三章我们p∗p^*p∗代表最优,然后得到残差。这里就是用xˉ\bar xxˉ估计最优,有道理的。yik{y_i}^{k}yi​k没有一致性(这里难以理解,以后再说)。还要注意,如第3.4节所述,在增广项中使用不同形式的惩罚将导致该先验分布的相应变化;例如,使用矩阵惩罚p而不是标量惩罚ρ\rhoρ将意味着高斯先验分布具有协方差p而不是ρI\rho IρI(这说的啥,I是什么东西)

7.1.1 带正则化的全局变量一致性

在全局变量一致性问题的简单变化中,简单约束或正则化的目标项g由中心处理器处理:

ADMM算法为:
(这里(7.4)的迭代按理来说少了一个yikTxi{y_i}^{kT}x_iyi​kTxi​,从某种说法讲,因为缺少项与z迭代是线性想加,求最优解的时候不考虑也不影响,但是话说回来,(7.3)为什么有z的迭代项,匪夷所思。倘若我大胆推测一下,这里作者漏写了,没毛病,下文有证据)

用上xˉ\bar xxˉ。于是:

(这里出现了问题,与(7.4)式比较这里很明显会出现yˉk+1yˉk+1\bar y^{k+1 }\bar y^{k+1 }yˉ​k+1yˉ​k+1,而(7.4)很明显没有这项,凑也凑不出来。补充:情况应该是这样,作者漏写了一个yikT,这样除了缺少一项{y_i}^{kT},这样除了缺少一项yi​kT,这样除了缺少一项yˉk+1yˉk+1\bar y^{k+1 }\bar y^{k+1 }yˉ​k+1yˉ​k+1,其他都没问题了,在随堂笔记(2)中,缩放形式(3.5)式前一个式子那里,所抛弃的项是一样的,理由我觉得也一样,所以化形成立)
这里解释了一下,说在g非零的情况下,yˉk\bar y^kyˉ​k通常不会等于0.因此无法不能在z-迭代中把yiy_iyi​去掉。(为什么呢? 给跪了)。举个例子,对于g(z)=λ∣z∣1g(z) = \lambda |z|_1g(z)=λ∣z∣1​,当λ>0\lambda>0λ>0的时候z-迭代是是一个软阀值(软阀值介绍:https://blog.csdn.net/sq1378392676/article/details/78731035):

(不懂,这里太科幻了)
又举了一个例子(这个与上面同理):
针对这个问题的ADMM的缩放形式也有一个吸引人的形式,为了方便我们在这里记录:

这里推了一下,没有问题,就是有一个线性项丢弃了,也是缩放的意义所在。
很多情况下,缩放形式比未缩放形式用起来更简单、也更容易。

7.2 一致优化的通用形式

我们现在考虑一个更一般形式的一致极小化问题,在这个问题中,我们有局部变量x∈Rni,i=1.2....,Nx \in R^{n_i}, i = 1.2.... ,Nx∈Rni​,i=1.2....,N,目标函数f1(x1)+f2(x2)+...fN(xN)f_1(x_1)+f_2(x_2) + ... f_N(x_N)f1​(x1​)+f2​(x2​)+...fN​(xN​)是关于xix_ixi​可分离的.局部变量都是全局变量z的一部分选分组而成,也就是说,每一个局部变量对应于某个全局变量zgz_gzg​。从局部变量到全局变量的映射可以写成g=G(i,j)g = G(i,j)g=G(i,j),即局部变量分量(xi)j(x_i)_j(xi​)j​对应于全局变量分量zgz_gzg​。
在局部变量和全局变量之间达成一致意味着:

如果对于任意iG(i,j)=jG(i,j)=jG(i,j)=j,那么每个局部变量就是全局变量的一个copy(是拷贝或者副本的意思吧),一致性降低到全局变量一致性,xi=zx_i=zxi​=z(大概就是说,满足前半句话,那么我们的约束xi=zx_i=zxi​=z就会成立了)。在很多情况下,当ni&lt;&lt;nn_i &lt;&lt; nni​<<n时,每个局部只包含少量的全局信息。
在模型拟合的背景下,一般一致性形式的产生。全局变量z是全特征向量(即数据中模型参数或自变量的向量),数据的不同子集分布在n个处理器中。xix_ixi​可以被视为z的一个子向量,对应于只出现在第i个处理器的特征(也就是说全特征z被分尸了N块)。换句话说,每个处理器只处理自己分到的那一块。如果在每个数据块中,所有回归函数都以非零值出现,则这会降低到全局一致性。
例如,如果每个训练示例都是一个文档,那么这些特性可能包括文档中的单词或单词组合;通常情况下,某些单词只在文档的一小部分中使用,在这种情况下,每个处理器只能处理其文档中出现的单词本地语料库。一般来说,高维但稀疏的数据集将从这种方法中受益(有道理啊,不过该如何判断子函数呢?应该是决策树判断主题吧)。

这里要注意啊?和经典ADMM数据分块不同,这里似乎是参数空间分块了,维度要发生变化的样子?
为了方便,记z~i∈Rni\tilde{z}_i \in R^{n_i}z~i​∈Rni​,这表示(z~i)j=ZG(i,j)(\tilde{z}_i )_j = Z_{G(i,j)}(z~i​)j​=ZG(i,j)​。直观来说,z~i\tilde{z}_iz~i​是局部变量xix_ixi​对应的全局变量。然后一致性约束可以被简单写成xi−z~i=0,i=1,2,...,Nx_i-\tilde{z}_i = 0, i = 1,2,...,Nxi​−z~i​=0,i=1,2,...,N的形式。
然后。一般一致性问题的形式可以写成:
(晕死,搞了这么多就是为了说明参数空间划分的合理性吗?)参数z~i\tilde{z}_iz~i​是z
的线性函数。
一个简单的例子就是图7.1.在这个例子中,有3个子系统(子函数)。全局变量维度n=4,局部变量的维度n1=4,n2=2,n3=3n_1=4,n_2=2,n_3=3n1​=4,n2​=2,n3​=3。目标函数项和全局项构成了一个二部图(二元图?),每个边表示局部变量和全局变量之间的一直约束。
(7.9)式的增广拉格朗日形式为:

(就变了一个z)对偶变量yi∈Rniy_i \in R^{n_i}yi​∈Rni​.ADMM的迭代式为:
(奇了怪了,z-迭代为什么还是累加形式,这里虽然空间划分了,难道对应关系还无法确定吗?难道说,对偶是全局下降,这样有点道理啊,但是y-迭代你用的带i的z~\tilde zz~啊。全程得出zk+1z^{k+1}zk+1没用到啊。这里绝对作者写错了,第二步中的z应该带弯弯,还少了个i,但是这样累和又解释不了,另一种可能就是,第二步中的z和第三步中z之间是m倍关系,这样似乎就可以解释了,累和的平均值被认为是全局的z,毕竟每个子函数得到的z可能各不相同,由于一致性求个平均没毛病)
对x-迭代和y-迭代可以独立的对每个i执行。z-迭代是z的各个分量之间解耦,因为LρL_\rhoLρ​是完全可分离的。

(又一次碰到这个式子,晕了,求平均能理解。难道说对偶和原问题同增同减,而且步长有互为导数的性质??明白了,这式子除了第一次(1/ρ(yik)j)(1/ \rho (y_i^k)_j)(1/ρ(yik​)j​)是0,z就是x累和的平均值,这从z是怎么来的可以体现,这样才是答案,)zgz_gzg​是通过是(xik+1)j+(1/ρ(yik)j)({x_i^{k+1}})_j + (1/ \rho (y_i^k)_j)(xik+1​)j​+(1/ρ(yik​)j​)这个(我不懂)的式子按索引g求得的平均值。(1/ρ(yik)j)(1/ \rho (y_i^k)_j)(1/ρ(yik​)j​)它在第一次迭代之后会为0。

如果(1/ρ(yik)j)(1/ \rho (y_i^k)_j)(1/ρ(yik​)j​)为0(我的天啊,这样还容易理解一点好不)。我们可以更简单的表示z-迭代:

kgk_gkg​是对应全局变量的局部变量zgz_gzg​的数目。换句话说,z迭代是对每个分量zgz_gzg​的局部平均而不是全局平均(这里是用局部类和平均估计全局的意思吗?)。在协作过滤语言中,我们可以说只有对zgz_gzg​有意见的元素才会对zgz_gzg​投票(木得想法)。

7.2.1具有正则化的一般形式的一致性

在全局一致性的情况下,一般形式的一致性问题可以通过允许全局变量节点处理一个目标项来推广。考虑下面这个问题:


不太懂的样子??

7.3协同(sharing 共享)

另一个被证明有用的典型问题是协同问题。

参数xi∈Rn,i=1,2,3...,Nx_i \in R^n, i = 1,2,3...,Nxi​∈Rn,i=1,2,3...,N, fif_ifi​是子系统的局部代价函数(新名字吗?)。ggg是协同目标,以变量之和作为参数。我们可以认为变量xix_ixi​是代理i的选择;协同问题涉及每个代理调整它的参数使得最小化代价函数fi(xi)f_i(x_i)fi​(xi​),以及协同项g(∑i=1Nxi)g(\sum_{i=1}^Nx_i)g(∑i=1N​xi​).共享问题很重要,因为许多有用的问题都可以用这种形式表示,而且它与一致问题有对偶关系,如下所述。(如果说分离是为了并行,那么协同是为了什么呢?对偶关系啊)
可以通过复制所有变量以admm形式写入协同(就是ADMM变成协同形式):

(和一致性问题相比,在形式上仅有一处改变,那就是g原来是关于z的函数变成了z累和的函数 )参数xi,zi∈Rn,i=1,2,...,Nx_i,z_i \in R^n, i=1,2,...,Nxi​,zi​∈Rn,i=1,2,...,N。ADMM的缩放形式为:

第一步和最后一步是独立的可以被并行处理。而z-迭代需要解决一个问题,就是g的那N个累和参数
为了简单起见,让ai=uik+xik+1a_i = u_i^k + x_i^{k+1}ai​=uik​+xik+1​.然后z-迭代可以写成:

(显然等价)增加变量zˉ∈Rn\bar z \in R^nzˉ∈Rn. 还会有下面这种关系:

(7.13)是显然成立的,你把(7.13)代入上面的约束(subject to后面部分),验证发现公式成立。所以z-更新可以通过求解无约束问题来计算(这里以为着我们把z-迭代这个公式看做一个最优化问题,题中题)

zˉ∈Rn\bar z \in R^nzˉ∈Rn然后应用在(7.13)。然后用(7.13)去替换u-迭代的zik+1z_i^{k+1}zik+1​得到:

其实从上面这个式子看,uik+1u_i^{k+1}uik+1​中iii已经没有存在的必要了,在同一迭代中所有的u相等。然后再对x-迭代进行替换,最后算法形式可以写成:

观察一下这个公式,发现x-迭代可以使用并行计算。z-迭代需要对xix_ixi​求平均。u-迭代也是无法并行的。也就是说,转了一圈,我们能说明x可以并行计算。

7.3.1 对偶性

把拉格朗日乘子νi\nu _iνi​加到约束xi−zi=0x_i - z_i = 0xi​−zi​=0上,对偶函数T(T哪来的?),也就是(7.12)的 ADMM协同问题的对偶问题变成了:

原来求最小,现在求最大。对偶问题怎么来的?先推测一下,if后面的条件说全部相等。先放一下)。让ψ=g∗\psi = g^*ψ=g∗和hi(ν)=fi∗(−ν)h_i(\nu) = f_i^*(- \nu)hi​(ν)=fi∗​(−ν)对偶协同问题可以写成:


(7.12)和(7.15)对号入座,似乎形式上没多大改变,有待考证。参数νi∈Rn,ν∈Rn,i=1,2,3,...,N\nu _i \in R^n,\nu \in R^n,i=1,2,3,...,Nνi​∈Rn,ν∈Rn,i=1,2,3,...,N。 这与全局一致化问题相同(晕了,绕了一圈)。假如(7.2)和(7.15)是强对偶性,那么最优解应该会相同的,这意味着 yk=ρuk→ν∗y^ k = \rho u^k \rightarrow \nu ^*yk=ρuk→ν∗,u的定义是1/ρy1/ \rho y1/ρy,在随堂笔记(二)中有提到。
考虑反方向,将拉格朗日乘子di∈Rnd_i \in R_ndi​∈Rn​加到约束vi−v=0v_i-v=0vi​−v=0中,正则化全局一致性的对偶问题为(这里不懂了):

参数di∈Rnd_i \in R^ndi​∈Rn,这正是(7.11)共享问题(因为f和g是凸的且闭的,所以f对偶的对偶等于f,即f∗∗=ff^{**}=ff∗∗=f,g同样)。假设是强对偶性,对(7.15)的一致性问题运行ADMM可以得到dik→xi∗,当x∗d_i^k \rightarrow x_i^*,当x^*dik​→xi∗​,当x∗是协同问题(7.11)的最优点时。

因此,一致问题和协同(分享)问题之间有着亲密的对偶关系。事***实上,全局一致性问题可以通过对它的对偶协同问题运行ADMM来解决,反之亦然***。整体感觉就是在说,一致性问题和协同问题是对偶问题,解决一个就解决两,或者说,哪个容易用哪个解决。

7.3.2 最优交换(Optimal Exchange)

这里,我们用一个极好的经济学知识来解释协同问题中的一个重要特例。交换问题是:

参数xi∈Rn,i=1,...,Nx_i \in R^n, i = 1,...,Nxi​∈Rn,i=1,...,N,fif_ifi​表示子系统i的代价函数。这是一个协同问题,其中协同目标g是集合{0}的指示符函数。向量xix_ixi​表示在代理(就是cpu之类的,N个区域的那种)或子系统之间交换的商品数量(这似乎是对题目的解释,这个题大概是经济学上的一道题,各个区域的交易商品总和为零,没毛病)。当(xi)j(x_i)_j(xi​)j​非负时,这代表子系统j从子系统i那里收到的商品数量。当(xi)j(x_i)_j(xi​)j​是负数时,∣(xi)j∣|(x_i)_j|∣(xi​)j​∣代表子系统j贡献给子系统i的商品数量。当商品交易达到平衡时,可以简单的用约束∑i=1Nxi=0\sum_{i=1}^N x_i = 0∑i=1N​xi​=0.正如这一解释所表明的,这一问题及其相关问题在经济学上有着悠久的历史,特别是在市场交换、资源配置和一般均衡理论方面;例如,参见Walras[168]、Arrow and Debreu[4]和Uzawa[162163]的经典著作。
交换问题可以通过应用上述通用协同
算法并加以简化,或者将其作为一个通用约束凸问题(5.1)来求解,其中:
交换ADMM算法为:

(带u的都是缩放形式)当然也可以写出算法的非缩放形式:
参数yky^kyk收敛到一个最优对偶变量,这容易被解释为交换问题的一组最优价格或结算价格。x-迭代的近端项是xk+1x^{k+1}xk+1偏离xkx^kxk的惩罚,映射到可行集合(这其实是指正则项,从意义上理解没毛病,xix_ixi​就是xIk+1哦x_I^{k+1}哦xIk+1​哦)。x-迭代在交换问题上可以并行计算。u-迭代需要xik+1x_i^{k+1}xik+1​的平均数,所以不能并行。然后把xˉk+1+uk+1\bar x^{k+1}+u^{k+1}xˉk+1+uk+1广播回x-迭代进行下一次计算。

从walras的一般均衡理论来看,汇率admm可以看作是一种 tâtonnementor price adjustment process 168163]。 tâtonnement表示竞争市场朝着市场均衡方向发展的机制。其思想是市场通过价格调整来行动,即根据商品的需求是否过剩或供应是否过剩,分别提高或降低每种商品的价格。

对偶分解是tâtonnement最简单的一种算法。在此算法中,每个代理()调整其消耗量xix_ixi​,以最小化其通过成本(或花费)yTxiy^Tx_iyTxi​调整的个人成本(或花费)fi(xi)f_i(x_i)fi​(xi​),其中y是价格向量。中央收集器(在[163]中被称为“市场秘书”)通过根据每种商品或货物是生产过剩还是生产不足来调整价格y,从而朝着均衡方向努力。admm只在每个代理的更新中包含近端正则化项方面有所不同。当yky^kyk收敛到最优价格向量y∗y^*y∗时,近端正则化项的作用消失。最近的正规化术语可以解释为每个代理人的承诺,以帮助清除市场(不确定)。

参考资料:https://www.cnblogs.com/yymn/p/4634118.html

数学符号,符号\hat{a},如:a^\hat{a}a^
数学符号,符号\check{a},如:aˇ\check{a}aˇ
数学符号,符号\breve{a},如:a˘\breve{a}a˘
数学符号,符号\tilde{a},如:a~\tilde{a}a~
数学符号,符号\bar{a},如:aˉ\bar{a}aˉ
矢量符号,符号\vec{a},如:a⃗\vec{a}a
数学符号,符号\acute{a},如:aˊ\acute{a}aˊ
数学符号,符号\grave{a},如:aˋ\grave{a}aˋ
数学符号,符号\mathring{a},如:a˚\mathring{a}a˚

ADMM随堂笔记(3):一致和协同相关推荐

  1. 92030302随堂笔记 c# 1614675886

    92030302随堂笔记 c# 1614675886 控件 Nodes添加节点 默认事件 被选中的节点 文本内容,Text 深度,level 控件的Nodes属性 获取所有的节点对象数组的长度 尝试用 ...

  2. 图床云存储项目课程随堂笔记

    这个项目属实重量级,第一遍学习的过程比较懵,只是记录一下随堂笔记.后面理解了项目后端代码流程,再细写几篇博客归纳. 基本单机环境配置 大的项目你可能连配置都配不清楚. 新手必须要心细,因为你错了一步, ...

  3. 【笔记】嵌入式C语言随堂笔记

    喏,你们要的嵌入式C语言随堂笔记,丰富度应该要比老师自己记录的高一些.但是机酱的废话一样很多哦! 这个笔记是自己一个字一个字手打的,话说打个原创图个慰藉没问题的吧=.= 而且那时候很菜,知道就好不许说 ...

  4. 《Advice on how to read papers》---吴恩达CS230随堂笔记

    How to read papers? Reading research papers Reading a paper Questions to ask yourself after reading ...

  5. JAVA历险记--java基础知识--随堂笔记

    JAVA基础知识随堂笔记 简介 学习视频 题1 题2 答疑 简介 由于本人从事Delphi(很古董的语言了)和c#开发,所以一些基础的知识还是比较了解的,需要熟悉的是IDE的简单操作,以及JAVA的相 ...

  6. 汤家凤高等数学基础阶段课程的随堂笔记并标记重点

    本文内容为汤家凤高数基础阶段课程的随堂笔记并标记重点,我主页中的思维导图中内容大多从我的笔记中整理而来,相应技巧可在笔记中查找原题,有兴趣的可以去 我的主页 了解更多计算机学科的精品思维导图整理 本文 ...

  7. winsever服务系统基础教程(随堂笔记)

    本文草稿链接https://www.yuque.com/docs/share/000c4611-fa69-4881-90f4-d35ace0f9d26?# <winsever服务系统基础教程(随 ...

  8. linux加权_「学员笔记」LINUX随堂笔记(十一):LVS负载均衡群集

    第12章 LVS负载均衡群集 一.群集概述 1.1 群集的类型 无论是哪种群集,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机,根据群集所提 ...

  9. Matplotlib入门 北理工嵩天老师python数据分析与展示 单元4随堂笔记

    Matplotlib入门 北理工嵩天老师python数据分析与展示 单元4随堂笔记 Matplotlib库的使用 Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发. matp ...

  10. 推荐系统笔记:基于模型的协同过滤

    1 介绍 基于邻域的协同过滤方法可以看作是机器学习中常用的k-最近邻分类器KNN的泛化. 这些方法是基于实例的方法,因此,除了可选的预处理阶段之外,没有专门为预测预先创建模型. 推荐系统笔记:Intr ...

最新文章

  1. 计算机等级考试三级数据库考点,全国计算机等级考试辅导:三级数据库考点
  2. Django 3.2.5博客开发教程:用Admin管理后台管理数据
  3. python中字典长度可变吗_python中列表长度可变吗
  4. call_once/once_flag的使用
  5. Xpath延伸以及总结
  6. python开发mes系统_MES系统开发
  7. python mq_python测试rabbitmq的消息收发
  8. ExtJs之ExtJs.Model验证
  9. 整数倒转问题的算法实现
  10. 使用 URLDecoder 和 URLEncoder 对中文字符进行编码和解码
  11. linux系统取代windows,Linux替代Windows系统软件大比拼
  12. Python春节特训营03:打倒拦路虎,学会键盘打字
  13. 程序员初学者应该如何自学编程
  14. GeoServer 自定义字体 符号化渲染点
  15. PHP基础知识系统复习
  16. 手机查看pcap文件_java抓包后对pcap文件解析示例
  17. AD转换(ADC0809)
  18. 叮当叮当的优势在那里
  19. 转换各种音乐格式的神奇方法
  20. 线性代数 --- 投影Projection 四(投影有什么用?Why projection)

热门文章

  1. Adobe Premiere(pr)2021 安装教程【64位】
  2. 混响延迟插件9个合集 – ValhallaDSP Bundle 2020 WiN 免安装版
  3. 信息安全制度(用户篇)
  4. 【工业互联网】工业发展的痛点体现在哪里?如何整合边缘计算与云计算的优势来成就工业智能?
  5. md5加密离线工具windwos,ubuntu
  6. Photoshop插件-黑白(一)-脚本开发-PS插件
  7. 电务段子系统网络管理服务器,CSM-TD铁路电务管理信息系统
  8. 信息系统项目管理师通过率是多少?
  9. H5热门游戏模板案例解读:贪吃蛇玩法的新高度
  10. Win11的文件资源管理器如何显示预览窗格?