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

勾配降下法は、関数の最小値を見つけるためのアルゴリズムです。関数の偏導関数(勾配)を繰り返し計算し、それらの偏導関数に比例するステップで下降します。勾配降下法の主な用途の1つは、パラメーター化されたモデルを一連のデータに適合させることです。最小化される関数は、モデルの誤差関数です。

4
Scikit-learn:SGDClassifierにロジスティック回帰だけでなく予測もさせる
ロジスティック回帰をトレーニングする方法は、scikit-learnがインターフェイスを提供する確率的勾配降下を使用することです。 私がやりたいのは、scikit-learnのSGDClassifierを取得して、ここでロジスティック回帰と同じスコアを取得することです。ただし、スコアが同等ではないため、機械学習の機能強化が欠落している必要があります。 これが私の現在のコードです。ロジスティック回帰と同じ結果を生成するSGDClassifierには何が欠けていますか? from sklearn import datasets from sklearn.linear_model import LogisticRegression from sklearn.linear_model import SGDClassifier import numpy as np import pandas as pd from sklearn.cross_validation import KFold from sklearn.metrics import accuracy_score # Note that the iris dataset is available in sklearn by default. # This data is also conveniently preprocessed. …


4
勾配降下は常に最適に収束しますか?
勾配降下が最小に収束しないシナリオがあるかどうか疑問に思っています。 勾配降下が常にグローバルな最適値に収束することが保証されているわけではないことを認識しています。また、たとえば、ステップサイズが大きすぎると、最適値から逸脱する可能性があることも認識しています。しかし、ある最適から逸脱すると、最終的には別の最適に移行するように思えます。 したがって、勾配降下はローカルまたはグローバル最適に収束することが保証されます。そうですか?そうでない場合、大まかな反例を示してください。

1
ReLUが他のアクティベーション機能より優れている理由
ここでの答えは、-のsigmoidような活性化関数にあった勾配の消失と爆発を指しますが、Relu不利な点があり、それはその期待値です。の出力に制限はないReluため、その期待値はゼロではありません。Reluそれtanhが機械学習の専門家の間で最も人気があった前の時代を覚えていsigmoidます。その理由は、の期待値がtanhゼロに等しく、それがより深い層での学習がニューラルネットでより速くなるのを助けたからです。Reluこの特性はありませんが、その派生的な優位性を脇に置いておくとなぜうまく機能するのでしょうか。さらに、派生物も影響を受ける可能性があると思います。アクティベーション(の出力Relu)更新ルールの計算に関与しています。


1
LSTMセルはいくつ使用すればよいですか?
使用する必要があるLSTMセルの最小、最大、および「妥当な」量に関する経験則(または実際の規則)はありますか?具体的には、TensorFlowとプロパティのBasicLSTMCellに関連していnum_unitsます。 私が定義する分類問題があると仮定してください: t - number of time steps n - length of input vector in each time step m - length of output vector (number of classes) i - number of training examples たとえば、トレーニングの例の数は次の数よりも多い必要がありますか? 4*((n+1)*m + m*m)*c cセルの数はどこですか?これに基づいています:LSTMネットワークのパラメーターの数を計算する方法?私が理解しているように、これはパラメータの総数を与えるはずであり、トレーニング例の数よりも少なくなければなりません。
12 rnn  machine-learning  r  predictive-modeling  random-forest  python  language-model  sentiment-analysis  encoding  machine-learning  deep-learning  neural-network  dataset  caffe  classification  xgboost  multiclass-classification  unbalanced-classes  time-series  descriptive-statistics  python  r  clustering  machine-learning  python  deep-learning  tensorflow  machine-learning  python  predictive-modeling  probability  scikit-learn  svm  machine-learning  python  classification  gradient-descent  regression  research  python  neural-network  deep-learning  convnet  keras  python  tensorflow  machine-learning  deep-learning  tensorflow  python  r  bigdata  visualization  rstudio  pandas  pyspark  dataset  time-series  multilabel-classification  machine-learning  neural-network  ensemble-modeling  kaggle  machine-learning  linear-regression  cnn  convnet  machine-learning  tensorflow  association-rules  machine-learning  predictive-modeling  training  model-selection  neural-network  keras  deep-learning  deep-learning  convnet  image-classification  predictive-modeling  prediction  machine-learning  python  classification  predictive-modeling  scikit-learn  machine-learning  python  random-forest  sampling  training  recommender-system  books  python  neural-network  nlp  deep-learning  tensorflow  python  matlab  information-retrieval  search  search-engine  deep-learning  convnet  keras  machine-learning  python  cross-validation  sampling  machine-learning 

4
関数が滑らかな場合、なぜ勾配降下を高速化するのですか?
私は「Scikit-LearnとTensorFlowを使用した実践的な機械学習」というタイトルの本を読み、第11章で、ELU(Exponential ReLU)の説明について次のように説明しています。 第3に、関数はz = 0付近を含むすべての場所で滑らかであり、z = 0の左と右にそれほど跳ね返らないため、勾配降下の高速化に役立ちます。 z上のグラフのX軸を意味します。z < 0ラインには曲線があり、その領域では微分はもはやに等しくないため、微分は滑らかであることを理解してい0ます。 しかし、関数が「z = 0付近を含め、どこでも滑らか」である場合、勾配降下が高速になるのはなぜですか?

1
目的関数と出力層活性化関数の間のリンクはどの程度柔軟ですか?
多くのニューラルネットワークパッケージでは、最小化する目的関数と出力層のアクティブ化関数をペアにするのが標準のようです。 たとえば、回帰に使用される線形出力層の場合、二乗誤差目的関数を持つことは標準的です(多くの場合、選択肢は1つだけです)。もう1つの通常の組み合わせは、ロジスティック出力とログ損失(またはクロスエントロピー)です。さらにもう1つは、ソフトマックスとマルチログ損失です。 表記法を使用すると、はアクティベーション前の値(重みの合計に前のレイヤーのアクティベーションを掛けたもの)、aはアクティベーション、yはトレーニングに使用されるグラウンドトゥルース、iは出力ニューロンのインデックスです。zzzaaayyy私私i 線形活性化は2乗誤差1を伴いますai=ziai=zia_i=z_i12∑∀i(yi−ai)212∑∀i(yi−ai)2\frac{1}{2} \sum\limits_{\forall i} (y_i-a_i)^2 シグモイド活性化 logloss /クロスエントロピ目的と進む-Σ∀I(YI*LOG(I)+(1-YI)*LOG(1-I))ai=11+e−ziai=11+e−zia_i = \frac{1}{1+e^{-z_i}}−∑∀i(yi∗log(ai)+(1−yi)∗log(1−ai))−∑∀i(yi∗log(ai)+(1−yi)∗log(1−a私))-\sum\limits_{\forall i} (y_i*log(a_i) + (1-y_i)*log(1-a_i)) Softmaxアクティベーションa私= ez私Σ∀ Jezja私=ez私Σ∀jezja_i = \frac{e^{z_i}}{\sum_{\forall j} e^{z_j}}− ∑∀ 私(y私∗ l o g(a私))−Σ∀私(y私∗log(a私))-\sum\limits_{\forall i} (y_i*log(a_i)) それらは私が知っているものであり、まだ聞いていないことがたくさんあると思います。 yyy ただし、二乗誤差の目的でシグモイド出力を試すことはそれほど悪くないようです。安定していて、少なくとも収束する必要があります。 δEδzδEδz\frac{\delta E}{\delta z}EEEtanh ニューラルネットワークのアーキテクチャを設計するときに、出力のアクティブ化と目的関数の「非標準」の組み合わせを使用する、または使用する必要がある状況はありますか?

2
ベクトル演算に基づく確率的勾配降下法?
N個のサンプルを持つデータセットを使用して、確率的勾配降下回帰アルゴリズムをトレーニングしたいとします。データセットのサイズは固定なので、データをT回再利用します。各反復または「エポック」で、トレーニングセット全体をランダムに並べ替えた後、各トレーニングサンプルを1回だけ使用します。 私の実装はPythonとNumpyに基づいています。したがって、ベクトル演算を使用すると、計算時間を大幅に短縮できます。バッチ勾配降下法のベクトル化された実装を考え出すことは非常に簡単です。ただし、確率的勾配降下法の場合、各エポックですべてのサンプルを反復する外部ループを回避する方法を理解できません。 誰かが確率的勾配降下法のベクトル化された実装を知っていますか? 編集:データセットのサイズが固定されている場合、オンライン勾配降下法を使用する理由を尋ねられました。 [1]から、オンライン勾配降下法は、バッチ勾配降下法よりも経験的コストの最小値まで収束が遅いことがわかります。ただし、一般化のパフォーマンスを測定する予想コストの最小値に速く収束します。これらの理論上の結果が私の特定の問題に及ぼす影響を、相互検証によってテストしたいと思います。ベクトル化された実装がない場合、私のオンライン勾配降下コードはバッチ勾配降下コードよりもはるかに遅くなります。これにより、相互検証プロセスが完了するまでの時間が大幅に増加します。 編集:私は、ffriendからの要求に応じて、オンライン勾配降下法の実装の疑似コードをここに含めます。回帰問題を解決しています。 Method: on-line gradient descent (regression) Input: X (nxp matrix; each line contains a training sample, represented as a length-p vector), Y (length-n vector; output of the training samples) Output: A (length-p+1 vector of coefficients) Initialize coefficients (assign value 0 to all coefficients) Calculate outputs …

2
学習率がニューラルネットワークの重みを急上昇させるのはなぜですか?
私はテンソルフローを使用して簡単なニューラルネットワークを記述し、少しの研究を行っています。トレーニング中に「nan」の重みに多くの問題がありました。オプティマイザの変更、損失、データサイズの変更など、さまざまな解決策を試しましたが、役に立ちませんでした。最後に、学習率の変化が私の体重に信じられないほどの違いをもたらすことに気づきました。 .001の学習率(かなり保守的だと思いました)を使用すると、最小化関数は実際に指数関数的に損失を発生させます。1エポック後、損失は数千から1兆、そして無限( 'nan')にジャンプする可能性があります。学習率を.0001に下げたところ、すべてうまくいきました。 1)なぜ1桁がそのような影響を与えるのですか? 2)最小化機能が文字通りその機能の反対を実行し、損失を最大化するのはなぜですか?学習率に関係なく、それは起こらないはずです。

1
ドロップアウトと勾配降下について
ディープニューラルネットワークでドロップアウトを実装する方法を探しています。直感に反するものが見つかりました。フォワードフェーズでは、1と0のランダムテンソルを使用してマスクをアクティブ化し、ネットに重みの平均を学習させます。これは、ネットをより一般化するのに役立ちます。ただし、勾配降下の更新フェーズでは、アクティブ化はマスクされません。これは私には直観に反するようです。dropoutを使用して接続のアクティブ化をマスクする場合、勾配降下フェーズをマスクしないのはなぜですか?

2
AdaGradとAdaDeltaの数学を理解する
私はプロジェクト用にいくつかのモデルを構築していますが、AdagradおよびAdadeltaアルゴリズムの計算に頭を悩ますことはできません。 私はバニラ勾配降下法がどのように機能するかを理解しており、それを正常に機能させるためのコードを作成しました。 誰かがこれらの2つのことを私に説明したり、それらを理解するためのリソースを提供したりすると、私は感謝します。

2
Advanced Optimizationアルゴリズムでオーバーフィッティングが発生する可能性はありますか?
Andrew Ngがコースラで機械学習に関するオンラインコースを受講しているときに、オーバーフィッティングというトピックに出くわしました。勾配降下法が線形回帰またはロジスティック回帰で使用される場合に発生することはわかっていますが、「共役勾配」、「BFGS」、「L-BFGS」などの高度な最適化アルゴリズムが使用される場合にも発生する可能性はありますか?

1
Pythonでの確率的勾配降下法の実装
Pythonで2次元線形回帰の基本的な確率勾配降下アルゴリズムを実装しようとしています。バニラGDのボイラープレートコードが渡され、SGDで動作するように変換しようとしました。 具体的には、私は一般的に回帰に不慣れなため、損失関数と偏微分を正しく実装したかどうかは少しわかりません。 エラーは予想どおり「ジグザグ」になる傾向があります。以下は正しい実装のように見えますか、それとも何か間違いをしましたか? #sample data data = [(1,1),(2,3),(4,3),(3,2),(5,5)] def compute_error_for_line_given_points(b, m, points): totalError = 0 x = points[0] y = points[1] return float(totalError + (y - (m * x + b)) ** 2) def step_gradient(b_current, m_current, points, learningRate): N = float(1) for i in range(0, 1): x = points[0] y …

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