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

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

新規登録して質問してみよう
ただいま回答率
85.47%
PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

機械学習

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

Q&A

解決済

1回答

7349閲覧

損失関数と評価関数の違い

osuzu

総合スコア16

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

機械学習

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

1グッド

1クリップ

投稿2022/02/16 12:40

聞きたいこと

深層学習等で使われる損失関数と評価関数についていくつか分からないことがあります。

1)損失関数と評価関数の違い
調べたところそれぞれ以下のような役割を持つと理解したのですが、両者は使う段階が違うだけで、機能的には同じなのではないでしょうか。
・損失関数:学習段階に使う、モデルを最適化する関数
・評価関数:評価段階に使う、学習モデルの性能を評価する関数

2)損失関数と評価関数が異なることがある意味
損失関数と評価関数が異なる例を見ることがあるのですが、学習時と検証時で異なる関数を使う意味はあるのでしょうか(例えば、損失関数として交差エントロピー誤差を使っているのに、評価関数としてはIoUを使うなど)。関数にはそれぞれ目的・用途があると思うのですが、わざわざ用途の違う別の関数を使う意味が分かりません。

3)評価段階とはどの段階か
深層学習では、学習データを使って損失関数から求めたlossを基にモデルを最適化し、検証段階(validation)で学習に使っていないデータのlossを求め、モデル性能を評価すると思うのですが、このvalidation段階が、評価段階で、ここでlossを求めるのに使った関数を評価関数というのでしょうか。

退会済みユーザー👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

1)損失関数と評価関数の違い

・損失関数:学習段階に使う、モデルを最適化する関数
・評価関数:評価段階に使う、学習モデルの性能を評価する関数

基本的にこの通りでいいと思います。細かい違いは以下の説明のカッコの中身と思います。

損失関数:モデルを最適化する(ときの損失=理想的な答えと推論の誤差…少ない方がイイを計算する)関数
評価関数:評価段階に使う、学習モデルの性能を評価する(点数みたいな高い方がいいものなのか、誤差のような少ない方がいいものなのか、とにかく指標として使えれば何でもいい)関数

損失関数だと「理想とのズレ」だけを意味する関数になって、評価関数だと「理想とのズレ」でも「満点があるようなスコア」でもなんでも評価できれば構わないみたいな感じになると思っています。点数で有名なのはROC曲線の下側にできる面積のAUCではないでしょうか。タスクによると思いますが、正解率でも指標にはなるのでOKお思います。

2)損失関数と評価関数が異なることがある意味

わざわざ用途の違う別の関数を使う意味が分かりません。

架空の医療用AIを考えた場合、学習時は誤差を減らしたいので損失関数を使えばよいですが、いざ患者さんに使う時を想定すると「誤差は○○です」みたいな答えで(エンジニア的には)良いですが、臨床医的には「ん?で安心して使えるの?」みたいな回答が返ってきそうな気がします――こんな話はしたことがないので想像ですよ!

その代わりに、「医療用途である以上、過検出は検体検査で詳細に評価できるからいいとして、未検出(検出漏れ)は可能な限り避けたい。だから再現率が高い(過検出は計算式に加えず無視する)方がイイ。」と切り返されそうです。こういう時に、損失関数(誤差を減らしたい)と評価関数(検出漏れは絶対避けたい)という二つの関数(価値観?)が混じるのだと思います。

3)評価段階とはどの段階か
Trainだと、投稿にある通り「学習データを使って損失関数から求めたlossを基にモデルを最適化」になります。
Validationでも同じく誤差関数が評価関数のこともあるでしょうし、、上記のように医療用であれば異なる関数が評価関数になることもあると思います。

参考:ValidationデータはTrain時に何回も引き合いに出されるため(学習には使われませんが)Validationの都合がよくなるように学習することも可能(Validationのスコアが改善されたときのweightを維持するような学習も可能)です。最後の最後にだけ使うデータとしてTestデータを用意することもあります。

投稿2022/02/16 22:00

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

osuzu

2022/02/17 02:23

ご丁寧に説明いただきありがとうございます。 1)で両者の違いがよく理解できました。また説明する時に分かりやすい指標を使うという視点がありませんでした。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問