質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

4回答

910閲覧

自分でニューラルネットワークを作ろう のプログラムの意味

退会済みユーザー

退会済みユーザー

総合スコア0

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/09 23:50

編集2021/04/09 23:51

https://qiita.com/takahiro_itazuri/items/d2bea1c643d7cca11352#comment-a59cd26161ee56ea1220
この「自分でニューラルネットワークを作ろう」のプログラムの意味ですが、
これはtdataとidata(後、それぞれt,iと表記)を用い、逆伝搬による訓練を繰り返す事でより最適な重みを求め、
そのより最適な重みを用い、順伝搬による判定でiの、tに対する判定精度の高さを測定しているという事でしょうか。

でも実際は「自分で手で描いたデータ」(hと表記)を用いるわけで、
これはiと似ていますが、iと違って「答えが含まれていない」(つまり、データ内に、各手書き画像が表す数字が含まれない)わけで、これに対する逆伝搬による訓練は行えませんよね?

という事は、実際にこのtdataを利用して手書き画像認識を行う場合は、「あからじめ最適とされている重み」を用いるんですよね?
その重みというのは、このプログラムを用いて求める事はできませんよね?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

「# 学習」のforループ内では、「training_data_list (mnist_train.csv)」から「idata」と「tdata」のペアを作り、それを使って誤差逆伝搬で学習して、ニューラルネットの重み(※)を決めます
学習が終わったら、もう「training_data_list (mnist_train.csv)」は使いません

 
「# テスト」のforループ内では、「test_data_list (mnist_test.csv)」から「idata」と「tlabel」のペアを作り、それを使います
「training_data_list (mnist_train.csv)」は使いません
同じ「idata」という変数名ですが、学習時とは別内容です

まず、「idata」から順伝搬で予測します
その際に使われるニューラルネットの重みは、誤差逆伝搬で学習されたもの(上記※)です
予測結果が「plabel」です

次に、「plabel (予測結果)」と「tlabel (正解)」が一致してるかどうかを調べます
その結果が「scoreboard」で、それから精度(何%が一致したか)を計算します


学習と、テストには、別のデータを使います

「training_data_list (mnist_train.csv)」は、誤差逆伝搬での学習にだけ使います
学習が終わったら役割は終わりで、これを使った精度確認テストはしません (してはいけません)

「test_data_list (mnist_test.csv)」は、精度確認テストにだけ使います
テストの前には学習は済んでいるので、これを使った学習はしません (する必要はありませんし、してはいけません)


正解ラベルが無い画像の場合は、順伝搬での予測だけします
当然、事前に学習が済んでいるのが前提です

投稿2021/05/16 06:42

編集2021/05/16 06:47
jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

当然、重みをプログラムで求めることも可能な場合があります。
(例:体重・身長というパラメータを持つデータ群から、肥満・適正体重を判別するなど)

ただ、複雑は判別になればなるほど、各パラメータを数値計算的に決め打ちするのが難しくなります。
その時に初めてニューラルネットワークの真価が発揮されます。
(GPUによる処理が強いのもココです)

投稿2021/04/11 16:14

tain

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/11 22:48

この「重み」ってどうやって求めてるんでしょうか?一般的に。 教師データを元に「重み」を決めるなら分かるのですが、 実際は、呼び方がよく分からないのですが、集めてきた個性的なデータ?も使うんですよね。 それらをどのようにして扱って、「重み」を求めるのか・・・? 今回のプログラムは、「実際にデータ測定を行うtestデータを用いて」重み測定を行っているため、 実際に画像認識を行う場合とは少し違うようにも感じます。
guest

0

学習に使うデータは、人間に対して

ここに0という字を書いてください
ここに1という字を書いてください
ここに2という字を書いてください
:
ここに9という字を書いてください

と依頼して書いてもらった手書き文字データです。
ですから「書いた文字の画像データ」と「書いた人が何の文字のつもりで書いたか」がセットになっています。

「書いた文字の画像データ」がidataで
「書いた人が何の文字のつもりで書いたか」がtdataです。(精確には教師データになるようにそれをone-hotベクトルで表現したもの)


これはtdataとidata(後、それぞれt,iと表記)を用い、逆伝搬による訓練を繰り返す事でより最適な重みを求め、

はい。
正しくは training_data_list から取り出した i と t の組で訓練して最適な重みを求めています。

そのより最適な重みを用い、順伝搬による判定でiの、tに対する判定精度の高さを測定しているという事でしょうか。

言葉が足りません。
順伝搬による判定でtest_data_list から取り出した i と t に対する判定精度の高さを測定している
でしょう。

でも実際は「自分で手で描いたデータ」(hと表記)を用いるわけで、
(略)
これに対する逆伝搬による訓練は行えませんよね?

はい。
訓練が終わったあとの運用では、また訓練するようなコードを書かない限り訓練は行えません。
(コードを書いたとしてもうまく訓練できるとは限らないし、現実問題としてはうまくいかなさそうですが)

という事は、実際にこのtdataを利用して手書き画像認識を行う場合は、「あからじめ最適とされている重み」を用いるんですよね?

"という事は"はどこから繋がっているんでしょう? "このtdata"はどういう意味でしょう?

training_data_listから取り出したtdataは訓練に使います。
test_data_listから取り出したtdataは精度の高さを測定するのに使います。

これらはまずまず理解しているようですが、その上で"このtdataを利用して手書き画像認識を行う"とはどういうことを言っていますか?

投稿2021/04/10 04:44

編集2021/04/10 04:49
quickquip

総合スコア11063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/10 06:51

mnist_train.csvというファイル名を使った方がよさそうですね・・。 mnist_train.csv(tr.csv)を用いて、手書きデータファイル(以下、h.csvとする)の判定を行うとする。 で、この時「訓練」ってそもそも行えませんよね・・・?h.csvには各画像データが示す「答え」が含まれていないから、 という事は、「あらかじめ重み」を設定しておく必要がありますよね?randomを使わずに。
quickquip

2021/04/10 07:03

答えは含まれてますよ。 (1)記事も読んでない、コードも読んでない、ファイルの中身も見ていないのになぜかそう思い込んでいる (2)記事のどこか、コードのどこかを読んでそう誤読してしまっている 可能性は2つ。さてどっちでしょう?
quickquip

2021/04/10 07:06

後者ならどうして「答えが含まれていない」と思ったのかを質問に書きましょう。 それをしないから"質問してもほぼ返ってこない"ということが起きるんですよ。
退会済みユーザー

退会済みユーザー

2021/04/10 07:09

mnist_trainとmnist_testを用いて行った「訓練」は、h.csvには使えない、 ならh.csvを用いてる際の訓練は、いかにして行うんでしょうか???
quickquip

2021/04/10 07:13 編集

あ、すみません。2021/04/10 15:51 のコメントを誤読しました。 上2つの私のコメントはなかったことにしてください。
quickquip

2021/04/10 07:14

mnist_trainとmnist_testを用いて「あらかじめ重みを設定しておく」ことが「訓練」です。 これは大丈夫ですか?
退会済みユーザー

退会済みユーザー

2021/04/10 07:34

うーんなるほど、なんか納得できた気がします。
退会済みユーザー

退会済みユーザー

2021/04/11 22:42

一般に手書き画像を認識する画像認識を行いたい場合は、mnist_trainを使い、 mnist_testは使わないんですよね? mnist_testって、trainよりいわば「下手な字」だから。
quickquip

2021/04/16 06:05

元論文読んだわけでもデータ全部見たわけでおないですが、普通そういう恣意的な分け方をするとは思えません。 random関数あたりで、各クラスごとにプログラムで振り分けてると思いますよ(思うだけ)。
quickquip

2021/04/16 06:19 編集

> 一般に手書き画像を認識する画像認識を行いたい場合は、mnist_trainを使い、 > mnist_testは使わないんですよね? 重みの学習にmnist_trainを使って、 学習の精度を出すのにmnist_testを使います。 一般には train, develop, test と3つに分けて、trainで訓練して、developを過学習になってないかの指標にしたりハイパーパラメータの調整に使います。 で、testを使った精度を論文のresultとして載せます。あるいは、コンテストなどだとtestは隠されたままです。 mnistは問題が(今となっては)簡単だし、developとtestが分かれてないので、素朴に、trainで学習してtestで誤差の様子を見て学習を打ち切ったりする、という感じですね。それを雑に『mnist_trainとmnist_testを用いて「あらかじめ重みを設定しておく」ことが「訓練」です。』と表現してしまいました。
guest

0

qiitaならせっかくそこで聞けるようになってるんですから、本人に聞いてみたらどうでしょう

投稿2021/04/10 00:26

y_waiwai

総合スコア87800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/10 01:03

どうやらここ、質問してもほぼ返ってこないみたいなのです。
miyabi_takatsuk

2021/04/10 04:42

実際に聞いてみたのですか? 私もQiitaの記事主に質問したことありますが、すぐ返ってきましたよ。 人にもよるかとは思いますが、 口コミを鵜呑みにせず、まずやってみた方がよいかと。
退会済みユーザー

退会済みユーザー

2021/04/10 05:04

記事のコメント機能使ってですか?
miyabi_takatsuk

2021/04/10 10:01

そうです。 記事のコメント機能です。
Zuishin

2021/05/16 06:47

この記事はコメント欄でダメ出しされてるので反応しにくいのでしょう。 なぜ間違っているとわかっている記事を参考にしているのか謎です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問