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

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

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

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

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Q&A

解決済

1回答

973閲覧

CNNを用いた2クラス分類における、訓練データ数による出力値分布の変化について

gammaman

総合スコア3

深層学習

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

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

0グッド

0クリップ

投稿2021/07/06 16:00

編集2021/07/07 02:36

CNNを使って2クラス分類をしていますが、訓練データの枚数を変えると出力層softmax関数のクラス1の出力値分布が変わる理由が知りたいです。

前提・実現したいこと

CNNアルゴリズムはGoogLeNet
フレームワークはcaffe
2クラス分類を行っています。
出力層はsoftmax関数です。

出力される2次元ベクトルのうち1個目の要素をここではP1とします。
クラス分けをする際のP1の閾値を最適化させるために、
クラス1,クラス2でのP1分布を見ました。

発生している問題

1回目の学習では持ってるデータ全てを使い、訓練データ数を以下のようにしました。
クラス1:42230枚
クラス2:42230枚
テストデータ(各クラス1000枚ずつ)でテストを行ったところ、P1のヒストグラムはこのようになりました。
イメージ説明

2回目の学習では訓練データを意図的に減らしました。
クラス1:9000枚
クラス2:9000枚
テストデータ(各クラス100枚ずつ)でテストを行ったところ、P1のヒストグラムはこのようになりました。
イメージ説明

訓練データが多い1回目の学習では、クラス1,2がなだらかなP1の分布を持つのに対し、
訓練データの少ない2回目の学習では、クラス1,2共に極端な分布を持ってしまいました。

最後に

私の行っている解析では、訓練データの少ない2回目の学習結果の方が適しているので
今後も2回目の学習結果を使いたいと考えています。
ただ、学習において訓練データは少ないより多いほうが良いと勉強してきましたので、
2回目の結果を使うのは、やや不安なところがあります。
そのため、1回目と2回目の結果の違いが現れた原因、理由を教えていただけたら幸いです。

###追記
1回目の学習における検証データの損失と精度は以下のようになります。
検証データの損失
検証データの精度

2回目の学習における検証データの損失と精度は以下のようになります。
イメージ説明
イメージ説明

以上を追記します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

caffeは知らないので、深層学習の一般論として回答します。

1回目と2回目の結果の違いが現れた原因は、2回目が過学習をしているため、理由は、2回目の訓練データが少ないから、と考えられます。そのため、2回目の学習結果を使うのはあまりよく無いと考えます。

質問者様の状況は、訓練データの損失だけを見ていて、検証データの損失が考慮されていません。学習の良し悪しは、検証データの損失や精度を見て判断するのが基本です。十分なエポック数があれば、訓練データが少ないほど訓練データの損失が少なくなる(訓練データに過学習する)のは、むしろ当然な結果です。

投稿2021/07/06 22:46

toast-uz

総合スコア3266

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

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

gammaman

2021/07/07 02:40 編集

回答ありがとうございます。 質問に追記をしました。 2回目の方が損失と精度が振動しますが、精度自体が悪くなっていないように見えます。 過学習ではこういったことが起こるのでしょうか?
toast-uz

2021/07/07 13:21 編集

振動は過学習というよりは、学習率が大きすぎる可能性があると思います。 ただし、この2つの結果を見比べるなら、1回目の方がよさそうだ、と思えます。精度よりも損失の方を重視したいです。分類タスクだと、精度は目的変数をしきい値で丸めてしまいますので。 できれば、追記のグラフで、train_loss、val_lossを1枚に重畳して表示したものを、1回目、2回目で示していただくと、よりわかりやすくなります。2回目の方が、train_lossとval_lossが乖離しているのではないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問