記事ディレクトリ
1. ミニバッチ確率的勾配降下法 (SGD)
ミニバッチ SGD によるトレーニング
w
モデル パラメータ、b
バッチ サイズ、η t \eta_tのt時間 t における学習率- w 1 w_1をランダムに初期化するw1
- 収束するまで t = 1,2… を繰り返す
- I t ∈ 1 ,をランダムにサンプリングします。. . , n I_t \in {1,...,n}私tε1 、. . . 、n withI t I_t私t= b
- update wt + 1 = wt − η t ▽ wtl ( w I t , y I t , wt ) w_{t+1} = w_t -\eta_t \triangledown_{w_t}l(w_{I_t},y_{I_t}, w_t)wt + 1=wt−のt▽wtなl ( w私tな、y私tな、wt)
ハイパーパラメータb
とη t \eta_tに敏感のt(SGD はバイアス b と学習率に非常に敏感です)
2. 線形手法 -> 多層知覚(MLP)
MLP の一般的な名詞
(1) a密集(全結合、または線形) レイヤーにはパラメーターW ∈ R m × n W \in R^{m\times n} がありますWεRm × n
出力を計算しますy = W x + b ∈ R my = Wx + b \in R^{m}y=幅×+bεRメートル
(2)線形回帰: 1 出力の密層
(3)ソフトマックス回帰: m 出力の密層 + ソフトマックス
(4)アクティベーションは要素ごとの非線形関数です
sigmoid ( x ) = 1 1 + exp ( − x ) sigmoid(x) = \frac{1}{1+exp(-x)}s i g m o i d ( x )=1+e x p ( − x )1
relu = max ( x , 0 ) relu = max(x,0)r e lu u=m a x ( x ,0 )
(5) 複数の隠れ層 (高密度 + 活性化) を積み重ねて、より深いモデルを取得します
(6)ハイパーパラメータ: 隠れ層と各隠れ層の出力
3. 密層 --> 畳み込み層(CNN)
密集層の問題
(1) imageNet(1k クラスの 300*300 画像) を 10k 出力の単一の隠れ層を持つ MLP で学習します(パラメータが多すぎます)
- 10 億の学習可能なパラメーターにつながりますが、これは大きすぎます!
- 完全接続 : 出力はすべての入力の加重合計です
(2) 画像内のオブジェクトを認識する:(画像認識問題、地域情報、翻訳問題)
- 平行移動の不変性: 同様の出力 (オブジェクトがどこにあっても)
- 局所性: ピクセルは近隣との関連性が高い
(3) 事前知識をモデル構造に組み込む(モデルに事前情報を追加してパラメーターの数を減らす)
- より少ないパラメータで同じモデル容量を達成
畳み込み層
(1) locality : 出力は k*k 入力ウィンドウから計算されます (受容野)
(2) 翻訳不変 : 出力は同じ k*k weights(kernel) を使用します(翻訳不変性)
(3)畳み込み層のモデルパラメータは入出力サイズに依存しない(パラメータに依存しない)
(4)カーネルはパターンを識別することを学習するかもしれません(カーネルはパターンを学習します)
"""Convolution with single input and output channels"""
# both input 'X' and weight 'K' are matrix
h,w = K.shape # the size of kernel:height and width
Y = torch.zeros((X.shape[0] - h + 1,X.shape[1] -w +1)) # the convolution result
for i in range(Y.shape[0]):
for j in range(Y.shape[1]):
Y[i,j] = (X[i:i+h,j:j+w]*K).sum()
プーリング層
(1) 畳み込みは位置に敏感です
-
入力のピクセル シフトは、出力のピクセル シフトになります。
-
プーリング層は、k*k ウィンドウで平均/最大を計算します
# h,w: pooling window height and width
# mode: max or avg
Y = torch.zeros((X.shape(0)-h+1,X.shape[1]-w+1))
for i in range(Y.shape[0]):
for j in range(Y.shape[1]):
if mode=='max':
Y[i,j] = X[i:i+h,j:j+w].max()
elif mode=='avg':
Y[i,j] = X[i:i+h,j:j+w].mean()
畳み込みニューラル ネットワーク (CNN): 参考文献があります。無料で売春を行うことができます
-
ニューラル ネットワークは、畳み込み層のスタックを使用して特徴を抽出します
- 活性化は各畳み込み層の後に適用されます
- プーリングを使用して場所の感度を下げる
-
最新の CNN は、さまざまなハイパーパラメーターとレイヤー接続を備えたディープ ニューラル ネットワークです。
4. 密層 --> リカレントネットワーク(RNN)
密集層の問題
-
言語モデル: 次の単語を予測する
- こんにちは --> 世界
- ハローワールド --> !
-
MLPを単純に使用すると、シーケンス情報がうまく処理されません
- 入力/出力の長さが同じではありません
RNN と Gate RNN : 参考文献を参照
ハンズオン ディープ ラーニング (37) - サイクリック ニューラル ネットワーク
- 単純な RNN :
ht = ϕ ( W hhht − 1 + W hx X t + bh ) h_t = \phi(W_{hh}h_{t-1} + W_{hx}X_t + b_h)時間t=ϕ ( W時間_時間t − 1+Wh xバツt+b時間)
- Gated RNN (LSTM および GRU): 情報フローのより細かい制御
- 入力を忘れる: x T x_Tを抑制するバツTht h_tを計算するとき時間t
- 過去を忘れる: ht − 1 h_{t-1}を抑制する時間t − 1ht h_tを計算するとき時間t
- ハンズオン ディープ ラーニング (39) - ゲーテッド リカレント ユニット GRU
- ハンズオン ディープ ラーニング (40) - 長短期記憶ネットワーク (LSTM)
- ハンズオン ディープ ラーニング (41) - ディープ サイクル ニューラル ネットワーク (Deep-RNN
- ハンズオン ディープ ラーニング (42) - 双方向リカレント ニューラル ネットワーク (bi-RNN)
5. まとめ
- MLP : 非線形アクティベーションを使用して高密度レイヤーをスタックします。
- CNN : 畳み込み活性化層とプーリング層を積み重ねて空間情報を効率的に抽出する
- RNN : 非表示の状態を介して一時的な情報を渡すために再帰レイヤーをスタックします