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

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


1
単純な線形回帰の場合は勾配降下法
単純な線形回帰のパラメーターを見つけるための勾配降下法について説明しているWebサイトは多数あります(ここにそのうちの1つがあります)。グーグルはまた彼らの新しい(公開された)MLコースでそれを説明している。 しかし上ウィキペディア、パラメータを計算するには、次の式が供給されてい α^β^= y¯- β^バツ¯、= ∑んi = 1(x私− x¯)(y私− y¯)Σんi = 1(x私− x¯)2α^=y¯−β^バツ¯、β^=Σ私=1ん(バツ私−バツ¯)(y私−y¯)Σ私=1ん(バツ私−バツ¯)2 {\displaystyle {\begin{aligned}{\hat {\alpha }}&={\bar {y}}-{\hat {\beta }}\,{\bar {x}},\\{\hat {\beta }}&={\frac {\sum _{i=1}^{n}(x_{i}-{\bar {x}})(y_{i}-{\bar {y}})}{\sum _{i=1}^{n}(x_{i}-{\bar {x}})^{2}}}\end{aligned}}} また、scikit-learnのLinearRegression関数には、n_iter_他の多くの学習関数のように(反復回数)属性がありません。これは、勾配降下法が使用されていないことを示唆していると思いますか? 質問: 単純な線形回帰の勾配降下法を説明しているWebサイトは、最も基本的なMLモデルでその概念を教えるためにそうしているだけですか?ウィキペディアの公式は、ほとんどの統計ソフトウェアがパラメーターの計算に使用するものですか(少なくともscikit-learnは勾配降下法を使用していないようです)。 多重線形回帰には通常何が使用されますか? 他の方法よりもパラメーターを見つけるために勾配降下法が通常使用される統計学習モデルのタイプは何ですか?つまり、経験則はありますか?

3
非凸関数の勾配降下
非凸関数について、勾配降下が収束する(臨界点または局所/大域最小値のいずれかに)示される可能性がある場所について、私たちはどのような状況を知っていますか? 非凸関数のSGDについては、1種類の証明がここで確認されてい ます。http://www.cs.cornell.edu/courses/cs6787/2017fa/Lecture7.pdf

1
xgboostでのツリーの複雑さの定義
xgboostアルゴリズムについて調査し、ドキュメントを調べました。 このアプローチでは、ツリーは複雑さの定義を使用して正則化されます。 ここで、とはパラメーターで、は末端の葉とは各葉のスコアです。Ω(f)=γT+12λ∑j=1Tw2jΩ(f)=γT+12λ∑j=1Twj2 \Omega(f) = \gamma T + \frac12 \lambda \sum_{j=1}^T w_j^2 γγ\gammaλλ\lambdaTTTwjwjw_j これは複雑さをどのように定義するのでしょうか?ターミナルノードの数であるは、私には自然に思えます。しかし、最終スコアの合計は2乗されますか?TTT 多分オーバーフィッティングを意味します。非常に大きなスコアがあまりにも多くの信頼を与えることを意味しますか?弱い学習者を取得するために選択されていますか?この複雑度関数の選択についての自然な説明は何ですか?

2
勾配は、展開されたリカレントニューラルネットワークでどのように伝播しますか?
簡単な例を通して、rnnを使用してシーケンスを予測する方法を理解しようとしています。これは、1つの入力、1つの非表示のニューロン、1つの出力で構成される、私の単純なネットワークです。 隠れたニューロンはシグモイド関数であり、出力は単純な線形出力と見なされます。したがって、ネットワークは次のように機能すると思います:隠しユニットが状態sで始まり、長さシーケンスであるデータポイントを処理している場合、、それから:(x 1、x 2、x 3)333(x1、x2、x3)(バツ1、バツ2、バツ3)(x_1, x_2, x_3) 時間1で、予測値はp1p1p^1 p1= u × σ(w s + v x1)p1=あなた×σ(ws+vバツ1)p^1 = u \times \sigma(ws+vx^1) 時に2、私たちは持っています p2= u × σ( w × σ(w s + v x1)+ v x2)p2=あなた×σ(w×σ(ws+vバツ1)+vバツ2)p^2 = u \times \sigma\left(w \times \sigma(ws+vx^1)+vx^2\right) 時に3、私たちは持っています p3= u × σ( w × σ( w × …

2
多変量ガウス対数尤度の勾配
勾配降下法でモデルのMAP推定値を見つけようとしています。私の以前は、既知の共分散行列をもつ多変量ガウスです。 概念的なレベルでは、私はこれを行う方法を知っていると思いますが、詳細についていくつかの助けを求めていました。特に、問題に対処する簡単な方法がある場合、それは特に役立ちます。 ここでは、私が何だと思う私は実行する必要があります。 各次元について、他の次元での現在の位置を指定して、条件付き分布を見つけます。 これにより、正しい平均と標準偏差を使用して、各次元の局所的な一変量ガウス分布が得られます。 勾配は、これらの単変量分布のそれぞれの導関数のベクトルである必要があると思います。 私の質問には2つの部分があります。 これは最善のアプローチですか、それとももっと簡単な方法がありますか? このルートに行く必要があると仮定すると、これらの条件付き分布を見つけるための最良の方法は何ですか?

1
確率的勾配降下法を使用した混合ガウスモデルの近似
私は、確率的勾配降下法を使用してガウス混合モデルに適合するオンラインカテゴリ学習モデルに取り組んでいます。このモデルは、Toscano&McMurray(2010)で使用されているオンライン学習モデルに基づいています。 勾配降下法はカテゴリーの平均と頻度/混合確率を推定するのにかなりうまく機能しているようですが、混合成分の共分散の推定に問題があります。勾配降下法の更新に使用してきた偏微分は、Petersen&Pedersen(2008)(p。 で始まります p (x )= ∑kρkNバツ(μk、Σk)p(バツ)=ΣkρkNバツ(μk、Σk)p(x) = \sum _k \rho_k \mathcal N_x(\mu_k,\Sigma_k) ピーターセン&ペダーセンは、共分散行列に関して偏微分を与えるとしてΣΣ\Sigma δlnp (x )δΣj= ρjNバツ(μj、Σj)ΣkρkNバツ(μk、Σk)12[ - Σ− 1j+ Σ− 1j(X - μj)(X - μj)TΣ−1j]δln⁡p(バツ)δΣj=ρjNバツ(μj、Σj)ΣkρkNバツ(μk、Σk)12[−Σj−1+Σj−1(バツ−μj)(バツ−μj)TΣj−1]\frac{\delta \ln p(x)}{\delta \Sigma_j}=\frac{\rho_j\mathcal N_x(\mu_j,\Sigma_j)}{\sum _k \rho_k \mathcal N_x(\mu_k,\Sigma_k)}\frac{1}{2}[-\Sigma_j^{-1}+\Sigma_j^{-1}(x-\mu_j)(x-\mu_j)^T\Sigma_j^{-1}] Pythonで実装しているので、各の勾配降下ステップは次のです(これはわずかな簡略化であり、すべてのコンポーネントのは更新を実行する前に計算されます)。 Δ ΣΣjΣj\Sigma_jΔ ΣΔΣ\Delta\Sigma j.sigma += learning_rate*(G(x)/M(x))*0.5*(-inv(j.sigma) + inv(j.sigma).dot((x-j.mu).dot((x-j.mu).transpose())).dot(inv(j.sigma))) ここで、jは混合の番目の成分を表すオブジェクトであり、j.sigmaとj.muはその成分の平均と分散です。G(x)/ M(x)は、を計算するいくつかのコードのρ jのNは、 xは(μ J、Σ jは)jjjρjNバツ(μj、Σj)ΣkρkNバツ(μk、Σk)ρjNバツ(μj、Σj)ΣkρkNバツ(μk、Σk)\frac{\rho_j\mathcal …

2
SGDトレーニングでの小さいバッチサイズの処理
確率的勾配降下法(SGD)を使用して、大規模モデル(カフェを使用したディープネット)をトレーニングしようとしています。 問題は、私がGPUメモリ容量の制約を受けているため、各確率的勾配推定に対して大きなミニバッチを処理できないことです。 トレーニングでこの不安定さを克服するにはどうすればよいですか? 私が考えていたのは、モーメンタムを使用して、デフォルトの通常の設定よりも高い値に設定することでした。これは有効な戦略ですか? Caffeをたまたま使用している人にとって、Caffeがすでにミニバッチ全体の勾配の累積を実装していることを知るのは興味深いかもしれません(Indie Alによって提案されています)。あなたは、単に定義する必要がiter_sizeで'solver.prototxt'。 これはpytorchでも実行できます。たとえば、この投稿を参照してください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.