日記(2022年8月30日)
Tue Aug 30 22:54:29 JST 2022 (modified: Tue Aug 30 23:36:00 JST 2022)
views: 4853, keywords:日記, ThinkPad, 取材, ご報告 この記事は最終更新日が2年以上前のものです。
子供と一緒に9時過ぎに寝たら10時前に起きてしまったので、昨日から悩んでる「目的関数」と「評価関数」について一筆。
目的関数 v.s. 評価関数
今書いている本で数理最適化の話をちょっとだけ書くんですが、 原稿を読み返しているときに「目的関数」のことを「評価関数」と書いているのを見つけ、 何か違和感を覚えて間違いに気づいて顔が真っ青になるということが昨日ありました。 そして、まだ混乱しているときにこういうツイートをやらかしました。(変分法と最適制御を並べるのはおかしいです。)
最適化問題の「目的関数」を自分は「評価関数」と言っていて、間違ってるのかなと思っていろいろ調べたら、変分法とか最適制御だと、「評価関数」になるっぽい。
— 上田隆一 (@ryuichiueda) August 29, 2022
そして、ニューラルネットワーク界隈では「目的関数」と「評価関数」を使い分けていて、ますます分からん。
んで、なんで自分が間違えて覚えていたかというのをいろいろ調べたところ、 最適制御だと最適化対象の汎関数(Jと表記されるやつ)のことを「評価関数」というので、 そっちに引きずられていた模様です。
私の混乱ツイートが目に入ってしまった梅谷先生から、 目的関数と評価関数のニュアンスの違いについて教えていただいたので、 紛失しないように貼り付けておきます。ありがとうございます。
数理最適化では,最適化問題の目的関数を評価関数とは呼びませんが,「評価関数」を使わないわけではなくアルゴリズムやシステムの挙動の決定に用いる関数を評価関数と呼ぶことがあります.例えば,目的関数+ペナルティ関数を,最適化問題の目的関数と区別して評価関数と呼ぶことはあります. https://t.co/2i6ln6ftqM
— Umepon (@shunji_umetani) August 29, 2022
しかし、自分みたいになんちゃってプログラミングとなんちゃって数学と、理系と思えぬアバウト作文の合わせ技で食ってる人間が、ガチの人からコメントもらうと背筋が伸びてつります・・・。
あとからもうちょっと調べて頭を整理したら、
- 目的関数: 何を最大化/最小化したらいいかを教える関数
- 評価関数: 目的関数の値を比較するための関数
という解釈もできるなあと思いました。 「機械学習で学習中に使うのが目的関数、あとから学習済みの学習器を評価するためのものが評価関数」 とする流派は、この考えをとってるみたいです。
・・・しかし、やっぱり最適制御の文献(こちらとか)を読むと、評価関数Jが、私がよく研究でやるように、「あとどれだけの時間/燃料/道のりでゴールに到達するか」を意味していることも普通にあるので、互いに違いがあるみたいです。
で、執筆時点では、数理最適化に触れるところではもちろん「目的関数」という言葉を使いますが、あとで最適制御の話もするのでそこでは「評価関数」なんですよね・・・。確率・統計の本なのに、なんでそこまで触れる必要あるんだろかというのも謎です。
とりあえず頭冷やします寝る。