私はかなり長い間テンソルフローで遊んでいましたが、私は理論的な疑問をもっと持っています。一般に、ネットワークをトレーニングするときは、通常、GradientDescentOptimizer(おそらくadagradやadamのようなバリエーション)を使用して、損失関数を最小限に抑えます。一般に、この損失関数の全体的な最小値を得るために、重みと偏りを調整しようとしているように見えます。しかし、問題は、もしあなたがそれをプロットするなら、この関数は非常に複雑な外観を持っていると仮定しています。私は、Gradient Descentがグローバルな最適を見つけて、グローバルな最適からはるかに離れたローカルな最適化に直面していないことを、どのように確認できますか?TensorFlow - GradientDescentOptimizer - 実際にグローバルな最適化を見つけていますか?
たとえば、sklearnでクラスタリングを実行しているときには、通常、クラスタセンターのランダムな初期化を使用してクラスタリングアルゴリズムを複数回実行し、これを実行することで最適な結果が得られないことを確実にします。しかし、テンソルフローでANNを訓練している間、このようなことはしていません - ランダムウェイトから始め、関数の傾きに沿って移動します。
だから、これについての洞察はありますか?勾配下降によるトレーニングの結果が、損失が大幅に減少した後に、全体的な最小値に近づくのは、なぜ、より確実かどうかです。
私がなぜ少なくともグローバルな最小値に近づくかを確かめることができない場合、実際には2つの異なるモデルのどちらが実際に優れているかを簡単に判断できないということがわかります。実験をすることができるので、モデルが良くないことを示すモデル評価をしてください...しかし実際には、トレーニング開始直後に現地の最小値に固執しました。私たちにとってより良いと思われた他のモデルは、より良い出発点からトレーニングを開始することはちょっとラッキーでしたし、地元の最低速で立ち往生しませんでした。さらに、この問題は、現在テスト可能なネットワークアーキテクチャから最大限に得ることさえできないことを意味します。例えば、それは本当に良いグローバルな最小値を持っているかもしれませんが、それを見つけるのは難しく、ほとんどの場合、極小値では貧弱な解決策に悩まされます。
グラデーション降下は、その性質上、関数をローカルで(ローカルグラジエント)調べています。したがって、グローバルミニマムになるという保証は全くありません。実際、関数が凸でなければ、おそらくそうではありません。これはまた、GDのようなメソッドが最初の位置に敏感である理由です。 高次元の解空間では、最大/最小の数はこれまで考えられていたほどではないという最近の論文がありました。 – Luca
@ルーカは、人々がこの問題とどのように戦うかに関する良い記事がありますか?オプティマイザが十分な勢いを蓄積しているときに、その勢いが現地のミニマムから「飛び降りる」のを助けることができると理解していますが、これは私の前提です。私は、ベルケレイビジョンやグーグルのような深刻な研究所の誰もあなたがトレーニングを開始し、即座に地元のミニマムに立ち寄り、この問題を調査していない可能性を避けようとしていないと信じることはできません。そこにはありますが、私はそれらを見つけることができません –
高次元の空間でグローバルなミニマムを合理的な方法で見つけることは、非常に未解決の問題です。しかし、あなたはminimasではなく\ textit {鞍点}にもっと集中したいと思うかもしれません。例えば、この記事(http://www.kdnuggets.com/2015/11/theoretical-deep-learning.html) – Luca