0

所以,我对使用神经网络有点陌生(我使用带有 TensorFlow 后端的 Keras)。我的数学背景足以理解梯度下降优化背后的概念。我没有足够的信心来处理数字和符号数学。

我最近在阅读 PSO(另一种称为粒子群优化的优化技术)。我一直在构建一个 CNN 来对肺部疾病类型进行分类。到目前为止,我已经了解了以下内容:

渐变体面:

  • 最小化成本函数(找到成本函数的最小值)
  • 从某个随机初始化的位置开始,寻找最陡峭的梯度
  • 成本函数必须是可微的(斜率 = 梯度)
  • 通常以一个最小值稳定下来,这可能是局部或全局最小值

我很了解梯度下降,但对为什么 PSO 是一种更简单的方法感到困惑。以下是我对 PSO 的了解:

粒子群优化:

  • 最小化成本函数
  • 多个粒子在此成本函数上的不同位置开始
  • 粒子寻找最小值,但每个粒子都受到群体的影响
  • 这意味着粒子不会陷入单个局部最小值,并且可以根据群体行为移出最小值
  • 提高找到全局最小值的机会
  • 成本函数不一定是可微的?
  1. 为什么这有意义?如果粒子(我对粒子的理解是具有随机初始化权重的模型的实例等,这意味着它在成本函数上的位置不同)。这本质上使更多的模型实例来训练,而不是梯度下降训练一个。如果我刚才说的完全是胡说八道,请纠正我对粒子的理解......

  2. 为什么成本函数不必是可微的?粒子正在寻找最小值,因此需要沿着最陡梯度的方向向下移动。

  3. 如何在 CNN 中实现 PSO?我正在查看一个名为 Pyswarms 的库,这让我更加沮丧,因为 Pyswarms 似乎不能用作 CNN 的优化器。

(PS 我将成本函数可视化为 3 个变量函数)。

4

0 回答 0