首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么神经网络中首选零中心激活函数?

问:为什么神经网络中首选零中心激活函数?

答:由于以下几个原因,零中心激活函数在神经网络中是首选:

1.梯度分布:以零为中心的激活函数确保梯度不全为正或全负。这会导致更好的梯度分布,并有助于反向传播过程。使用像 ReLU(整流线性单元)这样的非零中心函数(将所有负输入输出为 0)可能会导致死神经元(即仅输出 0 因而无法学习的神经元),因为梯度始终为非负值。

2.对称性:零中心激活函数提供一定程度的对称性,有助于优化过程。如果激活函数不以零为中心,则优化过程可能会偏向正值或负值,并可能导致学习不平衡。

3.更快的收敛:由于对称性和均匀分布的梯度,具有零中心激活函数的神经网络往往收敛得更快。

以零为中心的激活函数的一个常见示例是 Tanh(双曲正切)函数,它将输入压缩到 -1 到 1 之间的范围,从而有效地将输出以零为中心。然而,需要注意的是,激活函数的选择取决于具体的任务和数据,并且以零为中心的函数可能并不总是最佳选择。一些任务可能受益于非零中心激活函数,如 ReLU 或其变体(例如,Leaky ReLU、参数化 ReLU),尽管它们是非零中心的,但它们已被证明在许多深度学习任务中表现良好。

问:如何使循环神经网络 (RNN) 更有效地进行自然语言处理 (NLP)?

答:使循环神经网络 (RNN) 更有效地进行自然语言处理 (NLP),需要采用各种技术和策略来增强其理解和生成人类语言的性能。以下是使 RNN 更有效地执行 NLP 任务的几种方法: 

1.长短期记忆 (LSTM) 和门控循环单元 (GRU):考虑使用 LSTM 或 GRU 等更高级的变体,而不是使用基本的 RNN 单元。这些单元旨在更好地捕获序列中的长程依赖性并减轻梯度消失问题。

2.双向 RNN:双向 RNN 处理正向和反向的输入序列,允许网络从过去和未来的标记中捕获上下文信息。这可以提高模型理解上下文的能力。

3.注意力机制:注意力机制使模型能够在生成输出时关注输入序列的不同部分。它们对于机器翻译和文本摘要等任务特别有效,其中输入的某些部分与输出的特定部分更相关。

4.预训练词嵌入:使用预训练词嵌入(例如 Word2Vec、GloVe 或 FastText)初始化 RNN 的输入层。这些嵌入捕获单词之间的语义关系,并为模型提供更好的理解语言的起点。

5.堆叠层:通过堆叠多个层来增加 RNN 的深度。更深的网络可以捕获数据中更复杂的模式,但要注意过度拟合和梯度消失问题。

6.正则化:应用 dropout 或 recurrent dropout 等技术来防止过度拟合。这些方法在训练期间随机将一部分单位设置为零,从而降低了记忆风险。

7.梯度裁剪:为了防止训练期间梯度爆炸,请应用梯度裁剪,这会限制反向传播期间梯度的大小。

8.数据增强:对于基于文本的 NLP 任务,请考虑应用数据增强技术,例如同义词替换。

问:苹果基于ARM的芯片和其他公司的处理器有什么区别? 

答:今天可以比较微架构之间的高性能 CPU,因为它们都基于同一个 - 超标量。  如今,多亏了超标量,RISC 与 CISC、ISA 都不再重要,例如 ARM 与 x86。原因在于超标量微架构。

在超标量中,我们可以将内核视为两个独立的块,前端从内存中读取指令(所以我们在这里讨论 ARM、x86、x64、RISC-V),将它们转换为微/宏操作 (uOp) 并传递到后端执行。由于ISA(指令集架构,例如x86)不被执行,RISC vs CISC 不再重要。

重要的是核心有多“宽”。宽意味着并行核心中能够执行多少个 uOp。前端将 uOp 传送到后端后,uOp 存储在 ROB(重新排序缓冲区)中,在 ROB 中对 uOp 进行分析、修改(寄存器重命名),并由调度程序通过执行单元 (EU) 并行执行。ROB 大小、各种缓存大小(例如 uOp 等)在这里也发挥着重要作用。

作为示例,这是 Zen2 执行块(后端):

你看,4 个 ALU 块。这是整数 EU。右侧是用于浮点的 2+2 EU。  

如您所知,Zen4 比 Zen2 和 Zen3 更快,如下所示:

例如,ROB 大小已从 224 更改为 320,为调度程序提供更大的灵活性来找到合适的 uOp 来执行。

与 Intel 类似,第 12 代的 ROB 增加到 512 个条目。

最后是 ARM 与 ARM 的较量。Cortex X4(最强大的 ARM 内核)在 ROB 和 6+2 EU 中有 324 个条目。       

Apple M3 比上述所有内容更宽,在 ROB 和 8 EU 中有 620 多个条目。

M3 的非常好的结果在许多基准测试中都可见,其中基准代码可以利用 8 个 EU。但当谈到现实世界的例子时,情况就会发生变化,例如 Cinebench,此时更高的时钟更加重要。

在许多情况下,另一个重要因素是缓存大小,即 L1、L2 和 L3 缓存的大小。x86的缓存较小,例如L1为32+32kB,而Apple M2为192kB。但最近Zen5增加到48+32kB。       

除了 Lx 缓存之外,TLB 大小也很重要,顺便说一句,TLB 大小也会随着世代的推移而增加。  

当上述所有内容加上许多未提及的内容加在一起时,我们就得到了一个现代的高性能 CPU。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OKgcXYKZTGV8tK5_UVIgZo6w0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券