0

だから、私はニューラルネットワークを扱うのは初めてです(TensorFlowバックエンドでKerasを使用しています)。私の数学のバックグラウンドは、勾配降下最適化の背後にある概念を理解するのに十分なほど深いものです。数字や記号演算を扱う自信がありません。

最近、PSO (Particle Swarm Optimization と呼ばれる別の最適化手法) について読んでいました。私は、肺疾患の種類を分類するための CNN を構築してきました。これまでのところ、次のことを理解しています。

まともなグラデーション:

  • コスト関数を最小化します (コスト関数の最小値を見つけます)
  • ランダムに初期化された位置から開始し、最も急な勾配を探します
  • コスト関数は微分可能でなければなりません (勾配 = 勾配)
  • 通常、ローカルまたはグローバルな最小値である可能性のある 1 つの最小値に落ち着く

私は勾配降下法をよく理解していますが、PSO がより単純なアプローチである理由について混乱しています。PSO について私が知っていることは次のとおりです。

粒子群の最適化:

  • コスト関数を最小化
  • 複数の粒子は、このコスト関数の異なる場所で開始します
  • 粒子は最小値を探しますが、各粒子は群れの影響を受けます
  • これは、粒子が単一の局所的最小値に落ち着かず、群れの動作に基づいて最小値から移動できることを意味します
  • グローバル最小値を見つける可能性が向上します
  • 費用関数は微分可能である必要はありませんか?
  1. なぜこれが理にかなっているのですか?粒子の場合(粒子の私の理解は、ランダムに初期化された重みなどを持つモデルのインスタンスであり、コスト関数上で異なる位置にあることを意味します)。これにより、基本的に、トレーニングするモデル インスタンスが増えます。私が今言ったことがまったくナンセンスである場合、粒子についての私の理解を修正してください...

  2. コスト関数が微分可能である必要がないのはなぜですか? 粒子は最小値を探しているため、下向きの勾配が最も急な方向に進む必要があります。

  3. CNN で PSO を実装するにはどうすればよいですか? Pyswarms は CNN のオプティマイザとして使用できないように見えるため、Pyswarms と呼ばれるライブラリを見ていましたが、さらに不満が残りました。

(PS コスト関数を 3 変数関数として視覚化しています)。

4

0 に答える 0