深度神经网络的数学原理:基于超平面、半空间与线性区域的表示

概述

以前的文章主要描述了神经网络,即多层感知机、全连接模型的运行原理,还是以实验为主,数学描述为辅的方式,这篇文章以纯数学的视角来描述神经网络的运行原理,主要以前馈过程为主(反向传播的动力学过程还是比较复杂,正向过程还未完全研究清楚,暂时还未考虑)。

半空间

在讲半空间(Halfspace)时,需要引入分离超平面(Separating Hyperplane)的概念,这里简单介绍分离超平面的内容。

分离超平面是能将两个不相交的凸集分割成两部分的一个平面。在数学中,超平面是 n n n 维欧氏空间中余维度等于 1 的线性子空间 , H = { x ∈ R n ∣ w T x + b = 0 } H=\{x\in R^n \mid w^\mathsf{T}x+b = 0\} H={xRnwTx+b=0} 就是这样的一个分离超平面。该超平面可以将 n n n维欧式空间 R n R^n Rn分离为两个半空间。如下图所示:

设置
y = w T x + b y = w^\mathsf{T}x+b y=wTx+b其中任意半空间可表示为(负半空间):
S − y = S 0 y = { x ∈ R n ∣ w T x + b ≤ 0 } S_{-}^y=S_{0}^y=\{x\in R^n\mid w^\mathsf{T}x+b \le 0\} Sy=S0y={xRnwTx+b0}或(正半空间):
S + y = S 1 y = { x ∈ R n ∣ w T x + b > 0 } S_{+}^y=S_{1}^y=\{x\in R^n\mid w^\mathsf{T}x+b \gt 0\} S+y=S1y={xRnwTx+b>0} * 在本文中,为了公式的简洁,在特定的上下文里,半空间 S S S 的上标 y y y 可能省略 。

ReLU函数的矩阵表示

因为ReLU良好的数学性质,一般我们使用ReLU作为神经网络的激活函数,其原始形式为:
R e L U ( x ) = m a x ( 0 , x ) ReLU(x)=max(0,x) ReLU(x)=max(0,x)也可以表示为如下形式:
R e L U ( x ) = { 1 ∗ x , x > 0 0 ∗ x , x ≤ 0 ReLU(x)=\left\{\begin{matrix} 1*x&,x>0\\ 0*x&,x\leq0 \end{matrix}\right. ReLU(x)={1x0x,x>0,x0假设示性函数为:
I ( x ) = { 1 , x > 0 0 , x ≤ 0 \mathbb{I} (x)=\left\{\begin{matrix} 1&,x> 0\\ 0&,x\leq 0 \end{matrix}\right. I(x)={10,x>0,x0那么ReLU函数可以表示为:
R e L U ( x ) = I ( x ) ∗ x ReLU(x)=\mathbb{I} (x) * x ReLU(x)=I(x)x对于有 k k k个节点的隐藏层:
a = [ a 1 , a 2 , . . . , a k ] T a=[a^1,a^2,...,a^k]^\mathsf{T} a=[a1,a2,...,ak]T I ( a ) = [ I ( a 1 ) , I ( a 2 ) , . . . , I ( a k ) ] T \mathbb{I}(a)=[\mathbb{I}(a^1),\mathbb{I}(a^2),...,\mathbb{I}(a^k)]^\mathsf{T} I(a)=[I(a1),I(a2),...,I(ak)]T R e L U ( a ) = D i a g ( I ( a ) ) a = [ I ( a 1 ) I ( a 2 ) . . . I ( a k ) ] a ReLU(a)=Diag(\mathbb{I}(a))a=\begin{bmatrix} \mathbb{I} (a^1)& & & \\ & \mathbb{I} (a^2)& & \\ & & ... & \\ & & & \mathbb{I} (a^k) \\ \end{bmatrix}a ReLU(a)=Diag(I(a))a= I(a1)I(a2)...I(ak) a D I ( a ) = D i a g ( I ( a ) ) \mathcal{D}_{\mathbb{I}(a)} =Diag(\mathbb{I}(a)) DI(a)=Diag(I(a)),即 D I ( a ) \mathcal{D}_{\mathbb{I}(a)} DI(a) I ( a ) \mathbb{I}(a) I(a) 转换为对角矩阵,可以得到:
R e L U ( a ) = D I ( a ) ⋅ a ReLU(a)=\mathcal{D}_{\mathbb{I}(a)}\cdot a ReLU(a)=DI(a)a

激活模式

这里为了方便后续的描述,我们将
I ( a ) = [ I ( a 1 ) , I ( a 2 ) , . . . , I ( a k ) ] T \mathbb{I}(a)=[\mathbb{I}(a^1),\mathbb{I}(a^2),...,\mathbb{I}(a^k)]^\mathsf{T} I(a)=[I(a1),I(a2),...,I(ak)]T称为激活模式(Activation Pattern),其中任意 I ( a i ) ∈ { 0 , 1 } \mathbb{I}(a^i) \in \{0,1\} I(ai){0,1} ,即 I ( a ) \mathbb{I}(a) I(a) 是只包含 0 , 1 0,1 0,1的向量。

例如,上图中隐藏层的激活模式分别为:
I ( a 1 ) = [ 1 , 0 , 1 , 1 , 1 ] T \mathbb{I}(a_1)=[1,0,1,1,1]^\mathsf{T} I(a1)=[1,0,1,1,1]T I ( a 2 ) = [ 0 , 1 , 1 , 1 , 0 ] T \mathbb{I}(a_2)=[0,1,1,1,0]^\mathsf{T} I(a2)=[0,1,1,1,0]T I ( a 3 ) = [ 1 , 1 , 0 , 1 , 0 ] T \mathbb{I}(a_3)=[1,1,0,1,0]^\mathsf{T} I(a3)=[1,1,0,1,0]T

线性区域

线性区域(Linear Region)在以前的文章及参考论文中已经比较好的描述了,线性区域就是使用超平面将输入空间做空间划分(Space Partitioning)得到的区域,这里将其形式化,即用半空间去表示线性区域
在这里插入图片描述如图, R i R_i Ri表示任意的线性区域, L i L_i Li表示分离超平面。令节点输出:
y i = w i T x + b i y_i = w_i^\mathsf{T}x+b_i yi=wiTx+bi 超平面 L i L_i Li可表示为:
L i = { x ∣ w i T x + b i = 0 } L_i =\{x\mid w_i^\mathsf{T}x+b_i = 0\} Li={xwiTx+bi=0}对于任意的线性区域 R j ∈ R n R_j \in R^n RjRn,可以表示为如下形式:
R j = ⋂ y i ∈ { y 1 , y 2 , . . , y n } S I ( y i ) R_j = \textstyle \bigcap_{y_i\in\{y_1,y_2,..,y_n\}} S_{\mathbb{I}(y_i)} Rj=yi{y1,y2,..,yn}SI(yi)其中 I ( y i ) ∈ { 0 , 1 } \mathbb{I}(y_i) \in \{0,1\} I(yi){0,1},例如,对于左图(假设 L 1 L_1 L1 右侧为正半空间, L 2 L_2 L2 上侧为正半空间):
R 1 = S + y 1 ⋂ S − y 2 R_1=S_{+}^{y_1} \textstyle \bigcap S_{-}^{y_2} R1=S+y1Sy2即线性区域 R 1 R_1 R1表示为 L 1 L_1 L1正半空间与 L 2 L_2 L2负半空间的交集区域,同理可推出其他线性区域的表示。

失活区域

如上图所示 R ∅ R_{\emptyset} R 即表示失活区域(Dead Region),这里失活区域是,当某个线性区域在所有超平面的负半空间时:
R j = ⋂ y i ∈ { y 1 , y 2 , . . , y n } S − y i R_j = \textstyle \bigcap_{y_i\in\{y_1,y_2,..,y_n\}} S^{y_i}_{-} Rj=yi{y1,y2,..,yn}Syi 该区域在隐藏层中因为ReLU的作用,所有节点都会输出 0 值,这时下层网络将无法再次将该区域作空间划分,换句话说,这时下层网络的秩为0,即:
r ι = r a n k ( w ι T D I ( a ι − 1 ) ) = 0 r_{\iota}=rank(w_{\iota}^\mathsf{T}\mathcal{D}_{\mathbb{I}(a_{\iota-1})})=0 rι=rank(wιTDI(aι1))=0这时,该层网络会将该区域压缩到零空间,该区域将不能再次被下一层线性分离。

线性区域的激活模式

简单的说,每一个线性区域都会对应一组激活模式。比如对于上图 R 1 R_1 R1区域,对应的是 y 1 y_1 y1节点的正半空间与 y 2 y_2 y2节点的负半空间的交集。所以它的激活模式可以直接根据定义给出:
I ( a ) = [ I ( S + y 1 ) , I ( S − y 2 ) ] T = [ 1 , 0 ] T \mathbb{I}(a)=[\mathbb{I}(S_{+}^{y_1}),\mathbb{I}(S_{-}^{y_2})]^\mathsf{T}=[1,0]^\mathsf{T} I(a)=[I(S+y1),I(Sy2)]T=[1,0]T 即该激活模式直接代表该线性区域,或者说当产生该激活模式时,表示该线性区域被激活。

当考虑下一层网络时,下一层网络实际是在该激活的线性区域内(仿射变换后的数据上),再次做空间划分,即递归的空间划分。

多层隐藏层的线性区域

单层隐藏层

每一层的隐藏层是比较好理解的,和上面相同,使用 k k k个超平面将输入空间划分为有限个线性区域。这里的输入空间在每一层都是不同的,比如:对第一层隐藏层,它的输入空间就是原始输入空间。对于后续层都是在原始输入空间,经过一次或多次仿射变换后的局部输入空间。

多层隐藏层

在这里我们主要讨论整个网络在原始输入空间的线性区域,对于有 N N N层的神经网络,第 ι \iota ι 层有 k k k个输出节点可以表示为:
a ι = w ι T x ι − 1 + b ι a_{\iota}=w_{\iota}^\mathsf{T}x_{\iota-1}+b_{\iota} aι=wιTxι1+bι x ι = D I ( a ι ) ⋅ a ι x_{\iota}=\mathcal{D}_{\mathbb{I}(a_{\iota})} \cdot a_{\iota} xι=DI(aι)aι其中 ι ≥ 1 , x 0 \iota \ge1,x_0 ι1,x0为原始输入,也可以将网络表示为从输入层开始的网络:
x ι = ∏ i = 1 ι D I ( a i ) ⋅ a i x_{\iota}=\prod_{i=1}^{\iota} \mathcal{D}_{\mathbb{I}(a_{i})} \cdot a_{i} xι=i=1ιDI(ai)ai这里定义 R ( x ι → x 0 ) R(x_{\iota}\to x_0) R(xιx0) 为第 ι \iota ι 层输出 x ι x_{\iota} xι 映射到 x 0 x_0 x0的线性区域,那么我们可以得到:
R ( x ι → x 0 ) = { R n , ι = 0 ⋂ i = 1 k S I ( a ι i ) ⋂ R ( x ι − 1 → x 0 ) , ι ≥ 1 R(x_{\iota}\to x_0) = \left\{\begin{matrix} R^n&,\iota=0\\ {\textstyle \bigcap_{i=1}^{k} S_{\mathbb{I} (a^i_{\iota})}\bigcap R(x_{\iota-1}\to x_0)}&,\iota \ge 1 \end{matrix}\right. R(xιx0)={Rni=1kSI(aιi)R(xι1x0),ι=0,ι1 所以对于每一层不同的激活模式,其映射到原始数据输入空间的区域都是不同的。整个网络的激活模式组合表示的是一个特定的激活区域。

隐藏层的秩

我们注意到,对于除第一层的隐藏层其参数矩阵的秩,并不是该层真正的秩,如对于第 ι \iota ι 层参数,其秩并不是 w ι w_{\iota} wι的秩,而是与上一层共同表示的,即:
r a n k ( w ι ) ≠ r a n k ( w ι T D I ( a ι − 1 ) ) rank(w_{\iota}) \neq rank(w_{\iota}^\mathsf{T}\mathcal{D}_{\mathbb{I}(a_{\iota-1})}) rank(wι)=rank(wιTDI(aι1)) D I ( a ι − 1 ) \mathcal{D}_{\mathbb{I}(a_{\iota-1})} DI(aι1) 会根据不同输入动态变化,所以该层的秩是动态变化的,为 r a n k ( w ι T D I ( a ι − 1 ) ) rank(w_{\iota}^\mathsf{T}\mathcal{D}_{\mathbb{I}(a_{\iota-1})}) rank(wιTDI(aι1)),且:
r a n k ( w ι ) ≥ r a n k ( w ι T D I ( a ι − 1 ) ) rank(w_{\iota}) \ge rank(w_{\iota}^\mathsf{T}\mathcal{D}_{\mathbb{I}(a_{\iota-1})}) rank(wι)rank(wιTDI(aι1))换句话说,ReLU激活函数的一个附带作用就是动态改变该层网络的秩。

全连接层的线性区域

全连接(分类)层的逻辑和隐藏层是不同的,隐藏层由于ReLU激活函数的作用,节点直接构成超平面。而对于全连接层而言,其激活函数一般为softmax,而最后一般我们使用的是max函数获取激活值最大的节点,即它本身表示的是 max 或 maxout 过程,即:
g ( y 1 , y 2 , . . . , y n ) = m a x ( y 1 , y 2 , . . , y n ) g(y_1,y_2,...,y_n)=max(y_1,y_2,..,y_n) g(y1,y2,...,yn)=max(y1,y2,..,yn) 对于有 n n n 个节点的全连接层
y i = w i T x + b i y_i = w_i^\mathsf{T}x+b_i yi=wiTx+bi 其中 i ∈ { 1 , 2.. , n } i\in \{1,2..,n\} i{1,2..,n},对于任意节点 y k ∈ { y 1 , y 2 . . , y n } y_k\in \{y_1,y_2..,y_n\} yk{y1,y2..,yn} ,若 y k y_k yk 为最大值的节点,则要求对于 ∀ y i ∈ { y 1 , y 2 . . , y n } ∖ y k \forall y_i \in \{y_1,y_2..,y_n\} \setminus y_k yi{y1,y2..,yn}yk y k > y i y_k>y_i yk>yi 恒成立,所以全连接层的超平面是节点间比较产生的。此时 y k y_k yk 关联的超平面排列(Hyperplane Arrangements)为:
H k = { y ( k , 1 ) = 0 , y ( k , 2 ) = 0 , . . . , y ( k , n ) = 0 } H_k=\{y_{(k,1)}=0,y_{(k,2)}=0,...,y_{(k,n)}=0\} Hk={y(k,1)=0,y(k,2)=0,...,y(k,n)=0}其中
y ( k , i ) = y k − y i = ( w k − w i ) T x + ( b k − b i ) y_{(k,i)}=y_k - y_i = (w_k-w_i)^\mathsf{T}x+(b_k-b_i) y(k,i)=ykyi=(wkwi)Tx+(bkbi) 这里 k ∈ { 1 , 2.. , n } ∖ i k\in \{1,2..,n\}\setminus i k{1,2..,n}i,对任意的节点,其对应的线性区域,可表示为:
R k = ⋂ y ~ ∈ { y ( k , 1 ) , y ( k , 2 ) , . . . , y ( k , n ) } S + y ~ R_k=\textstyle \bigcap_{\tilde{y} \in\{y_{(k,1)},y_{(k,2)},...,y_{(k,n)}\}} S^{\tilde{y}}_{+} Rk=y~{y(k,1),y(k,2),...,y(k,n)}S+y~ 这里 S + y ~ S^{\tilde{y}}_{+} S+y~ 表示 y ~ = 0 \tilde{y}=0 y~=0 所分离的正半空间。例如,下图是一个3节点的全连接网络的各节点关联超平面排列的正半空间求交集所获取的线性区域。
在这里插入图片描述

n维空间的子集

虽然一般我们将输入空间定义在 n n n维的实数空间,但实际我们的输入数据都会被限制到有界的封闭的定义区间内,即某个 n n n维空间的子集内部。比如图像数据被限制为 n n n维的,每一维数据的值 x i ∈ [ 0 , 255 ] x_i \in[0,255] xi[0,255]的区间范围,或者归一化到 x i ∈ [ 0 , 1 ] x_i \in[0,1] xi[0,1]的区间内,简单来说就是 n n n维的超长方体(Super Cuboid)。该子集可以表示为如下形式:
U = { ( x 1 , x 2 , . . . , x n ) ∈ R n ∣ x i ∈ [ 0 , 1 ] , i ∈ { 1 , . . . , n } } U = \{ (x_1,x_2,...,x_n)\in R^n \mid x_i \in [0,1],i \in\{1,...,n\} \} U={(x1,x2,...,xn)Rnxi[0,1],i{1,...,n}} 这里的 U U U即为在 n n n维空间的子集,也是通常模型真正的输入空间(Input Space)。

冗余节点

从以上线性区域的定义可知,当已知任意隐藏层所有节点表示的超平面(节点超平面)时,其线性区域可表示为:
R j = ⋂ y i ∈ { y 1 , y 2 , . . , y n } S I ( y i ) R_j = \textstyle \bigcap_{y_i\in\{y_1,y_2,..,y_n\}} S_{\mathbb{I}(y_i)} Rj=yi{y1,y2,..,yn}SI(yi)其中 I ( y i ) ∈ { 0 , 1 } \mathbb{I}(y_i) \in \{0,1\} I(yi){0,1} y i = w i T x + b i y_i = w_i^\mathsf{T}x+b_i yi=wiTx+bi,那么对于某一个节点 y k y_k yk
R k = S I ( y k ) R_k=S_{\mathbb{I}(y_k)} Rk=SI(yk) R z = ⋂ y i ∈ { y 1 , y 2 , . . , y n } ∖ y k S I ( y i ) R_z = \textstyle \bigcap_{y_i\in\{y_1,y_2,..,y_n\} \setminus y_k} S_{\mathbb{I}(y_i)} Rz=yi{y1,y2,..,yn}ykSI(yi)命题 1:对于任意激活模式,都有 R z ⊆ U , R k ⋂ U = ∅ R_z \subseteq U,R_k \textstyle \bigcap U=\emptyset RzU,RkU=,那么 y k y_k yk 为冗余节点。

证明:当 R k ⋂ U = ∅ R_k \textstyle \bigcap U=\emptyset RkU= 时,对于任意的输入 x ∈ U x\in U xU I ( y k ) = 0 \mathbb{I}(y_k)=0 I(yk)=0,对于下一层输出
y ~ = w T ( D I ( y ) ⋅ y ) + b = I ( y k ) ∗ w k ∗ y k + b + ∑ i ∈ { 1 , 2 , . . , n } ∖ k I ( y i ) ∗ w i ∗ y i \tilde{y} =w^\mathsf{T}( \mathcal{D}_{\mathbb{I}(y)}\cdot y)+b=\mathbb{I}(y_k)*w_k*y_k+b+\sum_{i\in\{1,2,..,n\}\setminus k} \mathbb{I}(y_i)*w_i*y_i y~=wT(DI(y)y)+b=I(yk)wkyk+b+i{1,2,..,n}kI(yi)wiyi ⇒ y ~ = b + ∑ j ∈ { 1 , 2 , . . , n } ∖ k I ( y j ) ∗ w j ∗ x j \Rightarrow \tilde{y} = b+\sum_{j\in\{1,2,..,n\}\setminus k} \mathbb{I}(y_j)*w_j*x_j y~=b+j{1,2,..,n}kI(yj)wjxj这里 y k y_k yk节点被消去,所以 y k y_k yk节点不影响下一层输出,即 y k y_k yk 为冗余节点。

流形

待续…

总结

通过本篇文章,希望大家能理解神经网络的数学原理,如有错误请不吝指出(先发后改,后面有新的内容会补充)。

参考文献

  1. On the Number of Linear Regions of Deep Neural Networks
  2. On the number of response regions of deep feed forward networks with piece- wise linear activations
  3. On the Expressive Power of Deep Neural Networks
  4. On the Number of Linear Regions of Convolutional Neural Networks
  5. Bounding and Counting Linear Regions of Deep Neural Networks
  6. Multilayer Feedforward Networks Are Universal Approximators
  7. Facing up to arrangements: face-count formulas for partitions of space by hyperplanes
  8. An Introduction to Hyperplane Arrangements
  9. Combinatorial Theory: Hyperplane Arrangements
  10. Partern Recognition and Machine Learning
  11. Convex Optimization
  12. Scikit-Learn Decision Tree
  13. Neural Networks are Decision Trees
  14. Unwrapping All ReLU Networks
  15. Unwrapping The Black Box of Deep ReLU Networks:Interpretability, Diagnostics, and Simplification
  16. Any Deep ReLU Network is Shallow
  17. How to Explain Neural Networks: an Approximation Perspective
  18. Deep ReLU Networks Have Surprisingly Few Activation Patterns

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

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

相关文章

深度学习入门(二)之神经网络

文章目录 从感知机到神经网络神经网络的例子复习感知机激活函数 激活函数sigmoid函数阶跃函数的实现阶跃函数的图形sigmoid函数的图形sigmoid函数与阶跃函数比较非线性函数ReLU函数 多维数组的运算多维数组矩阵乘法神经网络的内积 三层神经网络的实现符号确认各层间信号传递的实…

【51单片机】LED与独立按键(学习笔记)

一、点亮一个LED 1、LED介绍 LED:发光二极管 补:电阻读数 102 > 10 00 1k 473 > 47 000 2、Keil的使用 1、新建工程:Project > New Project Ctrl Shift N :新建文件夹 2、选型号:Atmel-AT89C52 3、xxx…

uniapp原生插件之视频图片选择安卓原生插件

插件介绍 本地相册图片和视频多选Android扩展原生插件 插件地址 视频图片选择安卓原生插件 - DCloud 插件市场 超级福利 uniapp 插件购买超级福利 插件申请权限 存储卡读写权限 manifest.json权限列表 /* android打包配置 */"android" : {"permission…

Mozilla Firefox 119 现已可供下载

Mozilla Firefox 119 开源网络浏览器现在可以下载了,是时候先看看它的新功能和改进了。 Firefox 119 改进了 Firefox View 功能,现在可以提供更多内容,如最近关闭的标签页和浏览历史,你可以按日期或网站排序,还支持查…

spring 和 idea 建议不要使用 @Autowired注解

spring 和 idea 建议不要使用 Autowired注解 一. 问题描述二. 警告原因和如何去除三. 个人的收获和解决方案3. 1 个人感受3.2 通过构造函数解决警告问题 四. 小知识4.1 使用Autowired还会出现循环依赖的问题么4.2 Autowired 和 Resource区别 前言 这是我在这个网站整理的笔记,有…

vivo 自研蓝河操作系统 BlueOS 发布:支持大模型、BlueXlink 协议实现万物互联

大家好,我是 Lorin , 2023 年 11 月 1 日,在今天的 2023 年 vivo 开发者大会上,vivo 自主研发的蓝河操作系统(BlueOS)正式亮相。这款操作系统被宣传为一款面向未来的智能操作系统,具备出色的支持能力&#…

PlantSimulation访问本地Excel文件的方法

PlantSimulation访问本地Excel文件的方法 PlantSimulation访问本地Excel文件的方法PlantSimulation访问本地Excel文件的方法 //Param StatusTable,T_DataTable:object var T_DataTable:object:=DataTable IF NOT isComputerAccessPermittedMESSageBox("计算机访问被阻止,…

maven:编译出现Process terminated解决方法(超全)

maven:编译出现Process terminated解决方法(超全) 一. 情况一:配置文件 settings. xml 出错(解决方法1)1.1 项目编译报错如下:1.2 点击【项目名】提示找到出错文件1.3 点击查看出错文件1.4 原因及解决办法 …

C++并发与多线程(11) | unique_lock Ⅱ

一、unique_lock的成员函数 1.1 lock() 一起验证defer_lock的效果,修改成员函数如下: // 收集数据的函数void inMsgRecvQueue(){for (int i = 0; i < 10000; ++i){std::unique_lock<std::mutex> sbguard1(my_mutex1, std::defer_lock);//没有加锁的my_mutex1sbgua…

大模型推理最新论文及源码合集,涵盖多模态推理、逻辑推理、数学推理

大模型推理技术的发展帮我们解决了许多的难题&#xff0c;但如今的大模型在复杂推理上的表现仍然欠佳&#xff0c;为了突破这一瓶颈&#xff0c;研究者们提出了许多创新性的方法。 我整理了其中一部分个人认为很值得学习的论文来和大家分享&#xff0c;涵盖多模态推理、逻辑推…

Agent 应用于提示工程

如果Agent模仿了人类在现实世界中的操作方式&#xff0c;那么&#xff0c;能否应用于提示工程即Prompt Engingeering 呢&#xff1f; 从LLM到Prompt Engineering 大型语言模型(LLM)是一种基于Transformer的模型&#xff0c;已经在一个巨大的语料库或文本数据集上进行了训练&…

品牌加盟商做信息展示预约小程序的效果如何

很多行业都有中部或头部品牌&#xff0c;对实体品牌企业来说想要快速高效发展&#xff0c;除了多地直营店外还需要招募加盟商进而提升生意营收。 因此线上渠道变得尤为重要&#xff0c;除了网站外&#xff0c;小程序是连接多平台生态很好的工具&#xff0c;随时打开、直接触达…

python hashlib模块及实例

hashlib 模块密码加密密码撞库密码加盐 一&#xff0c;hashlib模块 hashlib模块是用来为字符串进行加密的模块&#xff0c;通过该作用就可以为用户的密码进行加密。 通过模块中的hash算法可以为任意长度的字符串加密成长度相同的一串hash值。该hash算法得到的hash值有一下几个…

HNU-数据库系统-讨论课1

第一次小班讨论课安排如下: 主题: 大数据管理及前沿技术讨论 目的&#xff1a;让学生了解大数据管理的相关理论、技术和系统。 内容: &#xff08;1&#xff09;大数据概念、应用、技术的相关知识。 &#xff08;2&#xff09;AI4DB &#xff08;3&#xff09;DB4AI &…

vue中electron与vue通信(fs.existsSync is not a function解决方案)

electron向vue发送消息 dist/main.js (整个文件配置在另一条博客里) win new BrowserWindow({width:1920,height:1080,webPreferences: {// 是否启用Node integrationnodeIntegration: true, // Electron 5.0.0 版本之后它将被默认false// 是否在独立 JavaScript 环境中运行…

【强化学习】13 —— Actor-Critic 算法

文章目录 REINFORCE 存在的问题Actor-CriticA2C&#xff1a; Advantageous Actor-Critic代码实践结果 参考 REINFORCE 存在的问题 基于片段式数据的任务 通常情况下&#xff0c;任务需要有终止状态&#xff0c;REINFORCE才能直接计算累计折扣奖励 低数据利用效率 实际中&#…

react条件渲染

目录 前言 1. 使用if语句 2. 使用三元表达式 3. 使用逻辑与操作符 列表渲染 最佳实践和注意事项 1. 使用合适的条件判断 2. 提取重复的逻辑 3. 使用适当的key属性 总结 前言 在React中&#xff0c;条件渲染指的是根据某个条件来决定是否渲染特定的组件或元素。这在构…

KanTts最小安装-ubuntu

为什么选它&#xff1f; 克隆有很多&#xff0c;为什么选它&#xff0c;它是中国人做的&#xff0c;阿里达摩院&#xff0c;5分钟音频数据集就够了。 国内做的有什么好处&#xff0c;因为大家都是中国人&#xff0c;说的是中国话&#xff0c;技术最大的难题不是基础&#xff…

2023年【道路运输企业主要负责人】考试技巧及道路运输企业主要负责人复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年【道路运输企业主要负责人】考试技巧及道路运输企业主要负责人复审模拟考试&#xff0c;包含道路运输企业主要负责人考试技巧答案和解析及道路运输企业主要负责人复审模拟考试练习。安全生产模拟考试一点通结合…

前端JavaScript

文章目录 一、JavaScript概述JS简介1.ECMAScript和JavaScript的关系2.ECMAScript的历史3.什么是javas&#xff1f;4.JavaScript的作用&#xff1f; 三者之间的作用JS基础1.注释语法2.引入js的多种方式3.结束符号 变量与常量变量1.JavaScript声明2.var与let的区别常量 基本数据类…