- 締切済み
ニューラルネットワークの入力層の選択
ニューラルネットワークで入力層・中間層・出力層があるわけですが、入力層をインプットとして出力層を推定するモデリングを考えていくのが基本だろうと思います。 そこで質問なのですが、出力層というのアウトプットとして欲しいものであり、入力層はそれを説明するに足りる情報だとみなすことができるように思います。という風に考えると入力層は説明には足りない数だとなっていた場合、十分学習した後、アウトプットはどのように変化していくものでしょうか。不安定とか発散とかそういう結果になるのでしょうか。また、正しくモデリングするためには入力層はある程度の数が必要ということになるのでしょうか。つまり必要な数よりも少ないとダメだけど、少々多いのは構わないということになるのでしょうか。それともモデリングの対象ごとにいろいろ違うということになるものでしょうか。また、入力層として必要なデータは理屈で考えて因果関係が説明できるものから選ぶというのが基本なのでしょうか。”風が吹けば桶屋が儲かる”ということで、風のデータは入力層に必ず含め、桶屋の収入をアウトプットとするという風にする、ということですが。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
関連する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って結局ニューラルネットワークのことだ、と思っていいのでしょうか。多分、ビッグデータがあるから皆出来るようになったんだなと思いますが。
- 締切済み
- 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層以上のニューラルネットについてのサイトがあればお願いします。
- 締切済み
- C・C++・C#
- ニューラルネットワークの重みの行列について
ニューラルネットワーク(誤差逆伝播)では、重みを行列で表現して、行列計算を何回となくやっていくという風なプログラムになっていくと思います。”重み”というとどうしても重み付き平均が連想され、足して1になるようにする、というイメージにとらわれてしまうのですが、そのような制約はないということでもいいのでしょうか。足して1にならないということは増幅とか減衰が生じることを許容するということになりますが。 もし、それでOKならば、多くのテキストにみられる”重み”という言葉で説明しない方がいいのではないかと思いますが。そのあと、シグモイド関数で変換されたりするので、和の値が一定などの制約は必要なしなのだろうと思いますが。また、その”重み”の値も変化していくのでそうなのかなと思いますが。ニューラルネットワークはある意味、システムのルールさえ守っていれば融通無碍という風にも見えます。 また、ニューラルネットワークでは行きついた先が最適解である保証は取れるということになるでしょうか。行き当たりばったりを何回も繰り返すという印象をもってしまいます。あるいは別のタイプになりますが、乱数による総当たり戦の最終勝者を探すというような感じあります。そうすると乱数の発生の仕方に依存したりするように思えてきます。
- 締切済み
- 情報工学
お礼
回答ありがとうございます。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で、逆に絶対あり得ない入力層はダメという程度でいい、ということなのですが。東京のラーメンの売り上げが、ニューヨークの美術館の来場者数で説明できたらおかしいわけですね。そういうのではダメだけど、東京の気温が大阪の気温で説明できる(気象は西から東へ進むから)可能性はあるわけです。そういうのでやってくれってことじゃないかと思うのですが。どうでしょうか。