※本記事は、スタンフォード大学のコース「AA228V:安全性重要システムの検証」の講義内容を基に作成されています。コースの詳細は公式ウェブサイト https://aa228v.stanford.edu/ でご覧いただけます。教材として使用されているテキストブックは https://algorithmsbook.com/validation/ で入手可能です。本記事では講義の内容を要約しておりますが、正確な情報や完全な文脈については、オリジナルの講義動画や教材をご参照いただくことをお勧めいたします。
登壇者:
- Sydney Katz氏:スタンフォード大学ポスドクトラルスカラー。詳細プロフィールは https://sydneymkatz.com/ でご覧いただけます。
- Mykel Kochenderfer氏:スタンフォード大学航空宇宙工学准教授(コンピュータサイエンス分野の兼任教授)。詳細プロフィールは https://mykel.kochenderfer.com/ でご覧いただけます。
コースへの登録や詳細については https://online.stanford.edu/courses/ をご参照ください。スタンフォードオンラインを通じて、スタンフォード大学が提供する多様な教育プログラムにアクセスすることができます。
1. 導入と復習
1.1 検証アルゴリズムの入力:システムモデルとプロパティ仕様
Sydney Katz:今日は前回の続きで、システムモデリングについて話を終えた後、プロパティ仕様に移っていきます。検証アルゴリズムには2つの入力があることを思い出してください。1つはシステムのモデルで、もう1つは満たすべきプロパティの仕様です。前回はシステムのモデリングについて話しましたが、完全に終わらなかったので、今日はそれを完成させてから、2つ目の入力である、システムが満たすべきプロパティに移ります。
まず少し全体を俯瞰したいと思います。モデルを構築する際に考えることを具体的な例で示したいと思います。数学に迷いがちになることがあるので、具体例を思い浮かべるとよいでしょう。私たちは航空宇宙工学部にいるので、航空機の例を使いましょう。航空宇宙工学の修士や博士課程では航空機の描き方は教えてくれませんが、これが私にできる最善のものです。
この航空機が飛行し、時々高度を変えていると想定します。地面はここにあります。この航空機をモデル化するには、その意思決定、つまりエージェント、センサー、そして環境をモデル化する必要があります。センサーだけを考え、状態の一部だけ、具体的には地上からの高さ、つまり高度を測定するセンサーを考えてみましょう。
飛行が進むと、高さの異なる測定値が得られます。これらは実際の高さのノイズの多いバージョンです。これらが私たちの観測値、つまり得られるデータです。また、この実世界でのデータ収集では、非常に高価で非常に精度の高い高度センサーも同時に実行していたとしましょう。これにより基本的に真の値が得られます。そこで、HとĤのペアを得ることができます。Ĥは測定されたバージョン、Hは真の値です。このように、H₁、H₂など、M個のデータポイントまで持つことができます。
この場合、状態はHで、観測値はĤです。Hを横軸に、Ĥを縦軸にプロットすると、このようになるでしょう。モデル化しようとしているのは観測モデルで、これは状態sが与えられた特定の観測値を得る確率です。この場合、観測値はĤなので、高さHで観測されるĤの確率です。
前回話したように、最初にすべきことはモデルクラスを選択することです。ここで見るデータを表現するのに良いモデルクラスは何でしょうか?私にはĤがHの線形関数に若干のノイズが加わったものに見えます。これは条件付きガウシアンモデルが良い選択であることを示唆しています。ここではHを使用してパラメータθでモデル化された関数にノイズを加えたものとしてĤをモデル化します。線形に見えるので、さらに一歩進めて線形関数だと言えるでしょう。θ₁×H(線の傾き)+θ₂とノイズです。
これでモデルクラスができました。前回学んだように、次のステップはパラメータを選択するための最適化を実行することです。最尤推定を使用すると、パラメータの値が得られます。私にはこれは傾きが1のように見えるので、おそらくθ₁=1、θ₂=0(Yの切片はここで約0)、そしてσ²は約0.5のような値になるでしょう。
これが、データを取得してパラメータセットをデータに適合させ、モデルクラスを選択する際に考えるべきことです。もう一つ例を挙げると、もしここでデータを集めてこのような形だった場合、これはもう線形ではありません。まず、このような高度センサーを使っているなら、おそらく捨てた方がいいと考えるべきです。これは最良の計画ではないでしょう。しかし、このセンサーを使用してモデル化したい場合、もはや線形モデルを選択したくないでしょう。前回話したように、より表現力のあるモデルクラスが必要になります。
これが、私たちが話してきたことすべての基盤となることを願っています。このような例を通じて、システムモデルを検証アルゴリズムへの重要な入力として理解し、プロパティ仕様について学ぶ準備ができました。
1.2 航空機の高度測定の例
Sydney Katz:航空機の高度測定の例を少し掘り下げてみましょう。数学的な概念を具体的に理解するのに役立つと思います。飛行中の航空機を考えています。この航空機は飛行しながら時々高度を変えており、地面はこのあたりにあります。
このシステムをモデル化するには、航空機の意思決定、エージェント、センサー、そして環境をモデル化する必要があります。今回はセンサーに焦点を当て、特に状態の一つの側面、つまり地上からの高さあるいは高度を測定するセンサーについて考えます。
飛行中、このセンサーは高度の測定値を提供します。実際の高度にノイズが加わったものがこれらの観測値です。データと言うとき、これらの観測値のことを指しています。さて、この実験のために、非常に高価で超精度の高い高度センサーも同時に使用していたと想定しましょう。これにより実質的に「真の値」が得られます。
そうすると、HとĤのペアが得られます。Ĥは測定値、Hは真の値です。H₁、H₂など、M個のデータポイントまでこのようなペアを集めることができます。この場合、状態はHで観測値はĤです。
これらのデータをプロットするとき、X軸にH(実際の高度)を、Y軸にĤ(測定された高度)をプロットすると、おそらくこのような散布図が得られるでしょう。ここでモデル化しようとしているのは観測モデルです。これは「状態sが与えられた特定の観測値を得る確率」と定義されます。この場合の観測値はĤなので、「高度Hにいるとき観測値Ĥを得る確率」を表します。
前回説明したように、最初のステップはモデルクラスを選択することです。ここで見られるデータを表現するのに適したモデルクラスは何でしょうか?私には、Ĥは若干のノイズが加わったHの線形関数のように見えます。これは条件付きガウシアンモデルが適していることを示唆します。
Ĥは、パラメータθで表されるHの関数にノイズが加わったものとしてモデル化します。さらに線形に見えるので、これを線形関数として扱います:θ₁×H(線の傾き)+θ₂(切片)に、σ²の分散を持つノイズが加わったものです。
これでモデルクラスが決まりました。前回学んだように、次のステップはパラメータ(θ₁、θ₂、σ²)の最適値を見つけるための最適化を行うことです。最尤法を使用すると、このデータセットの場合、おそらくθ₁は約1(傾きが1に見える)、θ₂は約0(Y切片が0付近)、σ²は約0.5のような値が得られるでしょう。
これが、データを収集してモデルパラメータを適合させるプロセスです。しかし、もし収集したデータがこのような非線形パターンを示す場合はどうでしょうか?このような高度センサーなら、おそらく捨てた方が良いでしょうが、それでもモデル化したい場合は、線形モデルはもはや適切ではありません。前回説明したように、より表現力のあるモデルクラスが必要になります。
このような具体例を通じて、システムモデリングの概念をより深く理解できることを願っています。特に、データからパラメータを推定し、適切なモデルクラスを選択するプロセスは、安全性重要システムの検証において基本的かつ重要なステップなのです。
2. ベイジアンパラメータ学習
2.1 事後分布とベイズの定理
Sydney Katz:前回の講義の続きから始めましょう。私は非常に優柔不断な性格なので、ベイジアンパラメータ学習が好きです。最尤パラメータ学習では一つのパラメータセットだけを選ぶ必要がありますが、ベイジアン学習では可能なすべてのパラメータに対する分布を維持できるからです。
このアプローチでは、P(θ|D)、つまりデータDが与えられたときのパラメータθの事後分布をモデル化したいと考えます。しかし、これを直接計算することは難しいです。幸いなことに、P(D|θ)を計算する方法は知っています。実際、これは最尤パラメータ学習で必要だったものです。
P(D|θ)を計算できるならば、ベイズの定理を使う必要があります。条件付き確率の定義から導き出されたベイズの定理は次のようになります(前回指摘していただいたタイプミスは修正されています):
P(A|B) = P(B|A)P(A) / P(B)
これをP(θ|D)に適用すると、次の表現が得られます:
P(θ|D) = P(D|θ)P(θ) / P(D)
この表現をさらに検討すると、P(D|θ)は尤度モデルと呼ばれるもので、最尤パラメータ学習で最適化していたものとまさに同じです。しかし、ここにはP(θ)という追加の項があります。これは事前分布と呼ばれ、最尤パラメータ学習では持っていなかったものです。
事前分布は、データを見る前のパラメータθに対する私たちの信念を指定します。例を挙げると、誰かが私にコインを渡して「このコインが表が出る確率は?」と聞かれた場合、θ=0.5(つまり50%の確率で表が出る)に高い確率を割り当てる強い事前信念を持つでしょう。
その後、データを観察し、事前信念を更新して、パラメータθに関する事後分布を得ます。しかし、これには問題があります。離散的な場合、分母の和の項数はθの次元に対して指数関数的に増加します。連続的な場合、この積分を解析的に計算することは非常に困難です。
多くの場合、これらの量に対する解析的な関数を実際に得ることはできません。しかし、面白いことに、単一のθの値を与えられた場合、この分子は計算可能です。必要なのはP(D|θ)を計算し(最尤推定でやったように)、そしてθを事前分布に代入して値を出すことだけです。
つまり、この分子は計算可能で、確率的プログラミングというものを通じて、事後分布からサンプルを引き出すことができるのです。θに関する事後分布のような分布からサンプルを得ることができます。
このような方法で、単一のパラメータ値を選ぶ代わりに、パラメータの完全な分布を得ることができます。これにより、モデルの不確実性をより良く理解し、より堅牢な推論が可能になります。次に、この確率的プログラミングがどのように機能するかを見ていきましょう。
2.2 確率的プログラミング
Sydney Katz:確率的プログラミングがどのように機能するかについてあまり深く掘り下げませんが、朗報があります。この講座の後半で実際にどのように機能するかについて詳しく説明します。マルコフ連鎖モンテカルロという方法を使用しており、失敗分布からのサンプリングについて話すときにさらに詳しく説明します。今のところは、確率的プログラミングが分子の評価結果を取り、事後分布からサンプルを引き出せるということを信じてください。
ここの構文にあまり拘泥しないでほしいのですが、基本的には次のような流れです。ベイジアンパラメータ推定器があり、そこに尤度モデルを入力します。つまり、この分子の項を計算する方法を伝えます。また事前分布も入力します。そして、サンプラーを指定します。
Juliaには「Turing.jl」という非常に優れたパッケージがあり、この確率的プログラミングを実行してくれます。様々な手法が実装されており、素晴らしいパッケージですので、興味があれば必ずチェックしてみてください。彼らは様々なタイプのサンプラーを持っており、それぞれ長所と短所があります。その中から一つを選び、事後分布からのサンプル数を指定します。
そして、このfit関数を呼び出すだけです。最初にデータを抽出し、ここから確率的プログラミングの部分が始まります。面白いことに、この関数内で実際にサンプルを引き出すわけではありません。ただ「θはこの事前分布からサンプリングされる」と宣言し、各データポイントについて「データポイントのY値は尤度モデルを通じて生成された」と言明するだけです。これだけでTuringに事後分布からサンプルを得るための指示が伝わります。
内部の仕組みを知らなければ、これは少し魔法のように思えるかもしれません。そしておそらくそのように感じるべきです。しかし、ここで本当に理解してほしいのは、多くの場合この分子は計算可能であり、そうであれば事後分布からサンプルを引き出すことができるということです。
例を示すことで、何が起こっているのかを明確にしたいと思います。以前学んだモデルのパラメータを学習しようとしていると想像してください。θ₁、θ₂、θ₃というパラメータがあります。例として、最初に示した航空機の高度センサーモデルを思い浮かべることができます。
まず、これらのパラメータに対する事前分布を指定します。パラメータがどのような値を取るか事前に良い考えがないため、事前分布は0を中心とした大きな多変量正規分布にします。これは多くの異なるパラメータ値に対して同等の確率を与えるという意味です。
次に、サンプラーを定義する必要があります。確率的プログラミングでは「No U-Turn Sampler」あるいは「NUTS」と呼ばれる非常に人気のあるサンプラーがあります。そして、引き出したいサンプル数を指定します。例えば1000個のデータサンプルを引き出すとします。
このサンプリングを実行すると、結果が得られます。軸ラベルが欠けていることをお詫びします。これらはθ₁のサンプルです。最尤推定では、θ₁は約0.999、θ₂は約0、θ₃は約0.5と推定しました。ここでのサンプルによる期待値は0.98ですので、かなり近いですが、今や単一の値ではなく、θの可能な値の完全な分布を持っています。
θ₁についても同様に、θ₂も0を中心にしており、期待通りの値ですが、可能な値の完全な分布を持っています。分散についても同様です。ただし、ここでは20個のランダムにサンプリングされたポイント(ここでピンク色のポイント)だけを与えています。もっと多くのポイントを与えることもできます。
例えば、100個のデータポイントを与えるとどうなるでしょうか。パラメータを推定するためのデータポイント数を増やすと、事後分布はどうなると思いますか?分布は狭くなると思いますか?その通りです。データが多いほど、正しいパラメータを得ていることに自信を持てるはずです。理想的には、それらの分布は縮小するはずです。試してみましょう。
実行中です...まだ縮小していませんが、もう少し待ってください...そうです、分布が前より少し小さくなっています。より多くのデータポイントがあるため、パラメータの推定により自信を持てるようになりました。期待値は依然として1ですが、より多くのデータポイントがあるため、分布がかなり小さくなっています。
試しに、200個のデータポイントでもう一度やってみましょう。この点をさらに明確にするためです。
2.3 パラメータの事後分布のサンプリング
Sydney Katz:確率的プログラミングを使用して実際にどのようにパラメータの事後分布をサンプリングするか、実例を見ていきましょう。我々が前回学んだモデルのパラメータθ₁、θ₂、θ₃を推定しようとしていると想像してください。具体例として先ほど紹介した航空機の高度センサーモデルを思い浮かべるとよいでしょう。
まず、これらのパラメータに対する事前分布を指定する必要があります。パラメータの値について事前に明確な知識がないため、0を中心とした大きな分散を持つ多変量正規分布を事前分布として使用します。これは、様々なパラメータ値に対してほぼ同等の確率を与えることを意味します。
次に、サンプラーを定義します。確率的プログラミングでは、No U-Turn Sampler(NUTS)が非常に人気のあるサンプラーです。そして、引き出したいサンプル数を指定します—例えば1000個のサンプルとします。
サンプリングを実行すると、θ₁、θ₂、θ₃の分布が得られます。申し訳ありませんが、軸ラベルが表示されていません。これらはθ₁のサンプルを示しています。最尤推定では、θ₁は約0.999、θ₂は約0、θ₃は約0.5と推定しました。ここでのサンプルを使った期待値は0.98ですので、かなり近い値です。しかし、単一の値ではなく、θ₁の可能な値の完全な分布を持つことができました。
同様に、θ₂も0を中心にしており、予想通りですが、ここでも可能な値の完全な分布を得ています。θ₃(分散パラメータ)についても同様です。
ここで、私は実際には20個のランダムにサンプリングされたポイント(ピンク色の点)だけを使用しました。データポイントをもっと増やすとどうなるでしょうか。例えば、100個のデータポイントを使用した場合、パラメータの事後分布はどうなると思いますか?
パラメータを推定するためのデータポイント数を増やすと、より自信を持って正しいパラメータを得ていると言えるはずです。つまり、それらの分布は縮小するはずです。試してみましょう。
[サンプリング実行中...]
まだ分布は縮小していませんが、もう少し待ちましょう...そうです!分布が以前よりも小さくなりました。これで期待値は依然として1ですが、より多くのデータポイントがあるため分布が狭くなり、パラメータ推定に対する確信度が高まっています。
さらに理解を深めるために、200個のデータポイントでもう一度試してみましょう。実行している間に質問があればどうぞ。
質問者:尤度モデルについて少し混乱しています。先ほどの航空機の例は、実生活でどのように尤度モデルを得るかの例になりますか?それについてどう考えればよいでしょうか?
Sydney Katz:はい、その通りです。その例では、尤度モデルは私たちが持っていた正規分布でした。それはH(実際の高さ)に関数を適用し、ノイズを加えることでĤ(測定された高さ)が生成されると言っていました。
このアルゴリズムのこの部分を見ると、Yᵢが私たちのĤに、Xᵢが私たちのHに相当します。尤度は私たちが実装した関数で、この場合はHを取り、線形変換を適用し、それにガウス分布などのノイズを加えて、測定値またはĤを生成します。
質問者:でも、それは非常に信頼できるセンサーがあることに依存していますよね。実生活でもそうなのでしょうか?
Sydney Katz:素晴らしい質問です。そうですね、真の値であるHと測定値であるĤの両方を知る必要があるということですね。どうやってこれを行うのか。おっしゃる通り、すでに信頼しているセンサーが必要です。これを行う方法はいくつかあります。
例えば、GPSの場合、支払う金額や使用するGPSの高価さによって、時には数センチメートルの精度が得られることがあります。しかし、それはかなり高価であり、設計している航空機すべてにそれを搭載したくないかもしれません。そこで、その非常に高価なセンサーを一度だけ使用してテストを実行し、より安価なセンサーの性能を確認します。そのデータを使って、より安価なセンサーのモデルを構築できます。
確かに、これらのモデルを作成する上での重要な課題を特定されました。他に質問はありますか?
質問者:分布を無視しているように見えますが、これは方程式の左辺を作成するためのものでしょうか?
Sydney Katz:この分布からサンプルを引き出していることを説明しています。データが与えられたときのθの分布からサンプルを引き出していますが、その密度を知ることはできません。この分母を実際に計算できれば、この正確な関数を計算できますが、できることはサンプルを引き出すことだけです。その仕組みについてまだ詳しく説明していないので、それが頭の中で曖昧なままであれば、それは大丈夫です。後でこのクラスでもっと詳しく説明します。
質問者:この関数にYを渡したのに、Yiがこの分布から来ると主張しているのは、どういう意味でしょうか?
Sydney Katz:その通りです。これが確率的プログラミングの美しさです。基本的に、すべてがどの分布から来ているかを宣言するだけで、それらの仮定に基づいて事後分布からサンプルを引き出します。このθはこの分布に従って分布していると言い、それがサンプリングする分布です。Yとxをたくさん与え、Yはこの分布から来たという仮定をしています。
質問者:変数に名前がない場合は「仮定」のようなもので、変数に名前がある場合は実際にその決定を行うための情報となりますか?
Sydney Katz:そうです、その通りです。この場合、θは渡していませんが、複数のYは渡しています。
質問者:サンプリングは実際の密度の近似ということですね?
Sydney Katz:その通りです。サンプリングは実際の密度の近似です。
これで、確率的プログラミングと事後分布のサンプリングについての説明は終わりです。次に、共役事前分布について説明し、具体的な例としてフリスビー実験を紹介します。
3. 共役事前分布
3.1 フリスビー実験:同方向に着地する確率
Sydney Katz:時には事後分布を解析的に求めることが可能な場合もあります。ここでフリスビーを使った実験を取り上げてみましょう。なぜフリスビーかというと、私たちの研究室では毎週水曜日の午後4時にRoble Fieldでフリスビーをやっています。興味がある方は誰でも歓迎します、どんなスキルレベルでも構いません。
通常、ゲーム開始時に誰が攻撃側になるか、フィールドのどちら側から始めるかを決めるために、コインの代わりにフリスビーを投げます。典型的には二人が立ってフリスビーを投げ、誰かが「同じ」か「違う」と呼び、フリスビーが同じ方向に着地するか異なる方向に着地するかを確認します。
私には、フリスビーは同じ方向に着地する確率の方が高いという仮説があります。今日はそれを検証してみましょう。パラメータθを学習しようとしています。θは両方のフリスビーが同じ方向を向いて着地する確率です。したがって、1-θはフリスビーが異なる方向に着地する確率です。
データを収集する必要があります。例えば、10回投げて以下のような結果が得られたとしましょう:同じ、違う、同じ、同じ、違う、違う、違う...という具合です。これを、nを同じ方向に着地した回数、mを合計でフリスビーを投げた回数として要約します。
P(D|θ)、つまりデータが与えられたときのパラメータθの確率を計算したい場合、それはθⁿとなります。θは同じ方向に着地する確率なので、それがn回起こる確率はθⁿです。そして異なる方向に着地した回数はm-nで、その確率は(1-θ)^(m-n)です。これは二項分布と呼ばれます。
これが尤度モデルP(D|θ)です。また、P(θ)も選ぶ必要があります。もし事前分布をこの形式、つまりαとβという二つのパラメータを持つベータ分布として選ぶと、面白いことに事後分布も同じくベータ分布になります。ただし、パラメータはカウントm(総試行回数)とn(成功回数)を使って更新されます。これについては後ほどより詳しく説明します。
要約すると、パラメータθ(両方のフリスビーが同じ方向に着地する確率)を推定しようとしています。nは同じ方向に着地した回数です。データセットを収集すると、ある事前分布から始まります。もしこの形式の事前分布(ベータ分布)を持っていれば、事後分布を解析的に計算でき、その形式は同じくベータ分布になります。
質問者:二項分布を導入したとき、私が知っている確率質量関数にはM choose nのような組み合わせの項があるはずですが、それは事後分布がベータになるために必要なのでしょうか?
Sydney Katz:この場合、これは特定のシーケンスを得る確率です。単にn個が同じでm回の投げのうちいくつが同じかという確率が欲しいなら、確かにその組み合わせの項が必要です。オンラインの方々のために繰り返しますが、これは特定のシーケンスを得る確率です。単にn個が同じである確率が欲しいなら、前に組み合わせの項が必要です。
実際の計算は省略しましたので、「ベータがどこから来たのか」と思われるかもしれません。心配しないでください、計算が正しいことを信じるか、「決定のためのアルゴリズム」の第4章で導出を確認することができます。
この例では、尤度モデルは二項分布で、事前分布はベータ分布です。ベータ分布を事前分布として使用すると、事後分布も同じくベータ分布になります。これは実際によく起こることで、この関係には「共役事前分布」という名前があります。ベータ分布は二項分布の共役事前分布であり、事後分布が事前分布と同じクラスに属することを意味します。
これで、フリスビーが同じ方向に着地する確率θを推定するための基本的な枠組みが整いました。次に、データを収集して事前分布を更新し、事後分布を得るプロセスを実際に見ていきましょう。
3.2 事前分布と事後分布の更新
Sydney Katz:ベータ分布は二項分布の共役事前分布であるということがわかりました。これは、尤度モデルが二項分布で、事前分布がベータ分布であるとき、事後分布も同じくベータ分布になるということです。これはかなり一般的で、このような関係性には「共役事前分布」という名前があります。共役事前分布とは、事後分布が事前分布と同じクラスに属することを意味します。
直感的な理解を深めるために、実際にフリスビーの実験を試してみましょう。私たちは両方のフリスビーが同じ方向に着地する確率θを推定しようとしています。まず、事前分布としてベータ分布Beta(1,1)から始めます。これは最も一様な事前分布で、0から1までのすべてのθの値に対して等しい確率を割り当てるものです。横軸のラベルは表示されていませんが、θを表しています。
この一様分布は、私たちが完全に無知であることを示しています。つまり、θの値について何の事前知識も持っていないことを意味します。これから実験を行い、データを収集することで、この事前分布を更新していきます。
フリスビーを投げる実験をして、最初の結果が「同じ」だったとします。この観測結果を使って事前分布を更新します。「同じ」が観測された回数をアルファの項に、「違う」が観測された回数をベータの項に加えます。これにより新しい事後分布が得られます。
この新しい事後分布を見ると、いくつか興味深いことがわかります。θ=0の確率がゼロになっています。これは理にかなっています。なぜなら、私たちはすでに「同じ」という結果を観測したので、θが0である可能性はないからです。
次に、別のペアが「違う」という結果を得たとします。この新しいデータを使って再び分布を更新します。今度は、θ=1の確率がゼロになります。これも理にかなっています。なぜなら、「違う」という結果も観測したので、θが1である可能性もなくなったからです。
現時点では、おそらくθは0.5付近だろうと考えていますが、まだかなり広い分布を持っています。これはサンプル数が少ないためです。もっとデータを集めれば、分布はより狭くなり、真の値に近づくでしょう。
このプロセスを通じて、新しいデータを観測するたびに事前分布を更新し、より洗練された事後分布を得ることができます。この更新プロセスは、ベイジアン学習の本質です。データが増えるにつれて、私たちの信念(分布)はより鋭くなり、より確信を持ってパラメータの値を推定できるようになります。
次に、実際にクラス全体で実験を行い、このプロセスをリアルタイムで観察してみましょう。みなさんに実際にフリスビーを投げてもらい、その結果をもとに事前分布を更新していき、最終的な事後分布を得ていきたいと思います。
3.3 実際のフリスビーを使った教室での実験
Sydney Katz:それでは、フリスビーを使った実験を実際に行ってみましょう。6人のボランティアが必要です。マイケル、フリスビーの投げ方をデモンストレーションしてもらえますか?
Michael:[フリスビーを投げる]
Sydney Katz:はい、そのフリスビーは、もう一つも同じように着地すれば「同じ」と言います。素晴らしい、「同じ」でした。ここでは、Beta(1,1)という事前分布から始めています。これは最も一様な事前分布で、0から1までのすべてのθの値に対して等しい確率を持ちます。横軸のラベルは表示されていませんが、θを表しています。
つまり、完全に無知な状態から始め、同じ方向に着地する確率について何も仮定していません。今、一回「同じ」という結果を観測したので、分布を更新します。「同じ」の回数をアルファの項に追加します。
新しい事後分布を見ると、θ=0の確率がゼロになっていることがわかります。これは理にかなっています。なぜなら、すでに「同じ」という結果を観測したので、同じ方向に着地する確率がゼロであることはあり得ないからです。
さて、次の2人の方、フリスビーを投げてみてください。
[2名がフリスビーを投げる]
Sydney Katz:「違う」でしたね。この結果を入力すると...ここでもエラーが出るようですが、問題ありません。ライブデモではよくあることです。
新しい分布を見ると、θ=1の確率もゼロになりました。これも理にかなっています。なぜなら「違う」という結果も観測したので、同じ方向に着地する確率が1であることもあり得ないからです。現時点では、おそらくθは0.5付近だろうと考えていますが、まだかなり広い分布を持っています。
皆さん、パートナーと一緒に10回ずつフリスビーを投げて、結果を記録してください。そして「同じ」が何回あったか教えてください。
[クラス全体がフリスビーを投げる活動]
Sydney Katz:最初のペアの結果はどうでしたか?
参加者1:4回「同じ」で、6回「違う」でした。
Sydney Katz:次のペアは?
参加者2:2回「同じ」で、8回「違う」でした。
Sydney Katz:最後のペアの結果は?
参加者3:3回「同じ」で、7回「違う」でした。
Sydney Katz:合計すると、9回「同じ」で、21回「違う」でした。興味深いですね。これで私たちの事後分布は、θが約0.3付近、つまり30%の確率で同じ方向に着地するという結果になっています。私の「同じ方向に着地する確率が0.5より高い」という仮説はあまり支持されていないようです。
実際、この分布を使って、θが0.5より大きい確率を計算することもできます。この分布で0.5より上の確率質量を見ると、わずか1%しかありません。つまり、私の仮説はほぼ棄却されたと言えるでしょう。
私がなぜ「同じ」の方が確率が高いと考えたかについての仮説を少し説明します。もしフリスビーが片方に偏って着地する確率が完全に50-50ではなく、何らかの偏りがあるとすれば、両方が同じ方向に着地する確率の方が高くなるはずです。この点については自分で考えてみてください。
質問:事前分布を更新しましたか?
Sydney Katz:はい、今後はフリスビーゲームで「違う」と予想することにします。これでフリスビーをどう投げるかについての戦略がわかりました。
これで共役事前分布についての議論を終えます。ベイジアンパラメータ学習の強力な側面として、データが増えるほど分布が鋭くなり、パラメータの真の値についての確信度が高まることを示しました。また、このフリスビー実験を通じて、初期の仮説を検証し、データに基づいて更新することの重要性も理解できたと思います。
4. モデル選択と評価
4.1 最大事後確率推定
Sydney Katz:時には実際に選択をしなければならないことがあります。これは私のような優柔不断な人間にとってはパニックの種になりがちですが、心配しないでください。選択肢はいくつかあります。
一つのアプローチとして、この分布を使って、期待値をパラメータθとして使用することができます。しかし、分布がマルチモーダル(複数の山を持つ)場合、これは最善の選択ではないかもしれません。
例えば、このケースでは、期待値を取ると、非常に確率の低いθの値になってしまいます。おそらく最善の選択ではないでしょう。
もう一つの方法は、最も確率の高いθの値を選ぶことです。これは必ずしも一意ではありません。例えば、このケースでは、ここと、ここに最大値があります。これを「最大事後確率推定(Maximum A Posteriori estimate)」または「MAP」と呼びます。これは事後分布のargmax、つまり最大値を取るθ値です。これはモード(mode)とも呼ばれます。
ここで重要なのは、最尤パラメータ推定と最大事後確率推定の違いです。前者はP(D|θ)を最大化するθを見つけますが、後者はP(θ|D)を最大化します。これらは必ずしも同じではありません。
質問者:最尤推定と最大事後確率推定は同じパラメータを生みますか?
Sydney Katz:必ずしも同じではありません。微妙な違いがあります。P(D|θ)とP(θ|D)は異なる量であることに注意が必要です。例えば、フリスビーを投げる例では、最尤推定は単に「同じ」の回数を総投げ回数で割るだけですが、最大事後確率推定ではそれとは異なる結果が得られます。一般的には、これらは常に同じとは限りません。
これを「決定のためのアルゴリズム」の第4章で詳しく説明していますが、最大事後確率推定は、事前分布の情報を考慮している点で最尤推定と異なります。事前分布が強い場合、最終的な推定値に大きな影響を与える可能性があります。
MAP推定は、事後分布から単一のパラメータ値を選ぶ一つの方法です。特に事後分布が単峰性(一つの明確なピークを持つ)の場合に有用ですが、マルチモーダルな分布の場合は注意が必要です。
このように、ベイジアンパラメータ学習では単にパラメータの最も可能性の高い値を見つけるだけでなく、その確信度や不確実性についての情報も得ることができます。これが、安全性が重要なシステムのモデリングにおいて特に価値がある理由です。
4.2 一般化の問題と過学習
Sydney Katz:パラメータ学習について最後に一つ重要な点があります。一般化について注意する必要があります。皆さんの多くは過去にこれを見たことがあるかもしれませんが、データセットに対して非常に簡単に過学習してしまう可能性があります。
ここに例があります。白いモデルは白いデータポイントに完璧に適合していますが、もし同じ分布から更にデータをサンプリングしたとしても、それらに対してはおそらく適合が良くないでしょう。実際のデータの分布はおそらく、このモデルが示すものとは異なっているからです。
この問題に対処するための一つの方法は、モデルのトレーニングに使用していない別の検証セットを用意し、そのセットでモデルのパフォーマンスを評価することです。これは恐らく他の多くのクラスでカバーされているので、詳しくは話しませんが、基本的には「ホールドアウト法」と呼ばれる方法があります。これは単に検証セットを確保し、このプロパティをチェックするものです。
また、「交差検証」と呼ばれる方法もあります。これはデータの異なるサブセットを選択し、このプロセスを複数回繰り返す方法です。
質問者:k分割交差検証を行うと、基本的に全データセットに対して検証することになり、全データセットに過学習することになりませんか?
Sydney Katz:行っているのは、この部分だけでトレーニングし、この部分で評価する、そして完全にやり直して別の部分でトレーニングし、別の部分で評価するということです。検証誤差の推定値を得るために、これらをすべて平均します。データの同じ部分を見たことがある状態でトレーニングすることはありません。
この問題は安全性が重要なシステムのモデリングにおいて特に重要です。というのも、トレーニングデータに過度に適合したモデルは、実際の運用環境で予期しない動作をする可能性があるからです。例えば、航空機のセンサーモデルが特定のテスト条件下でのみ正確で、実際の飛行条件では大きく外れる可能性があれば、それは安全上の重大な問題となります。
過学習の問題に対処するために、モデルの複雑さとデータの量のバランスを取ることが重要です。より複雑なモデルはより多くのデータを必要とし、データが限られている場合は、より単純なモデルが一般化の観点からより良い選択かもしれません。
検証技術を使用することで、モデルがトレーニングデータにどれだけ適合しているかだけでなく、新しい未見のデータにどれだけ適合するかを評価できます。これにより、モデルが実際の運用環境でどのように機能するかについてより信頼性の高い予測が可能になります。
安全性が重要なシステムのコンテキストでは、この一般化能力は単なる性能の問題ではなく、安全性の問題でもあります。システムが予期しない状況や極端なケースでどのように反応するかを理解することは、システムの安全性を確保するために不可欠です。
4.3 モデル検証の重要性
Sydney Katz:モデルをトレーニングした後の最後のステップは、モデルの検証です。ここで経済学者をからかってみましょう。
次のような冗談を聞いたことがあるかもしれません。物理学者、化学者、経済学者が無人島に漂着し、食料の缶詰だけがあります。物理学者と化学者は缶を開ける複雑なメカニズムを考案しますが、経済学者は単に「缶切りがあると仮定しよう」と言います。
これは経済学者に対する冗談で、経済学者は多くの仮定を立てると言われています。多くの場合、これは世界の予測に使用できる非常に有用なモデルにつながりますが、注意が必要です。「缶切りがあると仮定しよう」と言うだけでは問題は解決しません。
私が言いたいのは、私たちの仮定は、現実に根ざしていなければ意味がないということです。私たちはこれらのモデルを作成し、それを使用して下流のすべての検証結果を得ようとしていますが、モデルが間違っている場合、下流の検証結果もあまり意味を持ちません。
したがって、もう一歩進んで、作成したモデルが実際にモデル化しようとしていたものと一致することを検証することが重要です。これを行うために、モデルの特徴とデータの特徴を比較して、どれだけマッチしているかを確認します。
例えば、データの確率密度とモデルの確率密度を比較することができます。ここでは、データのヒストグラムとモデルの確率密度を示しています。これを行う際には、ヒストグラムの下の面積が1に等しくなるように正規化し、有効な確率密度の公平な比較を確実に行えるようにする必要があります。
そうすれば、それらがどの程度適合しているかを視覚的に確認することができます。左側のものは適合が良いように見えますが、右側の紫色のモデルはそれほど適合していないようです。
累積密度についても同様のことができます。この場合、左から右へのプロットを「掃引」し、その分布の下にある確率質量を蓄積していくことを想像してください。それは次のようになります。悪い適合の場合、CDFプロットはうまく一致しませんが、良い適合の場合はほぼ完璧に一致しています。
また、分位数-分位数プロット(QQプロット)と呼ばれるものも使用できます。その仕組みは次のとおりです。まずα=0.1などの値を選びます。次にデータを見て、データのα分位数を求めます。つまり、10%のデータがその値より左側にある値を見つけます。その値を特定したら、モデルを調べ、モデルのα分位数を求めます。つまり、モデルの場合、確率質量の10%が左側にある値です。
これら2つの値を、モデルの値をx軸に、実際の値を縦軸にプロットに移動させます。これがQQプロットの1つの点を形成します。これをさまざまなα値に対して行うと、プロット上にさまざまな点が得られます。分布が互いに近い場合、分位数はおおよそ一致するはずなので、これはライン「y=x」に従うと予想されます。この悪い適合の場合、このラインから逸脱していることがわかります。
キャリブレーションプロットと呼ばれる非常に類似したタイプのプロットもあります。QQプロットとの違いは、Qをプロットする代わりに、αをプロットすることです。例えば、モデルの0.2分位数に行き、データのその値が何分位数であるかを調べます。例えば、それは0.008分位数かもしれません。そうすると、このポイントが得られます。これをx軸全体で行うと、次のような線が得られます。同じ理由で、分布がマッチする場合、分位数は一致するはずなので、これもラインy=xに従うはずです。
ここに、これらの異なる視覚的診断のすべての比較を示します。適合が良い場合、これらのラインに従い、適合があまり良くない場合はそうではありません。
質問者:QQプロットとキャリブレーションプロットのどちらを使用するメリットはありますか?それとも同様の情報を提供していますか?
Sydney Katz:素晴らしい質問です。QQプロットとキャリブレーションプロットを使用するメリットについての質問ですね。これらは非常に類似した情報を示していて、どちらも何か問題があれば示してくれます。データの形式によっては、キャリブレーションプロットの計算が容易な場合があります。また、使用するコミュニティやグループによっても異なります。例えば、機械学習では、これらのキャリブレーションプロットを見ることが非常に一般的です。
質問者:これは検証データのみで行いますか?
Sydney Katz:優れた質問です。検証データセットで行うべきかという質問ですね。どのデータでも行うことができますが、先ほど話したことを考えると、おそらくこれは検証セットまたはテストセット、つまりモデルのトレーニングに使用していない別のデータセットで行うべきです。過学習を避けるためです。
モデル検証の重要性を強調しておきたいと思います。適切に検証されていないモデルは、安全性が重要なシステムにおいて特に問題となります。モデルが実際のシステムの動作を正確に反映していない場合、私たちの検証アルゴリズムから得られるすべての結果は疑わしいものになります。モデルの検証は、信頼性の高い安全保証への最初のステップなのです。
5. モデル検証の方法
5.1 視覚的診断:PDF、CDF、QQプロット、較正プロット
Sydney Katz:モデルを検証する方法について詳しく見ていきましょう。モデルがデータとどれだけ一致しているかを確認するためには、モデルの特徴とデータの特徴を比較する必要があります。
まず最初に試せる方法は、データの確率密度とモデルの確率密度を比較することです。ここでは、データのヒストグラムとモデルの確率密度関数を示しています。この比較を行う際に重要なのは、ヒストグラムの面積が1に等しくなるように正規化することです。そうすることで、2つの有効な確率密度の公平な比較ができます。
正規化したら、視覚的にどれだけ適合しているかをチェックできます。左側の例では、モデルとデータがよく一致しています。ヒストグラムとモデルの密度関数がかなり重なっていることがわかります。一方、右側の例では、紫色のモデルがデータにうまく適合していないことがわかります。明らかな不一致があります。
別の視覚的診断方法として、累積分布関数(CDF)を比較することもできます。これは、左から右へプロットを「掃引」し、その分布の下にある確率質量を蓄積していくことを想像してください。結果はこのようになります。悪い適合の場合、CDFプロットは一致せず、良い適合の場合はほぼ完璧に一致しています。CDFを使うと、密度関数を直接比較するよりも微妙な違いが見やすくなることがあります。
次に、分位数-分位数プロット(QQプロット)というものがあります。このプロットの作り方は次の通りです。まずα=0.1などの値を選びます。データを見て、データのα分位数(10%のデータがこの値より小さい値)を求めます。次に、モデルを調べて、モデルのα分位数(モデルの確率質量の10%がこの値より小さい値)を求めます。
これら2つの値を、モデルの値をx軸に、実データの値を縦軸にプロットします。これがQQプロットの1点となります。さまざまなα値に対してこの処理を繰り返すと、プロット上に多くの点が得られます。分布が互いに近い場合、分位数は大体一致するはずなので、点は直線「y=x」に沿うはずです。不適合の場合、点がこの直線から外れます。
キャリブレーションプロットは、QQプロットに非常によく似ています。違いは、値の分位数ではなく、αの値自体をプロットすることです。例えば、モデルの0.2分位数の値を見つけ、その値がデータの何分位数に当たるかを調べます(例えば0.008分位数かもしれません)。これによりプロット上の1点が得られます。x軸全体でこの処理を繰り返すと、ある曲線が得られます。分布が一致する場合、これも直線「y=x」に従うはずです。
ここに、これらすべての視覚的診断を比較した図を示します。適合が良い例では、これらのプロットは予想通りの形になっていますが、適合が悪い例ではそうなっていません。
視覚的診断は、モデルとデータの間の不一致を特定する強力な方法です。さまざまな視点からモデルを評価することで、単一の視点では見逃す可能性のある問題を発見できます。例えば、PDFプロットはモデルの全体的な形状を示しますが、CDFプロットは分布の裾の部分の違いをより明確に示すことがあります。QQプロットとキャリブレーションプロットは、特に分布の特定の範囲における不一致を特定するのに役立ちます。
安全性が重要なシステムでは、特に分布の極端な部分(裾)における一致が重要になることが多いです。なぜなら、これらの領域は通常、最も危険な状況を表しているからです。これらの視覚的診断ツールを使用することで、モデルがそのような重要な領域で現実をどれだけ正確に表現しているかを評価できます。
次に、これらの視覚的比較を数値で要約する方法を見ていきましょう。
5.2 要約メトリクス:KLダイバージェンス、KS統計量
Sydney Katz:視覚的診断は非常に有用ですが、時には単なる数値でモデルの適合度を表現したいこともあります。そのような要約メトリクスをいくつか紹介します。
PDFプロット(確率密度関数プロット)に対応する要約メトリクスとしては、KLダイバージェンス(Kullback-Leibler Divergence)があります。おそらく以前に聞いたことがあるかもしれません。これは2つのPDFがどれだけ近いかを測る指標です。良い適合のモデルは低いKLダイバージェンスを持ち、適合が悪いモデルはより高いKLダイバージェンスを持ちます。
KLダイバージェンスについていくつか注意点をあげておきます。これはF-ダイバージェンスと呼ばれるより広いクラスの一部です。興味があれば別途詳しく読んでみてください。KLダイバージェンスの興味深い特性として、対称ではないということがあります。また、Pのサポート(確率が正となる値の範囲)がQのサポートのサブセットでない場合、定義されません。KLダイバージェンスを使用する際にはこれらの考慮事項を認識しておくべきですが、基本的にはKLダイバージェンスによって2つの密度がどれだけ異なるかを単一のメトリクスで理解できます。
CDFプロット(累積分布関数プロット)に対応する要約メトリクスとしては、KS統計量(Kolmogorov-Smirnov統計量)があります。この式を見ていただくと、比較している2つのCDFの間の最大ギャップまたは最大距離を求めているだけだとわかります。例えば、このような形になります。
キャリブレーションプロットの要約メトリクスとしては、機械学習でよく見かけるものがあります。例えば、最大キャリブレーション誤差(Maximum Calibration Error)は、キャリブレーションプロットと直線y=xの間の最大距離です。また、期待キャリブレーション誤差(Expected Calibration Error)は、これらの距離の平均です。
これらの要約メトリクスはそれぞれ異なる側面からモデルとデータの一致度を評価します。KLダイバージェンスは全体的な分布の形状の違いに敏感ですが、KS統計量は特に分布の最大の不一致に焦点を当てます。最大キャリブレーション誤差と期待キャリブレーション誤差は、モデルの予測確率とデータでの実際の出現頻度の間の不一致を測定します。
安全性が重要なシステムでは、これらのメトリクスを組み合わせて使用することが重要です。単一のメトリクスだけでは、モデルの問題点を見逃す可能性があります。例えば、KS統計量は最大の不一致だけを測定するため、他の部分で小さいが一貫した不一致がある場合は見逃される可能性があります。一方、期待キャリブレーション誤差は平均を取るため、局所的に大きな問題がある場合に過小評価する可能性があります。
これらの要約メトリクスは、モデル間の比較や、モデルの改善を追跡するのに特に役立ちます。モデルを調整するたびに視覚的診断を詳細に検討するのは時間がかかりますが、これらの数値メトリクスを使えば、モデルの変更が全体的な適合度を向上させているかどうかを迅速に評価できます。
ただし、これらのメトリクスは単一の次元または特徴に対するモデルの適合度しか評価していないことに注意が必要です。次に、複数の特徴を同時に比較する方法について見ていきましょう。
5.3 複数特徴の比較
Sydney Katz:では、複数の特徴を比較したい場合はどうすればよいでしょうか。ここに示している2つのプロットは、同じデータセットですが、2つの異なるモデルの等高線を示しています。これらを見て、どちらのモデルがデータに対してより適合が良いと思いますか?左側と右側のどちらでしょうか?
[クラスからの回答:右側です]
そうですね、右側のモデルの方がデータにより近いように見えます。しかし、一度に1つの特徴だけを比較すると、この違いは見えなくなります。例えば、このプロットを取り、X値だけを見て、それをX軸に沿って「周辺化」し、X値だけのヒストグラムを作るとします。同様に、モデルも周辺化します。すると、実はかなりよく一致しています。同じことをY値についても行うと、それもよく一致しています。
右側のプロットについても同様のことを行うと、やはりよく一致しています。つまり、これらの特徴を個別に、つまり「周辺分布」だけを見ると、このモデルがあまり良くないことに気づかないのです。その理由は、特徴間の相互作用を考慮していないからです。
これに対処するための方法がいくつかあります。1つの方法は、複数の特徴を組み合わせて単一の特徴を手動で設計し、特徴間の関係を捉えることです。この例では、この線を引き、各データポイントをその線に投影することを想像できます。こうすることで、1次元の単一特徴を作成しました。そしてこれを行い、ヒストグラムを作成し、これらのモデルを比較すると、青いモデルが紫のモデルほどうまく適合していないことがわかります。
もう1つの選択肢は、先ほど話した要約メトリクスの一部を複数の次元に拡張することです。例えば、KLダイバージェンスは複数の次元に適用できます。1次元では、これらの分布はかなりよく一致しているように見えますが、2次元では、この紫の分布のKLダイバージェンスが青い分布よりもはるかに低いことがわかります。
複数の特徴を同時に比較することは、特徴間の相互作用を捉える上で非常に重要です。特に安全性が重要なシステムでは、このような相互作用が重要な安全特性に関わることがあります。例えば、航空機の高度と速度は個別に見ると問題なく見えるかもしれませんが、両方を同時に考慮すると、特定の組み合わせが危険な状態を示すことがあります。
実際のモデリングでは、単一特徴の分析から始めて、徐々に複雑さを増していくアプローチが効果的です。まず各特徴の周辺分布をチェックし、それから特徴のペアを分析し、最後により多くの特徴の組み合わせを見ることで、モデルの問題点を段階的に特定できます。
また、データの次元が高い場合、すべての次元を同時に視覚化することは難しくなります。そのような場合、次元削減技術(主成分分析など)を使用して、データの最も重要な側面を捉えた低次元表現を作成し、その空間でモデルとデータを比較することも有効です。
複数特徴の比較は、モデルが現実世界のシステムの複雑な相互作用をどれだけ正確に捉えているかを評価する上で不可欠です。単一の特徴だけを見ると、モデルの重大な欠陥を見逃す可能性があることを覚えておきましょう。
5.4 条件付き分布の比較
Sydney Katz:最後に、条件付き分布を比較したい場合について話しましょう。条件付き分布とは、特定の条件が与えられたときの確率分布のことです。例えば、P(Y|X)のような形式で、これはXが与えられたときのYの分布を表します。
このような条件付き分布を比較するための一般的なアプローチは、条件変数(この場合はX)をビンに分割することです。つまり、Xの値をいくつかの範囲に分け、各ビン内でXはほぼ同じと見なします。そして、各ビン内でYの分布を比較します。
視覚化のために4つのビンだけを示していますが、実際には多くのビンを使用することをお勧めします。ビンを小さく保つことで、X変数の影響が最小限になり、各ビン内ではYの分布だけを比較することに集中できます。
各ビン内で、先ほど非条件変数について説明した様々な統計量を計算し、どれだけマッチしているかを確認することができます。これにより、条件付き分布のモデルがデータとどれだけ一致しているかを評価できます。
質問者:この場合、条件付き分布モデルはXに関して連続的だと思いますが、Xの範囲にわたって離散的なビンを作る場合、モデルが使用するXの値をどのように選択すればよいでしょうか?
Sydney Katz:良い質問です。Xは連続値で、モデルはXに条件付けられており、モデルに入力する値を決める必要があるということですね。この場合、私たちは2つのデータセットを比較しているだけで、モデルとデータセットを比較しているわけではないので、その選択をする必要はありませんでした。
もしモデルとデータセットを比較する必要がある場合は、何か意味のある値を選ぶ必要があります。例えば、ビンの中心値などが考えられます。だからこそ、4つのビンよりも多くのビンを使用することが重要で、ビンが十分に小さければ、Xの値を変えてもそれほど大きな影響はないはずです。
条件付き分布の比較は、特に複雑なシステムをモデル化する場合に非常に重要です。実際のシステムでは、ある変数の振る舞いが別の変数の値に強く依存することがよくあります。例えば、航空機のセンサーモデルでは、高度や速度などの条件によって、センサーの精度や特性が変わることがあります。
条件付き分布を適切に評価することで、モデルがこれらの依存関係をどれだけ正確に捉えているかを確認できます。もしあるXの値の範囲でモデルが特に不正確であることがわかれば、そのような条件下でのモデルの振る舞いをより詳しく調査する必要があることを示唆しています。
また、条件付き分布の比較は、モデルの一般化能力を評価する上でも重要です。特定の条件範囲でのみトレーニングされたモデルが、その範囲外でも正確に予測できるかどうかを確認することができます。これは安全性が重要なシステムにおいて特に重要です。未テストの条件下でシステムがどのように動作するかを理解することは、安全性の保証に不可欠だからです。
条件付き分布の比較は技術的に少し複雑になる可能性がありますが、モデルの振る舞いをより完全に理解するためには不可欠なツールです。特に、複雑な相互作用や条件付きの関係が重要な役割を果たすシステムにおいては、これが重要です。
5.5 専門家知識による検証
Sydney Katz:データが十分にない場合でも、専門家の知識を使ってモデルを検証することができます。多くの方はチューリングテストについて聞いたことがあるかもしれません。これはチューリングテストに似た方法で、専門家にモデルからのロールアウト(シミュレーション結果)とデータからのロールアウトのペアを見せ、どちらがモデルからで、どちらがデータから来たものかを識別してもらいます。
もし専門家が100%の確率で見分けることができるなら、おそらくモデルはデータを適切に表現できていないと言えます。両者の違いが明らかだからです。このような場合、テストに「失敗」したと言い、モデル表現が不十分だと判断します。
一方、専門家の識別精度が低い場合、例えば50%程度(つまりランダムな推測と同程度)であれば、私たちのモデルは良いと言えます。専門家でさえ、モデルとデータの違いを見分けられないからです。
このアプローチは、チューリングテストの考え方を広く応用したものです。チューリングテストは、AIと人間を大規模に区別できるかどうかを判断するテストですね。専門家による評価は、特に数値的なメトリクスでは捉えにくい微妙な特性や、定量化が難しい側面を持つシステムにおいて非常に価値があります。
例えば、航空機パイロットの意思決定モデルを作成する場合、数値的な指標だけではなく、実際のパイロットに「このシミュレーションされた意思決定は、本物のパイロットがするものと類似していますか?」と尋ねることが非常に有益です。同様に、医療診断システムのモデルでは、医師に「このシステムの診断パターンは実際の医師の思考プロセスと一致していますか?」と聞くことができます。
専門家による評価は、モデルの検証において他の定量的手法を補完するものです。定量的メトリクスは具体的な数値を提供しますが、専門家は経験と直感に基づいて、モデルがシステムの本質的な側面を捉えているかどうかを判断できます。
また、専門家による評価は、モデルの限界や改善点を特定するのにも役立ちます。「このモデルが間違っている理由は何ですか?」と専門家に尋ねることで、量的分析では見落とされがちな、モデルの弱点に関する貴重な洞察を得ることができます。
ただし、専門家の評価にも主観性や偏りがあることを認識しておく必要があります。可能であれば、複数の専門家から意見を集め、その評価を平均化することで、より信頼性の高い評価を得ることができます。
以上で、システムモデリングの部分を終了します。システムモデルはモデルの検証アルゴリズムへの一つの入力です。次に、二つ目の入力であるプロパティ仕様について説明していきます。プロパティ仕様とは、システムが満たすべき要件や特性を形式的に定義するものです。
6. プロパティ仕様
6.1 メトリクスと仕様
Sydney Katz:それでは、プロパティ仕様について話していきましょう。先ほど説明したように、これは検証アルゴリズムへの2番目の入力であり、システムが何をすべきかを形式的に指定するものです。
システムのプロパティを記述するには、いくつかの異なる方法があります。私たちが基本的にしようとしていることは、何らかの定量化できる方法でシステムの振る舞いを記述することです。その一つの方法は、システムの振る舞いを実数値にマッピングすることです。これを「メトリクス」と呼びます。
もう一つの方法は、システムの振る舞いをブール値(真または偽)にマッピングすることです。これを「仕様」と呼びます。
時には、これら二つの間を行き来することもできます。例えば、メトリクスから仕様を導出することがあります。例として、航空機衝突回避システムを考えてみましょう。このシステムのメトリクスは、自機と侵入機の間の「最接近距離(miss distance)」です。これは図中のこの距離になります。
このメトリクスから仕様を導出するには、「最接近距離は50メートルより大きくなければならない」というような条件を設定します。メトリクスは最接近距離という実数値であり、仕様はその距離が50メートルより大きいかどうかに基づいて真または偽の値を返します。
また、仕様からメトリクスを導出することもできます。例えば、先ほどの仕様を取り、さらに一歩進めて「最接近距離が50メートルより大きくなる確率はいくらか」というメトリクスに変換することができます。つまり、仕様が満たされる確率です。
このグラフについて少し説明しておきます。このプロットでは、縦軸に2機の航空機の相対高度、横軸に水平分離が失われるまでの時間(衝突時間)をプロットしています。つまり、衝突時間がゼロに近づくにつれて、すべての水平分離が失われていきます。そのため、その時点で大きな垂直分離があることを確認したいのです。これにより、他機と衝突しないようにします。
衝突時間がゼロのとき、つまりすべての水平分離が失われたときの最接近距離を取ります。この赤い領域に入らないようにしたいのです。つまり、他の航空機に近づきすぎないようにしたいのです。
単一の軌道に対するメトリクスや仕様を持つこともあれば、軌道の集合全体に対するものを持つこともあります。例えば、前述の最接近距離は単一の軌道に対するメトリクスでした。このプロットは、衝突回避システムの相対高度と衝突時間を示しています。
複数の軌道がある場合、平均最接近距離のようなものを計算することができます。これが、ここで行われていることです。
では、システムのプロパティについて理解しました。メトリクスと仕様があります。今日または木曜日の一部では、メトリクスとは何か、仕様とは何かについて詳しく説明する予定です。到達可能性仕様についても非常に簡単に触れますが、これは実際にはこのコースの高度なトピックなので、クイズには出ません。
質問はありますか?ないようですので、メトリクスについて詳しく見ていきましょう。このコースでは主に確率的システムに対するメトリクスに焦点を当てています。確率についてたくさん話してきたことに気づいたでしょう。そのため、分布を要約するメトリクスが本当に欲しいのです。
前に平均最接近距離を計算したとき、それは軌道全体のこの分布に対する最接近距離でした。衝突回避システムを取り、初期状態などをすべて変化させ、適用するノイズをさまざまに変えると、発生する可能性のあるさまざまな軌道の分布が得られます。この分布を何らかの方法で要約したいのです。
すべての軌道があり、最接近距離のような個々の軌道に対するメトリクスがあるとします。これをこの分布内のすべての軌道に適用すると、最接近距離の分布が得られます。私たちの目標は、この分布を要約する良い方法を見つけることです。
6.2 単一軌道と軌道集合のプロパティ
Sydney Katz:システムのプロパティは、単一の軌道に対して定義することも、軌道の集合全体に対して定義することもできます。まず、単一軌道に対するプロパティについて考えてみましょう。
例えば、先ほど話した最接近距離は単一の軌道に対するメトリクスです。このプロットは2機の航空機の関係を示しており、縦軸は相対高度、横軸は衝突時間(水平分離が失われるまでの時間)を表しています。衝突時間がゼロに近づくにつれて、水平分離はすべて失われていきます。そのため、その時点で十分な垂直分離を確保することが重要です。
衝突を避けるためには、衝突時間がゼロになったとき、つまりすべての水平分離が失われたときに、この赤い危険領域に入らないようにする必要があります。最接近距離は、この特定の軌道におけるシステムの安全性を評価するための具体的なメトリックです。
しかし実際のシステムは確率的であり、様々な初期状態、ノイズ、その他の変動要因によって異なる軌道を生み出します。そこで、軌道の集合全体に対するプロパティも考える必要があります。例えば、多くの異なる状況で衝突回避システムをシミュレーションすると、様々な軌道が生成されます。
このような場合、単一の軌道に対するメトリクス(例えば最接近距離)を各軌道に適用すると、そのメトリクスの分布が得られます。つまり、様々なシナリオにおける最接近距離の分布です。この分布自体が重要な情報を提供します。例えば、平均最接近距離を計算して、システムの全体的な性能を評価することができます。
また、システムが特定の安全条件(例えば、最接近距離が常に50メートルより大きいこと)を満たす確率を計算することもできます。これは、仕様が満たされる確率を示すメトリクスに変換する例です。
軌道集合のプロパティは、特に安全性が重要なシステムにおいて非常に重要です。単一のシナリオでシステムが正しく動作することを示すだけでは十分ではなく、様々な状況や条件下でシステムが期待通りに機能する確率を理解する必要があります。
例えば、航空機衝突回避システムの場合、一部のシナリオで安全な分離を維持できたとしても、すべての可能なシナリオでそれが保証されるわけではありません。軌道集合のプロパティを分析することで、システムが安全に機能しない状況がどれだけあるか、そしてそのような状況がどれだけ起こりやすいかを理解できます。
次のセクションでは、確率的システムにおいてこれらの分布を要約するための様々なメトリクスについて詳しく見ていきます。特に、期待値や分散だけでなく、分布の極端な部分(「テール」と呼ばれる)を捉えるために設計されたリスクメトリクスについても説明します。これらのメトリクスは、安全性が重要なシステムのリスク評価において特に重要です。
7. 確率的システムのメトリクス
7.1 分布の要約:期待値と分散
Sydney Katz:これまで見てきたように、このコースでは主に確率的システムに対するメトリクスに焦点を当てています。確率について多く議論してきたことにお気づきでしょう。確率的システムでは、分布を要約するメトリクスが必要です。
例えば、先ほどの衝突回避システムについて考えると、システムの様々な初期状態やノイズなどを変化させると、可能性のある様々な軌道の分布が得られます。それぞれの軌道に対して、例えば最接近距離などの個別のメトリクスを適用できます。これをすべての軌道に適用すると、そのメトリクスの分布が得られます。
私たちの目標は、この分布を簡潔に要約する良い方法を見つけることです。最も基本的な方法の一つは、分布の期待値(expected value)を取ることです。これは分布の平均や平均値と考えることができます。
期待値はこのように表されます。もしあなたのメトリクスが二値メトリクス(つまり0か1のみの値を取る)であれば、その期待値は確率になります。これについては第7章でより詳しく説明します。
しかし、期待値だけでは分布を十分に要約できないことがよくあります。例えば、これら3つの最接近距離の分布は見た目が異なりますが、すべて全く同じ期待値を持っています。
そこで、分布の広がりを測る分散(variance)のような他の統計量も使うことができます。これにより、これらの分布を互いに区別することができます。
このコースでは特に安全性が重要なシステムに関連して、最悪のケースの結果を考慮する保守的なメトリクスに注目します。安全性が本当に重要な場合、私たちは最悪のケースのシナリオやエッジケースに特に注目するからです。
このような場面では、「リスクメトリクス」と呼ばれるものをよく使います。これは、値が高いほど悪い結果(つまりリスクが高い)を示すメトリクスです。例えば、先ほど使っていた最接近距離メトリクスを「逆さま」にすることができます。
例えば、常に2000メートルの分離からスタートし、この分離の「損失」を2000メートルから最接近距離を引いた値として定義します。最接近距離がゼロであれば、すべての分離(2000メートル)を失ったことになり、それは悪いことです。最接近距離が大きければ大きいほど、このメトリクスの値は小さくなり、リスクは低くなります。
このように、以前使用していたメトリクスを「逆さま」にして、高い値が悪いことを意味するようにしただけです。この場合、これら3つの分布はまだ同じ期待値を持っていますが、異なるタイプのメトリクスを使ってリスクを区別することができます。
これらの分布を見ると、この分布が最もリスクが高いように思えます。分離損失が2000メートルということは、ゼロまで下がって全く分離がなくなったということです。これは衝突につながる可能性があります。この分布は、これらの2000に近い値に最も高い確率質量を持っています。こちらはやや低く、こちらは2000付近にはそれほど確率質量がありません。したがって、これが最もリスクが高く、これが最もリスクが低いと言えます。
このようなリスクの違いを区別するために使用できるメトリクスの一つは、「バリューアットリスク(Value at Risk)」または「VaR」と呼ばれるものです。これには「α」という値が伴います。バリューアットリスクは、確率αでリスクが超えないことが保証される最高値です。
これは基本的に、リスクメトリクスのα分位数と正確に同等です。値が高いほど、よりリスクの高いシナリオにあると考えることができます。より高いバリューアットリスクを持つシナリオはよりリスクが高く、より低いバリューアットリスクを持つシナリオはよりリスクが低いということです。
このように、期待値と分散だけでなく、分布の異なる側面を捉えるための様々なメトリクスがあります。特に安全性が重要なシステムでは、分布の極端な部分(「テール」と呼ばれる)が重要な役割を果たします。なぜなら、まれではあるが深刻な結果をもたらす可能性のあるケースを理解することが、システムの安全性を確保する上で不可欠だからです。
次に、バリューアットリスク(VaR)と条件付きバリューアットリスク(CVaR)について詳しく見ていきましょう。これらは特に安全性が重要なシステムのリスク評価に役立つ高度なメトリクスです。
7.2 リスクメトリクス
Sydney Katz:安全性が重要なシステムの設定では、特に最悪のケースの結果を考慮する保守的なメトリクスが必要です。安全性が本当に重要な場合、最悪のケースのシナリオやエッジケースに特に注目する必要があるからです。
このような状況では、「リスクメトリクス」と呼ばれるものをよく使用します。リスクメトリクスとは、値が高いほど悪い結果(つまり、リスクが高い)を示すメトリクスです。一例として、先ほど使っていた最接近距離のメトリクスを「逆さま」にすることができます。
具体的には、常に2,000メートルの分離からスタートすると仮定し、「分離損失」を「2,000メートル - 最接近距離」と定義します。最接近距離がゼロであれば、すべての分離(2,000メートル)を失ったことになり、それは非常に悪い状況です。したがって、分離損失メトリクスの値は2,000になります。反対に、最接近距離が大きければ大きいほど、このメトリクスの値は小さくなり、リスクは低くなります。
以前使用していたメトリクスを単に「逆さま」にしただけで、高い値が悪いことを意味するようにしました。この場合、これら3つの分布はまだ同じ期待値を持っていますが、リスクの特性は明らかに異なります。
これらの分布を見ると、左の分布が最もリスクが高いように思えます。分離損失が2,000メートルということは、完全に分離がなくなり、ゼロまで下がったということです。これは衝突につながる可能性があり、非常に危険です。この左の分布は、2,000に近い値に最も高い確率質量を持っています。中央の分布はやや低く、右の分布は2,000付近にはほとんど確率質量がありません。したがって、左の分布が最もリスクが高く、右の分布が最もリスクが低いと言えます。
このようなリスクの違いを定量化するために、様々なリスクメトリクスが開発されています。これらのメトリクスは、期待値だけでは捉えられない分布の重要な側面、特に「テール」と呼ばれる極端な値の領域を考慮します。
安全性が重要なシステムでは、まれではあるが非常に深刻な結果をもたらす可能性のあるイベント(いわゆる「テールリスク」)に特に注意を払う必要があります。例えば、航空機衝突回避システムでは、ほとんどの状況で適切に機能するが、特定の条件下では危険な状況を招く可能性があるシステムよりも、すべての状況で適度に良好に機能するシステムの方が好ましいかもしれません。
リスクメトリクスを使用すると、このようなトレードオフを定量的に評価し、特に最悪のケースのシナリオにおいてシステムがどれだけ安全であるかをより良く理解することができます。次に、特に安全性が重要なシステムで広く使用されている2つの重要なリスクメトリクス、バリューアットリスク(VaR)と条件付きバリューアットリスク(CVaR)について詳しく見ていきましょう。
7.3 バリューアットリスク(VaR)と条件付きバリューアットリスク(CVaR)
Sydney Katz:リスクの違いを区別するために使用できるメトリクスの一つが、「バリューアットリスク(Value at Risk)」または「VaR」と呼ばれるものです。これには「α」というパラメータが伴います。バリューアットリスクは、確率αでリスクが超えないことが保証される最高値です。
これは基本的にリスクメトリクスのα分位数と正確に同等です。例えば、α=0.7のバリューアットリスクは、70%の確率でリスクがこの値を超えないことを示します。値が高いほど、よりリスクの高いシナリオにあると考えることができます。よりリスクの高いシナリオはより高いバリューアットリスクを持ち、よりリスクの低いシナリオはより低いバリューアットリスクを持ちます。
もう一つのメトリクスは「条件付きバリューアットリスク(Conditional Value at Risk)」または「CVaR」と呼ばれるものです。これもαというパラメータを持ちます。この方程式に深く入り込みたくありませんが、基本的にはVaRを超えるすべてのリスク値の平均を取っています。つまり、VaRを超えるすべての値の期待値を計算しています。
同様に、これは高いCVaRが高リスクシナリオを表し、低いCVaRが低リスクシナリオを表します。
これらの量に対する直感を提供したいと思います。初めて聞いたとき、これらはかなり抽象的で奇妙に思えました。バリューアットリスクについての直感ですが、例えばα=0.7の場合、リスクが70%の確率で超えないことが保証される値です。つまり、70%の確率でリスクがこの値より高くならないことを保証でき、その値が低ければ安心できます。値が高いほど、状況は悪くなります。
条件付きバリューアットリスクについては、リスクメトリクスの分布があり、その期待値を取ることもできますが、より保守的なアプローチとしては、単に期待値だけでなく、最悪のケースの結果の期待値を知りたいと考えます。その値が高いほど、状況は悪くなります。
これらについて質問はありますか?
質問者:最悪のケースの結果とは、仕様で定義されるものですか?または、どのように定義されますか?
Sydney Katz:最悪のケースの結果がどのように定義されるかという質問ですね。私たちは結果の分布を持っていると仮定し、リスクメトリクスなので高い値ほど悪いことを意味します。したがって、最悪のケースの結果は最も高い値を持つものになります。
CVaRの場合、バリューアットリスクを超えるものすべてを最悪のケースの結果と見なし、それらの平均を取ります。
デモを少し見てみましょう。これは私たちがコントロールできるαというパラメータであり、どれだけ保守的になりたいかを本質的に制御します。αが0.7の場合、最悪の30%のケースに焦点を当てると言っています。αを増やすと、さらに極端なケース、つまり本当に最悪のケースに焦点を当てていることがわかります。
αが1に近づくにつれて、絶対的に最悪の可能性のあることだけに焦点を当てています。αが0に近づくにつれて、VaRは分布の左端に移動します。αが0のとき、CVaRはどうなるかわかりますか?
質問者:期待値です。
Sydney Katz:そうです、期待値になります。αが0のとき、0分位数から始めて分布の100%を考慮しています。つまり、すべての値の期待値を取っているわけで、それは単に分布の期待値です。
これがこれらのメトリクスの動作です。紫の実線がVaR、シェーディングされた領域がCVaRを計算するために考慮している部分、そして紫の破線がCVaRです。もう少し動かしてみると、どのように変化するかがわかります。
これで確率的システムのメトリクスについての説明は終わりです。次に、複合メトリクスについて説明します。これは、複数の異なるメトリクスを組み合わせて、より包括的なシステム評価を行う方法です。
8. 複合メトリクス
8.1 パレート最適性
Sydney Katz:複合メトリクスに移りましょう。ここまでは一つの特定のメトリクスについて話してきましたが、複数のことを気にかけることもあります。多くの場合、これらの複数の要素は互いに競合しています。
航空機衝突回避システムの例を続けると、警報率(衝突回避システムがパイロットに何らかの回避操作を行うよう指示する回数の割合)と衝突率(衝突につながる遭遇の割合)の両方を気にするかもしれません。
理想的には、これらの両方が低いことを望みます。パイロットに頻繁に警報を出すと、イライラして回避操作を行いたくなくなるかもしれないので、警報率が低いことが望ましいです。また、衝突率が高いのは明らかに危険なので、それも低くしたいです。
このような種類のトレードオフを扱う際によく使用するツールの一つが「パレート最適性」です。システム設計がパレート最適であるという考え方は、一方のメトリクスを改善することなく、他方のメトリクスを悪化させることなくできない場合です。
この点を見てみましょう。この点はパレート最適だと思いますか?
[クラスからの回答:いいえ]
首を振っている人が見えますね。そうですね、この点はパレート最適ではありません。例えば、警報率も衝突率も低いこの点のようなものが得られるからです。
では、この点はどうでしょうか?
[クラスからの回答:はい]
頷いている人が見えますね。そうです、この点はパレート最適です。例えば、警報率を改善する(つまり、より低くする)ことはできますが、それは衝突率を悪化させる(より高くする)ことなしにはできません。
パレート最適であるすべての点は「パレートフロンティア」というものをトレースします。パレートフロンティアは、パレート最適であるすべての設計の部分集合です。複合メトリクスによって可能になることは、パレートフロンティア上の一つの点を選択できる単一のメトリクスを作成することです。なぜなら、個々のメトリクスだけを見ても、どちらが良いかを区別することはできないからです。
パレート最適性は、複数の競合する目標を持つシステムの設計において非常に重要な概念です。例えば、航空機衝突回避システムの場合、警報率を下げすぎると衝突率が上昇し、安全性が損なわれる可能性があります。逆に、衝突率を極端に低くしようとすると、不要な警報が多すぎてシステムの使用性が低下する可能性があります。
パレートフロンティアは、これらの競合する目標の間の最適なトレードオフを表します。フロンティア上のどの点も、ある意味で「最適」です。つまり、一方の目標を改善するには、必ず他方を犠牲にする必要があります。しかし、パレートフロンティア上のどの点を選ぶかは、特定のアプリケーションの要件や優先事項によって異なります。
例えば、軍用機では、ミッションの成功が最優先事項かもしれないので、警報率を低く抑えることが重要かもしれません。一方、商業航空では安全性が最優先なので、多少の不要な警報があっても衝突率を最小化することを優先するかもしれません。
パレート最適性の考え方は、安全性が重要なシステムの設計における重要な概念であり、複数の競合する目標のバランスを取る必要がある場面で特に価値があります。次に、パレートフロンティアについてより詳しく説明し、そこから特定の設計を選択するための複合メトリクスについて見ていきましょう。
8.2 パレートフロンティア
Sydney Katz:パレート最適性を理解したところで、次はパレートフロンティアについて詳しく見ていきましょう。パレートフロンティアとは、パレート最適であるすべての設計点の集合です。つまり、パレートフロンティア上のどの点においても、一方のメトリクスを改善するには、必ず他方のメトリクスを悪化させる必要があります。
この図の曲線がパレートフロンティアです。フロンティア上のすべての点は、それぞれの方法で「最適」であると考えることができます。低い警報率を優先するなら左上の点、低い衝突率を優先するなら右下の点を選ぶかもしれません。フロンティア上の点は、それぞれ異なるトレードオフを表しています。
重要なのは、このフロンティア内側(右上方向)にある点はすべて「非最適」だということです。なぜなら、パレートフロンティア上のある点に移動することで、両方のメトリクスを同時に改善できるからです。例えば、この内側の点からフロンティア上のこの点に移動すれば、警報率と衝突率の両方を下げることができます。
パレートフロンティアを識別することは、システム設計の初期段階で非常に価値があります。これにより、考慮する価値のある設計の集合を絞り込むことができます。フロンティアから離れている設計は、明らかに劣っているため除外できます。
しかし、フロンティア上の点が多数ある場合、どの設計を選ぶべきかという問題が残ります。これが、複合メトリクスが役立つところです。複合メトリクスは、パレートフロンティア上の一点を選択するための単一のメトリクスを作成します。個々のメトリクスだけでは、フロンティア上のどの点が「最良」かを区別することができないからです。
例えば、警報率が0.1で衝突率が0.05の設計と、警報率が0.2で衝突率が0.02の設計があるとします。どちらが「より良い」かは、これらのメトリクスの相対的な重要性に依存します。複合メトリクスは、これらの相対的な重要性を形式化する方法を提供します。
パレートフロンティアは、設計空間における「可能性の境界」を表すと考えることもできます。つまり、現在の技術や知識の制約の中で達成できる最良の結果の集合です。技術が進歩したり、より良いアルゴリズムが開発されたりすると、このフロンティアは外側(左下方向)に移動し、以前は達成できなかったパフォーマンスレベルが可能になります。
安全性が重要なシステムにおいて、パレートフロンティアを理解することは特に重要です。なぜなら、安全性と他の望ましい特性(効率性、使いやすさ、コストなど)の間に本質的なトレードオフが存在することが多いからです。フロンティアを明示的に特定することで、設計者は情報に基づいた意思決定を行い、特定のアプリケーションに最も適したトレードオフを選択することができます。
次に、パレートフロンティア上の特定の点を選択するための様々な複合メトリクスについて見ていきましょう。
8.3 重み付け和と目標距離メトリクス
Sydney Katz:複合メトリクスの一種として、個々のメトリクスの「重み付け和」があります。各メトリクスにその相対的な重要性に基づいて重みを割り当て、それらの加重和を取ります。これにより、パレートフロンティア上の一点を選択するための単一の複合メトリクスが得られます。
例えば、衝突率をどれだけ気にするかを表す重み0.8と、警報率をどれだけ気にするかを表す重み0.2の重みベクトルを持っているとします。この重みを使って、パレートフロンティア上の各点に対してこのメトリクスを計算し、最も高い値を持つものを選択することができます。
もう一つのタイプのメトリクスは「目標距離メトリクス」です。ここでは、何らかの目標点を設定します。多くの場合、「ユートピア点」と呼ばれるものを選びます。これは理想的な設定で望むものです。つまり、警報が全くなく、衝突も全くない状態です。
しかし、これは達成不可能でしょう。それでも、できるだけそれに近づきたいと考えます。そこで、パレートフロンティア上の各点からこのユートピア点までの距離を計算し、最小の距離を持つものを選びます。
さらに、「重みと目標メトリクスを組み合わせることはできないか」と考えるかもしれません。はい、できます。「重み付き指数和メトリクス」は基本的にこのタイプのメトリクスに重みを追加したものです。
これらの複合メトリクスは、パレートフロンティア上の特定の点を選択するための形式的な方法を提供します。どのメトリクスを選ぶかは、特定のアプリケーションの要件や優先事項に依存します。
重み付け和メトリクスは、各メトリクスの相対的な重要性を直接表現したい場合に特に役立ちます。例えば、安全性が使いやすさよりも5倍重要だと考える場合、衝突率に0.83、警報率に0.17のような重みを割り当てることができます。
目標距離メトリクスは、複数のメトリクスの「バランス」を取りたい場合に役立ちます。ユートピア点からの距離を最小化することで、すべてのメトリクスが「許容可能な」値を持つ解を見つけることができます。このアプローチは、どのメトリクスも極端に悪い値を持たないようにしたい場合に特に有用です。
重み付き指数和メトリクスは、これら二つのアプローチを組み合わせ、より柔軟な評価方法を提供します。特定のメトリクスに重みを割り当てながらも、全体的なバランスも維持したい場合に使用できます。
これらの重みをどのように選ぶかという問いがあるかもしれません。答えは「選好抽出」です。これについては次回の講義で取り上げる予定です。
複合メトリクスは、特に複数の競合する目標を持つ安全性が重要なシステムの評価において非常に価値があります。これらのメトリクスを使うことで、単一のメトリクスだけを見る場合には見落とされがちな、システムの全体的なパフォーマンスと安全性のバランスを取ることができます。
例えば、航空機衝突回避システムでは、警報率を極端に低くすることで「使いやすい」システムを作ることができますが、それは衝突率の増加という犠牲を伴います。逆に、衝突率をゼロに近づけることを目指すと、過剰な警報によってシステムが実用的でなくなる可能性があります。複合メトリクスは、これらの競合する目標の間で適切なバランスを見つけるための形式的な方法を提供します。
最終的に、どの複合メトリクスを選ぶか、そしてどのような重みを割り当てるかは、システムの具体的な要件、使用コンテキスト、および関連するステークホルダーの優先事項によって決まります。安全性が重要なシステムの場合、これらの決定は慎重に行う必要があり、多くの場合、様々な専門家や利害関係者からの入力を必要とします。