Skip to content
Guides1 min read

3Dオブジェクト、時間セグメント、エージェントトレースのアノテーター間一致度

構造化アノテーションをラベル名に還元すると、すべてのアノテーターが一致してしまいます。3DボックスとセグメントはIoUで対応付け、エージェントトレースは1ステップずつ評価しましょう。

Potato Team

構造化アノテーションの一致度を測るには、構造そのものを比較します。各アノテーターの3Dボックスや時間セグメントを、もう一方のアノテーターのものとIoUで対応付け、対応の付かないオブジェクトは不一致として数え、エージェントトレースは1ステップずつ評価して、各ステップがカッパやアルファの単位になるようにします。

アノテーター間一致度は、各項目に1つのラベルが付く場合には簡単に定義できます。しかし現在の多くのタスクでは、項目に付くのは物の集合です。たとえば、LiDARスキャン中の車を囲む直方体、各話者が話している時間を示すセグメント、エージェントが行ったステップごとの判定などです。項目ごとに1つのラベルを前提とする指標は、こうした構造を比較できる形に還元しなければなりません。そして手軽な還元であるラベル名への還元を行うと、どのアノテーターの組も一致してしまいます。

ラベル名から生じる完全一致

この還元は、ラベル名だけを残してそれ以外をすべて捨てます。LiDARスキャン上にそれぞれ「car」というラベルのボックスを3つ描いた2人のアノテーターは、どちらも「car」に還元され、ボックスの位置が異なっていても完全に一致したことになります。

バージョン2.11より前、Potatoのスキーマごとの一致度ルートである/admin/api/agreementは、構造化スキーマに対してこの処理を行っていました。その結果、エージェントトレース、セグメント、領域、3Dオブジェクトでは、すべてのアノテーターの組が完全一致となっていました。難しい空間的・時間的タスクで完全なスコアが出た場合、たいていは指標が構造を失っています。2.11では、このルートは構造化スキーマを報告しなくなり、構造を比較する完全な一致度レポート/admin/iaaを案内します。

3Dオブジェクトと時間セグメントの対応付け

オブジェクトの集合に対する一致度は、対応付けから始まります。一方のアノテーターの各オブジェクトを、重なりの指標を使ってもう一方のオブジェクトの多くとも1つと組にし、しきい値を超えた組だけを同じオブジェクトとみなします。時間セグメントでは時間的IoU(intersection over union)、つまり重なりの長さを和集合の長さで割ったものを使い、3Dオブジェクトでは同じ比を体積で求める3D IoUを使います。Potatoはセグメントを0.5、3Dオブジェクトを0.25で対応付けます。小さなずれによるIoUの損失は、2次元より3次元のほうが大きいからです。各軸に沿ってサイズの10%ずれたボックスは、2DのIoUでは約0.68を保ちますが、3DのIoUでは約0.57にとどまります。

対応付けの後、対応の付いた組はそれぞれそのIoUを、ラベルの異なる組はIoUの半分を加算し、どちらかの側で対応の付かなかったオブジェクトはすべて0を加算します。項目の一致度は、その合計をオブジェクトの数(対応の付いた組は1つと数える)で割ったものです。そのため、オブジェクトの半分を見落としたアノテーターは、付けたオブジェクトが完璧でも低いスコアになり、どちらも何も付けなかった2人のアノテーターは一致したことになります。

/admin/iaaは、3Dオブジェクト(spatial_annotation)と、temporal_groundingおよびtiered_annotationの時間セグメントについて、スキーマごとに2つの数値を報告します。

  • mean_agreement:アノテーターが2人以上いるすべての項目の、すべてのアノテーターの組について、この項目単位のスコアを平均したもの
  • mean_object_count_diff:2人のアノテーターが付けたオブジェクトの数の差の平均

数の差によって、集合が一致しない2つのパターンを区別できます。一致度が低く数の差がほぼ0であれば、2人は同じオブジェクトを見つけたものの、配置が異なっていたということです。数の差が大きければ、一方のアノテーターがもう一方の見落とすオブジェクトを見つけているということで、ガイドラインが何をオブジェクトとして数えるかに問題があることを示します。

どちらの数値も偶然一致の補正はされていません。空間的な一致度に偶然の基準線を設けるには、アノテーターがランダムに意見を分けたときにオブジェクトがどこに置かれるかのモデルが必要です。ジオメトリの一致度で説明しているとおり、Potatoがそれを構成するのは2Dのボックスとポリゴンだけです。時間セグメントでは同じ方法がうまくいきません。時間軸上の一致度で説明しているように、クリップの長さが異なる場合、別のクリップのセグメントはランダムな比較として意味をなさないからです。これらの数値は、オブジェクトを配置する難しさが変わらない、同じタスクのパイロット同士で比較してください。

2.11では、1つのエッジケースの扱いが変わりました。同一の長さゼロのセグメント2つ、つまり両方のアノテーターが同じ時刻に付けた瞬間のIoUは、0を0で割ったものになります。以前は完全な不一致として評価されていましたが、現在は一致として数えられます。

エージェントトレースのステップ単位の一致度

エージェントトレースはステップの列であり、トレースのスキーマ(process_reward、trajectory_eval、tool_call_review、failure_attribution、gui_trajectory)は各ステップにラベルを求めます。トレースをラベルの集合で評価するとラベル名の問題が繰り返され、全体の判定で評価するとステップの情報が捨てられます。

/admin/iaaは、各トレースの各ステップをそれぞれ独立した単位として扱います。トレース12のステップ4を評価した2人のアノテーターは1つの組となり、そうしたすべての単位について、名義尺度のKrippendorffのアルファとCohenのカッパが一致率とともに計算されます。上で述べた集合の指標とは異なり、どちらの係数も偶然一致を補正しているので、プロセス報酬タスクでのステップ単位のアルファ0.6は、どのカテゴリカルなタスクのアルファとも同じ尺度で読めます。ラベリングエンジンは、LLM判定者を人と比べて評価する際に同じ方法でステップのラベルを解析し、そのスコアは、共通のステップのうち両者が異なるラベルを付けたものの割合です。

項目ごとに2人のアノテーターを割り当てる

/admin/iaaに設定は必要ありません。2人以上のアノテーターが回答したすべての項目を評価するので、必要な作業は割り当てにあります。すべての項目に2人のアノテーターを付けるには、項目ごとのアノテーター数を2に設定し、アノテーションの最も少ない項目から配布します。

yaml
assignment_strategy: least_annotated
num_annotators_per_item: 2

項目ごとに2人のアノテーターは、レポートに必要な最低限です。重複セットが小さいと、1つの特殊なトレースやLiDARスキャンが平均を動かし、結論が変わることもあるので、重複はアノテーションを始めた後ではなく始める前に計画してください。古いagreement_metricsブロックはダッシュボードのスキーマごとの数値を設定するもので、2.11からはそれらの数値がこれらのスキーマをスキップし、/admin/iaaを案内します。

パイロットのラウンド間での一致度と数の差

mean_agreementは、/admin/iaaがその横に報告する数の差と組の数とあわせて読んでください。パイロットのラウンド間で一致度が下がり、数の差が安定していれば、問題は配置にあるので、ボックスのきつさやセグメントの境界に関するガイドラインを見直す必要があります。数の差が増えた場合は、何をオブジェクトやイベントとして数えるかに問題があります。エージェントトレースでは、ステップ単位のアルファを、同じ研究の中で同じアノテーターがより単純なカテゴリカルな質問で達するアルファと比較してください。そうすると、ステップのラベル自体が難しいのか、アノテーターの信頼性が低いのかを区別しやすくなります。

参考資料