【一起啃书】《机器学习》第五章 神经网络

news2024/11/24 5:09:37

文章目录

      • 第五章 神经网络
        • 5.1 神经元模型
        • 5.2 感知机与多层网络
        • 5.3 误差逆传播算法
        • 5.4 全局最小与局部极小
        • 5.5 其他常见神经网络
        • 5.6 深度学习

第五章 神经网络

5.1 神经元模型

  神经网络是由具有适应性简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应,神经网络中最基本的成分是神经元模型,以下为第一个神经元数学模型——M-P神经元模型。

  在这个模型中,神经元接收到来自 n n n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出,理想中的激活函数如下图a所示的阶跃函数,它将输入值映射为输出值“0”或“1”,其中“1”对应于神经元兴奋,“0”对应于神经元抑制。

  然而,阶跃函数具有不连续、不光滑等不太好的性质,所以实际常用Sigmoid函数作为激活函数。目前常用的激活函数主要有以下几种,具体的可以参考这个链接(激活函数 | 深度学习领域最常用的10个激活函数,详解数学原理及优缺点)。

  • 线性激活函数:输出与输入成正比,没有非线性特性,一般用于输出层。
  • Sigmoid激活函数:输出在0到1之间,具有平滑的非线性特性,一般用于二分类问题或者概率输出。
  • 双曲正切激活函数:输出在-1到1之间,具有平滑的非线性特性,一般用于多分类问题或者中心化输出。
  • ReLU激活函数:输出为0或者正数,具有分段的非线性特性,一般用于隐藏层,可以加速收敛和减少梯度消失。
  • Leaky ReLU激活函数:输出为负数或者正数,具有分段的非线性特性,一般用于隐藏层,可以避免ReLU的死亡节点问题。
  • ELU激活函数:输出为负指数或者正数,具有平滑的非线性特性,一般用于隐藏层,可以避免ReLU的死亡节点问题,并且有更好的收敛效果。
  • SELU激活函数:输出为负指数或者正数,具有平滑的非线性特性,一般用于隐藏层,可以自动归一化网络,并且有更好的收敛效果。
  • Swish激活函数:输出为负数或者正数,具有平滑的非线性特性,一般用于隐藏层,可以提高准确率和稳定性。
  • Softmax激活函数:输出为多个0到1之间的值,其和为1,具有平滑的非线性特性,一般用于输出层,可以表示多分类问题的概率分布。

5.2 感知机与多层网络

  感知机是神经网络最基本的模型,它是由一个或多个神经元组成的,而神经网络是由多个感知机或其他类型的神经元连接而成的复杂模型,它可以实现非线性分类和回归等功能,比如下面就是一个有两个输入神经元的感知机网络结构 y = f ( ∑ w i x i − θ ) y = f(\sum {{w_i}} {x_i} - \theta ) y=f(wixiθ),可以实现与、或、非运算。

  更一般的,给定训练数据集,权重 w w w以及阈值 θ \theta θ可以通过学习得到,而阈值 θ \theta θ可以看作固定输入为-1的权重 w n + 1 w_{n+1} wn+1,这样就可以统一为权重的学习,对于感知机来说,学习规则如下所示,假设当前感知机的输出为$\mathop y\limits^ \wedge $,感知机权重将这样调整:
w i ← w i + Δ w i Δ w i = η ( y − y ∧ ) x i {w_i} \leftarrow {w_i} + \Delta {w_i}\\ \Delta {w_i} = \eta (y - \mathop y\limits^ \wedge ){x_i} wiwi+ΔwiΔwi=η(yy)xi
  其中 η ∈ ( 0 , 1 ) \eta \in (0,1) η(0,1)称为学习率,若感知机预测正确,则感知机不发生变化,否则将根据错误的程度进行权重调整,这也是感知机学习算法,是一种基于误分类的监督学习算法,目标是找到一个能够将训练数据正确分类的超平面。

  感知机选择将预测值与实际值作差的形式来进行权重更新的依据是为了使超平面向正确分类的方向移动。当一个实例被误分类时,预测值与实际值的差就是误差的符号,它表示了超平面与实例之间的距离和方向,此时将误差乘以输入向量,就可以得到一个调整量,它表示了超平面在每个特征维度上需要移动的大小和方向,而将调整量加到权重上,就可以使超平面向正确分类的方向移动一定的距离。这样,经过多次迭代,超平面就可以逐渐接近最优的位置了。

  上述问题都是线性可分问题,而这样的感知机无法解决非线性可分问题,要解决非线性可分问题,需要考虑使用多层功能神经元。如下所示的两层感知机,就可以解决异或问题,而在输出层与输入层之间的一层神经元则被称为隐层或隐含层,也是具有激活函数的功能神经元。

  下面介绍一下前馈神经网络,在前馈神经网络中,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接,如下所示:

  前馈神经网络与反馈神经网络的区别:深度学习–前馈神经网络、反馈神经网络

5.3 误差逆传播算法

  多层网络的学习能力比单层感知器强得多,如果想训练多层网络,上述简单感知器的学习规则显然就不够了,需要更强大的学习算法,下面来介绍一下BP算法,BP算法是一种用于训练多层神经网络的梯度下降算法,它利用链式法则计算网络每层的权重对损失函数的梯度,然后更新权重来最小化损失函数。BP算法分为两个阶段:激励传播和权重更新。激励传播阶段包括前向传播和反向传播,前向传播是将训练输入送入网络以获得预测结果,反向传播是计算预测结果与训练目标的误差。权重更新阶段是根据误差和梯度调整网络的权重,以减小误差。

  下面对BP算法中的一些符号进行定义,以一个拥有 d d d个输入神经元、 l l l个输出神经元、 q q q个隐层神经元的多层前馈网络结构为例,假设隐层和输出层神经元都是用Sigmoid函数作为激活函数。

  • D D D:训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , x i ∈ R d , y ∈ R l D = \{ ({x_1},{y_1}),({x_2},{y_2}),...,({x_m},{y_m})\} ,{x_i} \in {{ R}^d},y \in {{ R}^l} D={(x1,y1),(x2,y2),...,(xm,ym)},xiRd,yRl,即输入示例由 d d d个属性描述,输出 l l l维实值向量
  • θ j {\theta _j} θj:输出层第 j j j个神经元的阈值
  • γ h {\gamma _h} γh:隐层第 h h h个神经元的阈值
  • v i h {v_{ih}} vih:输入层第 i i i个神经元与隐层第 h h h个神经元之间的连接权重
  • w h j {w_{hj}} whj:隐层第 h h h个神经元与输出层第 j j j个神经元之间的连接权重
  • α h {\alpha _h} αh:隐层第 h h h个神经元接收到的输入 α h = ∑ i = 1 d v i h x i {\alpha _h} = \sum\limits_{i = 1}^d {{v_{ih}}{x_i}} αh=i=1dvihxi
  • β j {\beta _j} βj:输出层第 j j j个神经元接收到的输入 β j = ∑ h = 1 q w h j b h {\beta _j} = \sum\limits_{h = 1}^q {{w_{hj}}} {b_h} βj=h=1qwhjbh,其中 b h b_h bh为隐层第 h h h个神经元的输出

  对于训练例 ( x k , y k ) ({x_k},{y_k}) (xk,yk),假定神经网络的输出为 y ∗ k = ( y ∗ 1 k , y ∗ 2 k , . . . , y ∗ l k ) {{y^*}_k} = ({y^*}_1^k,{y^*}_2^k,...,{y^*}_l^k) yk=(y1k,y2k,...,ylk),即 y ∗ l k = f ( β j − θ j ) {y^*}_l^k = f({\beta _j} - {\theta _j}) ylk=f(βjθj),则网络在 ( x k , y k ) ({x_k},{y_k}) (xk,yk)上的均方误差为
E k = 1 2 ∑ j = 1 l ( y ∗ l k − y j k ) 2 {E_k} = \frac{1}{2}{\sum\limits_{j = 1}^l {({y^*}_l^k - y_j^k)} ^2} Ek=21j=1l(ylkyjk)2
  下面以隐层到输出层的连接权重 w h j w_{hj} whj为例来进行权重更新的推导,对于误差 E k E_k Ek,给定学习率 η \eta η,有
Δ w h j = − η ∂ E k ∂ w h j ∂ E k ∂ w h j = ∂ E k ∂ y ∗ l k ⋅ ∂ y ∗ l k ∂ β j ⋅ ∂ β j ∂ w h j , ∂ β j ∂ w h j = b h \Delta {w_{hj}} = - \eta \frac{{\partial {E_k}}}{{\partial {w_{hj}}}}\\ \frac{{\partial {E_k}}}{{\partial {w_{hj}}}} = \frac{{\partial {E_k}}}{\partial {y^*}_l^k} \cdot \frac{\partial {y^*}_l^k}{{\partial {\beta _j}}} \cdot \frac{{\partial {\beta _j}}}{{\partial {w_{hj}}}}, \frac{{\partial {\beta _j}}}{{\partial {w_{hj}}}} = {b_h} Δwhj=ηwhjEkwhjEk=ylkEkβjylkwhjβj,whjβj=bh
  Sigmoid函数有一个很好的性质: f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x) = f(x)(1 - f(x)) f(x)=f(x)(1f(x)),所以可以定义如下 g j g_j gj
g j = − ∂ E k ∂ y ∗ l k ⋅ ∂ y ∗ l k ∂ β j = − ( y ∗ l k − y j k ) f ′ ( β j − θ j ) = y ∗ l k ( 1 − y ∗ l k ) ( y j k − y ∗ l k ) {g_j} = - \frac{{\partial {E_k}}}{\partial {y^*}_l^k} \cdot \frac{\partial {y^*}_l^k}{{\partial {\beta _j}}} = - ({y^*}_l^k - y_j^k)f'({\beta _j} - {\theta _j}) = {y^*}_l^k(1 - {y^*}_l^k)(y_j^k - {y^*}_l^k) gj=ylkEkβjylk=(ylkyjk)f(βjθj)=ylk(1ylk)(yjkylk)
  将上述 g j g_j gj代入之前的式子即可得到权重 w h j w_{hj} whj的更新公式: Δ w h j = η g j b h \Delta {w_{hj}} = \eta g_j b_h Δwhj=ηgjbh,类似也可以得到其他权重的更新公式,如下所示:
Δ θ j = − η g j , Δ v i h = η e h x i , Δ γ h = − η e h 其中 e h = − ∂ E k ∂ b h ⋅ ∂ b h ∂ α h = − ∑ j = 1 l ∂ E k ∂ β j ⋅ ∂ β j ∂ b h f ′ ( α h − γ h ) = ∑ j = 1 l w h j g j f ′ ( α h − γ h ) = b h ( 1 − b h ) ∑ j = 1 l w h j g j \Delta {\theta _j} = - \eta {g_j},\Delta {v_{ih}} = \eta {e_h}{x_i},\Delta {\gamma _h} = - \eta {e_h}\\ 其中{e_h} = - \frac{{\partial {E_k}}}{{\partial {b_h}}} \cdot \frac{{\partial {b_h}}}{{\partial {\alpha _h}}} = - \sum\limits_{j = 1}^l {\frac{{\partial {E_k}}}{{\partial {\beta _j}}} \cdot \frac{{\partial {\beta _j}}}{{\partial {b_h}}}} f'({\alpha _h} - {\gamma _h}) = \sum\limits_{j = 1}^l {{w_{hj}}} {g_j}f'({\alpha _h} - {\gamma _h}) = {b_h}(1 - {b_h})\sum\limits_{j = 1}^l {{w_{hj}}} {g_j} Δθj=ηgj,Δvih=ηehxi,Δγh=ηeh其中eh=bhEkαhbh=j=1lβjEkbhβjf(αhγh)=j=1lwhjgjf(αhγh)=bh(1bh)j=1lwhjgj
  下面给出BP算法的工作流程,对于每个训练样例,BP算法执行以下操作:先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权重和阈值进行调整。该迭代过程循环进行,直到达到某些停止条件为止,比如训练误差已达到一个很小的值。

  BP算法的目标是要最小化训练集 D D D上的累积误差 E = 1 m ∑ k = 1 m E k E = \frac{1}{m}\sum\limits_{k = 1}^m {{E_k}} E=m1k=1mEk,在这里要注意虽然BP算法里面有反向传播这一步,但这与反馈神经网络中的反馈是不同的,BP算法里面的反向传播是指根据网络的输出误差,从输出层到输入层逐层计算并更新权重参数的过程,而反馈神经网络中的反馈是指网络的输出会经过一定的变换后,再作为输入传回到网络中,形成一个循环或回路。

  下面介绍一下两种BP算法:标准BP算法与累积BP算法。

  标准BP算法每次只针对一个训练样例更新参数,也就是随机梯度下降法(stochastic gradient descent),优点是参数更新频繁,可以加快收敛速度和避免局部最优,缺点是参数更新不一致,可能导致震荡和偏离最优方向。累积BP算法每次针对所有训练样例更新参数,也就是批量梯度下降法(batch gradient descent),优点是参数更新稳定,可以减少噪声和波动,缺点是参数更新缓慢,可能导致陷入局部最优或过拟合。比如,假设有n个训练样例,分别使用标准BP和累积BP,那么参数更新的次数取决于迭代轮数,假设迭代轮数为m,那么:

  • 标准BP算法每轮迭代会对每个训练样例进行一次参数更新,所以总共会进行m*n次参数更新。
  • 累积BP算法每轮迭代会对所有训练样例进行一次参数更新,所以总共会进行m次参数更新。

  为了缓解BP网络的过拟合,一共有两种策略——早停和正则化早停是将数据集分成训练集和验证集,训练集用来计算梯度、更新连接权重和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权重和阈值。正则化是在误差目标函数中增加一个用于描述网络复杂度的部分,比如连接权重与阈值的平方和。

5.4 全局最小与局部极小

  在神经网络的训练过程中,我们往往会谈到两种最优:局部极小与全局最小。显然,参数空间内梯度为零的点,只要其误差函数值小于邻点的误差函数值,就是局部极小点;可能存在多个局部极小值,但是却只会有一个全局最小值。

  基于梯度的搜索时使用最为广泛的参数寻优方法,梯度下降法是沿着负梯度方向搜索最优解,因为负梯度方向是函数在当前点的方向导数最小的方向,方向导数是函数沿着某个方向的变化率,它与函数的梯度和该方向的单位向量的点积相等,当两个向量的夹角为180度时,点积最小,也就是说,当单位向量与梯度的反方向一致时,方向导数最小。因此,沿着负梯度方向走,函数值下降最快。

  目前常采用以下策略来试图跳出局部极小,从而进一步接近全局最小:

  • 以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数,这相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部极小,从中进行选择有可能获得更接近全局最小的结果。
  • 使用“模拟退火”技术。模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于“跳出”局部极小。在每步迭代过程中,接受“次优解”的概率要随着时间的推移而逐渐降低,从而保证算法稳定。
  • 使用随机梯度下降。与标准梯度下降法精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机因素。于是,即便陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索。

5.5 其他常见神经网络

(1)RBF网络

  RBF网络是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元的激活函数,而输出层则是对隐层神经元输出的线性组合。

(2)ART网络

  竞争型学习是神经网络中一种常用的无监督学习策略,在使用该策略时,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制。而ART网络是竞争型学习的重要代表,该网络由比较层、识别层、识别阈值和重置模块组成。

  在接收到比较层的输入信号后,识别层神经元之间相互竞争以产生获胜神经元,竞争的最简单方式是,计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离最小者胜。获胜神经元将向其他识别层神经元发送信号,抑制其激活。若输入向量与获胜神经元所对应的代表向量之间的相似度大于识别阈值,则当前输入样本将被归为该代表向量所属类别,同时,网络连接权重将会更新,使得以后在接收到相似输入样本时该模式类会计算出更大的相似度,从而使该获胜神经元有更大可能获胜;若相似度不大于识别阈值,则重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量。

(3)SOM网络

  SOM网络是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间,同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的邻近神经元。

  如下图所示,SOM网络中的输出层神经元以矩阵方式排列在二维空间中,每个神经元都拥有一个权向量,网络在接收输入向量后,将会确定输出层获胜神经元,它决定了该输入向量在低维空间中的位置。SOM的训练目标就是为每个输出层神经元找到合适的权向量,以达到保持拓扑结构的目的。

(4)级联相关网络

  一般的神经网络模型通常假定网络结构是事先固定的,训练的目的是利用训练样本来确定合适的连接权重、阈值等参数。与此不同,结构自适应网络则将网络结构也当作学习的目标之一,并希望能在训练过程中找到最符合数据特点的网络结构,级联相关网络是结构自适应网络的重要代表。

  级联相关网络有两个主要成分:“级联”和“相关”。级联是指建立层次连接的层级结构,相关是指通过最大化新神经元的输出与网络误差之间的相关性来训练相关的参数。

(5)Elman网络

  Elman网络是最常用的递归神经网络之一,如下所示,它的结构与多层前馈网络很相似,但隐层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下一时刻的输入。隐层神经元通常采用Sigmoid激活函数,而网络的训练则常通过推广的BP算法进行。

5.6 深度学习

  典型的深度学习模型就是很深层的神经网络,深度学习有很多应用场景,例如:

  • 语音识别:深度学习可以用于语音识别、语音合成等任务,例如谷歌的语音助手、苹果的Siri等。
  • 图像识别:深度学习在图像分类、目标检测、图像语义分割等计算机视觉任务中取得了显著成果,例如谷歌的人脸识别、腾讯的美颜相机等。
  • 自然语言处理:深度学习可以用于文本生成、机器翻译、情感分析等自然语言处理任务,例如微软的小冰、百度的翻译等。
  • 游戏:深度学习可以用于强化学习,让机器自主地学习和优化策略,例如谷歌的AlphaGo、OpenAI的Dota 2机器人等。
  • 医疗:深度学习可以用于医疗图像分析、疾病诊断、药物发现等医疗领域,例如IBM的Watson、阿里的ET医疗大脑等。
  • 艺术:深度学习可以用于图像风格迁移、图像生成、音乐生成等艺术领域,例如谷歌的Deep Dream、Prisma等。

  以下是卷积神经网络用于手写数字识别的一个例子。

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

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

相关文章

【网络安全】JWT安全漏洞

jwt安全漏洞 什么是JWTJWT验证流程漏洞介绍方法一:伪造JWT方法二:爆破密钥 什么是JWT Json Web Token(JWT) JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在两个组织之间传递安全可靠的信息。 JWT是一个有…

北大软件DHR产品,提供一站式、全方位的数字化人力资源管理解决方案

近年来,随着数字化时代的到来,国有企业的人力资源管理方式也需要不断地更新和升级。数字化转型已成为国企人力资源管理的新趋势,加快数字化转型已经成为国企提高核心竞争力的必然选择。 作为北大软件旗下的全新一代人力资源数字化产品&#…

SpringSession

session在负载均衡下丢失的原因: 在使用Nginx做负载均衡时候,session丢失情况,原因在于你登录了一台服务器,但是比如Nginx用的轮询策略,下次访问时候,连接的是另外一台服务器,那么就出现了Session丢失 如果Nginx的负载均衡策略是ip_hash 由于服务器的ip和端口是固…

中国社会科学院大学与美国杜兰大学金融管理硕士——只要出发就会顺利抵达彼岸

新的地方会发生新的故事,新的相遇会碰撞出新的火花。只要出发,我们就会顺利抵达我们想去的远方。就像选择在社科院杜兰大学金融管理硕士项目读研的我们,在这里与来自全国各地的精英同学相聚,共享行业前沿资讯,聆听名师…

【SAS应用统计分析】数据的描述性统计分析

声明:本文知识参考内容来自网络,如有侵权请联系删除。本文还参照了B站up主庄7的课程内容【公开课】数据分析与SAS【15课】 目录 实验原理 描述性统计量 1.反映数据集中趋势的特征量 2.反映数据离散程度的特征量 3.反映数据分布形状的特征量 数据的…

JavaScript经典教程(六)-- JavaScript基础 -- Array常用方法详解

187-Array常用方法详解 1、Array - 数组 (1)两种声明方式 1、简化 2、以对象形式声明 var a [1 , 2 , 3]; var b new Array(1 , 2 , 3);a是b的简化,都是对象形式,但没有两个一样的对象。 3、用new声明数组时,如…

MySQL知识学习01

1、什么是关系型数据库? 顾名思义,关系型数据库(RDBMS,Relational Database Management System)就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多&am…

【LeetCode:64. 最小路径和 | 暴力递归=>记忆化搜索=>动态规划 】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【QT5:CAN卡通信的上位机-加入示波器-界面优化与修饰+解析功能编写+进阶样例(2)】

【QT5:CAN卡通信的上位机-加入示波器-界面优化与修饰解析功能编写进阶样例2】 1、概述2、实验环境3、自我总结和提升4、事先声明5、效果展示6、功能代码部分的解析1)自定义组合功能函数2)数据解析部分3)示波器接收部分 7、界面修饰部分1&…

NFT Insider #93:The Sandbox启动Mega City 3土地销售,YGG​与AlphaTitans合作

引言:NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据,艺术新闻类,游戏新闻类,虚拟世界类&#…

一文带你了解MySQL数据库Innodb_buffer_pool_size

前言 上篇文章介绍了MySQL中的存储引擎层主要负责数据的写入和读取,与底层的文件进行交互。MySQL在5.5 版本以后,MySQL默认存储引擎为 InnoDB,他的主要特性有: DML 操作(增、删、改)遵循 ACID(事务安全表) 模型,支持事…

【Linux从入门到精通】Linux常用基础指令(下)

本篇文章接上篇文章(【Linux从入门到精通】Linux常用基础指令(上)、【Linux从入门到精通】Linux常用基础指令(中))进行详解。本章的指令相对没有那么常用,难度相对适中。同时也讲述了几个热键。…

编程式导航路由跳转到当前路由(参数不变),多次执行会抛出NavigatorDuplicated的禁告错误?

重写push与replace方法 编程式导航路由跳转到当前路由(参数不变),多次执行会抛出NavigatorDuplicated的禁告错误? 路由跳转有俩种形式:声明式导航,编程式导航 声明式导航没有这类问题的,因为…

【精华】WiderPerson数据集介绍及标签转换(YOLO格式)

文章目录 &#xff08;1&#xff09;WiderPerson数据集详情<1> 应用项目<2> 数据集地址<3> 归属单位<4> 详细介绍<5> 数据下载及格式介绍 &#xff08;2&#xff09;WiderPerson转YOLO格式<1> 文件夹结构<2> 数据可视化<3> YO…

全国计算机等级三级网络技术试卷详解(三)

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 1.下列关于RPR技术的描述中&#xff0c;错误的是&#xff08;&#xff09;。 A) RPR与FDDI一样使用双环结构 B) 在RPR环中&#xff0c;源节点向目的节点成功发出…

JVM(Java虚拟机)

目录 1.JVM 简介 2. JVM 运行时数据区 2.1程序计数器 2.栈 3.堆 4.方法区 3.类加载 1.loading 2.linking 1.验证 2.准备 3.解析 3.Initializing 4.双亲委派模型 5.JVM垃圾回收机制 1.劣势 2.回收什么 3.垃圾回收具体怎么回收 1.找垃圾 方法: 问题: 2.释放…

4月JAVA面试太难,吃透这份JAVA架构面试笔记后,成功涨到30K

昨天跟一位高级架构师的前辈聊天时&#xff0c;聊到今年的面试。有两个感受&#xff0c;一个是今年面邀的次数比往年要低不少&#xff0c;再一个就是很多面试者准备明显不足。不少候选人能力其实不差&#xff0c;进入团队干活后达到期望不难&#xff0c;但由于没准备或不会表达…

快速响应 智慧应急|大势智慧亮相第三届武汉国际安全应急博览会

4月26日至4月28日&#xff0c;第三届武汉国际安全应急博览会&#xff08;后简称“应博会”&#xff09;在湖北武汉顺利举办。本次展会&#xff0c;大势智慧以实时三维重建能力为核心&#xff0c;提供各类应急场景的技术支撑&#xff0c;助力应急处置和救援等方面的应用。 展会…

基于AI技术的智能考试系统设计与实现(论文+源码)_kaic

摘 要 随着当今世界互联网信息技术的飞速发展&#xff0c;互联网在人们生活中的应用越来越广泛&#xff0c;在线考试成为选拔人才的重要方法。实现一个基于AI技术的智能考试系统&#xff0c;该系统采用Java编程语言实现。通过使用自然语言处理技术和机器学习算法&#xff0c;该…

【C++】入门

目录 1. 什么是C2. 命名空间2.1 命名空间的定义2.2 命名空间的使用 3. 输入和输出4. 缺省参数4.1 概念4.2 分类 5. 函数重载5.1 函数重载概念5.2 为什么支持函数重载 6. 引用6.1 概念6.2 特性6.3 常引用6.4 指针与引用的区别 7. 内联函数7.1 特性 1. 什么是C C语言是结构化和模…