• ベストアンサー

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

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

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

  • ベストアンサー
  • fonera
  • ベストアンサー率52% (38/72)
回答No.2

恐れ入ります。 誤差逆伝播ではそれが正しい挙動だと思います。 パターン認識で用いる場合には、あらゆるパターンに対するあらゆる理想の出力となる教師データを用意しなければならないのは理解しておられますか? 例: Aという文字を学習させたニューラルネットワークは、あらゆる入力に対して、Aを返します。 AとBという文字を学習させたニューラルネットワークは、あらゆる入力に対して、AかBを返します。 アルファベットを学習させたニューラルネットワークは、あらゆる入力(例えば写真であっても)に対して、アルファベットを返します。 教師データの種別と量が判らないので判断がつきかねます。 どのようなデータを与えて、どのようなパターンを判断させようとされていますか?

その他の回答 (4)

  • fonera
  • ベストアンサー率52% (38/72)
回答No.5

No.2で解答した者です。 書き方が悪かったようで、混乱を招いてしまったようです。申し訳ありません。 ANo.2の私の補足要求は、質問者であるatxさんに対する要求です。 書き直します。 *** 私は、atxさんの質問内容に対する、補足要求を希望します。 atxさんが、確認された挙動は、誤差逆伝播としては正しい挙動だと、私は思います。 atxさんは、パターン認識で用いる場合には、あらゆるパターンに対するあらゆる理想の出力となる教師データを用意しなければならないのは理解しておられますか? 例: Aという文字を学習させたニューラルネットワークは、あらゆる入力に対して、Aを返します。 AとBという文字を学習させたニューラルネットワークは、あらゆる入力に対して、AかBを返します。 アルファベットを学習させたニューラルネットワークは、あらゆる入力(例えば写真であっても)に対して、アルファベットを返します。 atxさんが行われている下記の行為において >現在私はバックプロパゲーションを用いて、あるパターン入力に対して理想の出力となる教師データを用意して、コンピュータに学習させるということを行なっています。 >しかし、学習させて得られた重みを用いて実際にパターン認識させると、あらゆるパターンに対して教師データに近い値を出力してしまうという現象が起こっています。 atxさんが、バックプロパゲーションを用いて学習させている、教師データの種別と量が判らないので、バックプロパゲーションとして正しい挙動であるのか間違った挙動であるのかは、私には判断がつきかねます。 atxさんは教師データとして、どのようなデータを与えて、ニューラルネットワークに、どのようなパターンを判断させようとされていますか? *** (No.3とNo4.のtomo316さんと質問者であるatxさんとが同一の方である場合には、解答内容が異なります。上記の補足要求は、atxさんとtomo316さんとが別の方であるという前提に基づいています) 以後、紛れのない文章で投稿するように心がけます。申し訳ありませんでした。

  • tomo316
  • ベストアンサー率35% (51/142)
回答No.4

ANo.3です 間違えました。 3×5のデータです。 p.s atxさんのが問題だと思うのですが。

  • tomo316
  • ベストアンサー率35% (51/142)
回答No.3

>教師データの種別と量が判らないので判断がつきかねます。 >どのようなデータを与えて、どのようなパターンを判断させようとされていますか? 堺井幸市先生に手法を参考にしています。 コード化する手法です。 下記は3×4の文字データをコードに対応するように学習させた結果です。 (1,1,0,0,0,1)これは何かは考えてください。 入力 出力 { 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,} -> {1,1,0,0,0,1,} { 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1,} -> {1,1,0,0,1,0,} { 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,} -> {1,1,0,0,1,1,} Input 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 ( 1 1 0 0 0 1 ) Output 0.6281 0.5806 0.5777 0.4166 0.2428 0.5214 Input 1 1 1 0 0 1 0 1 0 1 0 0 1 1 1 ( 1 1 0 0 1 0 ) Output 0.6539 0.5618 0.5737 0.4292 0.2384 0.5368 Input 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 ( 1 1 0 0 1 1 ) Output 0.6680 0.5505 0.5632 0.4121 0.2493 0.5226 学習回数0 エラー 2.440808e-001 Input 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 ( 1 1 0 0 0 1 ) Output 0.9983 0.9998 0.0001 0.0005 0.0196 0.9994 Input 1 1 1 0 0 1 0 1 0 1 0 0 1 1 1 ( 1 1 0 0 1 0 ) Output 0.9995 0.9997 0.0000 0.0003 0.9998 0.0251 Input 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 ( 1 1 0 0 1 1 ) Output 0.9999 1.0000 0.0000 0.0000 0.9801 0.9770 学習回数100 エラー 1.079508e-004 総学習回数 = 110 Input 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 ( 1 1 0 0 0 1 ) Output 0.9982 0.9998 0.0001 0.0005 0.0188 0.9994 Input 1 1 1 0 0 1 0 1 0 1 0 0 1 1 1 ( 1 1 0 0 1 0 ) Output 0.9995 0.9997 0.0000 0.0003 0.9999 0.0240 Input 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 ( 1 1 0 0 1 1 ) Output 0.9999 1.0000 0.0000 0.0000 0.9810 0.9780 E = 9.948718e-005 Weight w1[0]={-0.914295,1.029532,-1.305059,-0.201041,1.066648,-0.833848,1.015768,0.7052 73,-0.416593,-1.678178,1.319738,1.292510,-0.775863,0.778883,-1.627121} シータ1[0 ]=0.275389 w1[1]={-0.457406,1.014357,-2.012653,-0.347316,1.282655,-0.659378,0.996132,0.9685 18,0.471313,-2.445222,1.500954,1.018319,-0.583051,1.154925,-1.930222} シータ1[1] =0.241567 w1[2]={-0.586034,0.404161,-0.101001,0.300836,0.768249,-0.714089,-0.542453,-0.089 262,-0.120808,-0.717414,1.384601,-0.701241,-0.935837,0.058325,-0.708106} シータ1 [2]=-0.187471 w1[3]={1.084599,-0.244433,1.342269,-0.119922,-1.670305,0.825100,-0.074635,-0.301 258,-0.266747,0.538900,-1.445933,-0.530399,1.091099,-0.075696,0.816496} シータ1[ 3]=-0.504084 w1[4]={0.755032,0.486372,0.151416,0.458831,-0.781081,0.683008,0.055366,-0.280253 ,-0.428953,0.755805,-0.664805,-0.354437,0.457507,0.392649,0.311272} シータ1[4]=- 0.417800 w1[5]={1.087268,-0.465093,0.365285,0.162099,-1.727705,1.631932,0.621532,0.241044 ,0.166372,0.546320,-1.064721,1.207914,0.803476,-0.032279,0.617307} シータ1[5]=-0 .195462 w2[0]={1.339008,1.927377,0.465601,2.152783,2.079809,1.893769} シータ2[0]=3.53173 2 w2[1]={2.327241,2.256344,1.688116,2.344645,2.174787,1.756529} シータ2[1]=3.95318 6 w2[2]={-2.523043,-2.439243,-1.372937,-3.206041,-2.718302,-1.814574} シータ2[2]=- 4.865893 w2[3]={-2.313300,-1.658671,-1.116076,-2.538230,-2.063983,-1.823213} シータ2[3]=- 3.850490 w2[4]={-2.561655,-2.924075,-2.527603,3.804190,2.142241,4.015982} シータ2[4]=1.69 4993 w2[5]={3.923517,5.514326,0.516860,-2.879458,-1.566207,-0.701971} シータ2[5]=0.05 1482

  • tomo316
  • ベストアンサー率35% (51/142)
回答No.1

ソースを載せてみれば。 ちなみに私のは、こんな結果になります。 Inputのカッコの中の教師データとOutputが一緒です。 入力 出力(教師データ) { 0, 0,} -> {1,0,0,0,} { 0, 1,} -> {0,1,0,0,} { 1, 0,} -> {0,0,1,0,} { 1, 1,} -> {0,0,0,1,} <学習結果> 総学習回数 = 1089 Input 0 0 ( 1 0 0 0 ) Output 0.9875 0.0082 0.0079 0.0000 Input 0 1 ( 0 1 0 0 ) Output 0.0111 0.9873 0.0000 0.0113 Input 1 0 ( 0 0 1 0 ) Output 0.0104 0.0000 0.9884 0.0095 Input 1 1 ( 0 0 0 1 ) Output 0.0002 0.0114 0.0127 0.9834 E = 9.996573e-005 Weight w1[0]={-2.940526,-7.414290} シータ1[0]=3.575910 w1[1]={-9.561443,2.320025} シータ1[1]=2.313304 w1[2]={7.020912,-4.400590} シータ1[2]=-3.249521 w1[3]={0.457555,-8.441451} シータ1[3]=3.273823 w2[0]={8.789506,1.584596,-7.971762,4.211939} シータ2[0]=-7.597380 w2[1]={-4.997718,9.046867,-6.738263,-5.974033} シータ2[1]=-3.054101 w2[2]={2.379395,-7.554198,6.480146,6.090728} シータ2[2]=-7.882834 w2[3]={-6.753516,-10.838337,0.275611,-7.596125} シータ2[3]=5.407839

関連するQ&A

専門家に質問してみよう