- ベストアンサー
ニューラルネットワークでのバイアス項と活性化関数について
- ニューラルネットワークのバイアス項は、ノードの出力に対する影響を調整するためのパラメータです。
- 活性化関数は非線形である必要があります。これは、非線形関数を用いることで、ニューラルネットワークが複雑な問題を解くことができるようになるからです。
- バイアス項と活性化関数は、ニューラルネットワークの学習や推論の性能に影響を与える重要な要素です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1のコメントについて。 > ・パーセプトロンとニューラルネットは違うものなのですか?同じものと認識していたのですが・・・。 ううむ。違うと言ってるのに、違うのかと尋ねられても…な。 この手の研究は、脳の仕組みを真似しようという動機で始まった。でも、最初に考えられたパーセプトロンは、パターン認識能力がごく限られていることがすぐに分かった。で、ひとひねりしたのがartificial neural networkって訳だけれど、実際の神経細胞ネットワークとはだいぶ違うシステムです。Backpropagationという比較的効率の良い学習アルゴリズムがあることがポイント。詳しい事は自分で調べてね。 >>>出力ひとつあたり1個のノードで表せる。従って、階層化は不要。 > 出力をyとしたとき,3層パーセプトロンでは, > y = h( Σ{w_ij * g(Σw_jk*x_k)} ) この式のgが線形、つまり g(x)=Ax+B と書けるとき、代入すると y = h( Σ{w_ij Σ(A(w_jk x_k)+B)} ) = h( A Σ{w_ij Σw_jk x_k)} + BΣ{Σw_ij} ) = h( A ΣΣ{w_ij Σw_jk x_k)} + BΣ{Σw_ij} ) ここで、 V_ik = Aw_ijΣw_jk V_i0 = BΣΣw_ij x_0 = 1 とおくと、 y= h( Σ{V_ik x_k)} ) と表せる。gが要らなくなっただけじゃなくて、ほら、層になってたものが、出力yについて1個のノードにまとめられたでしょ? ここでhが閾値関数(階段関数)sgn(x)であれば、これはパーセプトロンに他なりません。 sgn(x) = if x>0 then 1 else -1 > 例えば,g(x)=h(x)=x+1 のような線形のときは,出力yは線形に > なってしまい,g(x)=x+1,h(x)がexp関数やシグモイド関数なら出力yが非線形になる. hはパーセプトロンでは閾値関数ですから、neural netのhとはちょっと違うように見える。ところが、アウトプットを最終的にYesかNoかに絞って使う応用であれば、neural netでもhとして閾値関数を使わざるを得ない。hは本質的ではないですね。 > 1.つまり,重み和が0に近いときには,あらかじめ決めたバイアスの > 値によって,発火させる(fire)かが決められるということですか? いやいや、fireするかしないか(YesかNoか)というのはgが閾値を持つとき(例えばsgn(x)であるとき)の話でしょう。そうじゃなくて、ですね、グラフを描いて考えればお分かりになると思うんですが、 g(x)が直線のグラフであるならば、xにバイアスを加えた g(x+bias) は g(x)+B (Bは定数)になるだけです。つまり、hに定数項を加えるのと同じ意味しかない。 でもg(x)が曲線のグラフになってると、バイアスを加えたものg(x+bias)はグラフをx軸にそってずらしたことになる。gはxによって傾きが違うので、例えば「重み和が0に近いとき」に、入力の僅かな違いに対してノードの出力が敏感に変わる(傾きが急)か、あるいは鈍感(傾きが緩やか)なのかがbiasによって変化する。 ついでに申し上げると、exp関数やシグモイド関数を使うのはなぜかというと、計算が楽な単調曲線、というだけのことであって、要するにテキトーに曲がってて単調であれば別に何でもいいんです。 > 結構詳しく知りたいので,数式等を用いて頂くとありがたいです. プログラムを書くのなら式が必要だけど、全体の働きを理解したり応用したりするには直感的理解が大事。式はむしろ邪魔かも知れませんよ?
その他の回答 (1)
- stomachman
- ベストアンサー率57% (1014/1775)
直感的理解の話だろうと思うんで、そのレベルで説明しますと、 2. gが線形(一次式)だと、ニューラルネット全体のやる計算は、出力ひとつあたり1個のノードで表せる。従って、階層化は不要。つまりパーセプトロンになってしまって、ニューラルネットを考えてる意味がないから。 1. Σx_i w_iがほとんど0で、ちょっとしか変動しないような場合を考えると分かり易いかな?g(offset+Σx_i w_i)のoffsetを変えると、y=g(x)のグラフ(非線形なんで、直線ではなく曲がっている)のうちの、どのぐらい曲がってる部分を使うかを調節することができるから。 という単純なこと。
補足
2.について ・パーセプトロンとニューラルネットは違うものなのですか?同じものと認識していたのですが・・・。 >>出力ひとつあたり1個のノードで表せる。従って、階層化は不要。 この箇所が理解できないのですが,自分では以下のように考えたのですが,どういう意味なのですか? 出力をyとしたとき,3層パーセプトロンでは, y = h( Σ{w_ij * g(Σw_jk*x_k)} ) g,h は,活性化関数 と表されて,例えば,g(x)=h(x)=x+1 のような線形のときは,出力yは線形に なってしまい,g(x)=x+1,h(x)がexp関数やシグモイド関数なら出力yが非線形になる. 1.つまり,重み和が0に近いときには,あらかじめ決めたバイアスの 値によって,発火させる(fire)かが決められるということですか? 結構詳しく知りたいので,数式等を用いて頂くとありがたいです. 補足よろしくお願いします.
お礼
詳細な回答でよく分かりました. 今後もまた質問することがあると思うので,そのときはまたよろしくお願いします. ありがとうございました.