ディープラーニングチートシート

深層学習は、被験者に新しい時には圧倒的になることがあります。ここにいくつかのチートとヒントがあります。

何ですか?!?!

この記事では、このすばらしい主題を始めるためのディープラーニングの共通概念について説明します。

f:id:miyamotok0105:20170305030134p:plain

勾配∇(ナブラ)

勾配は、複数のベクトルをとり、単一の値(すなわちニューラルネットワークにおけるコスト関数)を出力する関数の偏微分である。 グラディエントは、変数入力を増やした場合、グラフをどの方向に移動して出力を増加させるかを指示します。 私たちは損失を減らしたいので、グラデーションを使用して反対方向に進みます。

逆伝播

バック・プロップとも呼ばれ、ネットワークを介して入力を順方向に伝播した後のネットワークの重みによるバック・トラッキングのプロセスです。 これは、微積分にチェーンルールを適用することによって使用されます。

シグモイドσ

[0、1]の間隔でネットワーク内の重みを有効にするために使用される関数。 この関数は、この関数が得られるところの ’S'のような形をしています。sはギリシャsigmaです。 ロジスティック関数とも呼ばれる

f:id:miyamotok0105:20170305030201p:plain

整流された線形ユニットまたはReLU

シグモイド関数は[0,1]の間隔を持ち、ReLUは[0、無限大]の範囲を持ちます。 これは、シグモイドがロジスティック回帰の方が優れていることを意味し、ReLUは正の数を表現する方が優れています。 ReLUは、勾配の消失の問題を抱えていません。

f:id:miyamotok0105:20170305030251p:plain

Tanh

Tanhは[-1、1]のネットワークの重みを初期化するために使用される関数です。 データが正規化されていると仮定すると、より勾配が強くなります。データは0を中心としているため、デリバティブは高くなります。 これを見るには、tanh関数の導関数を計算し、入力値が[0,1]の範囲にあることに気づく。tanh関数の範囲は[-1,1]であり、シグモイド関数の範囲は[0,1 ]。 これはまた、グラジエントにおけるバイアスを回避する。

f:id:miyamotok0105:20170305030355p:plain

LSTM / GRU

リカレントニューラルネットワークでは一般的に見られるが、他のもので使用するように拡張されているものは、学習のための入力間の状態を維持し、約7時間後にRNNが事前入力の文脈を失う勾配勾配問題を解決するのに役立つ小さな「メモリユニット」である。

ソフトマックス

ソフトマックスは、通常、分類のためにニューラルネットワークの終わりに使用される機能です。 この関数は多項ロジスティック回帰を行い、一般に複数クラス分類に使用されます。 通常、損失関数としてクロスエントロピーと対になる。

L1とL2の正規化

これらの正則化方法は、係数にペナルティを課すことによって、オーバーフィッティングを防止する。 L1はスパースモデルを生成することができ、L2は疎モデルを生成することはできません。 正規化は、モデルの複雑さを指定するために使用されます。 これは、モデルが一般化してトレーニングデータに余裕がないようにするため、重要です。

f:id:miyamotok0105:20170305030420p:plain

ドロップアウト

[1]「過剰適合を防ぎ、指数関数的に多くの異なるニューラルネットワークアーキテクチャを効率的に組み合わせる方法を提供する」(Hinton)このメソッドは、可視および隠れユニットをランダムに選択してネットワークから削除します。これは、通常、レイヤの割合のドロップアウトを選択することによって決定されます。

バッチ正規化

[1]ネットワークに深い層が多い場合、内部共変量シフトの問題が発生します。移行は「トレーニング中のネットワークパラメータの変化によるネットワークアクティベーションの分布の変化」です(Szegedy)。内部の共変量シフトを減らすことができれば、より速くより良い訓練をすることができます。バッチノーマライゼーションは、各バッチを平均と分散の両方でネットワークに正規化することによってこの問題を解決します。

目的関数

ロス関数、コスト関数またはオプティマイゼーションスコア関数とも呼ばれます。ネットワークの目標は、損失を最小限に抑えてネットワークの精度を最大限に高めることです。 より技術的な説明[3]: 損失/コスト/最適化/目的関数は、ネットワークの予測で計算される関数です。あなたのネットワークは、yの期待される出力と比較する予測y_hatを出力します。この関数はバックプロパゲーションで使用され、ネットワークを最適化するためのグラディエントを与えます。これらの関数の例は、f1 / fスコア、カテゴリクロスエントロピー、平均二乗誤差、平均絶対誤差、ヒンジ損失…などです。 F1 / Fスコア 次の式に従って精度とリコールを使用して、モデルがどれほど正確であるかの尺度です。

F1 = 2 * (精度 * 想起) / (精度 + 想起)

正確:どの予測が実際にポジティブであるかの予測はどれですか?

精度=真陽性/(真陽性+偽陽性)

想起:すべての実際に正の憶測を持っている実際にどの部分が肯定的でしたか?

リコール=真陽性/(真陽性+偽陰性)

クロスエントロピー

あなたのラベル予測がどのくらい離れているかを計算するために使用されます。 CEで示される時代。

クロスエントロピーは損失関数であり、エントロピーの概念である熱力学のエントロピーに関連している。 これは、多クラス分類で、予測のエラーを見つけるために使用されます。

学習率[2]

学習率は、バックプロパゲーション後の最適化中にネットワークのウェイトを調整する度合いです。 学習率は、さまざまな問題で異なる超パラメータです。 これはクロスバリデーションを行う必要があります。

# ---- Vanilla Gradient Descent ----
# W is your matrix of weights
# dW is the gradient of W
# Adjust the weights of our layer by multiplying our gradient times our learning_rate (Which is a scalar value)
W -= learning_rate * dW

参考

https://hackernoon.com/deep-learning-cheat-sheet-25421411e460#.unr1u76fq