• 締切済み

ニューラルネットワークの入力層の選択

ニューラルネットワークで入力層・中間層・出力層があるわけですが、入力層をインプットとして出力層を推定するモデリングを考えていくのが基本だろうと思います。 そこで質問なのですが、出力層というのアウトプットとして欲しいものであり、入力層はそれを説明するに足りる情報だとみなすことができるように思います。という風に考えると入力層は説明には足りない数だとなっていた場合、十分学習した後、アウトプットはどのように変化していくものでしょうか。不安定とか発散とかそういう結果になるのでしょうか。また、正しくモデリングするためには入力層はある程度の数が必要ということになるのでしょうか。つまり必要な数よりも少ないとダメだけど、少々多いのは構わないということになるのでしょうか。それともモデリングの対象ごとにいろいろ違うということになるものでしょうか。また、入力層として必要なデータは理屈で考えて因果関係が説明できるものから選ぶというのが基本なのでしょうか。”風が吹けば桶屋が儲かる”ということで、風のデータは入力層に必ず含め、桶屋の収入をアウトプットとするという風にする、ということですが。 よろしくお願いします。

みんなの回答

  • shsst14
  • ベストアンサー率40% (38/94)
回答No.2

ご質問の内容を私なりに理解して書き直してみました。 多入力1出力(MISO=Multiple-Input Single Output)モデルを想定する。 (1)入力変数相互に関連がなく全て独立である場合 (2)入力変数の一部は完全に他の入力変数から独立しており、その他は相互に従属関係にある ご質問者は(2)の問題を複雑にしすぎていて、そのままでは理解が難しいと思いますので、独立の入力変数と従属の入力変数のちがいを書きます。 (a)入力変数が互いに独立な場合 y=f(x1,x2) 入出力間のゲイン G1=∂y/∂x1 G2=∂y/∂x2 (b)入力変数相互に関係がある場合 単純のため、x2=x1という事例を考えます。 y=f(x1,x2)=f(x1,x1) G=∂y/∂x1 (式の中のx2はすべてx1に置き換えられた状態) これが、x2を式の中にそのまま残して(a)と同じようにすると、ゲインが正しくなりません。 NNモデルの場合、ゲインの考え方が非常に重要です。 NNが廃れてしまった理由は、入出力の関係の結果だけに注目して本来の入出力間の関連を軽視したからだと思います。 (a)に戻ると、 f(x1+h,x2)≒f(x1,x2)+h ∂f/∂x1 のように近傍の近似モデルができます(Taylorの定理)。 入力変数相互に相関などがあると、このような近似モデルがうまくいきません。 NNは、数式的にはこんなものだとザクッと考えた上で、疑問に思われている具体的モデルを考えます。 >東京のラーメンの売り上げが、ニューヨークの美術館の来場者数で説明できたらおかしいわけですね。 これは、 G=∂y/∂x=0 という関係に相当します。 相関を直接見ると、入力軸(横軸)のある一定値に対して、出力値がタテにばらついている状態。 >東京の気温が大阪の気温で説明できる これは、説明できるのではなく、気温が決まる条件の結果そうなっているだけだと思います。 こういうモデルはNNを使うよりもカオスモデルのほうがいいでしょう。 直接の解答にはなっていませんが、モデルを作る目的別に考えてみてはいかがでしょうか? 出力を知りたいだけ   → 入力変数相互の関連については考えなくて良い 入出力の関係を知りたい → 独立な入力変数だけでモデルを構成する

全文を見る
すると、全ての回答が全文表示されます。
  • shsst14
  • ベストアンサー率40% (38/94)
回答No.1

ご自身で書かれている通り入力層には、説明変数を配置します。 説明変数は因果関係を説明する必要はなく、単なる相関であってもかまいません。 説明変数が不足していた場合には、一意対応にならないデータを学習する危険性があるので、モデルはどちらともつかない結果を出すであろうと考えられます。 入力層の数(入力変数の数)は、多ければいいというものではなく、学習させるデータ量によります。 学習させるデータ量が実用上無限に近ければどれだけ説明する変数を増やしても良いですが、学習させるデータがすくない場合には、説明変数を絞り込むほうが良いです(統計の問題です)。 ニューラルネットモデルは、因果関係を学習することもできるし、風が吹けば桶屋が儲かるというような相関(があれば)も学習できます。 後者には相関がない場合が多いと思われるので、入出力に因果関係(明確であるかないかを問わず)があるほうがモデルとして構築しやすいでしょう。 なお、ニューラルネットは、簡単に云ってしまえば単なるカーブフィットの数式モデルなので、数式に乗らないような関係はモデル化できません。 なお、モデルをグラフ化したときに凹凸があまりに多いような場合は、過学習だと理解しましょう。 入力変数は、必要に応じて予備換(対数変換など)してから入力するほうがいい場合が多いです。 入力に対して出力がなるべくリニアに近くなるようにモデルを作るよう入力変数を予備変換するとわかりやすい結果が出ます。 具体的な問題があれば再度ご質問ください。

skmsk1941093
質問者

お礼

回答ありがとうございます。NNでの入力と出力の変数の選択としては、因果関係がハッキリしているもの、ハッキリしてはいないけどその方向にあるもの(天気は西から東に移っていくので入力:西日本の気温と出力:東日本の気温)、全く因果関係がないものです。複数の入力層すべて全く因果関係がないものだとしたらどうなるのかなと思うのですが。こういうものはフェイクデータで試してみることができると思います。出力y, 入力候補にx1,x2,x3,x4,x5としておき、実はy=f(x1,x2)となっていたとします。このような場合、入力層が3つある場合、その3つのうち2つをx1,x2とする、1つだけx1かx2とし残りがx3,4,5から2つとする、無関係なx3,4,5入力層とする、というパターンですね。どういう違い出てくるものでしょうか。x3,4,5を選択していたら学習すればするほど誤差が大きくなるとかですが。NNの面白さというか、その真価は利用者に考えさせないというところにあるように思っていました。でもそれではダメでやっぱり事前にちゃんと検討したものでやってください、ということになるのでしょうか。私の希望としては、説明できる可能性がある入力層を選択していればOKで、逆に絶対あり得ない入力層はダメという程度でいい、ということなのですが。東京のラーメンの売り上げが、ニューヨークの美術館の来場者数で説明できたらおかしいわけですね。そういうのではダメだけど、東京の気温が大阪の気温で説明できる(気象は西から東へ進むから)可能性はあるわけです。そういうのでやってくれってことじゃないかと思うのですが。どうでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 3層構造 階層型ニューラルネットワークについて

    入力層、中間層、出力層の3層構造からなる基本的な階層型ニューラルネットワークの結合荷重値はどのようにして与えられるのでしょうか? また、中間層のニューロンの数はどのようにして決められるのでしょうか?入力層のニューロンの数と相関があるのでしょうか?中間層が多層の場合、1層のニューロンの数はみな同じですか?

  • 階層ニューラルネットワークにおける入出力層の数について

    ある問題を解くのに,入力層5個,出力層10個の階層ニューラルネットワークを用いています.このように入力層よりも出力層の方が多くても正しく計算されるのでしょうか?また,中間層の決定はどのように行うのが一番いいのでしょうか?よろしくお願いいたします.

  • ニューラルネットワーク

    0~9までの7セグメントディスプレイで表す数字を識別するニューラルネットワークを作成したいのですがなかなかわからないので質問したい所存です。 7セグメントを1~7のノードに割り振り中間層に10個のノード8~17でつなぎ出力するノードを18~27として18から0~9まで出力するようにしたいのですが、やり方としてまず、 27個のノードの結合関係を隣接行列で表す。 つぎに内部状態と重みのとる値の範囲を示す。 そしてそのニューラルネットワークに入力を与え、出力を計算する手順を説明するとのことなのですが。 よろしければアドバイス等お願いいたします。

  • ニューラルネットワークとAI

    まさに今、書籍でもマスコミでもなんでもこの方面が賑やかのように見えます。 実際に本を読んでみてそれを実行するという面ではそれほどハードルが高くないように思えます(基礎理論は軽い線形代数と微積を少々)(これを考え付いた人はエライですが)。システムの枠組みがあってデータを学習させてシステムの変数を同定していくということですかね。そのため逆にいうと独自性を出すところとか頭1つ他よりも上に行くのは難しいだろうと思いますが、私の立場は単純にユーザです。言われた通りのことをやってみるってだけのことです。そういう立場で見ると、入力層とか出力層は問題設定で決まらざるを得ないのですが、中間層のノード数、層数はどうやって決めていくのかな?という疑問があります。教科書のサンプル例では中間層が1層で5ノードとかの事例が示されています。1層5ノードとなっているところを4層で各層10ノードとかに設定したとしてもプログラム自体は特に問題なく動くように思えます。今どきのコンピュータだと苦も無く計算してしまいそうです。ただし、そうなると学習させるデータがそれに見合って多くないと意味がないかもしれませんが。中間層の層数・ノード数の決め方に何か指標があるでしょうか。未知の変数が多くなるので十分学習すれば複雑な問題に対応できるのかもしれませんが、そこまでしなくていいだろうというような感じなのでしょうか。 また、AIって結局ニューラルネットワークのことだ、と思っていいのでしょうか。多分、ビッグデータがあるから皆出来るようになったんだなと思いますが。

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

    最近ニューラルネットについて勉強しています。 特に準ニュートン法での学習について考えています。 ある日手に入れたデータで学習したところ、誤差があまり小さくならなかったので(何度も学習を試し、ノイズ混入も試したので、ローカルミニマムに引っかかっている感じではないと思います)、中間層のユニット数を莫大に大きくしました(最初試したときの100倍以上です)。 しかし誤差が全然変らない、という結果が出ました。 このように、自由度を上げても学習しきらないことってあるんでしょうか。もしあるのなら、その原因は何でしょうか。また、学習しない原因となっている邪魔なデータを探す方法ってあるのでしょうか(出来れば視覚的に見えると嬉しいです)。 宜しくお願い致します。

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

    ニューラルネットワークで正規化し、パラメータを求めた後、パラメータの正規化をもとに戻したいのですが、方法が分かりません。 以下は、私がやっている途中を示します。 たとえば、データの入力が年齢と身長、出力が体重のデータがあるとします。 年齢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の正規化を解除すればよいか分かりません。 正規化する方法は載っているサイトはいくつかあるのですが、解除する 方法が載っているのは見つかりませんでした。 回答よろしくお願いします。

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

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

  • 4階層型ニューラルネットワークで学習(準ニュートン法)

    準ニュートン法の学習方法の中に出てくるヘッセ行列の逆行列の近似行列Hについてなんですが、よく最適化についての本に更新式が載っているのを見るのですけど、(DFP法やBFGS法)アルゴリズムの中に探索方向の計算についてあるんですが、4層のニューラルネットに準ニュートン法を導入すると、それぞれ入力層-中間層1と中間層1-中間層2と中間層2-出力層の3つの所でそれぞれ重みwや微分式∇f(w)の更新を行うと思うのですが、このときにHをそれぞれの層間で探索方向を用いて次のHを更新するみたいですが、このHはよく初期値として単位行列を設定しているようなのですが、これはそれぞれの層のユニット数を同じにする必要とかあるのでしょうか?例えば中間1-2層のユニット数は10個とか

  • 4階層型ニューラルネット(逆伝播法)

     現在、実験のために4階層型のニューラルネットを作成しているのですが上手く収束しません。使用は入力層、中間層2層、出力層の計4層です。  各変数はo1が入力ユニットからの出力、o2とo3は中間層ユニットの出力、o4が出力層ユニットの出力です。w43,w32,w21はそれぞれの結合強度です。biasはそのままバイアスです。変数の前にdがついてるものは変化を表したものです。etaは学習率、alphaは慣性項係数です。この値と中間層ユニット数を変更してみても収束しませんでした。  問題があるのは逆伝播法での結合強度の更新です。以下にそのルーチンを示しますのでお気づきの点がありましたらお願いします。特に問題があるのは中間層~入力層間についてだと思うのですが。。  ご意見お願いします。また、よろしければ4層以上のニューラルネットについてのサイトがあればお願いします。

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

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

TS8430でスキャンする方法
このQ&Aのポイント
  • 無線LAN接続ができたTS8430でスキャンを開始する方法について教えてください。
  • TS8430を電源ONの状態で、PCからスキャンをする方法を教えてください。
  • キヤノン製品のTS8430でスキャンをする方法について、詳しく教えてください。
回答を見る