タグ付けされた質問 「deep-learning」

主にディープニューラルネットワークで行われる、データの階層表現の学習に関係する機械学習の領域。

3
畳み込みニューラルネットワークは、行列乗算の代わりに畳み込みをどのように正確に使用しますか?
ディープラーニングに関するヨシュアベンジオの本を読んでいたところ、224ページに次のように書かれています。 畳み込みネットワークは、少なくとも1つの層で一般的な行列乗算の代わりに畳み込みを使用する単純なニューラルネットワークです。 しかし、数学的に正確な意味で「畳み込みによる行列乗算を置き換える」方法を100%確信していませんでした。 本当に関心私は(のように1次元での入力ベクトルのためにこれを定義しているx∈Rdx∈Rdx \in \mathbb{R}^d Iが画像として入力を持っており、2Dでの畳み込みを回避しようとしませんので、)。 たとえば、「通常の」ニューラルネットワークでは、Andrew Ngのメモのように、操作とフィードワードパターンを簡潔に表現できます。 W(l)a(l)=z(l+1)W(l)a(l)=z(l+1) W^{(l)} a^{(l)} = z^{(l+1)} f(z(l+1))=a(l+1)f(z(l+1))=a(l+1) f(z^{(l+1)}) = a^{(l+1)} ここで、z(l)z(l)z^{(l)}は、非線形性を通過する前に計算されたベクトルfffです。非線形性は、ベクトル peroエントリに作用しz(l)z(l)z^{(l)}、a(l+1)a(l+1)a^{(l+1)}は、問題のレイヤーの非表示ユニットの出力/アクティブ化です。 行列の乗算は明確に定義されているため、この計算は明らかですが、行列の乗算を畳み込みに置き換えるだけでは不明確に思えます。すなわち W(l)∗a(l)=z(l+1)W(l)∗a(l)=z(l+1) W^{(l)} * a^{(l)} = z^{(l+1)} f(z(l+1))=a(l+1)f(z(l+1))=a(l+1) f(z^{(l+1)}) = a^{(l+1)} 上記の方程式を数学的に正確に理解するようにします。 行列の乗算を畳み込みに置き換えることに関する最初の問題は、通常、 1行をドット積で識別することです。したがって、a (l )全体が重みにどのように関係し、W (l )で示される次元のベクトルz (l + 1 )にマッピングされるかが明確にわかります。ただし、畳み込みに置き換えた場合、どの行または重みが(l )のどのエントリに対応するかはわかりませんW(l)W(l)W^{(l)}a(l)a(l)a^{(l)}z(l+1)z(l+1)z^{(l+1)}W(l)W(l)W^{(l)}a(l)a(l)a^{(l)}。重みを行列として表すことは実際にはもう理にかなっていることは私にとっても明らかではありません(その点を後で説明する例を提供します) 入力と出力がすべて1Dである場合、その定義に従ってたたみ込みを計算し、特異点を通過させますか? たとえば、入力として次のベクトルがある場合: x=[1,2,3,4]x=[1,2,3,4]x = [1,2,3,4] そして、次の重みがありました(backpropで学習したのかもしれません): W=[5,6,7]W=[5,6,7]W …

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


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



5
ニューラルネット/ディープラーニングを設計および適用するための視覚的なツールはありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新することがありますので、話題のクロス検証済みのため。 9か月前に閉鎖。 caffe、Theano、TensorFlow、kerasなど、機械学習とディープラーニング用のライブラリはたくさんあることは知っていますが、私にとっては、使用したいニューラルネットのアーキテクチャを知っている必要があるようです。 さまざまなネットワーク設計を実験し、それらを独自のデータに適用できる(視覚的な)ツールはありますか? TensorFlow Playgroundのようなものを考えていますが、n次元のデータと異なるレイヤータイプを使用しています。 前もって感謝します!

1
バッチ正規化による逆伝播の行列形式
バッチの正規化は、ディープニューラルネットのパフォーマンスが大幅に向上したとされています。インターネット上の多くの資料は、アクティベーションごとにそれを実装する方法を示しています。私はすでに行列代数を使用してバックプロップを実装しましたが、高レベル言語で作業していることを考えてRcpp(そして、最終的にはGPUの高密度行列乗算に依存しています)、すべてをリッピングして- forループに頼るとおそらくコードが遅くなります実質的に、大きな痛みに加えて。 バッチ正規化関数である b(xp)=γ(xp−μxp)σ−1xp+βb(xp)=γ(xp−μxp)σxp−1+β b(x_p) = \gamma \left(x_p - \mu_{x_p}\right) \sigma^{-1}_{x_p} + \beta xpxpx_pは、アクティブ化される前のppp番目のノードです。 γγ\gammaとββ\betaはスカラーパラメーターです μxpμxp\mu_{x_p}とσxpσxp\sigma_{x_p}平均値とのSDいるxpxpx_p。(分散の平方根とファッジファクターが通常使用されることに注意してください-コンパクト化のために非ゼロ要素を仮定しましょう) 行列形式では、層全体のバッチの正規化は次のようになり b(X)=(γ⊗1p)⊙(X−μX)⊙σ−1X+(β⊗1p)b(X)=(γ⊗1p)⊙(X−μX)⊙σX−1+(β⊗1p) b(\mathbf{X}) = \left(\gamma\otimes\mathbf{1}_p\right)\odot \left(\mathbf{X} - \mu_{\mathbf{X}}\right) \odot\sigma^{-1}_{\mathbf{X}} + \left(\beta\otimes\mathbf{1}_p\right) ここで XX\mathbf{X}はN×pN×pN\times p 1N1N\mathbf{1}_Nは1の列ベクトルです γγ\gammaとββ\betaは、レイヤーごとの正規化パラメーターの行pppベクトルです。 μXμX\mu_{\mathbf{X}}及びσXσX\sigma_{\mathbf{X}}でありN×pN×pN \times p各列は行列、NNN -ベクトル列方向手段と標準偏差の ⊗⊗\otimesはクロネッカー積であり、⊙⊙\odotは要素単位(アダマール)積です。 無バッチの正規化及び連続結果に非常に単純な1層ニューラルネットであり y=a(XΓ1)Γ2+ϵy=a(XΓ1)Γ2+ϵ y = a\left(\mathbf{X\Gamma}_1\right)\Gamma_2 + \epsilon どこ Γ1Γ1\Gamma_1あるp1×p2p1×p2p_1 \times p_2 Γ2Γ2\Gamma_2ありp2×1p2×1p_2 \times …

3
ニューラルアーキテクチャ:データに基づいた自動設計
ニューラルネットワークの最近の進歩は、主に設計の複雑さが増すことを特徴とする一連の新しいアーキテクチャによって要約されています。LeNet5(1994)からAlexNet(2012)、Overfeat(2013)、GoogleLeNet / Inception(2014)など... データに応じて、使用するアーキテクチャをマシンに決定/設計させる試みはありますか?

4
グラディエントディセントをオプティマイザーとして使用して、学習率を(体系的に)調整する方法は?
ML / DLフィールドの部外者。Tensorflowに基づくUdacity Deep Learningコースを開始しました。課題3の問題4を行います。次の設定で学習率を調整しようとしています: バッチサイズ128 ステップ数:2エポックを満たすのに十分 隠しレイヤーのサイズ:1024、305、75 重みの初期化:標準で切り捨てられた通常。sqrt(2 / n)の偏差。nは前のレイヤーのサイズ ドロップアウト維持確率:0.75 正則化:適用されません 学習率アルゴリズム:指数関数的減衰 学習率パラメーターをいじくりまわした。ほとんどの場合、効果がないようです。ここにコード ; 結果: Accuracy learning_rate decay_steps decay_rate staircase 93.7 .1 3000 .96 True 94.0 .3 3000 .86 False 94.0 .3 3000 .96 False 94.0 .3 3000 .96 True 94.0 .5 3000 .96 True 学習率を体系的に調整するにはどうすればよいですか? 学習率はステップ数とどのように関係していますか?

2
切り捨てられた逆伝搬を使用した場合の初期パターンのキャプチャ(RNN / LSTM)
RNN / LSTMを使用してセンチメント分析を行います。これは多対1のアプローチです(このブログを参照)。ネットワークは、通常の30の最後のステップでのみ展開される、切り捨てられたバックプロパゲーション(BPTT)によってトレーニングされます。 私の場合、分類したい各テキストセクションは、展開されている30ステップ(〜100ワード)よりもはるかに長くなっています。私の知識に基づいて、BPTTは単一のテキストセクションに対して1回だけ実行されます。これは、テキストセクション全体を通過し、バイナリ分類ターゲットを計算したときに、損失関数と比較してエラーを見つけます。yyy この場合、各テキストセクションの最初の単語に関して、勾配は計算されません。RNN / LSTMはどのようにして重みを調整し、最初の数ワード内でのみ発生する特定のパターンをキャプチャすることができますか?たとえば、とマークされたすべての文は「I love this」で始まり、とマークされたすべての文は「I hate this」で始まります。RNN / LSTMは、100ステップの長いシーケンスの最後に到達したときに、最後の30ステップだけ展開された場合、どのようにキャプチャしますか?P O S I T IのVのEpos私t私vepositiveN 、E 、Ga t i v enegat私venegative

2
0-1損失関数が扱いにくいのはなぜですか?
イアン・グッドフェローのディープラーニングの本には、 場合によっては、実際に気になる損失関数(分類エラーなど)が効率的に最適化できるものではないことがあります。たとえば、線形分類子の場合でも、予想される0-1の損失を正確に最小化することは、通常、困難です(入力次元で指数関数的)。このような状況では、代わりに代理損失関数を最適化するのが一般的です。代理損失関数はプロキシとして機能しますが、利点があります。 0-1損失が扱いにくいのはなぜですか、それとも入力次元で指数関数的ですか?

3
と線形化された非正規化対数確率で始まるニューラルネットワークのシグモイド出力単位の動機付け
背景: Ian Goodfellow、Yoshua Bengio、Aaron Courvilleによるディープラーニングの第6章を勉強しています。セクション6.2.2.2(ここで表示できる 183/183ページ)では、を出力するためのシグモイドの使用が動機付けられています。P(y=1|x)P(y=1|x)P(y=1|x) 一部の材料を要約すると、アクティブ化が適用される前の出力ニューロンとし、は前の非表示層の出力、は重みのベクトル、はスカラーバイアスです。入力ベクトルは(は関数)で示され、出力値はで示されます。ここで、はシグモイド関数です。この本は、値を使用して確率分布を定義したいと考えています。183ページの2番目の段落から:z=wTh+bz=wTh+bz = w^Th+bhhhwwwbbbxxxhhhy=ϕ(z)y=ϕ(z)y=\phi(z)ϕϕ\phiyyyzzz ここでは、値を使用して確率分布を定義する方法を説明するために、への依存を省略します。シグモイドは、合計が1にならない非正規化確率分布作成することによって動機づけることができます。次に、適切な定数で除算して、有効な確率分布を取得できます。非正規化対数確率がとで線形であるという仮定から始める場合、非正規化確率を得るためにべき乗できます。次に、正規化して、zのシグモイド変換によって制御されるベルヌーイ分布が得られることを確認します。 xxxyyyzzzP~(y)P~(y)\tilde P(y)yyyzzzlogP~(y)P~(y)P(y)P(y)=yz=exp(yz)=exp(yz)∑1y′=0exp(y′z)=ϕ((2y−1)z)log⁡P~(y)=yzP~(y)=exp⁡(yz)P(y)=exp⁡(yz)∑y′=01exp⁡(y′z)P(y)=ϕ((2y−1)z)\begin{align} \log\tilde P(y) &= yz \\ \tilde P(y) &= \exp(yz) \\ P(y) &= \frac{\exp(yz)}{\sum_{y'=0}^1 \exp(y'z) } \\ P(y) &= \phi((2y-1)z) \end{align} 質問: 2つのこと、特に最初のことについて混乱しています。 最初の仮定はどこから来るのですか?なぜ非正規化対数確率はと線形なのですか?作者がでどのように始めたかについて誰かが私にいくつかの状況を教えてもらえますか?yyyzzzlogP~(y)=yzlog⁡P~(y)=yz\log\tilde P(y) = yz 最後の行はどのように続きますか?


1
ディープラーニングのディープ残余ネットワークのコンテキストで、残余学習ブロックとは正確には何ですか?
私は「画像認識のためのディープ残差学習」という論文を読んでいて、残差ブロックが計算で必要とするものを100%確実に理解することが困難でした。彼らが図を持っている彼らの論文を読む2: これは、残差ブロックがどうあるべきかを示しています。残差ブロックの計算は単純に次と同じですか? y=σ(W2σ(W1x+b1)+b2+x)y=σ(W2σ(W1x+b1)+b2+x) \mathbf{y} = \sigma( W_2 \sigma( W_1 \mathbf{x} + b_1 ) + b_2 + \mathbf{x} ) それとも別のものですか? 言い換えれば、多分紙の表記法と一致しようとすることは、次のとおりです。 F(x)+x=[W2σ(W1x+b1)+b2]+xF(x)+x=[W2σ(W1x+b1)+b2]+x \mathcal F(x) + x = \left[ W_2 \sigma( W_1 \mathbf{x} + b_1 ) + b_2 \right] + \mathbf{x} 本当? 円の合計の後、ReLUという単語が用紙に表示されるため、残差ブロック()の出力は次のようになります。yy\mathbf{y} σ(F(x)+x)=σ([W2σ(W1x+b1)+b2]+x)σ(F(x)+x)=σ([W2σ(W1x+b1)+b2]+x) \sigma( \mathcal F(x) + x ) = \sigma( …

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