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

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

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

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

Q&A

解決済

1回答

1320閲覧

クロスエントロピー誤差について

jaws3209

総合スコア1

深層学習

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

0グッド

0クリップ

投稿2021/11/17 13:11

通常、クロスエントロピーを用いた損失関数では、
正解ラベルには0または1を与えて、
ロスを計算すると思いますが、
正解ラベルに0,1以外を与えた場合、何が起きるのでしょうか。

たとえば、ある座標点の色が、
白ならば0、黒ならば1、
グレーならばグレースケールの0〜1の値、
としてラベル付けした場合、
どのような学習モデルができあがりますか。

ラベルが0.5、推論結果も0.5で、
ピシャリと当てた場合でも、
計算上ロスが発生するので、
正しく学習されないことになりますよね?

回帰問題にクロスエントロピー損失関数を用いた場合、
どうなるのでしょうか、という質問になるのかもしれません。

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

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

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

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

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

jbpb0

2021/11/18 00:27

> 回帰問題にクロスエントロピー損失関数を用いた場合 合計したら1.0になる数値のペアを回帰で予測したい、とします 実際に予測したい数値が一つだけの場合でも、1.0からその数値を引いた数値を予め計算しておいて教師データの目的変数に追加したらいいだけですので、簡単ですよね 下記のコードは、「t」が正解、「y」が予測値で、ピッタリ正解を予測できた場合です サンプル数は三つ import numpy as np t = np.array([[0.5, 0.5], [0.1, 0.9], [0.7, 0.3]]) y = np.array([[0.5, 0.5], [0.1, 0.9], [0.7, 0.3]]) # カルバック・ライブラー情報量 print(np.mean(np.sum(t * np.log(t), axis=1)) + np.mean(np.sum(-t * np.log(y), axis=1))) # 交差エントロピー print(np.mean(np.sum(-t * np.log(y), axis=1))) 上記をそのまま実行したり、「y」をちょっと「t」と変えて実行したりすれば分かりますが、ピッタリ正解を予測できた場合はカルバック・ライブラー情報量が0.0になり、交差エントロピーは0.0にはなりませんが最小値になります https://qiita.com/ground0state/items/8933f9ef54d6cd005a69 の「Cross Entropy = 交差エントロピーの定義」に書かれてるように、交差エントロピーは、カルバック・ライブラー情報量から「y」に関係しない項(上記コードの計算式の前半)を省略したものです > ピシャリと当てた場合でも、 計算上ロスが発生するので、 正しく学習されない 交差エントロピーが0.0にならなくても、最小値になるから大丈夫だと思います
jaws3209

2021/11/18 03:18

ありがとうございます。 なるほど、t = yのとき必ず最小値を取るので、 t = yのときのエントロピー値をオフセットとして差し引き、最小値が必ず0になるように揃えたものが、カルバック・ライブラー情報量というイメージですかね。 確かに、ロスは0にはなりませんが、 必ず極小値を取るので収束はしていきそうですね。 納得できました、ありがとうございます。 それでも、回帰問題の場合は、二乗和誤差が損失関数として選ばれることが多いのは、何か理由があるのでしょうかね。
jbpb0

2021/11/18 06:34 編集

> 回帰問題の場合は、二乗和誤差が損失関数として選ばれることが多い 全サンプルでピッタリ正解を予測できる場合は、どちらでやっても同じですが、実際はほとんどそうではないわけで、それぞれのサンプルの予測にある程度の誤差を許容して、全体の誤差がバランスよくなるようにするわけですが、その「バランス」が、損失の計算方法で変わります 予測誤差が正規分布に従う場合は、二乗誤差でうまくいきます 参考 https://ai-laboratory-column.com/least_squares_maximum_likelihood_method https://www.iwanttobeacat.com/entry/2018/01/10/233758 https://www.jstage.jst.go.jp/article/jjspe/76/10/76_10_1130/_pdf の「2.3 誤差の分布と条件」
jaws3209

2021/11/27 06:55

参考文献ありがとうございます。 非常に丁寧に、かつ端的に説明頂けて助かりました。 ありがとうございます。
guest

回答1

0

ベストアンサー

回帰問題にクロスエントロピー損失関数を用いた場合

合計したら1.0になる数値のペアを回帰で予測したい、とします
実際に予測したい数値が一つだけの場合でも、1.0からその数値を引いた数値を予め計算しておいて教師データの目的変数に追加したらいいだけですので、簡単ですよね

下記のコードは、「t」が正解、「y」が予測値で、ピッタリ正解を予測できた場合です
サンプル数は三つ

python

1import numpy as np 2t = np.array([[0.5, 0.5], [0.1, 0.9], [0.7, 0.3]]) 3y = np.array([[0.5, 0.5], [0.1, 0.9], [0.7, 0.3]]) 4# 交差エントロピー 5print(np.mean(np.sum(-t * np.log(y), axis=1)))

上記をそのまま実行したり、「y」をちょっと「t」と変えて実行したりすれば分かりますが、ピッタリ正解を予測できた場合は、交差エントロピーは0.0にはなりませんが最小値になります

ピシャリと当てた場合でも、

計算上ロスが発生するので、
正しく学習されない

交差エントロピーが0.0にならなくても、最小値になるから大丈夫だと思います

投稿2021/11/18 06:32

jbpb0

総合スコア7653

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問