ソフトパルス、アクティブ関数、逆伝搬
ソフトMax演算
モデル出力を確率解釈の演算に変換する.
softmax(o)=(exp(o1)∑k=1pexp(ok),⋯ ,exp(op)∑k=1pexp(ok))softmax(o) = (\frac{exp(o_1)}{\sum_{k=1}^{p}exp(o_k)},\cdots,\frac{exp(o_p)}{\sum_{k=1}^{p}exp(o_k)})softmax(o)=(∑k=1pexp(ok)exp(o1),⋯,∑k=1pexp(ok)exp(op))
Rpmathbb{R}^prpのベクトルを確率ベクトルに変換します.
以下のPythonコードで実現できます.
def softmax(vec):
denumerator = np.exp(vec - np.max(vec, axis=-1, keepdims=True))
numerator = np.sum(denumerator, axis=-1, keepdims=True)
val = denumerator / numerator
return val
exp演算なのでオーバーフローが発生します.だからvecからmaxを取り除きます.maxを外しても結果は変わらない.アクティブ関数
非線形関数としては,次の関数がよく用いられる.
ex)sigmoid、tanh、Relu等
ニューラルネットワーク=線形モデルと活性関数から合成された関数
ニューラルネットワークが多層を合成すると,多層自己組織ネットワーク(MLP)と呼ぶ.
この過程を純伝搬(forward propagation)として順次計算した.
どうして何階も積み上げるのですか。
理論的には2層のニューラルネットワークに近似することができます
層が深ければ深いほど,ターゲット関数に近似するために必要なニューロン数は急速に減少する.(少ないパラメータ)
しかし、これは勉強が簡単であることを意味するわけではありません.
レイヤが薄い場合、必要なニューロン数はジオメトリレベルで増加します.
ぎゃくほうこうでんぱ
階上の勾配を計算して階下に伝達することによって実現した.
連鎖規則に基づいて、自動微分(auto-differentiation)を使用します.
この場合,各ノードのテンソル値は計算機によって記憶されてこそ微分計算が可能であるため,純伝搬よりも逆伝搬のメモリが用いられる.
Reference
この問題について(ソフトパルス、アクティブ関数、逆伝搬), 我々は、より多くの情報をここで見つけました https://velog.io/@bo-lim/소프트맥스-활성함수-역전파テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol