※本記事は、Stanford AA228V「Validation of Safety Critical Systems」コースの「Runtime Monitoring」講義の内容を基に作成されています。講義の詳細情報は https://aa228v.stanford.edu/ でご覧いただけます。また、関連教科書は https://algorithmsbook.com/validation/ で入手可能です。
本講義の登壇者は、Sydney Katz氏(Stanford University博士研究員、詳細:https://sydneymkatz.com/)とMykel Kochenderfer氏(Stanford University航空宇宙学科准教授、兼コンピュータサイエンス学科、詳細:https://mykel.kochenderfer.com/)です。
コースの詳細および受講については https://online.stanford.edu/ をご参照ください。Stanford Onlineは、Stanford Engineering Center for Global & Online Education(CGOE)により運営され、世界中の受講者に向けて学位プログラム、単位取得教育、専門資格プログラム、無料公開コンテンツを提供しています。
本記事では、講義内容を要約しております。なお、本記事の内容は原著作者の見解を正確に反映するよう努めていますが、要約や解釈による誤りがある可能性もありますので、正確な情報や文脈については、オリジナルの講義動画をご視聴いただくことをお勧めいたします。
1. イントロダクション
1.1 コース概要と最終章への到達
Sydney Katz:皆さん、お疲れ様でした。良い週末を過ごされたことと思います。今日は、ついに本の最後の章に入ります。私たちは全12章を完了したということで、これはかなり素晴らしいことです。今日はランタイムモニタリングについて話していきます。
これまで私たちは検証のための様々な手法について話してきました。そして、これらすべての手法は、ある種のオフライン検証手法と呼ぶことができます。これらは、システムを実世界に展開する前に、潜在的に実行するものです。故障を発見したり、故障確率を推定したり、何らかの形式的保証を得ようとしたり、説明可能性を求めたりします。そして、これらすべてを、第2回と第3回の講義で話したように、私たちが作成した世界の何らかのモデルに基づいて行っています。
しかし、私たちが言ったように、可能性のあるすべてのものをモデル化することは本当に困難であり、このモデルは必然的に何かを見逃すことになるでしょう。特に、非常に複雑な環境で動作するシステムをモデル化しようとする場合はそうです。
1.2 オフライン検証手法の限界
Sydney Katz:これまでに話してきたすべての手法は、基本的にオフライン検証手法として分類できます。これらは、システムを実世界に展開する前に実行する可能性のあるものです。故障を発見し、故障確率を推定し、何らかの形式的保証を得て、説明可能性を追求しようとします。そして、これらすべてを、第2回と第3回の講義で話したモデル作成方法について議論したように、私たちが作成した世界の何らかのモデルに基づいて行っています。
しかし、私たちが述べたように、見る可能性のあるすべてのものをモデル化することは本当に困難です。そして必然的に、このモデルは何かを見逃すことになるでしょう。特に、非常に複雑な環境で動作するシステムをモデル化しようとする場合はそうです。たとえば、これらの様々な道路環境で動作する車のようなものです。
私たちのモデルは、どれだけ努力してもすべての可能なエッジケースをモデルに組み込もうとしても、ある時点で考えられるすべての可能性を思いつくことはできないでしょう。これが私を第2回講義のスライドに戻らせます。モデリングについて話していたときに、モデル作成に関する私の一般的な考えを話していて、これらの主要な課題のいくつかを特定していました。そして、主要な課題の一つとして、システムが遭遇する可能性のあるすべてのシナリオを捉えるのに十分な表現力を持つモデルを最終的に作成する必要があることを言いました。
道路からの無秩序な水の噴出や、トラック上の交通信号など、私たちのモデルがこれらすべての可能性を捉えることができることを望みます。そして、基本的に検証に関する講演をするたびに、少なくとも一人の人が来て質問をするということを皆さんに言いました。それは完全に有効な質問で、「私のクレイジーなシステムが最終的に置かれることになるすべての可能なシナリオをどうやって捉えることができるのか。私はそれらがすべて何であるかさえ知らない。おそらく私はトラック上の交通信号のことを考えもしなかっただろう」というものです。
繰り返しますが、これは完全に有効な質問です。なぜなら、これは本当に困難なことだからです。そして私の回答は、第2回講義で皆さんに言ったように、いつも「そう、それは完全に問題です。これは本当に困難です」というものです。しかし、私はここに希望があることを言いました。そして、ランタイムモニタリングの章を待つようにと言いました。そして今、私たちはここにいます。
1.3 実世界での予期しない状況の例(Waymo車両、Tesla交通信号検知問題)
Sydney Katz:たとえば、左側のビデオは、このWaymo車両が見るこのクレイジーな場所のようなもので、道路の真ん中にある巨大なランダムな噴水のようなものです。私にはわかりませんが、道路の真ん中にあるこの巨大なランダムな噴水は、おそらくモデルに含まれていなかったものだと確信しています。おそらく消火栓が爆発したか何かでしょう。そして車両はそれに向かって運転し、停止して、何をすべきかわからない状態になりますが、少なくともそれを通り抜けることはしません。
そして、右側のビデオは、Anthonyが彼のゲスト講義中に見せたものだと思いますが、基本的に何が起こっているかというと、道路を走っているTeslaがあり、これらすべての信号機を検出し続けているということです。そして、それが交通信号を輸送していたトラックを追跡していたことが判明しました。
これらは、私たちがモデルにすべての可能なエッジケースを組み込もうとどれだけ努力しても、ある時点で起こりうるすべての可能性を考えることはできない、これらのクレイジーなエッジケースの例です。
2. ランタイムモニタリングの必要性
2.1 モデル化の根本的課題
Sydney Katz:これが私を第2回講義のスライドに戻らせます。モデリングについて話していたときに、モデル作成に関する私の一般的な考えを話していて、これらの主要な課題のいくつかを特定していました。そして、主要な課題の一つとして、システムが遭遇する可能性のあるすべてのシナリオを捉えるのに十分な表現力を持つモデルを最終的に作成する必要があることを述べました。道路からのランダムな水の噴出や、トラック上の交通信号など、私たちのモデルがこれらすべての可能なものを捉えることができることを望みます。
そして、基本的に検証に関する講演をするたびに、少なくとも一人の人が来て質問をするということを皆さんに言いました。それは完全に有効な質問で、次のようなものです:「私のクレイジーなシステムが最終的に置かれることになるすべての可能なシナリオをどうやって捉えることができるのか。私はそれらがすべて何であるかさえ知らない。おそらく私はトラック上の交通信号のことを考えもしなかっただろう。では、どうやってこれに対処するのか?」
繰り返しますが、これは完全に有効な質問です。なぜなら、これは本当に困難なことだからです。そして私の回答は、第2回講義で皆さんに言ったように、いつも「そう、それは完全に問題です。これは本当に困難です」というものです。
2.2 ランタイムモニタリングが究極の解決策である理由
Sydney Katz:しかし、私はここに希望があることを言いました。そして、ランタイムモニタリングの章を待つようにと言いました。そして今、私たちはここにいます。ランタイムモニタリングがここでの解決策になるでしょう。
繰り返しますが、私たちはオフライン検証を行うときに世界をモデル化するために最善を尽くしますが、必然的に何かを見逃すことになります。そして、これらすべてに対する私の答えは基本的にランタイムモニタリングです。
皆さんはダグラス・アダムスの『銀河ヒッチハイク・ガイド』からこの素晴らしい引用を見たことがあるかもしれません。人生、宇宙、そしてすべての究極の答えは42であるというものです。私はそれを少し修正して、人生、宇宙、そしてすべての究極の答えはランタイムモニタリングであると言いたいと思います。
私はランタイムモニタリングの大きな大きな支持者です。これは、オフライン検証で捉えられなかったすべてのものを捉え、実際にシステムを実世界に安全に展開するために絶対に必要になると思います。
2.3 ハザード状況の検知とフォールバック機構
Sydney Katz:ランタイムモニタリングの目標は、基本的に、危険な可能性のある状況が発生したときにそれをフラグし、何らかのフォールバック機構をトリガーできるようにすることです。理想的には、私たちが検証していない状況、以前に見たことがない状況、何が起こっているのかわからない状況にいることを理解し、何らかのフォールバック機構をトリガーできるはずです。
それは、セーフモードに入るようなものかもしれません。運転している場合であれば、単に車を停止させることかもしれません。ループ内に人間のオペレータがいる場合は、この人間のオペレータに制御を移すことができるかもしれません。あなたができることはたくさんあります。
私たちは今日、それについて特に具体的に話すつもりはありませんが、今日焦点を当てるのは、これらの危険な可能性のある状況をどのようにフラグできるかということです。
3. 運用設計領域(ODD)モニタリング
3.1 ODDの概念と分布外検知との関係
Sydney Katz:それでは、運用設計領域モニタリングから始めましょう。この背景にある考えと、ちなみに、皆さんの中には分布外検知技術のようなものを聞いたことがある人もいるかと思います。これを分類する方法は異なりますが、これは分布外検知を聞いたときに考えるものと非常に似ていると思います。つまり、これら二つを頭の中で同一視することができます。
しかし、私たちの目的では、これを運用設計領域モニタリングと呼ぶことにします。そして、その考えは、システムには運用設計領域またはODDと呼ばれるものがあるということです。これらは基本的に、私たちがシステムを安全に動作するよう設計した条件の集合です。これは、雨のない昼間の条件のようなものかもしれません。
そして基本的に、ここでの考えは、これが実際に検証に使用したモデルがカバーする条件の集合である可能性があるということです。つまり、何らかのモデルを作成し、それに対して検証を行い、そのモデルは何らかの条件の集合を含む、または何らかの条件の集合をモデル化します。そして、その考えは、もし私たちがODDまたは運用設計領域の外で動作する場合、私たちは検証に使用したモデルがカバーする条件の外にいるということです。したがって、私たちの検証結果はもはや有効ではない可能性があります。
基本的に、ここでの一般的な考えは、私たちが運用設計領域の外で動作している可能性のある状況を潜在的にフラグしたいということです。その場合、私たちは基本的に安全性に関する保証がもうなくなる、または私たちの検証結果はもう何も意味しないということになります。
3.2 手動設計特徴量アプローチ
Sydney Katz:運用設計領域内で動作しているかどうかを監視するために、私たちはこのものが何であるかを表現する何らかの方法を見つけなければなりません。これを行う複数の方法があります。一つの選択肢は、単に手動で設計された特徴量を束使用することです。
たとえば、航空機タクシーシステムについて、私たちは次のようなことを言うことができるかもしれません:「私たちは空に雲がない日、太陽からのまぶしさがない、昼間で、滑走路Aで動作するよう設計しました。」これは非常に制限的なシステムかもしれませんが、おそらくそれが私たちがテストしたすべてです。そして、これらの条件の外にいることが判明した場合、私たちはシステムを使用できない、または私たちがODDの外にいると言います。
これは私たち自身が書き留めることができるものであり、私たちがタクシーシステムを展開しに行く日の前に、私たち自身でチェックすることさえできるかもしれません。
3.3 データ駆動アプローチ
Sydney Katz:そして、運用設計領域を定義するもう一つの方法もあります。それは、データ駆動アプローチを取ることです。私たち自身がODに含まれるすべての異なる特徴量を手動で設計する代わりに、検証に使用したデータからの束のデータを取ることができます。
たとえば、連続世界では、私たちが多くの軌道をシミュレートし、オフライン検証中に見たすべてのこれらの軌道があるかもしれません。または、たとえば、この侵入者検知航空機検知システムのようなものでは、私たちがそれを訓練したすべての画像、私たちが検証したすべての画像があり、それがシステムの運用設計領域を定義します。
これらは両方とも、これを行う等しく有効な方法であり、場合によっては、一方を他方よりも使用したいかもしれません。
学生からの質問:これは、私たちが実際に使用するモデルに関係なく、問題空間とデータに関することですよね?
Sydney Katz:はい。
学生からの質問:そして、2番目のアプローチでは、データ駆動的な定義をするとき、設計はどこにあるのでしょうか?手動設計特徴量を持つときは、作業したいドメインの種類を設計すると言うのは理にかなっていますが、右側のアプローチは、むしろ分布外の観点からこの質問に取り組んでいるように感じます。設計という言葉は何を設計しているのでしょうか?
Sydney Katz:まあ、使用するデータは設計上の決定だと思います。
学生:なるほど。運用データドメインと呼ぶこともできますね。
Sydney Katz:そうですね。または、作業する必要があるサンプルの分布です。実際、しばらくしてその分布の仮定を行います。分布外検知は右側のようなもので、設計領域外は左側のようなものの違いだと思います。しかし、人々がこの用語を使用する方法はかなり緩いので、それによります。そうですね、でも私たちはすぐに分布を仮定することになります。
3.4 最近傍法による実装
Sydney Katz:これらは両方とも、あなたがいる状況や何が簡単かに応じて、これを行う等しく有効な方法です。ただし、左側の手動設計特徴量については、これにはドメイン知識が必要だと言います。つまり、私たちが座って、システムを設計したすべての条件は何であるかを書き出す必要があります。そして、これらすべてを列挙することは、かなり困難だと思います。
したがって、この講義の残りの部分では、これらのデータ駆動アプローチによるより自動的な方法に焦点を当てます。そして、この連続世界の例から始めて、これを実行例として使用します。
基本的に、私たちが行ったことは、何らかのオフライン検証を行ったと仮定したことです。この場合は、多くのロールアウトを行い、それらすべてがゴールに到達し、どれも障害物に到達しなかったという非常にシンプルなオフライン検証を行ったかもしれません。そして、これらすべてのロールアウトによって定義された運用設計領域にいる場合、私たちのシステムは安全であると期待すると言います。そして、その外にいる場合、まあ、私たちはそれについて検証していません。したがって、何が起こっているのかわかりません。そして、おそらくその状況をフラグしたいでしょう。
そこで、これを私たちのデータとして使用し、具体的には、これらすべてのロールアウトを行っているときに見たすべての状態を取り、それらをデータポイントとして使用して運用設計領域を定義します。
私たちの目標は、基本的に状態の集合を決定することです。つまり、この外側の正方形内の任意の状態が運用設計領域の一部であるかどうかです。そして、論理的に考えると、オフライン検証中に見た状態の近くの状態は、おそらく運用設計領域内にあるべきです。
そうすると、最初に試してみる最も明白なことは、運用設計領域は、データセット内の最近傍が何らかのしきい値距離内にある点の集合であると言うことです。基本的に、ここの任意の点を見て、データセット内のその最近傍を見ます。しきい値を超えている場合、それは運用設計領域の外にあると言い、しきい値内にある場合は、ODの内にあると言います。
そうすると、何らかのしきい値が与えられると、ここの青い陰影のある領域が、私たちが定義する運用設計領域のようになります。そして、もし私たちが動作していて、ここの状態にいることがわかった場合、それをフラグして、私たちが以前に探索したことのない領域にいると言うことができます。
異なるしきい値距離でこの最近傍法でできることをお見せしましょう。これは前と同じプロットです。少しズームインします。ここで、運用設計領域に点を含めるかどうかを決定するために使用するこのしきい値距離を変更できます。このしきい値を減らすと、運用設計領域はより保守的になると思いますか、それとも保守的でなくなると思いますか?保守的というのは、見た点の近くの点のみを含むという意味で、保守的でないというのは、多くの追加の点を含むという意味です。
学生:しきい値を減らすと?
Sydney Katz:しきい値、この距離、これは必要な距離です。運用設計領域に含まれるためには、これだけ近くなければなりません。
学生:より保守的。
Sydney Katz:その通りです。したがって、カバーする面積がどんどん少なくなります。これらの点にどんどん近くなる必要があります。そして、基本的に、以前にこの点を見たことがない場合、そうでないと言う時点まで行くことができます。
そして、もちろん反対方向に行くと、これらの非常に大きな設計領域を取得し、望まない領域を含む可能性があります。したがって、このしきい値を調整する必要があります。
最近傍法でできるもう一つのことは、かなりクールです。ここでは、最も近い近傍が何らかのしきい値内にある点を示しているだけですが、その要件を上げることができます。2つの近傍が必要だと言うことができます。何らかのしきい値内に2つの点が必要だと言うことができ、これにより、ここの外れ値の一部を取り除くことができます。これを減らして、必要な最近傍の数を増やしてみましょう。ここの一人でいる外れ値の一部を取り除くのがわかります。2つの点が近くにある必要があるからです。これを続けて増やすことができ、端にあるものの一部を取り除くのがわかります。基本的に、どのように定義したいかによります。
3.5 計算コストとメモリ制約の課題
Sydney Katz:ここにコードで実装されたものを示します。基本的に最近傍を計算し、それらがこのしきい値内にあるかどうかをチェックします。
しかし、皆さんは、この最近傍アプローチの潜在的な欠点は何だと思いますか?
学生:あまりにも保守的である、という意味で、私が見ている点だけを見ていて、それらの直接隣接するもののみを見ているか、あなたが言ったように、しきい値が高い場合、それも非常に一般的になる可能性があります。基本的に、あなたのしきい値のいずれにしても、非適応的です。あまりにも保守的すぎるか、あまりにも一般的すぎるかのどちらかです。
Sydney Katz:まあ、あなたが持っているシステムによっては、良いしきい値を見つけることができるかもしれません。しかし、計算の観点から考えている潜在的な欠点は何でしょうか?
学生:すべての点について最近傍距離を計算する必要があります。
Sydney Katz:はい、その通りです。実際にもう一つあります。もし誰かが推測してみたい場合は?
学生:高次元では、距離が非常に奇妙になります。
Sydney Katz:あなたがそう言うだろうと思っていました。しかし、KD木のデータ構造は、非常に多数の点に対しても非常に高速な検索を提供すると思います。それは大きな問題ではないと思います。
学生:確かに。
Sydney Katz:実際の計算上の問題は、実行時にデータセット全体をメモリに保存する必要があることです。KD木を持っていても、データセット全体を保存する必要があります。驚くべきことに、これは実際にRAGにとって最大のボトルネックです。言語モデルのものではありません。最近傍検索は、実際にRAGにとって最大のボトルネックです。したがって、実際にはかなり高価です。
しかし、高次元の点は覚えておいてください。後で話すので、まだそこに入りたくありません。しかし、それも確実に問題です。
基本的に、計算は、実行時に展開するときにデータセット全体をメモリに保存しなければならない場合、問題になる可能性があります。そして、毎回最近傍を見つけるためにチェックしなければならない場合、それを搭載したくないかもしれません。
学生:しかし、KD木はそれを各点について対数時間に減らすことができますよね?
Sydney Katz:はい、それは助けになります。それでも保存しなければなりません...
3.6 クラスタリングによる改善手法
Sydney Katz:そこで、精度をあまり失うことなく、これを潜在的に改善できる一つの方法は、すべてのデータをクラスタリングすることです。K-meansクラスタリングのようなものを実行できます。すべてのデータをクラスタリングし、すべてのクラスタ中心を取得し、それらのデータポイントのみを使用して最近傍を定義します。つまり、クラスタ中心のいくつかの距離内にある必要があると言い、そうすればクラスタ中心のみを保存する必要があり、すべてのクラスタ中心への距離のみをチェックする必要があります。
これは一つの選択肢です。
3.7 ポリトープ表現とHull Monitor
Sydney Katz:データセット全体やクラスタ中心を私たちのロボットや展開するものにアップロードしようとせずにできるもう一つのことは、ポリトープのようなより簡潔な集合表現を使用することです。
これらすべての点が与えられた場合、誰かがそれらからポリトープを定義する方法についてアイデアを持っていますか?
学生:外側の頂点を取る。
Sydney Katz:はい、その通りです。外側の頂点、つまりデータの凸包を取ることができます。
しかし、これには一種の問題があります。私たちのODDは非凸のように見え、凸包を取るだけでは、実際には運用設計領域の一部ではないように見えるこの全領域を含んでしまいます。
そこで、代わりにできることの一つは、データをクラスタリングすることです。たとえば、2つの異なるクラスタ、青いものと紫のものにクラスタリングします。そして、これらの両方のクラスタの凸包の結合を取り、より良い形状を得ます。そして、より良い形状を得るために、より多くのクラスタでそれを行うことができます。
これのアルゴリズムがどのようなものかを少しお見せしますが、その前に、これについてのSlackの会話をお見せしたいと思います。私たちがこの本の章を書いているとき、私はメッセージを送って言いました:「聞いてください。私たちがODモニターのいくつかにアルゴリズムを含めることに決めた場合、私たちはまだ議論中ですが、このようなアルゴリズムを持つことができます。全体モニターのようなものです。」そして、返事をして言いました:「私は絶対にこれに賛成です。大好きです。ホールモニターのチェックが通った場合、ホールパスフラグを送ることができます。」これが、私が世界で絶対に最高の人々と働いていることを知る方法です。
そうです。これは、この授業から実際に本に載った一つのジョークです。ここに私たちのホールモニターがあります。もしこれを想像するのに苦労している場合は、どうぞ。内側の点、内側、外側、そしてそれは本当にアイモニターを嫌っています。これは少し奇妙ですが、そうです。
これについて質問がある人はいますか、ホールモニターについて?
3.8 確率分布の超レベル集合アプローチ
Sydney Katz:運用設計領域を定義するもう一つの選択肢は、関数の超レベル集合を使用することです。今度は分布について話します。私たちができることは、それを分布の超レベル集合として定義することです。
超レベル集合という用語に馴染みがない場合、それは単に、関数値が何らかの値より大きくなるすべての点のことです。関数のプロットのようなものがあり、何らかの値で切り取るだけで、その値以上に対応するすべての点のことを考えてください。
そこで、私たちができることは、データに分布を適合させることです。たとえば、データセットに多変量ガウス分布を適合させます。そして、この分布の確率密度の超レベル集合を取ると言います。つまり、この分布における私たちの点での密度が十分に高い場合、それをODDに含め、そうでなければ含めないと言います。
超レベル集合を取ると、このような集合が得られます。しかし、これはあまり良く見えません。ここでの注意点は、この分布を選択するときに、十分に表現力のあるモデルクラスを選択することを確認する必要があることです。多変量ガウス分布はこのデータセットにあまりよく適合しません。
しかし、多変量ガウス分布の混合はデータにかなりよく適合します。そこで、この混合の超レベル集合を取ることができ、そうすると私たちの運用設計領域のかなり良い定義が得られます。
これについて良いことの一つは、これらの高密度領域と低密度領域の間で実際に簡単にトレードオフできることです。もし私たちが低密度の領域を運用設計領域に含めたくない場合、なぜなら私たちはそれらについて検証したが、これらの状態をあまり見なかったので、それほど重要ではないからです。分布のしきい値を変更するだけで簡単にトレードオフできます。
これについて質問がありますか?
学生:超レベル集合自体には...
Sydney Katz:正しいです。そうです、これを作成するときに基本的に分布を捨てます。なぜなら、現在私たちがしようとしていることは、ODDにあるかないかのようなバイナリフラグを持つことだからです。ランタイムモニターをどのように展開するかによって、分布を保持して、その値を意思決定にも使用しようとすることもできるでしょう。それはあなたのタスクによります。
これについて他に質問がありますか?
3.9 分類器ベースアプローチの問題点
Sydney Katz:この超レベル集合のアイデアを使用できるもう一つの方法があります。それは、運用設計領域内にある点の尤度を出力するよう訓練されたモデルの超レベル集合を取ることです。
たとえば、大量のデータを収集できます。運用設計領域内にあったデータを保持し、運用設計領域外の大量のデータを収集し、次に点を受け取って、それが外側にあるか内側にあるかを言い、その確率を出力する分類器を訓練できます。
たとえば、このような確率を持つ分類器を得て、その確率をしきい値化し、その確率がある値より大きい場合、それは運用設計領域内にあると言い、このようなものを得ることができます。
このアプローチの欠点は何でしょうか?
学生:毎回分布を取得する必要があり、システムが複雑すぎる場合、多くの追加を行うか、非常に派手な分布を作る必要があります。
Sydney Katz:派手な分布が必要かもしれません。しかし、この分類器を適合させるために、具体的に何が必要でしたか?これらすべての赤いデータポイントは何でしたか?
学生:運用設計領域外のもの。
Sydney Katz:基本的に、この点まですべての方法で、これらの白いデータポイントのみを使用しました。白いデータポイントを適合させ、白いデータポイントなどなど。しかし、ここでは、ODDの外からこれらすべての赤いデータポイントを取得し、この分類器を適合させる必要がありました。そして、問題は、運用設計領域外からこれらすべてのデータがあった場合、おそらくそのデータでシステムを設計しただけでしょう。
学生:ああ、でも、あなたがシステムを偽造して、失敗するような束のものがあり、そして突然ODDの内側と外側の両方を持っているとしたら?
Sydney Katz:ODDは、失敗したかどうかに関係なく、検証中に見たすべてのものだと言います。
学生:なるほど。
Sydney Katz:そうです。そして、彼らは私たちが見たことのない状態のようなものになる可能性があります。交通信号を輸送するトラックは、ここでのアイデアの種類です。そして、私たちは見たことのない状況にいるときを言いたいのですが、これを訓練するためには、見たことのないデータが必要になります。これが問題の種類です。
学生:はい、その通りです。
Sydney Katz:それがこのアプローチの問題です。時々、少しの分布外データを得ることができます。たとえば、昼間に動作するよう訓練されたタクシーシステムがあったが、夜間の画像がいくつかあるとします。そうすると、夜間のものを区別するよう分類器を訓練しようとすることができるかもしれません。
しかし、夜間でタクシーシステムが動作している大量の画像があった場合、それらの画像で訓練すればよかったでしょう。そして、多くの場合、運用設計領域外からのデータを必要とする運用設計領域検出の方法は、通常そのようなデータを持っていないため、あまり有用ではありません。覚えておくべきことです。
これについて他に質問がありますか?
学生:最大の問題は、有用で簡潔な状態表現をベクトル形式で任意のベクトル空間に持つことが常に与えられているわけではないということだと思います。たとえば、画像を取る場合、それを平坦化してピクセル空間で行うつもりです。
Sydney Katz:そうですね、それはばかげています。しないでください。
学生:次のスライドに直接行きます。
Sydney Katz:そうです、それはまさに私たちが向かっているところです。これが少しでもあなたを満足させることを願っています。私は完全に同意します。それははるかに困難です。
4.1 次元の呪いと距離メトリックの問題
Sydney Katz:これはすべて低次元ではうまく機能しますが、高次元では少し奇妙になります。具体的には、ODDが画像によって定義される場合です。良い点です。
そうです、それはまさに私たちが向かっているところです。これが少しでもあなたを満足させることを願っています。私は完全に同意します。それははるかに困難です。そして、主に次元の呪いのためにはるかに困難です。データがカバーしなければならない空間の体積が、データの次元とともに指数関数的に増加するからです。
たとえば、私たちのタクシー画像では、4096ピクセルのようなものです。つまり、すべての画像でカバーする必要がある4096次元空間があります。そして、それは簡単にできることではありません。そのような空間を適切にカバーしたい場合は、大量のデータが必要になります。
第二に、あなたが指摘していたように、この空間に入ると距離メトリックが意味を失う傾向があります。たとえば、2つの画像間の距離とは何でしょうか?それはピクセル値のベクトル間のユークリッド距離でしょうか?これはあまり明白ではありません。
そして多くの場合、2つの画像間のより意味的な距離測度が欲しいのですが、これは一般的に明白でないことです。したがって、高次元にスケールアップする際は注意が必要です。
4.2 多様体仮定と次元削減アプローチ
Sydney Katz:これについて行える対処法がいくつかあります。一つの選択肢は、単にそれを力ずくで行い、より多くのデータを取得し、より良いモデルを得ることです。ガウス分布は機能しないかもしれませんが、正規化フローのようなものを適合させようとすることができます。ただし、それを行おうとすることにも問題があることが示されています。興味がある場合は、後で私に話しかけてください。しかし、これは一つの選択肢です。これらの高次元設定にスケールするより良いモデルを持とうとすることができます。
もう一つの選択肢は、画像の全セットのような高次元データが何らかの低次元多様体から来たと仮定し、その多様体を見つけて、その低次元多様体ですべての運用設計領域の定義を行おうとすることです。
それはここではどのように見えるでしょうか?私たちが4096次元のタクシー画像を取り、何らかの次元削減技術を使用したとしましょう。この場合、オートエンコーダを使用しました。しかし、使用できる多くの異なる技術があります。それについてはあまり話すつもりはありません。
しかし、ここでは基本的にこの4096次元画像を取り、それを2次元空間に投影しました。これは画像の新しい次元を完全に視覚化したものです。ここに2つの特徴があり、たとえばこの画像は、この2次元空間内の点の一つにマップされ、それに似ているが異なる角度や滑走路上の横方向位置からの他の多くの画像が、この低次元空間で異なる点を生成します。
そして今、これは2次元なので、距離は少し意味をなすようになります。そして、この低次元空間で運用設計領域を定義できます。最近傍や、私が話した他のアプローチのいずれかを使用して。
4.3 オートエンコーダによる2次元投影実験
Sydney Katz:そして、アイデアは、実行時に新しい画像を取得したときです。たとえば、ここのこの画像、この画像は実際にこのここの画像とはあまり似ていません。かなり飽和しています。おそらく、これを引き起こしている奇妙な太陽のまぶしさのようなものがあるかもしれませんが、非常に明るいです。端がかろうじて見えます。これは私たちの運用設計領域の一部ではありません。
そして、この画像を、非常に似て見える他の多くの画像とともに、この低次元多様体に投影すると、ここに見る赤い点が得られることがわかります。そして今、実際に、投影したときの画像が運用設計領域の一部ではないことがわかります。したがって、実行時に「やあ、この低次元多様体にない点を取得しました」と言ってそれをフラグできるでしょう。そして、それを運用設計領域外としてフラグします。
4.4 特徴崩壊(Feature Collapse)現象の発見
Sydney Katz:しかし、これには一つの問題があります。代わりにこの画像を取得したとしましょう。これも運用設計領域にはありません。なぜなら、これは実際に非常に暗いからです。夜間にこれを行っているようなものです。昼間の画像の運用設計領域にはありません。
しかし、これをそれに似た多くの点とともに低次元多様体に投影すると、ここのすべての黄色い点が得られます。これらは実際に、運用設計領域の一部であるこの多様体内の領域に投影されました。しかし、これは私たちが望んでいた動作ではありません。
たとえば、ここの白い点は、実際に運用設計領域内にある別の画像のようなもので、これらは低次元空間で互いに非常に近い点に投影されます。
これには名前があることがわかります。これは特徴崩壊と呼ばれます。そして、アイデアは、これらの低次元空間に投影するとき、これらの異なる画像集合が実際にこれらの空間で分離されたままになるという保証がないということです。そして、これらの飽和した画像では機能しましたが、これらすべての暗い画像は実際に、昼間の画像によって定義された運用設計領域内の領域に崩壊したため、注意が必要です。
これについて質問がありますか?
学生:一部の人々は、あなたの画像の何らかの埋め込みを取得し、それは再び画像の低次元表現のようなものだと思いますが、そしてコサイン類似度のようなものを行います。それはこれにどのように適合するでしょうか?
Sydney Katz:かなり似ています。これを2次元埋め込みと考え、ユークリッド距離を使用していますが、代わりにコサイン距離を使用して最近傍を定義することができます。そうです。それは似たようなものでしょう。特徴崩壊はありませんか?
学生:この場合、これらの黄色い点とこの白い点の間のコサイン距離は、まだかなり小さいと思います。そのため、その場合でも特徴崩壊の問題があると思います。
Sydney Katz:そうですね。見る以外に特徴崩壊を検出する方法はありますか?
学生:データを見る以外に特徴崩壊を検出する本当に良い方法はないと思います。しかし、それが問題である理由の一部は、検出できないという事実のためです。
Sydney Katz:また、これは私たちが検証したいモデルとは関係がありませんよね?つまり、これは再びデータの関数であり、私たちのモデルが実際に今度は多様体全体で機能するかどうか、またはこのようなものについて私たちは何も述べていませんよね?
学生:はい、その通りです。つまり、私が言っているように、運用設計領域を定義するために使用するデータは、理想的にはオフライン検証中に見たデータです。したがって、そのデータに対してフェイルア分析を実行しました。そのデータに対して形式的手法を実行したか何かで、今、この地域で私のシステムがどのように実行されることを期待するかを知っています。そして、その地域の外にいる場合、基本的に保証がないということです。
これについて他に質問がありましたか?これらは任意です。これらは単に任意です。オートエンコーダを訓練しただけで、高次元から低次元に行き、それを高次元に投影し直そうとし、中間で出てくるものは何でもです。多くの場合、それはあまり解釈可能ではありません。そして、2Dである必要はありません。明らかに視覚化できるように2Dにしましたが、すべての方法を2次元まで崩壊させなければ、おそらくより良いパフォーマンスが得られるでしょう。
5.1 不確実性定量化の目的と重要性
Sydney Katz:それが運用設計領域モニタリングです。繰り返しますが、これは私たちがシステムが動作することを期待するドメインを定義し、そのドメインの外にいるかどうかを判断する方法です。
今度は、不確実性定量化と呼ばれるものについて話します。ここでの基本的なアイデアは、システムの現在および将来の動作の様々な側面における不確実性を理解することが有用であるということです。なぜなら、今何が起こっているのか、または何が起ころうとしているのかについて不確実である場合、その状況をフラグし、再び人間に制御を移すか、何らかのセーフモードに入りたいかもしれないからです。
これは実際に、システムの動作の何らかのモデルを使用し、その予測における不確実性を定量化しようとすることです。
基本的に私たちが行うことは、システム動作のある側面を予測するモデルを作成することです。それはシステムの現在の状態を予測することかもしれませんし、システムの次の行動を予測することかもしれませんし、そのようなものです。そして、その予測における不確実性を理解して、何が起こっているのかを理解します。
たとえば、私たちのロボットに「私は壁から2メートル離れていると思うが、これについて60%しか確信していない」と言わせることができるかもしれません。そして、その情報を取って、そこからロボットに何をさせたいかを決定できます。
5.2 出力不確実性vs.モデル不確実性の概念説明
Sydney Katz:2つのタイプの不確実性があります。そして、それぞれについて少しデモンストレーションを行って、それらが何であるかを学ぶのを助けます。
最初のタイプの不確実性について、ここで少し練習を行います。これは2枚の写真です。まだその中に何があるかは全く見えませんが、これらの写真の一つはMichaelで、これらの写真の一つは十代の頃のMichaelです。そして、これらの写真の一つは、彼が十代の頃に似ていたとされるMatt Damonです。
彼は十代の頃に本当に似ていました。彼は私ほど優雅に年を取らなかった。Matt Damonがこれを見るかどうか興味深いです。実現させようとすることができます。
どちらがどちらかを推測してもらいます。今のところ、それらは少し暗すぎますが、段階的に少し明るくしていきます。1レベル上げましょう。そこに人がいることがわかりますか?私のiPadでは見えますが、ここではそうでもないかもしれません。もう1つ上げましょう。
人々の輪郭が見え始めることができます。どちらがMichaelだと思いますか?
学生:右側の人。
学生:左側の人。
学生:半円が見えます。
学生:左側にとても見えます。
Sydney Katz:そうです、Michaelは左側です。まだ本当にわからないけれど。まだ少し不確実です。しかし、これらの写真の明度を上げるにつれて、私の確信、そして願わくばあなたの確信も増加しました。
そして、それが出力不確実性の例です。それらが非常に暗かったとき、あなたはどちらがMichaelでどちらがMatt Damonかを本当に知りませんでした。そして、それらが明るかったとき、まだ本当にわからないかもしれませんが、おそらくこれが実際に十代の頃のMichaelであることについてわずかにより確信していました。
これが出力不確実性の背後にあるアイデアです。
5.3 マイケル・ダモン写真実験による出力不確実性デモ
Sydney Katz:最初のタイプの不確実性について、ここで少し練習を行います。これは2枚の写真です。まだその中に何があるかは全く見えませんが、これらの写真の一つはMichaelで、これらの写真の一つは十代の頃のMichaelです。そして、これらの写真の一つは、彼が十代の頃に似ていたとされるMatt Damonです。
彼は十代の頃に本当に似ていました。彼は私ほど優雅に年を取らなかった。Matt Damonがこれを見るかどうか興味深いです。実現させようとすることができます。
どちらがどちらかを推測してもらいます。今のところ、それらは少し暗すぎますが、段階的に少し明るくしていきます。1レベル上げましょう。そこに人がいることがわかりますか?私のiPadでは見えますが、ここではそうでもないかもしれません。もう1つ上げましょう。
人々の輪郭が見え始めることができます。どちらがMichaelだと思いますか?
学生:右側の人。
学生:左側の人。
学生:半円が見えます。
学生:左側にとても見えます。
Sydney Katz:そうです、Michaelは左側です。まだ本当にわからないけれど。まだ少し不確実です。しかし、これらの写真の明度を上げるにつれて、私の確信、そして願わくばあなたの確信も増加しました。
そして、それが出力不確実性の例です。それらが非常に暗かったとき、あなたはどちらがMichaelでどちらがMatt Damonかを本当に知りませんでした。そして、それらが明るかったとき、まだ本当にわからないかもしれませんが、おそらくこれが実際に十代の頃のMichaelであることについてわずかにより確信していました。
これが出力不確実性の背後にあるアイデアです。
5.4 牧場ドレッシング法廷証言画像によるモデル不確実性デモ
Sydney Katz:ここにモデル不確実性があります。誰かがこれが何であるか教えてくれますか?
それがポイントです。皆さんは、これが何であるかについて内部モデルを持っていません。これは、画像生成の初期の頃の写真であることがわかります。初期というのは、2022年だと思いますが。これはDALL-Eのようなもので、誰かがそれに「法廷で証言するランチドレッシングのボトルの写真を生成して」と頼んだところです。
これがそれが表現されていることだと思います。しかし、これはモデル不確実性です。なぜなら、あなたの世界の内部モデルには、おそらく法廷で証言するランチドレッシングのボトルが含まれていないからです。以前にそのようなものを見たことがないからです。私は確実に見たことがありません。
これがモデル不確実性です。世界についてのデータの不足または知識の不足です。
ここにモデル不確実性のもう一つの例があります。これらを少し研究してください。そんなに時間はかからないはずです。これはトリック問題ではありません。
この式は何ですか?
学生:5。
Sydney Katz:そこには何もクレイジーなことはありませんでした。これはどうですか?
あなたはこれに対する答えを持っていますか?
学生:なぜ12ではないのですか?
学生:3だと思います。
Sydney Katz:どこからそれを得ましたか?
学生:一意のコードだと仮定しています。
Sydney Katz:なるほど。これは良いです。つまり、あなたはモデルが間違って確信している可能性があります。
学生:いや。ポイントはモデル不確実性のようなものでした。あなたは単にこれが何であるかを知らないのです。
Sydney Katz:確かに。私たちはモデルに手を上げて「わからない」と言ってもらいたいです。
学生:他の質問。すみません。なぜMichael Matt Damonと出力不確実性のようなものなのですか?どちらがどちらなのか?出力は、MichaelかMatt Damonかのようなものですか?
Sydney Katz:あなたはその出力について不確実です。
学生:ああ、わかります。つまり、私は政策で、私は確実です。あなたは政策です。牧場ドレッシングでも、あなたは政策です。私たちは政策のようなものではありません。私たちは、あなたの内部モデルを見て、Matt DamonとMichaelのどちらかについてあなたの内部モデルの確実性または不確実性は何かと言っています。そして、ここで私たちは、あなたが得たこのモデルを持っていて、そしてその内部モデルを使用してこれを計算しました。あなたの内部モデルは、泣いている顔と逆さまの顔が何をするかについて何も知らないので、理想的には「これが何であるかわからない」と言うでしょう。それはモデル不確実性のようなものです。
学生:これは分布外の状況のようなもので、私たちが全く概念を持たないものですが、ここには本当に不確実性はありませんよね?なぜなら、これはこれかもしれない、これはそれかもしれない、50/50と言うことはできませんが、代わりに私は全くアイデアがありません。
Sydney Katz:まあ、不確実性はありますよね?逆さまの顔マイナス泣いている顔の割り算のようなものの事実は... そうですね、これについて自分でも何度も行ったり来たりしたと思います。これについて私たちも何度も行ったり来たりしました。私が後でモデル不確実性を提示する方法は、不確実であるか不確実でないかのようなバイナリのようなものです。なぜなら、そこで不確実性の尺度を定義するのは非常に困難だということに同意するからです。
しかし、私たちがそれに取り組む方法は、確率的な観点からです。だから私はそれを不確実性と呼ぶでしょうが、あなたに同意します。それを定義するのは困難だと思います。しかし、それでも、これが不確実性出力不確実性かモデル不確実性かを知るテストのようなものでした。私が見た例から、最初のものはODD内にあるが、少し不確実で、ECPを行うことができ、おそらく出力にある程度の確率を得るでしょう。このものは、ODD外のはるか外にあります。
学生:そうです、そうです、それは正しいと思います。
6. 出力不確実性
6.1 Aleatoric(既約)不確実性の特徴
Sydney Katz:あなたが言ったことを要約すると、出力不確実性は単一の入力が複数の異なる出力につながる可能性がある場合に発生します。たとえば、他のエージェントによる世界のランダム性があるかもしれません。私がどこにいるかは正確に知っているが、これらの人々が何をするかはわからない。しかし、これらの人々が何をするかわからないということを知っている。それは私が知ることができないものです。またはコインフリップのようなもので、表か裏です。それが表か裏に着地することは知っているし、どちらかわからないことも知っているが、そのうちの一つが起こることは知っています。
そしてもう一つの一般的な例は、センサーノイズです。センサーがノイズがあることを知っています。一つの状態が異なる可能な観測につながる可能性があることを知っています。センサーがノイズがあるからです。それらが必ずしも何であるかは知りませんが。
多くの場合、これはaleatoric不確実性または既約不確実性と呼ばれます。それは世界に内在するものです。
6.2 最小二乗法からの拡張による分散予測
Sydney Katz:そして、モデル不確実性は、システムの動作を予測するために使用しているモデルの制限により発生します。たとえば、データの不足により。そこで、これをepistemic不確実性または還元可能不確実性と呼ぶことがあります。なぜなら、そのトピックについて学習すれば、予測を行うことができるからです。
ここで、実行例として使用する非常にシンプルなデータセットがあります。入力点Xと出力Yがあり、このモデルを学習するためのデータポイントがここにあります。
ここでは低い出力不確実性があります。それらはすべて一緒にクラスタ化されています。そして、こちら側では高い出力不確実性があります。そして、基本的にデータがない中央では、高いモデル不確実性があります。
出力不確実性から始めましょう。出力不確実性は、システムから収集するデータに存在します。つまり、私たちは運用設計領域内にいます。世界にはこの固有の不確実性があることを知っているだけです。そして、それがデータに存在するため、実際にこのデータを使用して、この不確実性を定量化できるモデルを訓練できます。データから学習できるからです。
そして、これを行うために、予測の分布のパラメータを出力するモデルを訓練します。現在いる状態を予測するだけでなく、その状態周辺の何らかの分散で現在いる状態を予測します。
そして、これを行うために、第2講で見せた私のお気に入りの導出に戻ります。基本的に、入力に何らかの関数を適用し、それにガウスノイズを適用することによってデータが生成されたという仮定をすることによって、最小二乗損失関数を導出しました。これをすべて代入し、データの対数尤度を最大化し、それが最小二乗損失関数と等価であることを見ました。
しかし、これを行ったときに行った主要な仮定は、分散が定数であるということでした。つまり、ガウスノイズを追加するが、何らかの定数分散でと言いました。入力に依存しません。そして今、私たちは実際に、入力が与えられたときの現在の不確実性が何であるかを定量化したいと思います。そこで、その分散を変化させることを許可します。したがって、非定数または変化する分散があります。
そして、代わりに、私たちの平均または私たちが以前にfと呼んでいた予測がxの関数であると言います。これは以前と同じですが、今度は分散もxの関数であることを許可します。したがって、以前この最適化を行っていたとき、分散を取り除くことができました。私たちのθがそれに依存していなかったからです。しかし今、私たちのパラメータθが分散と平均の両方を予測すると言っています。だから、それらの項を式に保持しなければなりません。
しかし、まったく同じプロセスに従います。そして今、平均と分散の両方を含む、最適化できる一種の損失関数を得ます。したがって、データからそれら両方を学習できます。これは基本的に、モデルを訓練するときに接続する損失です。
6.3 平均と分散を同時学習する損失関数の導出
Sydney Katz:ここで直感を与えるために、この損失関数に存在する項を見てみましょう。以前にあった平均二乗誤差項がまだありますが、今度は出力する分散に関係する何かがあります。ここの2番目の項は単に分散の対数で、私たちは最小化しようとしています。
つまり、分散の対数を最小化すると言っています。だから分散を小さくしてください。しかし、2番目の項でも、この項を小さくしたいのですが、最小化しようとしています。しかし、分散は分母にあります。そして、この場合、分散をより大きくすることで、実際にこの項をより小さくするでしょう。
そして、基本的に私たちがここで言っていることは、この項を小さくする2つの方法があるということです。出力と予測の間の平均二乗誤差を最小化するか、分散を増加させることができます。そして、アイデアは、すべての種類の出力不確実性があり、すべてのデータポイントに完全に一致する予測を作ることができない点では、この平均二乗誤差を最小化できない点で、この分散を高くしようとするということです。
つまり、基本的に、二乗誤差が高い領域で分散を高くすると言っています。つまり、良い予測を作ることができない領域では、高い分散を出力したいのです。そして、一般的には、より低い分散を出力したいのです。そして、このようにバランスを取ると、実際にキャリブレーションされた出力不確実性を得ることがわかります。
これは非常にクールだと思います。
6.4 回帰モデルでの実装例と95%信頼区間
Sydney Katz:ここで、これがどのように見えるかを示します。実行例として使用していたデータセットがここにあります。そして私は実際に、平均と分散の両方を出力するために、この正確な損失関数を使用してモデルを訓練しました。そして、ここでは、モデルの平均をこの青い線としてプロットしています。そして、2標準偏差離れたものを、プラスマイナス2標準偏差として陰影のある領域としてプロットしています。
私たちはこれがガウス分であると仮定しています。したがって、これはデータの約95%を含むはずです。そして、実際にほぼそうであることがわかります。したがって、実際に非常にうまく機能します。そして、これは回帰モデルの不確実性を定量化するための非常に標準的な実践です。
これについて質問がありますか?
学生:データがない場所では、まだかなり確信しているということですが、おそらくそうではないでしょう。
Sydney Katz:そうです、少し後でそれについて話します。しかし、基本的に、この領域の不確実性を信頼することはできません。そうですね、それは良い点です。
6.5 分類モデルでのSoftmax分布活用
Sydney Katz:したがって、低分散を持つ場所は低出力不確実性に対応し、前にデータを見たときに言ったように、高分散を持つ場所は高出力不確実性に対応すると言えます。
分類モデルの場合、多くの分類モデルは実際にデフォルトで既に分布を出力しています。最後にソフトマックス関数を適用する任意の分類モデルは、既に離散分布を出力しています。なぜなら、1に合計されるクラスに対してこれらの値を出力するからです。
そこで、出力のソフトマックスを取り、たとえば、クラス1が真のラベルであることに80%確信していると言うことができます。そして、一般的には、この種の分布は低不確実性を持っていると言うことができます。
そして、各クラスがラベルであることに等しく確信している場合、真のクラスが何であるかについてかなり高い不確実性を持っています。そして、このシナリオでは、より心配になり、ランタイムモニタリングのためにそのシナリオをフラグする可能性が高くなります。
6.6 キャリブレーション問題と温度スケーリング手法
Sydney Katz:しかし、ここには問題があります。これは何度も示されている問題で、出力分布のキャリブレーションに問題があることが多いということです。現代のニューラルネットワークが適切にキャリブレーションされていない傾向があることについて話している、しばらく前からのこの本当にクールな論文があります。
ソフトマックス層を最後に付けたニューラルネットワークを訓練するだけでは、ソフトマックス確率は実際には正しい確率ではない可能性があります。第2章でモデル検証を行っていたときのことを覚えていれば、これらのキャリブレーション曲線などをプロットしていて、y = xと一致するはずの曲線がありました。
ここの青いモデル(現代のニューラルネットワークのような)は、あまりキャリブレーションされていないように見えます。一般的に、これは非常によく起こる問題です。
この理由は、モデルを訓練するときに対数尤度を完全に最小化できた場合、つまり試行しようとしている分布に一致する無限のデータと無限のモデル容量があり、そのモデルのグローバル最小値を得ることができた場合、出力分布は私たちが気にする真の分布と完全に一致するということです。
しかし、もちろん実際には、それは決して当てはまりません。訓練は常に近似的です。無限のデータはありません。無限のモデル容量はありません。そして、不確実性を信頼できるキャリブレーションされたモデルを実際に得たい場合は、通常、事後にいくつかの追加技術を適用する必要があります。
時間があまりないので、本当に短いキャリブレーション技術を一つだけ紹介します。しかし、興味がある場合は、本のそのセクションにこれについての詳細情報があります。
しかし、私たちができることの一つは、ソフトマックス分類モデルにとって本当にシンプルな温度スケーリングと呼ばれるものです。ここに私たちのソフトマックス関数があり、基本的に、ラムダと呼ばれるこの追加パラメータを追加するだけです。そして、それは基本的に私たちのソフトマックス確率を調整します。
ちなみに、このラムダは1/tとして書かれることもあり、tは温度パラメータと呼ばれ、それが温度スケーリングと呼ばれる理由ですが、これらは等価な定式化です。
ラムダに対して選択できる様々な値があります。ラムダが1に等しい場合、これは私たちが常に使用する典型的なソフトマックス関数に減少します。つまり、以前に持っていた確率を得るだけです。ラムダが0に等しい場合、xの0乗は1になります。そして、これもxの0乗になります。つまり、1をkまでの1の合計で割った1/kになります。そして、すべてのクラスに対して同じことになります。つまり、基本的にすべてのクラスにわたって一様確率に向かう傾向があります。
そして、ラムダが無限大に等しい場合、反対方向に行きます。すべての確信を最大クラスに割り当てることになります。
理想的には、おそらくここのどこかの中間にいたいのですが、これが適切にキャリブレーションされていないことを知っています。そこで、基本的により良いキャリブレーションを得るラムダの値を選択したいと思います。
再び、キャリブレーション セットで負対数尤度を最小化するラムダの値を選択できます。つまり、データのセットがあります。ラムダの値を選択し、そのすべてのデータで負対数尤度を計算し、最良の結果を出すラムダの値を選択します。
これがどのように見えるかを簡単にお見せします。ここに私が連続世界問題のアクションを予測するよう訓練したモデルのデータがあります。ラムダが1のとき、つまり温度スケーリングを行わないとき、あまりキャリブレーションされていないように見えます。この線y = xにあまり一致していません。
そして、実際にできることは、ラムダを変更して、このキャリブレーション データセットでの負対数尤度をプロットすることです。そして、負対数尤度を最小化しようとします。つまり、この負対数尤度の最小値に到達するまで、ラムダを右に移動しようとし、そして、よりキャリブレーションに近いものを得ます。
1つのパラメータしか変更していないので、完全にキャリブレーションされるようにすることは決してできないかもしれませんが、最小の負対数尤度を選択することで最善を尽くすことができます。そして、もちろん、ラムダを非常に高くすると、この非常に悪いキャリブレーションを得ます。そして、低くしすぎても、高くしすぎても同様です。
これについて質問がありますか?
学生:キャリブレーション データセットとは何ですか?
Sydney Katz:基本的には検証データセットのようなものですが、その上にもう一つあり、モデルをキャリブレーションするために使用しています。
学生:訓練したのと同じ分布から来るべきですか、それとも必要ありませんか?実際の世界で展開するときにモデルが見ることを期待する分布から来るべきです。
6.7 予測集合とConformal Prediction
Sydney Katz:また、これらの分布を出力し、それらをキャリブレーションするこれらの方法を使用することもできますが、予測集合と呼ばれるものも使用できます。時間の関係で、これについて非常に速く進みますが、オフラインで話し合うことを嬉しく思います。
しかし、ここでのアイデアは、分布を出力する代わりに、集合を出力し、「私たちはこれだけ確信している」というカバレッジを言うことができるということです。たとえば、私たちの真の出力がこの集合内にあることを95%確信していると言います。
たとえば、私たちのロボットは「私はここプラスマイナス2メートルにいると思い、ここプラスマイナス2メートルにいることを95%確信している」と言うかもしれません。それが私たちの予測集合です。
予測集合を得る一つの方法、そして繰り返しますが、これをかなり速く進むので、これについてオフラインで話すことを嬉しく思いますが、たとえば95%のカバレッジを持つ予測集合が欲しく、これが出力に対する分布であることを知っているとします。この分布の95%区間または95%確率質量を取ることができ、それが予測集合を定義するでしょう。
分類タスクでは、予測集合に95%の確率を持ちたいかもしれません。基本的に、95%の確率質量を蓄積するまでクラスを含めるだけです。それはこのようなものになるでしょう。
そして、これらの予測集合を使用して、高い不確実性または低い不確実性があるかどうかを理解できます。予測集合が大きいほど、不確実性が高くなります。なぜなら、「私はここプラスマイナス100メートルにいることを95%確信している」と言っているようなものだからです。「私は実際にどこにいるかについてかなり不確実です」対「私はここプラスマイナス2センチメートルにいることを95%確信している」と言っている場合、「私はどこにいるかについてかなり確実です」。
このアプローチの問題は、時間の関係でもう少し速く進むために、これは出力分布がキャリブレーションされていることを仮定するということです。不確実性集合を取らなければならないからです。出力分布がキャリブレーションされていない場合、間違った不確実性集合を得ることになります。
そこで、できることの一つは、この分布を最初にキャリブレーションするために、私が話したすべての方法を使用することができます。
または、最近の皆の好きなバズワードを取り、Conformal Predictionと呼ばれるものを適用することができます。これは皆のお気に入りです。Conformal Predictionは基本的に、キャリブレーションされていない不確実性測度を使用しても、正確な予測集合を生成することを可能にします。だから、それが非常に人気がある理由だと思います。
なぜなら、私が話したキャリブレーション ステップを行う必要なしに、これらの予測集合を生成できるからです。これはかなりクールです。
これが私が持っている主な要点で、2時32分なので、モデル不確実性に飛ぶことにします。ここに論文があります。それは非常に良いものです。つまり、Conformal Predictionに入ったことがなく、何が起こっているのかのアイデアを得たい場合、この論文は本当に本当に良いです。そして、彼らはそれと一緒に行くYouTubeチュートリアルも持っています。ビデオを見るのが好きな私のような場合、それも本当に良いと思います。
これらをめくります。これがどのように機能するかですが、実際にはそれについて話すつもりはありません。
7. モデル不確実性
7.1 Epistemic(還元可能)不確実性の特徴
Sydney Katz:それが出力不確実性でした。さて、モデル不確実性というアイデアがあります。そこで、あなたは尋ねるかもしれません。私たちが以前に話していたように、なぜ同じ方法でモデル不確実性を定量化できないのでしょうか?
その理由は、モデル不確実性は通常、データの不足によるものだからです。この領域にはデータがないので、この領域で不確実性推定がキャリブレーションされることを期待する理由がありません。そこにはデータがないので、私たちが欠いていたデータは実際にはこのように見えるかもしれず、そうでない可能性もあることを信じる理由がありません。私たちは単に知らないのです。
したがって、出力不確実性の方法を使用して予測する不確実性推定が実際にキャリブレーションされ、モデル不確実性を予測することを可能にすることを期待することはできません。
7.2 ベイジアンモデル平均化の理論的基盤
Sydney Katz:では、これについて何をすればよいでしょうか?
ここで再び、なぜ一つのモデルだけを選ぶのでしょうか。すべての可能なモデルに対する分布を維持することができます。そして再び、ここでベイジアンアプローチを取ります。そして、アイデアは、基本的にこのデータを適合させるために使用できる多くの可能なモデルがあるということです。
これらのモデルはすべて、実際にこのデータにかなりよく適合しますが、ここの中央の領域では非常に異なって見えます。これは、中央の領域で高いモデル不確実性があることを示しています。
そして、私たちがこれを定義する方法は、このデータを生成した可能性のあるモデルに対する分布があると言うことです。そして、これをP(θ|D)と呼び、θはモデルのパラメータで、データの生成に使用された可能性があります。
そして、新しい点について予測を行いたいとき、この表現を使用します。入力とすべての可能なモデルが与えられた出力の確率は、基本的にすべての可能なモデルの積分になると言います。特定のモデルが与えられた場合の出力の確率です。つまり、モデルがパラメータθによって与えられることを知っていた場合、そのデータポイントを得る確率は何でしょうか。そして、私たちが持っているデータが与えられた、その特定のモデルの確率を掛けます。
これはベイジアンアプローチです。そして、具体的に、この技術はベイジアンモデル平均化と呼ばれます。私たちが行っていることは、このデータに適合できる多くのモデルがあると言い、一つだけを選ぶつもりはないということです。代わりに、すべての可能なモデルにわたって平均化して出力を得ます。
7.3 アンサンブル手法による近似実装
Sydney Katz:しかし、お察しの通り、ここには積分があり、すべての可能なモデルにわたって積分しています。これはかなり扱いにくいと感じます。そして、一般的にこの計算を実行することは扱いにくいことがわかります。
そこで、代わりに試すことができる一つのことは、データが与えられたθのサンプルを描画するためにMCMCを使用することです。しかし、θがニューラルネットワーク全体のパラメータのようなものである場合があることを想像できます。そして、人々はこのようなMCMCを行う方法を探求してきましたが、一般的には、このMCMCを行うことも非常に困難で、興味のあるモデルクラスによっては扱いにくい場合もあります。
では、実際にこれについて何をするのでしょうか?実際に実践でうまく機能する傾向があることの一つは、モデルのアンサンブルを作成することによって近似ベイジアンモデル平均化を適用することです。
ここでこの派手なMと呼びます。これらはすべて、P(θ|D)に従って高い尤度を持ちます。前のスライドで示していたすべてのモデルのように、それらはすべてデータによく適合します。したがって、それらはすべて、この確率分布に従って高い尤度を持つでしょう。そして、基本的にアンサンブル内のすべてのモデルにわたって平均化することによって積分を近似します。
これがどのように見えるかは、たとえばニューラルネットワークを訓練していて、異なる初期化から始め、最適化を実行し、これが基本的に損失関数の異なる局所最小値に私たちを置くことを願うようなものです。
そして、高いP(θ|D)または低い負のP(θ|D)を持つモデルの束を得ます。そして、可能なモデルに対するこの種の分布を得ます。そして、私たちが持っているモデルの平均を取ることによって、高いモデル不確実性があることをここで知ることができます。
学生:ここでも、ガウス過程のような場所でこれがより自然に現れる場所だと思います。多くの人が話すことを計画していたと思いますが、多くの人がそれを知っていると思います。そして、それはこれのより自然な応用です。かなり大きな事前不確実性があり、それについて確実な場合にのみ不確実性が減少するところです。そして、これもそうだと思います。
Sydney Katz:実際に、私はガウス過程を使用してこの図を生成しました。誰にも言わないでください。
学生:しかし、そうですね、ガウス過程は超高次元のようなものにはあまりスケールしない傾向があることが一つの課題だと思います。
Sydney Katz:そうですね、ガウス過程にはモデル不確実性とaleatoric不確実性のアイデアが自然にエンコードされていると思います。定義の中に正しく含まれているからです。そのため、この図を生成するのが非常に簡単だった理由です。
学生:内容の図について質問があります。損失関数がより凸になるにつれて、アンサンブルが同じパラメータに崩壊する可能性が高くなるため、これはより困難になるようです。では、ある意味でアンサンブルを使用することはまだできますか?アンサンブルの部分が十分である方法をどのように取得するのでしょうか?
Sydney Katz:それは素晴らしい質問です。数スライド後にその例を示しますが、それに対処する方法については実際には話しません。しかし、ランダム化事前関数のようなものがあると思います。基本的に、ネットワークのアンサンブルを訓練している場合、最初に異なる関数を表現するよう訓練しますが、データがある場所では、望むものに崩壊するはずです。したがって、アンサンブル内のモデルでこの追加の多様性を奨励しようとする様々な方法があります。
また、同じような共通の局所最小値を持つ可能性が低くなるように、異なるモデルアーキテクチャを試すこともできます。しかし、一般的には、心配しなければならないことです。
学生:そして、データが完全または非常に複雑な場合、真のデータの場合、これは問題ではありませんよね?データが真に複雑な場合、モデルは非常によく適合するからです。
Sydney Katz:そうですね、グローバル最小値が一つある場合、これらはどれも...そうすると大丈夫です。
学生:そうですね、そうですね、通常はそうではないと思います。しかし、そうですね。
Sydney Katz:他に質問がありますか?[笑い]
7.4 局所最適解の多様性確保の重要性
Sydney Katz:分類モデルに対してもこれを行う別の例を示しましょう。連続世界でのすべての状態で取られるアクションを予測するモデルを訓練したいとしましょう。
そのためのアンサンブルを訓練できます。そして、たとえば、データがない領域では、基本的にすべての異なるアクションに等しい確率を持つモデルに平均化されるはずです。そして、多くのデータがある場所では、取ろうとしているアクションについて非常に確実になります。
アンサンブルで注意すべき問題に戻ると、私たちはこれが起こることを望みます。それらは多くの異なる局所最小値に終わります。しかし、これが起こらない理由は必ずしもありません。それらすべてが同じ局所最小値に終わり、すべて同じものに崩壊する可能性があります。
そして、数分前に言ったように、それらはすべて同じ方法で間違いに対して非常に確信を持つことになります。申し訳ありません、Robert、あなたの防御の前にあなたの自信を高めています。
そうです、これは起こる可能性があり、実際に私の研究でアンサンブルを適用したときに私に起こったことがあります。それらはすべて、いくつかのデータポイントで同じ方法で間違っていて、そうです、それはそこでリスクを負うことです。
一般的に、十分な多様性を確保しようとするべきです。本では、これを行う方法についての論文を一つ引用していると思います。しかし、一般的に、そうです、これは人々が調べてきた研究分野です。
7.5 アンサンブル崩壊問題の実際の経験
Sydney Katz:アンサンブルで注意すべき問題に戻ると、私たちはこれが起こることを望みます。それらは多くの異なる局所最小値に終わります。しかし、これが起こらない理由は必ずしもありません。それらすべてが同じ局所最小値に終わり、すべて同じものに崩壊する可能性があります。
そして、数分前に言ったように、それらはすべて同じ方法で間違いに対して非常に確信を持つことになります。申し訳ありません、Robert、あなたの防御の前にあなたの自信を高めています。
そうです、これは起こる可能性があり、実際に私の研究でアンサンブルを適用したときに私に起こったことがあります。それらはすべて、いくつかのデータポイントで同じ方法で間違っていて、そうです、それはそこでリスクを負うことです。
一般的に、十分な多様性を確保しようとするべきです。本では、これを行う方法についての論文を一つ引用していると思います。しかし、一般的に、そうです、これは人々が調べてきた研究分野です。
8. 故障監視
8.1 ODD内での故障可能性への対処
Sydney Katz:私たちがここでやり遂げると思うので、次のことです。運用設計領域にいるかどうかを決定します。これは私たちが持つ最初のチェックの種類です。私たちが検証した領域で動作しているかどうかということです。
次に、その領域内で私たちの不確実性を定量化しようとするかもしれません。モデル不確実性は、実際にはポイント1とも少し分類するでしょう。
しかし、私たちの不確実性について良好だとしましょう。運用設計領域にいることがわかっているが、多くのオフライン検証を行い、運用設計領域内でも故障がまだ時々起こることを発見しました。つまり、検証し、訓練したこの領域にいることを知っているが、それでも故障する可能性があり、その過程でそれを監視したいかもしれません。
そして、基本的に故障監視の背後にあるアイデアは、運用設計領域内で動作していることを決定したが、それでも潜在的に危険なシナリオにいる可能性があるということです。しかし、ここでの違いは、私たちがそれについて知っているということです。この検証を行い、これらの故障がどこで起こるかを知っているからです。
8.2 オンライン検証アルゴリズムの実行
Sydney Katz:ここで行えることは様々なことがあります。最も単純にできることは、基本的にオフライン検証アルゴリズムの束をオンラインで実行することです。現在いる正確な状態から到達可能性解析をオンラインで実行できます。現在いる状態からオンラインで多くのロールアウトを実行し、故障確率の推定を得ようとすることができます。
明らかに、これらは潜在的に計算コストが高いものである可能性があります。したがって、実行時に行うのは困難かもしれませんが、これらは行うことができることです。
8.3 事前計算された故障確率の活用
Sydney Katz:行うことができるもう一つのことは、たとえば、私たちが話した確率的到達可能性解析のようなものを使用して、すべての状態からの故障確率をオフラインで計算したとしましょう。そして今、現在の状態が与えられた故障確率のアイデアがあります。これらの赤い状態のいずれかにいた場合、高い故障確率があるでしょう。
そして、これをオンラインで保存し、高い故障確率がある任意の領域や状態に入っているかどうかを監視することができます。
そして、進行に伴ってこれを監視するだけかもしれません。終わりにするには良いアニメーションですね?もう一度再生します。ここに行きます。実際には別の飛行機に飛び込んでいますが、もう一度前進しましょう。どうしてそうしないのでしょうか?
故障監視について質問がありますか?本にはこれについてもっと詳しく書かれています。簡単に話しただけです。
8.4 コンピュータビジョンでのTest Time Augmentation実践例
Sydney Katz:コンピュータビジョンの観点から言うと、私が展開したすべてのコンピュータビジョンシステムでは、TTAと呼ばれるものを非常に頻繁に行います。これはコンピュータビジョン文献では特にテスト時間拡張と呼ばれています。そして、確率を見るのではなく、検出の場合は通常事後処理です。つまり、0.5以上の確率があれば、それを保持し、画像全体を行い、そのものがなくなるか、まだそこにあるか、ボックスがなくなるか、まだそこにあるか、変化するかどうかです。つまり、絶対値ではなく出力の分散です。絶対値ではなく。
そして、画像をいくつかの異なる方法で拡張するか、摂動させ、これは自動運転でずっと行われています。あなたのコンバットがファームウェアで実装されている可能性があるので、すべての画像の100バージョンを実行します。できるだけ高速で、特にFPNです。それはすべてのモデルのベースで、それを押し出し、特に露出問題があるときに、すべての単一画像の100バージョンのログを実行し、そのようなことすべてです。
私の唯一のコメントはそれでした。それを何と呼びましたか?ベイジアンモデル平均化と呼びました。いえ、いえ、いえ。モデルは一定のままです。
学生:そうですね、そうですね。データ平均化のようなものです。
Sydney Katz:そうですね、あなたは名前を付けていましたが...
学生:おお、感度だと思います。
Sydney Katz:感度。そうですね。まあ、感度。そうですね。
学生:それを知るのは興味深いです。
9. コース総括
9.1 スイスチーズモデルによる安全性確保
Sydney Katz:コースのまとめに入りましょう。ここに行きます、皆さん。
私たちはこれから始めました。他のコースでは少し触れるだけです。このコースでは、私たちは見つけ出すつもりです。そして、今あなたが十分に見つけ出したと感じることを願っています。または、プロジェクト3と最終プロジェクトで、そのように感じるでしょう。
私たちは、故障分析、形式的保証、説明から、今日話したランタイムでシステムを展開する際にすべきことまで、システムを検証するための多くの異なる方法について話しました。
しかし、うまくいけば、これらの様々な方法すべてに、一種の穴があることに気づいたでしょう。これらの方法すべてを進めるにつれて話し合った制限がありました。
しかし、スイスチーズモデルでは、これらの穴または制限がうまくいけば一致しないという考えです。そして、十分な数を一度に適用できれば、安全性ケースを構築できます。
うまくいけば、このコースがそれを行う方法について良い出発点を与えてくれました。
9.2 銀の弾丸は存在しない:多層防御の重要性
Sydney Katz:ここで安全性検証には銀の弾丸がないことを思い出させたいと思います。私たちは安全性ケースを構築する必要があります。そして、うまくいけば、このコースがそれを行う方法について良い出発点を与えてくれました。
そして、これらの様々な技術すべてについて、講義中に出てきた多くの未解決の問題があり、まだ解決される必要があります。したがって、興味がある場合、これは研究に入るのに本当に良い分野だと思います。そして、多くの研究を行うことができ、うまくいけば、これらは産業界に入る際にも役立つツールになるでしょう。
9.3 今後の研究課題と産業応用への展望
Sydney Katz:そして、これらの様々な技術すべてについて、講義中に出てきた多くの未解決の問題があり、まだ解決される必要があります。したがって、興味がある場合、これは研究に入るのに本当に良い分野だと思います。そして、多くの研究を行うことができ、うまくいけば、これらは産業界に入る際にも役立つツールになるでしょう。
9.4 失敗から学ぶことの重要性
Sydney Katz:このコースの初版の一部となってくれた皆さん、本当にありがとうございました。これらの講義を皆さんと一緒に行い、皆さんが持つすべての質問や、皆さんが行ったすべてのプロジェクトを見ることができて、私にとって非常に楽しい時間でした。私にとって非常に素晴らしい時間でした。初版にお付き合いいただき、本当に感謝しています。
ぜひ連絡を取り続けて、検証に関することでもそれ以外のことでも、何か必要なことがあればいつでも連絡してください。私のメールを知っているので、連絡を取り続けることを非常に嬉しく思います。
そして、時々あなたは最良の方法ではない方法で見つけ出すかもしれず、少し打ちのめされることがあるかもしれません、ということを言って締めくくりたいと思います。しかし、もしそのような状況に陥った場合、それを笑い飛ばして立ち上がり、もう一度挑戦することを願っています。