🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

Q&A

解決済

3回答

1354閲覧

深層学習 最適な重みパラメータについて

surphy

総合スコア101

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

0グッド

0クリップ

投稿2019/11/30 12:26

深層学習を行っていて、疑問があります。

1.最適な重みパラメータはlossとval_lossが最小となるパラメータなので、下の図のようなval_lossが暴れる場合もたまたまval_lossが下がったときのパラメータを取り出してあげるのがいいのでしょうか。

なお、lossとval_lossは次の定義です。
loss:train dataの答えと予測の誤差のmse
val_loss:test dataの答えと予測の誤差のmse

各エポックにおけるlossとval_lossの値

2.こんなにval_lossが暴れるのはなんででしょうか。
今までに自分でいろいろやっていた深層学習ではlossとval_lossがだいたい短調に下がっていくパターンばかりだったので、不思議です。

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

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

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

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

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

guest

回答3

0

ベストアンサー

1.最適な重みパラメータはlossとval_lossが最小となるパラメータなので、下の図のようなval_lossが暴れる場合もたまたまval_lossが下がったときのパラメータを取り出してあげるのがいいのでしょうか。

これは状況次第で、そうした方が良いときも駄目なときもあります。でもそれより、まず暴れるのをなんとかした方が良いでしょう。

予め要求性能を見積もっておいて、安定的にその性能を満たせるように学習させないと使い物にならないと思います。

2.こんなにval_lossが暴れるのはなんででしょうか。

バリデーションデータが少ないと、まぐれあたり/はずれの幅が大きくなります。あとは学習データと同じ性質のバリデーションデータになっていないときとか。

シンプルにうまく学習できていない場合は、モデルの見直しが必要です。オプティマイザでなんとかなることもありますが、そもそも解けない問題という場合もあります。

投稿2019/11/30 18:32

編集2019/11/30 18:34
hayataka2049

総合スコア30935

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

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

surphy

2019/11/30 23:51 編集

ご回答ありがとうございます。 val_lossが暴れる問題をなんとかしたほうがいいということで、バッチサイズを変えていろいろ学習させたところ、収束しました。lossが10^-5程度に大してval_loss 20程度で収束しました。20は要求精度程度なので、今回はこれでいいかなという感じです。 そもそも解けない問題かどうかは、どう判断されていますか? 今までの経験から判断するのでしょうか。
hayataka2049

2019/12/01 00:10

タスクにもよりますが、堅牢なベースラインで予めやっておくとか。
surphy

2019/12/01 00:14

初学者なもので、「堅牢なベースライン」の意味がgoogle検索で調べてもわかりませんでした。 複雑な問題でも解けた実績のある深層構造で一回お試しして、解けそうか判断するということでしょうか。
hayataka2049

2019/12/01 00:31 編集

動かしやすくてちゃんと動いてそこそこの性能が出ることが予想されるやつ、みたいな。「ベースライン 機械学習」とかでググれば出ます。 まずは深層学習以前の機械学習手法でやってみると良いと思います。それで良い性能がでれば深層学習は使わなくて済みますし。
surphy

2019/12/01 00:42

アドバイスどうもありがとうございます。 まずは興味の強い深層学習から始めましたが、機械学習も学ばないといけないですね。機械学習も使っていこうと思います。 今深層学習でいろいろ試している自分で作った例題は、機械学習で十分解けそうなことはなんとなくわかっているのですが、ちょっと深層学習に固執しすぎてたかもしれません。
surphy

2019/12/02 02:08

val lossが下がったからといって、汎用的かどうかは断定できないのですね。実際に試してみても、そうでしたし、ゼロから作るDeep Learningにもそのように書いてありました。 train data: 重みやバイアスの最適化に利用 validation data: 層構造の性能の評価に利用 test data: 汎化性能のチェックに利用
guest

0

1、val_lossが小さい方がモデルとしての信頼性は高いと思います(val_lossが下がったときのパラメータを取り出してあげるのがいい)。

2、コードがないので断言はできませんが、おそらく学習率の問題ではないでしょうか。
学習率を大きくすると早く学習が進む代わりに発散する可能性が高くなります。
学習率を小さくすると収束しやすくなる代わりに学習スビー度が遅くなります。

投稿2019/11/30 13:33

amahara_waya

総合スコア1029

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

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

surphy

2019/11/30 14:00

1. そうですよね。loss, val_lossが共に小さいほど重みパラメータが良いということが確認できてよかったです。 2. 学習率の問題のようです。学習率の設定方法について理解していないので、そこらへんを学ぼうと思います。また学習率を小さくすることとバッチサイズを大きくすることは効果として同等らしいですね。そこらへんもしっかり理解してうまく使っていこうと思います。
guest

0

1. val_lossが大きくふらつく場合、そもそもパラメータの最適化が機能していないので、val_lossが小さいときのパラメータを取り出しても意味はありません。

投稿2019/11/30 14:04

WathMorks

総合スコア1582

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

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

surphy

2019/11/30 14:28

回答ありがとうございます。 「意味はありません」とは、val_lossが小さいときのパラメータを取り出しても、他の未知のデータを与えた時に正しい答えを出せないということでしょうか? もう少し詳しく解説していただけると大変助かります。
WathMorks

2019/11/30 14:31

ご指摘のとおりです。
surphy

2019/11/30 14:36

val_lossも学習したことのない未知のデータでの評価結果なので、そうなる理由がわかりません。 できれば、もう少し補足していただけないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問