タグ付けされた質問 「gradient-descent」

勾配降下法は、1次の反復最適化アルゴリズムです。勾配降下法を使用して関数の極小値を見つけるには、現在の点での関数の勾配(または近似勾配)の負に比例するステップを実行します。確率的勾配降下法には、[sgd]タグもあります。

5
なぜk-meansはグローバルな最小値を与えないのですか?
k-meansアルゴリズムは局所的な最小値にのみ収束し、グローバルな最小値には収束しないことを読みました。どうしてこれなの?初期化が最終的なクラスタリングにどのように影響するかを論理的に考えることができ、最適でないクラスタリングの可能性がありますが、数学的にそれを証明するものは見つかりませんでした。 また、なぜk-meansは反復プロセスなのですか?目的関数を重心に部分的に区別するだけでは、この関数を最小化する重心を見つけるためにそれをゼロに等しくすることはできませんか?段階的な最小ステップに到達するために勾配降下を使用する必要があるのはなぜですか?


3
オンライン学習とバッチ学習の違いは何ですか?
私は現在、John DuchiとYoram Singer の論文Efficient Online and Batch Learning using Forward-Backward Splittingを読みました。「オンライン」および「バッチ」という用語の使用法について非常に混乱しています。 「オンライン」とは、トレーニングデータの1単位を処理した後、重みパラメーターを更新することを意味すると考えました。次に、新しい重みパラメーターを使用して、トレーニングデータの次のユニットを処理します。 ただし、上記の論文では、使用法はそれほど明確ではありません。

1
確率的勾配降下は、標準の勾配降下と比較して、どのように時間を節約できますか?
標準勾配降下法は、トレーニングデータセット全体の勾配を計算します。 for i in range(nb_epochs): params_grad = evaluate_gradient(loss_function, data, params) params = params - learning_rate * params_grad 事前に定義された数のエポックの場合、最初にパラメーターベクトルparamsに対するデータセット全体の損失関数の勾配ベクトルweights_gradを計算します。 対照的に、確率的勾配降下法は、各トレーニング例x(i)およびラベルy(i)のパラメーター更新を実行します。 for i in range(nb_epochs): np.random.shuffle(data) for example in data: params_grad = evaluate_gradient(loss_function, example, params) params = params - learning_rate * params_grad SGDははるかに高速であると言われています。ただし、まだすべてのデータポイントでループが発生している場合、それがはるかに高速になる方法はわかりません。GDの勾配の計算は、各データポイントのGDの計算よりもはるかに遅いですか? コードはここから来ます。

1
パーセプトロンルールと勾配降下法と確率勾配降下法の実装に関する説明
さまざまなパーセプトロンの実装を少し試し、「反復」を正しく理解しているかどうかを確認したいと思います。 ローゼンブラットの元のパーセプトロン規則 私の知る限り、Rosenblattの古典的なパーセプトロンアルゴリズムでは、すべてのトレーニング例の後に重みが同時に更新されます。 Δw(t+1)=Δw(t)+η(target−actual)xiΔw(t+1)=Δw(t)+η(target−actual)xi\Delta{w}^{(t+1)} = \Delta{w}^{(t)} + \eta(target - actual)x_i ここで、etaetaetaは学習ルールです。また、ターゲットと実際の両方にしきい値が設定されます(-1または1)。1反復= 1トレーニングサンプルのパスとして実装しましたが、各トレーニングサンプルの後に重みベクトルが更新されます。 そして、「実際の」値を次のように計算します sign(wwTxx)=sign(w0+w1x1+...+wdxd)sign(wwTxx)=sign(w0+w1x1+...+wdxd) sign ({\pmb{w}^T\pmb{x}}) = sign( w_0 + w_1 x_1 + ... + w_d x_d) 確率的勾配降下 Δw(t+1)=Δw(t)+η(target−actual)xiΔw(t+1)=Δw(t)+η(target−actual)x私\Delta{w}^{(t+1)} = \Delta{w}^{(t)} + \eta(target - actual)x_i しかし、パーセプトロンルールと同じ、targetおよびactual閾値が、実際の値がされていません。また、「反復」をトレーニングサンプルのパスとしてカウントします。 SGDと従来のパーセプトロンルールの両方が、この線形に分離可能な場合に収束しますが、勾配降下の実装に問題があります。 勾配降下 ここでは、トレーニングサンプルを調べ、トレーニングサンプルの1パスの重みの変化を合計し、その後、重みを更新しました。たとえば、 各トレーニングサンプル: Δwnew+=Δw(t)+η(target−actual)xiΔwnew+=Δw(t)+η(target−actual)xi\Delta{w_{new}} \mathrel{{+}{=}} \Delta{w}^{(t)} + \eta(target - actual)x_i ... トレーニングセットを1回通過した後: Δw+=ΔwnewΔw+=Δwnew\Delta{w} …

1
(ミニ)バッチグラジエントのグラジエントの合計または平均は適切ですか?
ミニバッチグラジエントを適切に実装したとき、トレーニングバッチのすべての例のグラジエントを平均しました。しかし、私は今、最適な学習率がオンライン勾配まともな場合よりもはるかに高いことに気づきました。私の直感では、これは平均化された勾配のノイズが少ないため、より速く追跡できるためです。したがって、バッチの勾配を合計するだけでも理にかなっています。とにかく、値は正と負になります。 学習率を使用してバランスを取ることができるのは、単なる一定の要因であることは知っています。しかし、ニューラルネットワークの論文から結果を再現できるように、科学者が合意した定義はどれかと思います。 通常、バッチの合計勾配をバッチサイズで除算しますか?

1
CNNは勾配の消失問題をどのように回避しますか
私は畳み込みニューラルネットワークについて多くのことを読んでおり、それらが消失勾配問題をどのように回避するのか疑問に思っていました。深い信念のネットワークが単一レベルの自動エンコーダーまたは他の事前に訓練された浅いネットワークをスタックすることを知っているため、この問題を回避できますが、CNNでどのように回避されるかわかりません。 ウィキペディアによると: 「上記の「勾配の消失問題」にも関わらず、GPUの優れた処理能力により、多くの層を備えたディープフィードフォワードニューラルネットワークで単純な逆伝播が実行可能になります。 GPU処理がこの問題を解決する理由がわかりませんか?

1
ニューラルネットワーク以外のものに対して、適切な勾配に非一定の学習率を使用しないのはなぜですか?
ディープラーニングの文献には、勾配降下で非一定の学習率を使用する巧妙なトリックがたくさんあります。指数関数的減衰、RMSprop、Adagradなどのようなものは実装が簡単で、すべてのディープラーニングパッケージで利用できますが、ニューラルネットワークの外部には存在しないようです。これには理由がありますか?人々が単に気にしないということであれば、ニューラルネットワークの外で気にしなければならない理由はありますか?

4
サドルポイントにどうやって閉じ込められますか?
私は現在、ミニバッチ勾配降下がescent点にどのように閉じ込められるかに戸惑っています。 解決策はあまりにも取るに足りないかもしれません。 あなたはすべてのエポック新しいサンプルを取得し、コスト関数は各バッチに対してのみ静的であるので、それは、新しいバッチに基づいて新しいエラーを計算した勾配は、各ミニバッチの変更..しかしに応じなければならないことを意味し、これはすべきバニラの実装にはサドルポイントに問題がありますか? ニューラルネットワークに共通する高度に非凸の誤差関数を最小化するもう1つの重要な課題は、多数の準最適な局所最小値にとらわれないようにすることです。ドーフィン等。[19]困難は実際には極小値ではなく点、つまり、ある次元が上に傾斜し、別の次元が下に傾斜する点から生じると主張しています。これらのaddle点は通常、同じ誤差のプラトーに囲まれ、勾配がすべての次元でゼロに近いため、SGDが逃げにくいことで有名です。 収束に向かって変動するため、特にSGDは点に対して明確な利点があることを意味します...変動とランダムサンプリング、およびエポックごとに異なるコスト関数は、1つに閉じ込められないための十分な理由になります。 完全なバッチ勾配の場合、誤差関数は一定であるため、gradient点にトラップされる可能性があります。 私は他の2つの部分について少し混乱しています。

1
文脈上の盗賊のコスト関数
私は文脈依存バンディット問題を解決するためにvowpal wabbitを使用しています。ユーザーに広告を表示していますが、広告が表示されるコンテキスト(ユーザーが誰なのか、ユーザーがどのサイトにいるのかなど)に関するかなりの情報を持っています。これは、ジョン・ラングフォードによって説明されているように、かなり古典的な文脈上の盗賊の問題のようです。 私の状況では、ユーザーが広告に対して持つことができる主な応答は2つあります。クリック(おそらく複数回)またはクリックしないことです。選択できる広告は約1,000個あります。Vowpal Wabbitには、action:cost:probability各コンテキストの形式のターゲット変数が必要です。私の場合、actionおよびprobability把握するのは簡単です:action私は、ディスプレイに選んだ広告であり、probability広告を表示するための私の現在のポリシーを与えられたその広告を選択する可能性があります。 しかし、ペイオフ(クリック)をコストにマッピングする良い方法を思い付くのに苦労しています。クリックは明らかに優れており、同じ広告を複数回クリックすることは、同じ広告を1回クリックするよりも優れています。ただし、広告をクリックしないことは中立です。実際にクリックの機会を逃したこと以外に費用はかかりません(私は奇妙な広告コンテキストで作業しています)。 私が持っていたいくつかのアイデアは次のとおりです。 cost = -1 * sign(clicks)+ 0 *(クリックされていない) コスト= -1 *クリック+ 0 *(クリックされない) cost = -1 * sign(clicks)+ 0.01 *(クリックされていない) コスト= -1 *クリック+ 0.01 *(クリックされない) (0, 1, 5, 0)これら4つの機能のコストのアクションベクトルの場合は、次のようになります。 (0, -1, -1, 0) (0, -1, -5, 0) (0.01, -1, -1, 0.01) (0.01, -1, -5, 0.01) …

2
Rの勾配降下vs lm()関数?
Andrew Ngのスタンフォードでの無料のオンライン機械学習コースのビデオを見ていきます。彼は線形回帰を解決するアルゴリズムとして勾配降下法を議論し、それを実行するためにOctaveで関数を記述します。おそらくこれらの関数をRで書き換えることができますが、私の質問はlm()関数が線形回帰の出力をすでに与えていないかということです。なぜ独自の勾配降下関数を書きたいのですか?いくつかの利点がありますか、それとも純粋に学習演習としてですか?lm()は勾配降下を行いますか?

1
「サドルフリーニュートン」降下アルゴリズムが実際に使用されないのはなぜですか?
最近、Yann Dauphinらの論文を読みました。高次元の非凸最適化における点問題の特定と攻撃。ここでは、サドルフリーニュートンと呼ばれる興味深い降下アルゴリズムを導入します。バニラSGDとしての一次メソッドのような。 このペーパーは2014年にさかのぼるので、まったく新しいものではありませんが、「野生で」使用されているのを見たことはありません。この方法が使用されないのはなぜですか?ヘッセ計算は、実世界規模の問題/ネットワークに対して非常に禁止的すぎますか?このアルゴリズムのオープンソース実装さえありますか?おそらく、いくつかの主要なディープラーニングフレームワークで使用されるでしょうか? 2019年2月の更新:現在利用可能な実装があります:https : //github.com/dave-fernandes/SaddleFreeOptimizer)

1
確率的勾配降下法(SGD)に適したミニバッチサイズの選択
確率的勾配降下法を実行するときにミニバッチサイズの選択を調べる文献はありますか?私の経験では、これは経験的な選択であるように思われ、通常、相互検証またはさまざまな経験則を使用して見つかります。 検証エラーが減少するにつれて、ミニバッチのサイズを徐々に大きくすることは良い考えですか?これは汎化エラーにどのような影響を及ぼしますか?非常に小さなミニバッチを使用して、モデルを数十万回更新する方がよいですか?非常に小さい値とバッチの間のどこかでバランスの取れた数値を使用した方がよいでしょうか? ミニバッチのサイズをデータセットのサイズ、またはデータセット内の予想されるフィーチャ数に合わせてスケーリングする必要がありますか? 私は明らかにミニバッチ学習スキームの実装について多くの質問をしています。残念ながら、私が読んだほとんどの論文は、このハイパーパラメータをどのように選択したかを具体的に示していません。私はYann LeCunのような著者から、特に論文のTricks of the Tradeコレクションから、いくつかの成功を収めてきました。しかし、私はこれらの質問が完全に対処されているのを見ていません。誰かが論文の推奨事項、または機能を学習するときに適切なミニバッチサイズを決定するために使用できる基準に関するアドバイスを持っていますか?

5
大規模なデータセットに対して勾配降下が非効率なのはなぜですか?
データセットに100万の例、つまりおり、勾配降下を使用してこれらのデータセットでロジスティック回帰または線形回帰を実行するとします。x1,…,x106x1,…,x106x_1, \ldots, x_{10^6} 非効率にする勾配降下法とは何ですか? 時間での勾配降下ステップは次の式で与えられることを思い出してください。ttt wt+1=wt+ηt∇f(x)wt+1=wt+ηt∇f(x)w_{t+1} = w_{t} + \eta_t \nabla f(x) ここで、fffは損失関数です。 上記の手順でアルゴリズムが非効率になる原因となる異常は見当たりません。の計算ですか?この操作は事前に計算できませんでした。つまり、各すでに計算されていて、各データポイントで単純に評価できませんでした∂ F∇f(x)∇f(x)\nabla f(x) XI?∂f∂x∂f∂x\frac{\partial f}{\partial x}xi?xi?x_i?

2
勾配降下法は、このデータセットの通常の最小二乗法の解を見つけられませんか?
私は線形回帰を研究しており、以下のセット{(x、y)}で試してみました。xは平方フィートで家の面積を指定し、yはドルで価格を指定しました。これはAndrew Ng Notesの最初の例です。 2104,400 1600,330 2400,369 1416,232 3000,540 サンプルコードを開発しましたが、実行すると、コストは各ステップで増加しますが、各ステップで減少するはずです。以下に示すコードと出力。biasはW 0 X 0で、X 0 = 1です。featureWeightsは[X 1、X 2、...、X N ]の配列です また、ここで利用可能なオンラインpythonソリューションを試し、ここで説明しました。しかし、この例でも同じ出力が得られます。 概念を理解する際のギャップはどこにありますか? コード: package com.practice.cnn; import java.util.Arrays; public class LinearRegressionExample { private float ALPHA = 0.0001f; private int featureCount = 0; private int rowCount = 0; private float bias = 1.0f; …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.