ブログではないです

ブログでなくはないです

A Dynamic Oracle for Arc-Eager Dependency Parsing [Goldberg+, COLING'12]

概要

係り受け解析器の訓練をオンライン学習で行う際、訓練データとして与えられる解析結果のツリー(oracle)はある操作、ある単語からある単語への係り受け関係(arc)を付与する、という操作のシーケンスとして表現され、モデルはある状況で1つ操作を選択する試行を繰り返して最終的なツリーを構成することとなる。

その際に、既存手法では分解したツリーをどのような順序で並べるかは何らかのアルゴリズムによって決定される。 筆者はこれをstatic-oracleと呼び、あるツリーから生まれるシーケンスはアルゴリズムによって一意に決まる。

例えば、(A,B,C,D,E) からの選択問題で (A, C, E) のセットが正解だった場合、「正解を左から取っていく」というアルゴリズムでは生成されるoracleは[A, C, E] であり、 [C, A, E] や [E, A, C] などの順序にはならない。

こうしたstatic-oracleで訓練した場合、上の例だと何かの拍子に 最初に E が選ばれてしまった場合、oracleの中には E が選ばれた状況で A, Cを選ぶようなものが存在しないため、oracleの与え方によってこうしたパターンの学習が行われない、つまり正解にたどり着く複数のルートのうち学習できるのが1つのみ、という事になってしまう。

これを改善するため、オンライン学習の途中でモデルのoracleに対するテストを行い、「モデルが選びそうな正解への道」をoracleとして与えてやる、という事をしている。

(全部のシーケンスを正解として与えてやれば良いんじゃないか?と思ったけどシーケンス長が大きくなった時にサイズがとんでもないことになる、という感じだろうか。)