• 締切済み

バックプロパゲーションによる学習について

こんばんは。 現在私はバックプロパゲーションを用いて、あるパターン入力に対して理想の出力となる教師データを用意して、コンピュータに学習させるということを行なっています。 しかし、学習させて得られた重みを用いて実際にパターン認識させると、あらゆるパターンに対して教師データに近い値を出力してしまうという現象が起こっています。 原因がよく分からず困っています。アドバイスなどありましたら、よろしくお願い致します。

  • atx
  • お礼率64% (37/57)

みんなの回答

回答No.1

具体的にどのような学習をさせているかわかりませんが、 教師データを出力にして学習させているので、 教師データに近い値が出るのは当たりまえな気がします。 もっとも、同じ研究室の先輩や先生に聞くのが 一番わかりやすいと思いますが、いかがでしょうか。

atx
質問者

補足

さっそくのお返事、ありがとうございます。 「教師データを出力にして学習させているので、 教師データに近い値が出る」 おっしゃる通りなのですが、学習に用いたパターンやそれに近いパターンだけに限らず、どんな入力パターンに対しても教師データに近い値を出力してしまうのです。 また、私の研究室で学習を用いるのは私が初めてでして、先生も多忙のため今しばらくは聞ける人がおらず、1人で何とかしなければならない状態ですのでここで質問させていただきました。

関連するQ&A

  • バックプロパゲーションでの学習について

    こんばんは。 現在私はバックプロパゲーションを用いて、あるパターン入力に対して理想の出力となる教師データを用意して、コンピュータに学習させるということを行なっています。 しかし、学習させて得られた重みを用いて実際にパターン認識させると、あらゆるパターンに対して教師データに近い値を出力してしまうという現象が起こっています。 原因がよく分からず困っています。アドバイスなどありましたら、よろしくお願い致します。

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

    最近誤差逆伝搬法を用いたニューラルネットについて プログラムを組んで実装してみようと思ったのですが あまり理解できていない部分があるのでよろしくお願いします。 私が作りたいのはフォントの違う数字画像の認識を 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個つ用意する必要が ありますよね・・・? いま一つ理解できていないのでよろしくお願いします。

  • 機械学習での学習の順番の影響について

    エクセルで1000行10列ぐらいのデータがあり、これを教師データとして機械学習をすることを考えます。 1列目が結果で2~10列(9個)が入力データです。学習は1行づつ進めて1000行までやるのですが、1000回学習した結果は学習の順番に依存したものになるのでしょうか。つまり、1,2,3,...1000と学習するのと、1,25,87,871,253,451,19,...と学習するのとの違いです。 時系列解析に特化したRNN,LSTMは出てくる順番をしっかり覚えておくということになりますが、そうでないものは学習する順番は全く関係ないのでしょうか。 パーセプトロンの重み関数とか、発火のパラメータは前の学習結果の差分として算出され、非線形現象に対応するものなのだから、学習の順番(すなわち時系列)の特徴は出るのではないかと思うのですが。 よろしくお願いします。

  • 階層型NNの複数INPUTパターンへの対応

    現在、階層型(3層)ニューラルネットワークを利用して、システムパラメタのメモリとして活用しようと考えております。 現在、良く分からない問題点が、複数のINPUTパターンに対してNNの出力がうまく教師信号に対応することができないことです。もちろん、ひとつのINPUTパターンではうまくいきます。 この問題点を例を挙げて説明します。 (1)複数のINPUTパターンとそれに対応する教師信号を乱数で生成します。 -*-*-*-*- INPUT -*-*-*-*- | -*-*-*-*- 教師信号 -*-*-*-*- 0.015 0.845 0.112 | 0.551 0.456 0.121 0.225 0.365 0.555 | 0.841 0.453 0.231 0.199 0.846 0.745 | 0.715 0.166 0.011 (2)back propagationを用いてNNの学習 もちろんだと思いますがここが一番重要で、現在使用しているアルゴリズムの方法論を以下にmatlab形式の擬似言語で流れを書きました。 For 1:loopNUM % 複数INPUTパターンの繰り返し学習ループ dataNUM = 1; % INPUTパターンの初期化 For 1:dataNUM % INPUTパターンの変更ループ For 1:learningNUM % 各INPUTパターンの学習回数 NNOUTPUT = NN(INPUT(dataNUM,:)); % NNの出力 ERROR = ERROR_BP(NNOUTPUT,TEACH(dataNUM,:)); % このときの出力と教師信号との誤差(hidden layer, output layer) WEIGHT = weightUPDATE(ERROR); % 誤差から重み係数(閾値も)を学習。更新 end end end という感じでプログラムを進行させ、この後複数のINPUTをNNに順番に入力したところ、上手くいきませんでした。HIDDEN層の数を変えてみたり(だいたい10個前後)しましたが、だめでした。 ふがいない説明で申し訳ありませんが、どなたかご教授お願い致します。

  • プログラミングの問題

    1.皮膚感覚における情報処理機構及び機能に関する神経細胞の働きにはどういったことがありますか? 2.3層階層型ニューラルネットに誤差逆伝搬学習アルゴリズム適用して符号化問題の機能を実現するプログラムを自作し実行するやり方を教えて下さい。プログラムを自作したら、学習パターンと教師信号の組をランダムに入力して学習し、学習終了後の結合荷重を用いて学習入力、学習出力、教師信号を対比して示してほしいです。また、学習後の結合荷重としきい値は機能を実現するための内部表現になっているのでその特徴を教えてほしいです。 符号化問題 入力ユニット数:8、隠れユニット数:3、出力ユニット数:8として、入力信号と教師信号が同じになるように、それぞれ下記の8つの信号を学習させる情報圧縮ニューラルネット・学習終了後の入力パターンに対する出力ユニット及び隠れユニットの出力値の示して下さい。 入力信号(1,0,0,0,0,0,0,0),(0,1,0,0,0,0,0,0),・・・(0,0,0,0,0,0,0,1)         ↓          ↓             ↓ 教師信号(1,0,0,0,0,0,0,0),(0,1,0,0,0,0,0,0),・・・(0,0,0,0,0,0,0,1) どうかよろしくお願いします。

  • ロールバックとコミットの使い方が分かりません

    前も掲載したのですが、また掲載させていただきます。 アクセスのフォームにデータを編集するフォームを作ったのですが、間違って入力したデータを普通に閉じたら容赦なく保存されますよね? 出来ればその現象を無くそうと思ったらコミットとロールバックの機能が使えると友達から聞いたのですが、どうも使い方が分かりません。 メニューのボタンを押すとデータを保存するかどうかメッセージを表示させて、はいを押すとそのデータを保存する作業をする。 いいえを押すと入力したデータを破棄する。 ようにしたいのですが・・・ご教授お願いします。m(__)m

  • バックプロパゲーションの中間層を増やしたいのですが

    C++でバックプロパゲーションを学習しています。入力層2、中間層2、出力1のものは、作れたのですが中間層が100個になったものが作れません。どなたか教えてください。 h1 = ( x1 * w[1][1] ) + ( x2 * w[1][3] ) - theta; fh1 = 1 / ( 1 + exp( -1 * h1 ) ); h2 = ( x1 * w[1][2] ) + ( x2 * w[1][4] ) - theta; fh2 = 1 / ( 1 + exp( -1 * h2 ) ); D = ( T - y ) * y * ( 1 - y ); w[2][1] = w[2][1] + ita * D * fa1; w[2][2] = w[2][2] + ita * D * fa2; w[1][1] = w[1][1] + ita * ( ha1 * ( 1 - ha1 ) * ( w[2][1] * D ) * x1 ); w[1][2] = w[1][2] + ita * ( ha2 * ( 1 - ha2 ) * ( w[2][2] * D ) * x1 ); w[1][3] = w[1][3] + ita * ( ha1 * ( 1 - ha1 ) * ( w[2][1] * D ) * x2 ); w[1][4] = w[1][4] + ita * ( ha2 * ( 1 - ha2 ) * ( w[2][2] * D ) * x2 );

  • バックプロパゲーション(誤差逆伝播法)について質問です

    ニューラルネットのバックプロパゲーション(BP)について勉強してますが、いまいち理解できないところがあります。どなたかご教示ください。 中間層のあるニューロンj の結合加重を更新するとき 一つ後の層のニューロンの誤差の総和を反映させると書いてあったのですが、 誤差 E は    E = 1/2Σ(t_k - out_k)^2       t_k=ニューロンkの教師信号、out_k=kの出力 で与えられますが、 例えば仮に10層くらいのネットワークがあって、第3層の あるニューロンj の結合加重を更新するときも、その一つ後ろの第4層のニューロンの誤差の総和を計算する必要があるんですか?。誤差って何と何の誤差なんでしょうか? またそのニューロンj は教師信号と関わってくるんでしょうか?、 説明が分かりにくかったらすいません…どなかご存知でしたら教え下さい。

  • 最小二乗で最適化された線形マシン回帰と分離の違い

    今、機械学習について色々勉強しています。 ある文献で線形マシンの項を読んでいるのですが、最小二乗で最適化する線形モデルを考える場合、分離の決定規則の手前までにおいて、分離と回帰って混同するとマズいですか?マズい場合、どのようにいけないのかを教えて頂けるとありがたいです。 見た感じですと、入力空間でのベクトル距離(ユークリッド?)にて、分離学習における得意な例題,不得意な例題の差が出てくると思いました(すなわち最小化した学習誤差の差として考えてもらえると良いです)。 すなわち、このマシンが出力する値は、例題どうしの距離感(既知としてラベル付された各クラスの分布の重心からの距離等)を見る指標として、ある種の回帰的な見方をしても良いのかな?と考えました。 分離としてのラベルを教師として学習すると、確かに、回帰として関数を表現するような教師を与えているわけではありませんが、マシン出力の絶対値は例題のデータ距離を測る指標としてそのまま扱えないものでしょうか? 以上、宜しくお願い致します。

  • 両替プログラムなど

    学校の課題で出たプログラムなのですが、いまいちわかりません。 (1)1000円を500円、100円、50円、10円を使って両替する全てのパターンを出力するプログラム。 (2)整数を入力し、上位の桁から順に各桁の英語読みを出力するプログラム。配列使用。 (3)0~100までの任意の値を複数入力して、入力された値の個数、平均値、最大値、最小値を出力するプログラム。 (2)については、315と入力するとthree one fiveと出力されるプログラムです。 (3)については、複数入力と入力された値の個数の部分がわかりません。 コードを全て記述して教えてくれればうれしいですが、考え方、ヒントだけでも結構です。 非常に困っています。助けてください。