• ベストアンサー

ニューラルネットワークの閾値について

ほとんどの文献でシグモイド関数を用いたニューラルネットワークに閾値が含まれています。 しかし、あまりその理由について触れられていません。(あまりと言うか、見つけられなかったわけで・・・ 閾値の必要性について知りたいです。 誰か教えてください( ̄人 ̄)頼んます強い人

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

shunenさんの考えている必要性は逆なのでは? 「シグモイド関数を用いたニューラルネットワークに閾値が含まれている」のではなく、「ニューラルネットワークには、閾値が不可欠であり、その閾値を処理するためには、微分可能である関数が必要であり、その関数に偶然近似できそうなシグモイド関数という関数があったから、使っている」のでは?  ニューラルネットワークには、閾値が不可欠です。というよりも、それがニューラルネットワークの本質と言っても、過言ではないのです。  一つの箱に仕切りがあり、仕切りの一方には赤い球が入っており、もう一方には青い玉が入っているとします。そこに、更に、どこかから1つの玉を持ってきたとします。その玉が赤色であれば、赤い玉の入っている仕切りに入れ、青玉ならば青玉の仕切りに入れます。  その仕切りが数学(ニューラルネットワーク)で言うところの閾値です。  数学的には、3種類以上の玉があり、その種類に応じた数の仕切りがあります。  更に一般的に言えば、その玉はあいまいな色(紫色とか?)で、どちらに分類していいか分からないときには、赤と青の中間的な場所に置かなくてはなりませんが、これを、赤とみなすか青とみなすかして、そこまで仕切りの判定基準を変えます(即ち、紫は赤の仕切りに入れておこうとかいう判断)。これによって、判定基準が変わることが、学習です。  時には、どちらに入れて良いか分からない場合で、紫は赤に入れておくと良いということを経験的に知っている人が経験者として教えてあげることがあります。この知らなかった判断基準を教えてあげる人(正確には、信号)を教師信号と言います。  ニューラルネットワーク(というより、情報学一般)は、数式に惑わされないことが大事です。情報学は、数学によって成り立っていますが、あくまでも数学は道具であって、機能が先に考えられ、「それに都合の良い関数がないかな?」と探して偶然見つけられた数式を変換式として当てはめているに過ぎません。  数式よりも機能を理解してください。

shunen
質問者

お礼

kansai_daisukiさんがおっしゃるような >一つの箱に仕切りがあり、仕切りの一方には赤い球が入っており、もう一方には青い玉が入っているとします。 >そこに、更に、どこかから1つの玉を持ってきたとします。その玉が赤色であれば、赤い玉の入っている仕切りに入れ、 >青玉ならば青玉の仕切りに入れます。 であれば、閾値は必要であるといううことはわかります。 でも、シグモイド関数を使ったら閾値がなくても学習できるんじゃないの?って思ったわけなんです。 これは、学習できるかもしれないけど閾値がなくなってる時点でニューラルネットワークじゃないよってことなんですか? もしよろしければ、お手数ですがお返事ください。m(_ _)m

その他の回答 (3)

  • kochory
  • ベストアンサー率45% (167/370)
回答No.4

#3です。 閾値0だと、シナプス荷重に負の値を許さない限り、 一つでも入力が来たら発火するだけの素子になってしまいます。 シナプス荷重が学習によって正負どちらの値にも変化できる ようなモデルなら閾値に実質的な意味はなくなりますが、 そのようなモデルは生理的に妥当ではないので (実際の神経細胞のシナプスは興奮性か抑制性かがあらかじめ 決まっていて、シナプス荷重としては正か負かのどちらかの値しか取れない) リアリスティックなモデル化を考える場合は採用できません。 工学的に、ただ「役に立てばいい」という立場に立つなら 閾値0でシナプス荷重に正負の値を許すモデルにしても 問題ないでしょうし、そのほうが形式的にもすっきりするでしょう。

shunen
質問者

お礼

たびたびのご回答ありがとうございました。 参考にさせていただきたいと思います。

  • kochory
  • ベストアンサー率45% (167/370)
回答No.3

閾値の必要性を考えるだけなら、シグモイド関数でなくて マッカロー・ピッツ型の離散値をとるニューロンで考えた ほうがわかりやすいと思います。 2つの入力しかないニューロンを考えます。 それぞれの入力は0か1で、入力の和が閾値を越えたら 発火するものとします。 閾値が0だとしたら、どちらかの入力が1なら、このニューロンは 発火するわけですから、このニューロンは2つの入力に 対してOR演算をする素子とみなすことができます。 一方、閾値を1.5にした場合を考えると、2つの入力が 両方とも1でないと発火しませんから、この場合、この ニューロンは2つの入力に対してAND演算をする素子とみなす ことができるわけです。 つまり、閾値を変えることによって、ニューロンの演算規則が がらっと変わってしまうわけです。 ニューラルネットが柔軟な計算能力をもつ理由の一端は ニューロンのこのような性質にあるわけですから、モデル化の 際にはぜひとも導入する必要があるわけです。 ただ、閾値を0としておいて、上記のような閾値の変化を、 常に入力があり、荷重が負の値をとるシナプスの荷重変化として 記述する流儀もあります(甘利さんの教科書はそうなってたはず)。 このように、学習は全てシナプスに担わせて、閾値は 一定値(ゼロ)として記述するのも一つの方法です。

shunen
質問者

お礼

そうなんですよね kochoryさんが言われるような場合だと、kochoryさんやkansaiさんのはなしを聞いて理解できます。 でも、kansaiさんの所でも書いたんですが、シグモイド関数だと閾値がなくても(閾値ゼロ)学習できる気がするんです。閾値があるから学習しやすいとかあるんですか? お手数ですが、よろしかったらお返事ください。m(_ _)m

  • Piazzolla
  • ベストアンサー率44% (88/196)
回答No.2

生理学的な意味でのニューロンの性質はいくつかあります。 (1)空間的加算性 もっとも大きな性質ですが、樹状突起によってつながっている複数のニューロンの軸索から、入力信号が入ります。この信号は、強められたり弱められたりしながら細胞体の内部電位を形成していきます。この電位は、入力信号に重み係数を乗じて線形和として表されます。 (2)時間的加算性 入力信号は時間とともに変動していきます。したがって、内部電位は各時刻における信号の時間的線形和で表されます。これは、ニューロンの中を情報が通過するのに遅延を伴うことを意味しています。 (3)非線形性 入力信号が入り、細胞体の内部電位が徐々に上昇していき、ニューロンの閾値を超えると、軸索にインパルスが出力されます。このインパルスは、内部電位の強さによらず一定の値をとります。つまりニューロンは非線形になっています。 (4)2値性 ニューロンの信号は、巨視的に見ると、大きさが一定なインパルスが、ある時刻に存在するかしないかの2値の信号を作り出しているといえます。 以上の特徴をモデル化するとき、実現できる関数としてシグモイド間数(ロジスティック関数)が適当だという事になります。 専門ではないので、文面がおかしかったらすみません。

shunen
質問者

お礼

そうですねえ やはり、ニューラルネットワークには閾値というものがある。 そのニューラルネットワークにシグモイド関数を用いている。 ニューラルネットワークには閾値があるものなのだから、閾値の必要性を問うのは間違ってるのかもしれませんネエ・・・ 回答ありがとうございました。

関連するQ&A

  • ニューラルネットワークのシグモイド関数について

    ニューラルネットワークにでてくるシグモイド関数 についてお聞きしたいのですが、文献によってこの シグモイド関数の式が、tanがあったり、expが使わ れていたりと、微妙に違っていていったいどの式が 正しいのかよくわかりません。 このシグモイド関数には決まった形とかは無いの でしょうか? 分かる方いたら教えてください。よろしくお願いします。

  • ニューラルネットワークの重みの行列について

    ニューラルネットワーク(誤差逆伝播)では、重みを行列で表現して、行列計算を何回となくやっていくという風なプログラムになっていくと思います。”重み”というとどうしても重み付き平均が連想され、足して1になるようにする、というイメージにとらわれてしまうのですが、そのような制約はないということでもいいのでしょうか。足して1にならないということは増幅とか減衰が生じることを許容するということになりますが。 もし、それでOKならば、多くのテキストにみられる”重み”という言葉で説明しない方がいいのではないかと思いますが。そのあと、シグモイド関数で変換されたりするので、和の値が一定などの制約は必要なしなのだろうと思いますが。また、その”重み”の値も変化していくのでそうなのかなと思いますが。ニューラルネットワークはある意味、システムのルールさえ守っていれば融通無碍という風にも見えます。 また、ニューラルネットワークでは行きついた先が最適解である保証は取れるということになるでしょうか。行き当たりばったりを何回も繰り返すという印象をもってしまいます。あるいは別のタイプになりますが、乱数による総当たり戦の最終勝者を探すというような感じあります。そうすると乱数の発生の仕方に依存したりするように思えてきます。

  • ニューラルネットワークについて

     私は今、ニューラルネットワークやDeepLearningといったものに興味があり、 その仕組みや設計方法、プログラムや使い方等を、ネットや本で調べているのですが、 どれを見てもたくさんの専門用語や複雑な数式で説明されているものがほとんどで、 それらを全く理解できないわけではないですが、詳細な解き方や、直感的な考え方の説明が 欲しいです。自分でも色々調べましたが、私が今知っていることと言えば、ニューラルネットが どんなもので、どんなことが出来て、どんな種類があるか、また、ニューロンの動作を表す数式が なんとなく理解できる程度で、そこからもっと発展した話についてはほとんど分かりません。 さらに調べていくうちに、DeepLearningや、SOINN等の、高い性能を持つニューラルネットの 存在も知り、もっと強い興味が湧いてそれらについても調べてみましたが、英語で書かれた サイトや、大学の論文と思われるものが出てくるばかりで、これについても分かっていることは、 段数の多いニューラルネットで、認識精度がとても良いということくらいです。もっと詳しく分かる ようになり、自分でも何か認識させたり、ロボットに組み込んで使うなど、色々やりたいことは あります。誰かに質問することも考えましたが、周りにいるのはロボット専門の人で、ニューラル ネットワークについて分かりやすい説明を得るのは難しいと考えました。私自身も学力があまり よくなく、どうすれば良いか分からない状態です。ニューラルネットワークやDeepLearningの 数式の詳細な解き方、ネットワークの説明を直感的で分かりやすい、詳しい設計方法等が 書かれている、サイト、書籍等をご存知でしたら、教えて頂けるととても有難いです。曖昧な 表現で分かりにくく、カテゴリが合っているかどうかもよくわからず、また、虫がいい質問である とは思いますが。よろしくお願いします。

  • ニューラルネットワークに関する本

    今回、ITと生物学との関連についての授業で、課題として、ニューラルネットワークについてのレポートを書くことになりました。そこで、参考文献を探していたのですが、プログラムに重点を置く本が多くみつかりました。 ですが、僕自身は理工系の学部ではないため理解しづらく、レポートもプログラムよりも応用面に重点を置きたいのですが、そのようなレポートを書く上で、参考となる本を教えて頂けませんでしょうか?お願いします。

  • ニューラルネットワークでデータを正規化するには?

    こんにちは、今ニューラルネットワークをプログラミングしているのですが、データを正規化しようと思っています たとえば教師データの入力が年齢と身長、出力が体重のデータがあるとします 年齢  身長  目的変数:体重 24    150 |  65(kg) 24    172 |  73(kg) という年齢が同じデータがある場合 正規化するにはどうればいいでしょうか? 正規化は 正規化後の値 = (正規化前の値 - 最小値) / 最大値 - 最小値 で出すと書いてあったのですが、年齢は最小値と最大値が同じ 24 しかありませんよね、この場合はどうすればいいのでしょうか? またついでにこの様な最小値 = 最大値の正規化されたデータを元に戻すにはどうすればいいのでしょうか?(出力層のシグモイド関数の計算結果を元のデータの単位に戻したいんです) わかりにくかったらすいません、ご存じの方よろしくお願いします。

  • ニューラルネットワークの正規化されたデータを元に戻すには

    ニューラルネットワークで正規化し、パラメータを求めた後、パラメータの正規化をもとに戻したいのですが、方法が分かりません。 以下は、私がやっている途中を示します。 たとえば、データの入力が年齢と身長、出力が体重のデータがあるとします。 年齢x1  身長x2   体重y 21    160     55 24    172     63 私は、正規化するために  x1’=(x1-ave(x1))/std(x1)  x2’=(x2-ave(x2))/std(x2)  y’=(y-ave(y))/std(y) として正規化しました。aveは平均、stdは標準偏差 ニューラルネットとしては、次の式で表される三層パーセプトロンを利用しています。  f=W0+Σ{Wj*hj} Σはj=1からJまで  (中間層-出力層)  hj=sigmoid(Σ{Wjk*xk’}) Σはk=1,2  (入力層-中間層)  Error=(f-y’)*(f-y’) 入力層のバイアスはなしで、中間層のバイアスはありを考えています。 活性化関数は、中間層がシグモイド関数、出力層が線形関数です。 正規化したxとyに対して各wを求めるプログラムは作れたのですが、 ここからどうやってwの正規化を解除すればよいか分かりません。 正規化する方法は載っているサイトはいくつかあるのですが、解除する 方法が載っているのは見つかりませんでした。 回答よろしくお願いします。

  • ニューラルネットワークの変数の数とサンプル数

    ニューラルネットワークでは解析に用いる変数の数とサンプル数をどの程度の割合にすればよいのか、教えてください(例えば、変数:サンプル数=3:100のように)。 またその情報が記載されているHPや文献もできればお願いします。 変数の数を増やせばサンプル数も多く必要になるのは、文献などに記載されていることがあるのですが、実際の数についての記載が見つからないのでよろしくお願いします。

  • ニューラルネットの教師あり学習について質問です。

    最近誤差逆伝搬法を用いたニューラルネットについて プログラムを組んで実装してみようと思ったのですが あまり理解できていない部分があるのでよろしくお願いします。 私が作りたいのはフォントの違う数字画像の認識を 3つの特徴量(a,b,c)、3層のニューラルネット、 閾値関数にシグモイド関数、教師有り学習で作りたいのですが、 私の理解があっているかわからないのでご指摘をお願いします。 ・入力層は特徴量が3つなのでニューロンは3つ(a,b,cを入力)。 ・中間層は任意でいいということなので10つ。 ・出力層は数字が0~9までなので10つ。 教師ベクトルの与え方なのですが 出力層(0~9番とします)において各数字に対応する番号のニューロンは1、それ以外は0、 つまり 出力層の0番の教師ベクトルは{1,0,0,0,0,0,0,0,0,0} 1番目の教師ベクトルは{0,1,0,0,0,0,0,0,0,0} 9番目の教師ベクトルは{0,0,0,0,0,0,0,0,0,1} (シグモイド関数のため正確には0、1にはなりませんが・・) とあらかじめ決めておき、 教師ベクトルの学習の際は 0の画像ならば出力層は{1,0,0,0,0,0,0,0,0,0}^T となるように誤差逆伝搬を用いて中間層・出力層の重みの修正を行い、 同様に1~9の教師画像も対応する出力の番号以外0となるように 学習を行い、 識別を行いたい画像の特徴量を入力した際は 重みの修正は行わず 10この出力の誤差が最小となる教師ベクトルが第一候補、 誤差が最大となる教師ベクトルが第10候補 ということでよろしいのでしょうか? でもそうすると重みの値が一番最後に学習した教師ベクトルに 対応する重みになっているから ニューラルネット自体を10個つ用意する必要が ありますよね・・・? いま一つ理解できていないのでよろしくお願いします。

  • ニューラルネットワークでのバイアス項と活性化関数について

    ニューラルネットワークについて http://mars.elcom.nitech.ac.jp/java-cai/neuro/menu.html を参考に勉強しています. 1. ニューラルネットワークのあるノードの出力は,前層のノードの重み和で表され,  out_i = Σ{W_ji*x_j}  from j=0~n となる. ここで,バイアス項として,W_0i,x_j0=1.0 というのがあるのですが, このバイアス項はどういう役割をするためにあるのでしょうか? 2. ノードx_iへの出力は,活性化関数g を用いて,  x_i = g(out_i) となる. ここで,「活性化関数は非線形関数でなければならない」というふうに 言われているのですが,なぜ非線形でなければならないのでしょうか? 以上の1.2.について御教授お願いします.

  • ニューラルネットにおける学習について

    学習とは,サンプルから確率分布を推測することであるそうですが, (http://watanabe-www.pi.titech.ac.jp/~swatanab/kogi4-22.pptの3枚目) ニューラルネットワーク(NN)で学習して得られた関数は,確率分布なのですか? 確率分布なら[0,1]しか値をとらないですが,たとえば,多項式をNNで学習して得られた 関数は,1以上の値をとりますよね? そこで, 学習の定義が違うのか,それとも,NNが確率分布を扱わないものだからなのでしょうか? ニューラルネットは,2乗誤差E=1/2Σ(f(x;w) - Y)^2 を最小化する ように学習していることからニューラルネットは最尤法であると考えていいのでしょうか? また,最尤法でなく,例えばベイズ法を適用したものはあるのでしょうか? 長くなりましたが,回答よろしくお願いします.