ソフトパルス、アクティブ関数、逆伝搬


ソフト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=1p​exp(ok​)exp(o1​)​,⋯,∑k=1p​exp(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を外しても結果は変わらない.
  • 推論→温熱ベクトル(ソフトMax使用)
  • 勉強→ソフトコア
  • アクティブ関数


    非線形関数としては,次の関数がよく用いられる.
    ex)sigmoid、tanh、Relu等

    ニューラルネットワーク=線形モデルと活性関数から合成された関数


    ニューラルネットワークが多層を合成すると,多層自己組織ネットワーク(MLP)と呼ぶ.
    この過程を純伝搬(forward propagation)として順次計算した.

    どうして何階も積み上げるのですか。


    理論的には2層のニューラルネットワークに近似することができます
    層が深ければ深いほど,ターゲット関数に近似するために必要なニューロン数は急速に減少する.(少ないパラメータ)
    しかし、これは勉強が簡単であることを意味するわけではありません.
    レイヤが薄い場合、必要なニューロン数はジオメトリレベルで増加します.

    ぎゃくほうこうでんぱ


    階上の勾配を計算して階下に伝達することによって実現した.
    連鎖規則に基づいて、自動微分(auto-differentiation)を使用します.

    この場合,各ノードのテンソル値は計算機によって記憶されてこそ微分計算が可能であるため,純伝搬よりも逆伝搬のメモリが用いられる.