sigmoid和softmax有什么区别,softmax的本质是最大熵?

本文理论依据王木头的视频:

softmax是为了解决归一问题凑出来的吗?和最大熵是什么关系?最大熵对机器学习为什么非常重要?_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1cP4y1t7cP/?spm_id_from=333.999.0.0&vd_source=ecbdfcacb078d0e3626e61248866cdc7

目录

一、sigmoid

1、定义

2、性质

3、优缺点

4、总结

二、softmax

1、定义

2、推导

3、应用场景

4、优缺点

5、本质

三、sigmoid与softmax的联系

四、最大熵

五、概率分布的特征函数

5.1概率论中的矩

5.2特征函数

六、推导softmax——解决两个问题

1、解决第一个问题

2、解决第二个问题

(1)条件熵定义

(2)求最大熵

七、机器学习的本质


一、sigmoid

1、定义

Sigmoid 函数是一种常见的激活函数,定义为:

                                                            \sigma (x)=\frac{1}{1-e^{-x}}

        Sigmoid 函数的输出范围是 (0, 1),它将输入值映射到 0 到 1 之间。对于较大的正数输入,输出接近 1;对于较大的负数输入,输出接近 0。

2、性质

                                             \sigma {}'(x)=\sigma (x)(1-\sigma (x))

        这个性质在神经网络中非常重要,因为它简化了反向传播时的计算。

3、优缺点

优点:

(i)Sigmoid 函数平滑且连续,能够将任意输入映射到 0 到 1 的范围内,适用于概率估计。

(ii)在某些场景(如二分类)中表现良好。

缺点:

(i)梯度消失问题:对于输入值远离零的情况,Sigmoid 的梯度会变得非常小,导致梯度消失问题,尤其是在深层网络中。

(ii)输出非零中心化:Sigmoid 输出的范围是 (0, 1),这使得其输出并没有以 0 为中心,可能会导致优化过程中的收敛速度变慢。

4、总结

        Sigmoid 是一个非常基础且经典的激活函数,广泛应用于二分类问题、逻辑回归以及神经网络等领域。它的输出是一个概率值,适用于描述“是”或“否”的情况。虽然在深度学习中由于梯度消失问题而逐渐被其他激活函数(如 ReLU)取代,但它仍然在很多场景中有其独特的应用价值。

二、softmax

1、定义

        Softmax 函数通常用于多分类问题,尤其是在神经网络的输出层中,能够将任意一组实数转化为一组概率。对于一个输入向量 \mathbf{z} = [z_1, z_2, \dots, z_K],Softmax 函数将其转换为一个概率分布 \mathbf{p} = [p_1, p_2, \dots, p_K],使得所有输出值 pip_ipi​ 都位于 (0, 1) 区间,并且它们的和为 1。

Softmax 的公式定义为:

                                  p_i = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}, 对于  i = 1, 2, \dots, K

其中:

  • z_i​ 是输入向量的第 iii 个元素。
  • K 是类别的总数。
  • z_i 是类别 iii 对应的概率。

2、推导

目标: 

        给定一个输入向量 \mathbf{z} = [z_1, z_2, \dots, z_K],我们希望将其转换成一个概率分布,使得每个元素 p_i 都满足:

(1)p_i \in (0, 1)

(2)\sum_{i=1}^{K} p_i = 1,即所有概率的和为 1。

每个p_i都代表概率,所以都要在(0,1)之间且为正数。

过程:

(1)指数函数的作用:Softmax 中每个元素的分子是 e^{z_i},这使得大值的 z_i 会映射为较大的概率,而小值的 z_i 会映射为较小的概率。这种行为类似于放大和压缩作用,可以增强大值元素的区分度。

(2)归一化:Softmax 的分母是所有 e^{z_j} 的总和 \sum_{j=1}^{K} e^{z_j},这样做的目的是确保所有输出的概率和为 1,符合概率分布的定义。

3、应用场景

(1)多分类问题

        Softmax 最常见的应用场景是在多分类问题中,特别是在神经网络的输出层。假设我们正在做一个图片分类任务,类别总数为 K,网络最后输出一个长度为 K 的向量 \mathbf{z} 。Softmax 函数会将这个向量转换成概率分布,表示每个类别的概率。比如在 10 分类任务(如手写数字识别)中,Softmax 可以输出一个长度为 10 的概率向量,表示图像属于各个数字类别的概率。在这个例子中数据集样本的标签也是一个长度为10向量,每个标签有且仅有一个元素为1,其余9个为0,表示某一个类。

4、优缺点

优点

(1)清晰的概率解释:Softmax 输出的是一个有效的概率分布,可以直观地表示每个类别的预测概率。

(2)适合多分类任务:在多分类问题中,Softmax 是最常用的激活函数,特别适用于神经网络的输出层。

缺点

(1)对大输入值敏感:当某些 z_i 值特别大时,Softmax 可能会导致数值溢出或不稳定。通常可以通过对输入进行“缩放”或“标准化”来避免这种问题。

(2)不适合多标签分类:在多标签分类中,通常使用独立的 Sigmoid 激活函数来处理每个标签的预测概率,而不是 Softmax。因为 Sigmoid 允许每个标签的概率独立计算,且可以同时为多个标签分配非零概率,而 Softmax 会强制标签之间的竞争关系,导致标签概率和为 1。

5、本质

        表面上,Softmax 的公式是为了满足每个p_i都在0-1之间且加和为1而选定的一种形式,其实并不是如此简单,softmax的公式的形式还有更深层次的含义,本质上是最大熵的一种体现。本文后续有详细的分析。

三、sigmoid与softmax的联系

        softmax是sigmoid的扩大版,即sigmoid是只有一种情况下的softmax

sigmoid的公式为:

                                                \sigma (x)=\frac{1}{1-e^{-x}}=\frac{e^{x}}{e^{x}+1}

                                                1-\sigma (x)=\frac{1}{e^{x}+1}

两种情况的softmax的公式为:

                                               p_i = \frac{e^{x_{1}}}{e^{x_{1}}+e^{x_{2}}}

                                               1-p_i = \frac{e^{x_{2}}}{e^{x_{1}}+e^{x_{2}}}

        sigmoid表示一种分类,其实也可以说是二分类,分别是属于某类和不属于某类;softmax的二分类为属于类1和属于类2,

        本质上,sigmoid是在将数据传入激活函数之前,属于某类和不属于某类的数据分别为x和0,取指数后为e^{x}和1,softmax是在将数据传入激活函数之前,属于1类和属于2类的数据分别为x_{1}x_{2},取指数后为e^{x_{1}}e^{x_{2}},最后再归一化。由于都是二分类,两者都是对立的,固定一个另一个不固定和两个都不固定,在没有数据(即证据)的情况下他们的熵都是一样,都是最大(换句话说,就是x战胜0 或者 0战胜x的概率都是 \frac{1}{2} ;同样x_{1}战胜x_{2}或者x_{2}战胜x_{1}的概率也都是 \frac{1}{2} )。两者的差别仅仅是前面神经网络的参数数值不同,且对分类造不成任何影响。所以两者本质上是相同的。

四、最大熵

        在上述的分析中,激活函数的构造只需要满足每个p_i都在0-1之间且加和为1,那么为什么要选择以e为底的指数的形式呢?当然仅符合那两个条件的函数形式有很多种,为什么要选用当前这种形式呢?

        神经网络的作用是他能逼近任何一种概率模型,即使那种概率模型写不出来,也能逼近。具体方法就是寻找似然值最大的、或者说交叉熵最小的那种概率模型。从已知的数据集到我们的模型,我们的模型要在数据集上满足似然值最大或交叉熵最小,但数据集是有限的,即模型无法覆盖现实中目标问题的所有信息,在模型要在数据集上满足似然值最大或交叉熵最小就完成了现有信息从数据集到模型,而模型无法从数据集获得的信息就要符合熵最大,从而提高模型的泛化能力。模型的激活函数使用sigmoid或softmax对数据集进行训练,就默认实现了模型无法从数据集获得的信息的熵最大化。最终实现我们的模型既能满足已知的信息,又能对未知的信息熵最大。具体原因在本文后续详解。

下面小例子可以帮助对上面这段话的理解:

        让机器判断一个照片是猫还是汽车,当没有任何信息传递到模型时,也就是没有数据集,要让模型泛化能量更大,所以可以让机器判断是猫或者汽车的概率都是 \frac{1}{2} ,这样实现了最大熵。但上述好像没有意义。实际上,神经网络去判断照片是猫或是汽车,并不是完全无知地去猜,即有已知的信息(数据集),对于已知的信息,当然要让模型在信息(数据集)上的似然值最大或交叉熵最小,模型无法从数据集上获得的信息,就要通过最大熵来补齐。在例子中,如果通过数据集得到的信息是有尾巴的是猫,那么这个模型理想情况下就要有以下功能:有尾巴直接判断是猫,没尾巴的情况下是猫或者汽车的概率都是 \frac{1}{2} 。

        或者王木头视频中的例子,8只球队,直接用最大熵的话,获胜概率都是 \frac{1}{8} ,但如果从已知信息(数据集)中获得了其中一支球队是中国队,且其获胜概率为2\%,那么对其余队伍使用最大熵,即其余七支球队获胜概率都是14\%

五、概率分布的特征函数(还需更深入的思考

在上述分析中,完成机器学习模型的建立需要完成两部分内容:(1)让模型符合已知信息。(2)让模型对未知信息的反应的熵最大。

首先,我们无法写出数据集的概率模型,但还想要让数据集的概率模型与我们训练的模型一样。要让模型与已知的数据集建立联系,就要在数据集中抽象出概率模型。

5.1概率论中的矩

任何概率分布都可以用特征函数来描述,首先要了解概率模型的矩

(1)要确定一个均匀分布,需要知道它的什么信息呢?

只需知道它的均值E(x)即可。因此,需要 x 的均值来描述。

(2)要描述一个正态分布,需要均值\mu和方差\sigma ^{2}来描述

其中期望\mu =E(x),方差\sigma ^{2}=E[(x-\mu )^{2}]=E(x^{2})-(E(x))^{2}=E(x^{2})-\mu ^{2}

因此,需要 x 和 x^{2} 的均值来描述

(3)要描述一个更复杂的概率分布

如图,在均值和方程的基础上,需要再加一个偏度

因此,这个概率模型通过 x 、 x^{2} 和 x^{3} 的均值来描述 

综上,概率模型的特征都与统计量的一次、二次、三次.....n次有关。E(x)E(x^{2})E(x^{3})....E(x^{n})分布成为概率分布的一阶矩、二阶矩、三阶矩和 n 阶矩。

如图:

5.2特征函数

上图为将特征函数泰勒展开,得知特征函数有概率模型的矩[E(x),E(x^{2}),E(x^{3}),\cdots,E(x^{n})]线性描述。

由特征函数的形式可知,特征函数即是概率密度函数的傅里叶变换,如下:

可见概率密度函数的特征函数和傅里叶变换是共轭的,这里只不过是螺旋线的方向不同,本质不变,不做区分。

所以,所有的概率分布都可以由其矩唯一地线性表示。因此,要比较两个概率模型的关系,只需要比较他们的矩即可,如果两个概率模型的矩相等,那么他们就相等。具体如下:

Q是数据集这个概率模型的矩,P是目标模型的矩,所要实现的是让E_{Q}[f(x)]=E_{P}[f(x)]

六、推导softmax——解决两个问题

从上面的分析可知,要实现两个目标,完成机器学习模型的建立需要完成两部分内容:(1)让模型符合已知信息。(2)让模型对未知信息的反应的熵最大。

1、解决第一个问题

第一步要让模型符合已知信息,就要把已知信息的特征提取出来,在本文《五》中提到了让数据集和目标模型的矩相等。

(1)从数据集概括经验概率

接下来就是找数据集的矩,由于数据集并不是一个常见的概率模型,我们可以先从数据集概括经验概率:

(i) \tilde{P}(x,y)=\frac{count(\cdots x_{j},\cdots y_{i})}{N},表示数据集中符合某个特征x和标签y的样本的数量在样本总数的占比。

(ii)\tilde{P}(x)=\frac{count(\cdots x_{j})}{N},表示数据集中符合某个特征x的样本数量在样本总数中的占比。

(2)求数据集的矩

那么如何求矩呢?

要求矩,首先要有随机变量,我们知道了数据集的经验概率(对数据集的信息概括),所以根据经验概率构造随机变量:

这个随机变量是伯努利分布,因此只要知道其一阶矩即可知道这个分布的所以信息。其一阶矩为:E(X_{m})=1\cdot \tilde{P}(x.y)+0\cdot (1-\tilde{P}(x.y))=\tilde{P}(x.y)

可以发现这个一阶矩就是经验概率值,所以只需经验概率值等于目标模型的相应概率相等,即可保证目标模型在已知信息上与数据集相等,即可解决第一个问题,接下来只剩下最大化目标模型在未知情况下的熵最大。
 

2、解决第二个问题

我们的目标是得到我们的目标模型,其功能为求P(y|x)。所以模型应该包括数据集样本中的信息,其余数据集样本中没有的信息要保证熵的最大化。

由贝叶斯公式

P(y|x)=\frac{P(y)P(x|y)}{P(x)}=\frac{P(x,y)}{P(x)},即P(y|x)=\frac{\tilde{P}(x,y)}{\tilde{P}(x)}

由上面的P(y|x)=\frac{\tilde{P}(x,y)}{\tilde{P}(x)} 可知,经验概率\tilde{P}(x,y)\tilde{P}(x)是可以从数据集中抽象出来的,那么P(y|x)岂不是确定了,还谈什么最大熵?我们知道经验概率是从数据集中抽象出来的,而训练模型的目的不仅仅是处理数据集中的内容,还要有泛化能力,即P(y|x)中的 x 可能是未知的目标是求标签 y ,因此P(y|x)中一定包含未知信息。

(1)条件熵定义

先来求P(y|x)的熵,在这里是条件熵。

概率分布熵的定义:

那么 P(y|x) 的熵 H(Y|X) 应该如何求呢?

条件熵的定义为:

定义为:

H(Y|X) = -\sum_{x \in \mathcal{X}} P(x) \sum_{y \in \mathcal{Y}} P(y|x) \log P(y|x)

如果了解了熵的本质,这个条件熵的定义很容易理解,就是求这个条件熵的混乱程度,首先求在某个x的情况下所有y发生的概率的熵,然后再求所有x情况下的熵。

(2)求最大熵

P(y|x)的熵:

H(Y|X) = -\sum_{x \in \mathcal{X}} P(x) \sum_{y \in \mathcal{Y}} P(y|x) \log P(y|x)的最大值,即求

-H(Y|X) = \sum_{x \in \mathcal{X}} P(x) \sum_{y \in \mathcal{Y}} P(y|x) \log P(y|x)的最小值,

还要满足以下条件:

(i)经验概率\tilde{P}(x,y)\tilde{P}(x)与目标模型中相应的概率相等,即E_{\tilde{P}}(f(x,y))=E_{P}(f(x,y)),可写为\Delta _{k}-E_{P}(f_{k}(x,y))=0,其中k=1,2,\cdots ,m 表示事件或特征。

(ii)还要满足归一性:1-\underset{y}{\sum }P(y|x)=0

因此,求P(y|x)最大熵即解决优化问题:

                  minimize\ \ \ \ \ \sum_{x \in \mathcal{X}} P(x) \sum_{y \in \mathcal{Y}} P(y|x) \log P(y|x)\\\\subject\ \ to\ \ \ \ 1-\underset{y}{\sum }P(y|x)=0\\\\\cdot \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \Delta _{k}-E_{P}(f_{k}(x,y))=0    

Language函数为:

L(P,\lambda )=\sum_{x \in \mathcal{X}} P(x) \sum_{y \in \mathcal{Y}} P(y|x) \log P(y|x)+\lambda _{0}(1-\underset{y}{\sum }P(y|x)=0)+\sum_{k=1}^{m}\lambda _{k}(\Delta _{k}-E_{P}(f_{k}(x,y)))

整理:

原问题等价为:求     \underset{P}{min}\ \ \underset{\lambda }{max}\ L(P,\lambda )   ,(在本人文章【凸优化第五章对偶】中有解释)

对偶问题为:    求    \underset{\lambda }{max}\ \ \underset{P}{min}\ L(P,\lambda )

先来解决\underset{P}{min}\ L(P,\lambda )

可见,目标模型得出结果得形式为softmax得形式,因此softmax是求最大熵时得出来的。

因此,神经网络选用sigmoid和softmax作为激活函数,就默认了将最大熵作为基本原则。

七、机器学习的本质

在上面求最大熵的过程中,选用求Language对偶问题\underset{\lambda }{max}\ \ \underset{P}{min}\ L(P,\lambda ),只解决了问题\underset{P}{min}\ L(P,\lambda ),还有\underset{\lambda }{max}没有完成,

当解决了\underset{\lambda }{max},即确定了参数 \lambda ,那么神经网络的所有参数 w 和 b 就确定了。但这个极值确定起来非常复杂,且需要人为确定 f(x,y) ,即人为寻找数据集的特征并确定经验概率,即 f(x,y)=\tilde{f}(x,y),比较麻烦,因此一般选用神经网络(特征不需要人为寻找,在隐藏层自动确定)来解决确定参数这个问题。

综合来说:

\underset{P}{min}\ L(P,\lambda ) 确定了目标模型(P(y|x))的形式为,\underset{\lambda }{max}确定了模型的参数。

如图,在进行机器学习时,我们希望模型的适用范围可以扩大,但扩大的过程不能随便扩大,扩大后的相应概率P(x,y)要与训练集的经验概率\tilde{P}(x,y)相同;且要尽量保证P(x)\approx \tilde{P}(x),这个点主要体现在训练集的选择上(即训练集要在模型使用范围内没有特异性)。所以这里的扩大归根结底就是扩大了P(y|x)。在训练集外的部分(图中绿色的区域),要保证熵最大。

所以,\underset{P}{min}\ L(P,\lambda )确定了P(y|x)的形式是指数族的形式\frac{e^{\eta ^{T}\cdot f(x,y)}}{\sum_{y}^{}e^{\eta ^{T}\cdot f(x,y)}}(二项伯努利分布、多项伯努利分布、正态分布、泊松分布等很多分布都可以写成指数族的形式),所以,对比两个不知道形式的概率模型时,要保证熵最大,一定逃不出指数族的形式。在训练神经网络时,最后一层的激活函数选用sigmoid或softmax时,就可以保证目标模型的形式就是指数族的形式,即符合最大熵原理。

所以,神经网络中的隐藏层,相对于自动找到了特征;输出层使用sigmoid或softmax,相对于保证最大熵原理。

还要最后一个问题,上图中,左侧一半是Language对偶解决问题是使用的最大熵来确定参数\lambda(即(w,b)),而右侧神经网络则是使用交叉熵(或者说最大似然估计),那么最大熵和极大似然估计等价吗?他们依然是等价的,如下证明:

最大熵:

极大似然估计:

结束撒花。

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

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

相关文章

stm32 挂死定位(死循环)

1,调式程序时先看初始化和轮询点灯流程,如果灯没有闪烁则表明程序进入了死循环。 2,程序调式进入调式debug接口; 3,打断点依次运行; 4,查看寄存器; LR在异常后通常为0xFFFFFFFx&am…

ZFC in Lean 之 前集及其成员关系(S, ∈)是良创的(Well-founded)

基于前文,对前集(S,pre-set)、其成员关系(∈,membership),以及良创(Well-Founded)的定义,此文,分析(S, ∈)是良…

【暴刷力扣】59. 螺旋矩阵 II

题目 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 题解 leetcode 大部分题解写的不知道都是什么——代码非常杂乱。 还是直接放上紫书(《算法竞赛入门指南》)…

vue3+ts+element-ui实现的可编辑table表格组件 插入单行多行 组件代码可直接使用

最近需求越来越离谱,加班越来越严重,干活的牛马也越来越卑微。写了一个可编辑表格,并已封装好组件,可直接使用。 基于这位大佬的 动态表格自由编辑 方法和思路,于是参考和重写了表格,在基础上增加和删除了…

zxing生成、解析二维码,条形码

1、maven依赖 <!--zxing依赖--><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.1.0</version></dependency><dependency><groupId>com.google.zxing</groupI…

JQuery设置Cookie操作,设置、获取、删除三种方法

//触发条件 当用户点击或者操作时需要设置cookie时 //方法里面定义了三个处理cookie的方法 $(document).ready(function(e) {$("#btnsetcookie").click(function() {setCookie("Demo", "我的示例Cookie数据", 2); //设置cookie});$("#btn…

bert-base-uncased使用

1.下载模型 https://github.com/google-research/bert?tabreadme-ov-file 2.下载config.json和pytorch_model.bin https://huggingface.co/google-bert/bert-base-uncased/tree/main 3.解压缩到同一文件夹 4.代码测试 from transformers import BertModel,BertTokenizerBER…

【人工智能】阿里云PAI平台DSW实例一键安装Python脚本

阿里云的DSW实例自带的镜像很少而且并不好用&#xff0c;所以我在这里写三个一键编译安装Python3.8&#xff0c;Python3.9&#xff0c;Python3.10的Shell脚本。 安装Python3.8 wget https://www.smallbamboo.cn/install_python38.sh && chmod x install_python38.sh …

每日科技资讯:2024年11月09日【龙】农历十月初九 ---文末送书

目录 1.史上最强游戏CPU&#xff01;9800X3D首发评测2.苹果喊话iPhone 13和14钉子户&#xff1a;16方方面面都升级了3.加拿大政府下令 TikTok 关闭该国业务&#xff0c;但应用仍可以继续访问4.OpenAI 刚刚花了超过 1000 万美元购买了Chat.com5.Max 加入打击密码共享行列6.微软可…

「实战应用」如何用图表控件LightningChart .NET在WPF中制作表格?(一)

LightningChart .NET完全由GPU加速&#xff0c;并且性能经过优化&#xff0c;可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D&#xff0c;高级3D&#xff0c;Polar&#xff0c;Smith&#xff0c;3D饼/甜甜圈&#xff0c;地理地图和GIS图表以及适用于科…

大数据学习11之Hive优化篇

1.Hive压缩 1.1概述 当前的大数据环境下&#xff0c;机器性能好&#xff0c;节点更多&#xff0c;但并不代表我们无条件直接对数据进行处理&#xff0c;在某些情况下&#xff0c;我们依旧需要对数据进行压缩处理&#xff0c;压缩处理能有效减少存储系统的字节读取数&#xff0…

【Linux】【Vim】多文件编辑与分屏

多文件编辑 编辑另一个文件文件列表分屏vimdiff文件跳转 编辑另一个文件 除了为每一个要编辑的文件运行一次 Vim 之外&#xff0c;还可以在当前 Vim 中开始编辑另一个文件。 :edit foo.txtVim 会关闭当前正在编辑的文件打开指定的新文件进行编辑。如果当前文件还有未存盘的内容…

Fastify Swagger:自动化API文档生成与展示

在现代软件开发中&#xff0c;API文档的生成和维护是一个不可或缺的环节。Fastify Swagger 是一个专为 Fastify 框架设计的插件&#xff0c;它能够自动生成符合 Swagger&#xff08;OpenAPI v2 或 v3&#xff09;规范的文档&#xff0c;从而帮助开发者轻松创建和维护API文档。本…

SQL,力扣题目262,行程和用户

一、力扣链接 LeetCode_262 二、题目描述 表&#xff1a;Trips ----------------------- | Column Name | Type | ----------------------- | id | int | | client_id | int | | driver_id | int | | city_id | int | | status …

【复旦微FM33 MCU 开发指南】ADC

前言 本系列基于复旦微FM33LC0系列单片机的DataSheet编写&#xff0c;旨在提供手册解析和开发指南。 本文章及本系列其他文章将持续更新&#xff0c;本系列其它文章请跳转【复旦微FM33 MCU 外设开发指南】总集篇 本文章最后更新日期&#xff1a;2024/11/09 全文字数&#xff…

机器学习—是否有路通向AGI(通用人工智能)

AI包含两个非常不同的东西&#xff0c;一个是ANI&#xff0c;代表人工狭义智能&#xff0c;这是一个人工智能系统&#xff0c;只做一件事&#xff0c;狭隘的任务&#xff0c;可能非常有价值&#xff0c;比如智能音箱或者网络搜索或AI应用于特定应用。例如&#xff0c;过去几年的…

2.4w字 —TS入门教程

目录 1. 什么是TS 2. TS基本使用 3 TS基础语法 3.1 基础类型约束 3.11 string&#xff0c;number&#xff0c;boolean&#xff0c; null和undefined 3.12 any 3.13 unknown 3.14 void 3.15 数组 3.16 对象 3.2 函数的约束 3.21 普通写法 3.22 函数表达式 3.22 可选…

深度学习注意力机制类型总结pytorch实现代码

一、注意力机制的基本原理 在深度学习中&#xff0c;注意力机制&#xff08;Attention Mechanism&#xff09;已经成为一种重要的技术。意力机制通过动态调整模型的注意力权重&#xff0c;来突出重要信息&#xff0c;忽略不重要的信息&#xff0c;大大提高了模型的效果 注意力…

数据库SQLite的使用

SQLite是一个C语言库&#xff0c;实现了一个小型、快速、独立、高可靠性、功能齐全的SQL数据库引擎。SQLite文件格式稳定、跨平台且向后兼容。SQLite源代码属于公共领域(public-domain)&#xff0c;任何人都可以免费将其用于任何目的。源码地址&#xff1a;https://github.com/…

基于java宠物医院管理系统的设计与实现

一、环境信息 开发语言&#xff1a;JAVA JDK版本&#xff1a;JDK8及以上 数据库&#xff1a;MySql5.6及以上 Maven版本&#xff1a;任意版本 操作系统&#xff1a;Windows、macOS 开发工具&#xff1a;Idea、Eclipse、MyEclipse 开发框架&#xff1a;SpringbootHtmljQueryMysql…