唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

論文感想: "Good, Great, Excellent: Global Inference of Semantic Intensities"(TACL vol.1)

図表、式は論文中から引用

概要

似た意味の形容詞の強弱の順序付けをするタスク
例えば「寒い」「涼しい」「冷たい」「痛い」などの形容詞が与えられた時に、その強弱関係は「涼しい<寒い<冷たい<痛い」ですよ、と順序付けをする話(この例は私が作った適当なもの

Webコーパスから"A but not B"などのパターンに当てはまる頻度を数えて、それらを使って単語間のスコアを計算する
順序付けの対象となる形容詞のクラスタは、WordNetの類義語関係などから作った単語リストを、スコアで重み付けしてグラフにして、連結成分で分割したものを使う
混合整数計画法を使ってグローバルな目的関数を最適化したら良い結果が得られた

感想

ペアワイズな評価尺度だとアノテーター間のアグリーメントと同等のAccuracyが出ていてすごい
f:id:sucrose:20130906010232p:plain

ちなみに目的関数は次のようになっている
f:id:sucrose:20130906005812p:plain
\(x_i\)がある強弱を表す軸上での単語\(a_i\)の位置を表している
評価では主に順序関係を見ている(\(x_i\)を使っている評価もあるような気もするけど

以下が混合整数計画法の式(第2項はよく似た形容詞の知識が与えられた時に同じ順序になるようにするための項)だけど、元の目的関数と比べると複雑でわかりづらい
f:id:sucrose:20130906005836p:plain

ところでテストセットだと最大8個(たぶん)の順序付けなので、混合整数計画法を使わないで総当りでもすぐに解けるような……?

他にも、この論文の最適化に関して以下のようなことを考えたんですが


よく考えたら間違っているような気がしてきました

シグモイド関数は凸関数でも凹関数でもないので、普通の凸最適化で大域的最適解を得るのは難しそう(あまり詳しくない
シグモイド関数の対数は凹関数だかになるので、目的関数全体でlogを取ってJensenの不等式とかを使えば勾配法で下界の大域的最適解は求められそうだけど……
タスク的に変数の数があまり多くならないので、やはり混合整数計画法が適していそうですね