lab
Neural Network
日本語

ニューロンに飛び込む

概要

前のセクション(ニューラルネットワークとは)から、ニューラルネットワークはニューロンで構成される関数であり、ニューロンも関数であることがわかりました。


Neuron は、引き続き 2 つのサブ機能に分割できます。

  • nn要素線形関数:g(x1,...,xn)g(x_1, ..., x_n)
  • 単項非線形関数: h(x)h(x)

ニューロンによって表される関数は次のとおりです。

f(x1,...,xn)=h(g(x1,...,xn))f(x_1, ..., x_n) = h(g(x_1, ..., x_n))

線形関数 g(x1,...,xn)g(x_1, ..., x_n)

一次関数の形式は次のとおりです。

g(x1,...,xn)=w1x1+...,wnxn+bg(x_1, ..., x_n) = w_1x_1 + ..., w_nx_n + b

その中で、 w1,...,wn,bw_1, ..., w_n, bはすべてパラメーターであり、異なる線形関数には異なるパラメーターがあります。

単項線形関数

n=1n = 1g(x1)=w1x1+bg(x_1) = w_1x_1 + bの場合、関数イメージは直線になります。

w1w_11
bb0

バイナリ線形関数

n=2n = 2g(x1,x2)=w1x1+w2x2+bg(x_1, x_2) = w_1x_1 + w_2x_2 + bの場合、関数イメージは平面です。

w1w_10
w2w_21
bb0

nn要素の線形関数

n>2n > 2の場合、関数画像は超平面です。 3D を超えて、視覚化は便利ではありません。しかし、あなたはその特徴がまっすぐであると想像することができます。

非線形関数 h(x)h(x)

非線形関数は線形関数とは異なる関数であることが名前から理解しやすいです。一次関数は直線であり、非線形関数は曲線です。最も一般的なsigmoid関数など:

活性化関数

ニューラルネットワークでは、この単項非線形関数を活性化関数と呼びます。いくつかの一般的なアクティベーション関数については、ナレッジベースのアクティベーション関数を参照してください。ここで、

  • Linearf(x)=xf(x) = xは線形関数です。つまり、非線形関数は使用されません。
  • Softmax:は特殊なケースです。厳密に言えば、それは活性化関数ではありません

必要性

非線形活性化関数の後に線形関数を続ける必要があるのはなぜですか?


それの訳は:

  1. ニューロンがすべて線形関数である場合、ニューロンで構成されるニューラルネットワークも線形関数です。

次の例のように:

  • f1(x,y)=w1x+w2y+b1f_1(x, y) = w_1x + w_2y + b_1
  • f2(x,y)=w3x+w4y+b2f_2(x, y) = w_3x + w_4y + b_2
  • f3(x,y)=w5x+w6y+b3f_3(x, y) = w_5x + w_6y + b_3

すると、ニューラルネットワーク全体で表される関数は次のようになります。

f3(f1(x1,x2,x3),f2(x1,x2,x3))=w5(w1x1+w2x2+b1)+w6(w3x2+w4x3+b2)+b3=(w1w5)x1+(w2w5+w3w6)x2+(w4w6)x3+(w5b1+w6b2+b3)\begin{aligned} &f_3(f_1(x_1, x_2, x_3), f_2(x_1, x_2, x_3)) \\ = &w_5(w_1x_1 + w_2x_2 + b_1) + w_6(w_3x_2 + w_4x_3 + b_2) + b_3 \\ = &(w_1w_5)x_1 + (w_2w_5 + w_3w_6)x_2 + (w_4w_6)x_3 + (w_5b_1 + w_6b_2 + b_3) \\ \end{aligned}

これは 3 次線形関数です。

  1. 構築する必要のある目的関数にはさまざまな関数が含まれていますが、線形関数はその 1 つにすぎません。

ニューラルネットワークが線形関数だけでなく、任意の関数をシミュレートできることを願っています。そこで、非線形活性化関数を追加し、線形関数を「曲げ」ました。

完全なニューロン

完全なニューロンは、線形関数と非線形活性化関数を組み合わせて、より面白くて強力にします。

単項関数

n=1n = 1g(x1)=w1x1+bg(x_1) = w_1x_1 + bの場合、sigmoid活性化関数を使用すると、ニューロンの対応する関数は次のようになります。

h(g(x))=sigmoid(wx+b)h(g(x))=\text{sigmoid}(wx + b)

関数イメージは次のとおりです。

ww1
bb0

バイナリ関数

n=2n = 2g(x1,x2)=w1x1+w2x2+bg(x_1, x_2) = w_1x_1 + w_2x_2 + bの場合、sigmoid活性化関数を使用すると、ニューロンの対応する関数は次のようになります。

h(g(x))=sigmoid(w1x1+w2x2+b)h(g(x))=\text{sigmoid}(w_1x_1 + w_2x_2 + b)

関数イメージは次のとおりです。

w1w_10
w2w_21
bb0

nn-要素関数

視覚化の問題のため、ここでは完全に私自身の想像力次第です! 😥

質問

ニューラルネットワークがニューロンの組み合わせから複雑な機能をシミュレートできるのはなぜですか?

単純なニューロンを使用して、もう少し複雑な関数をシミュレートする方法を直感的に想像できます。