CV勉強会
   「コンピュータビジョン最先端ガイド2」 読書会
  第3章 カーネル情報処理入門 ~非線形の魅惑~

           6. 構造化データに対するカーネル法

                      Twitter: @wk77




CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 1
構造化データに対するカーネル法
• SVMやカーネルPCAは、入力データがベクトルデータ
• 構造化データに対するカーネル法では、
  文字列、木構造、グラフなどの構造化データを扱う
• 二つのベクトルの類似度が内積で表現できるように、
  構造化データ間の類似度を広義の内積で表現する
• この内積計算を定義するためにカーネル法を利用する
   -   自然言語処理、バイオインフォマティクスなどの分野で
       利用されている
   -   今後、より抽象化されたデータを扱うようになると
       予想されるCVの分野でも、重要性が増すと考えられる



CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 2
オブジェクトと、その構成要素からなる有限集合
• オブジェクト x の例として、次の有向グラフを考える
                                a           x


                        b               c


   -   x の構成要素 (x' と記述する) は、
       3 つのノード、2 種類の部分グラフ、x それ自身 となる
• x の構成要素からなる有限集合を S(x) と記述する
                            a       a               a   S(x)

         a    b     c

                            b       c           b       c


CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法              p. 3
畳み込みカーネル (convolution kernel) (1)
• オブジェクト x, y の「畳み込みカーネル」
  k(x, y) を、次式で定義する



   -   S(x), S(y) はオブジェクトの構成要素からなる有限集合
   -   x', y' は x, y の構成要素
• ks(x', y') は x', y' の類似度を表す関数
   -   ks(x', y') が半正定値ならば k(x, y) も半正定値
• つまり畳み込みカーネル k(x, y) の定義は
   -   x の全ての部分要素 x'∈S(x) と、
       y の全ての部分要素 y'∈S(y) との組合せを考え、
       全てについて類似度 ks(x', y')を計算し、総和をとったもの
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 4
畳み込みカーネル (convolution kernel) (2)
• 類似度の計算式 ks(x', y') を、次式で定義する



   -   この定義による k(x, y) は、二つのオブジェクト x, y を、
       構成要素とその組からなる部分集合 S(x), S(y) に分解し、
       両者間で共通する組の延べ数を数え上げることに相当する
   -   後述の「全部分文字列カーネル」とは別の物として考える
• 例)x: a→b→c          y: a→b→d
   -   S(x): a, b, c, a→b, b→c, a→b→c
   -   S(y): a, b, d, a→b, b→d, a→b→d
   -   共通する組: a, b, a→b
   -   畳み込みカーネル k(x, y) の値: 3

CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 5
畳み込みカーネルによる評価における任意性
• 前述の k(x, y) で与えられる畳み込みカーネルには、
  部分集合 S(x), S(y) の作り方と、
  類似度 ks(x', y') の定義の仕方に、任意性がある
   -   様々な種類のオブジェクトに対して適用できるが、
       逆にこの二つを具体的に与えなければならない
   -   構成要素に分解すれば類似性が見えてくることがあり、
       それによって一見抽象的に見えるオブジェクト同士の、
       類似性を評価できる可能性があるという考え方




CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 6
文字列カーネル
• 畳み込みカーネルは、実際に、
  文字列、木構造、グラフなどの
  様々な構造化データに適用されている
   -   木やグラフの形で情報が表現される自然文(NLP)
   -   遺伝子の塩基配列や、アミノ酸配列(Bioinformatics)
• 構造化データの代表例として、文字列を取り上げる
• 文字列カーネルには
  様々なバリエーションが提案されている
• ここでは、最も標準的かついろいろなタイプのものを
  包含した形になっている、全部分文字列カーネル
  (all string subsequence kernel) を取り上げる

CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 7
全部分文字列カーネルの定義と例 (1)
• Σ : 文字(アルファベットなど)の集合
   -   A, B, ..., Z
• Σ* : Σ から生成される全ての有限長文字列の集合
   -   A, B, ..., Z, AA, AB, ..., AZ, BA, BB, ..., BZ, ..., AAA, ...
• u : Σ* の要素である文字列
• S, T : Σ から生成される長さ |S|, |T| の文字列
   -   例として S = ABC, T= ABAC を考える
• uS, uT : S, T の部分文字列
   -   uS ∈ {A,B,C,AB,AC,BC,ABC}
   -   uT ∈ {A,B,C,AA,AB,AC,BA,BC,ABA,AAC,ABC,BAC,ABAC}

• si, tj : 文字列 S の i 番目の文字、T の j 番目の文字
   -   s は小文字で i は太字でないことに注意。S, si, S[i], Si を区別する
   -   i 番目の位置にある文字と、その文字の値とを区別する。ここでは前者
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法                      p. 8
全部分文字列カーネルの定義と例 (2)
• 定義の前に例を記述)S=ABC, T=ABAC として
   -   i = (1,3) なら S[i]=AC, T[i]=AA
   -   j = (2,3,4) なら S[j]は定義できず、T[j]=BAC
• i, j : 部分文字列の、元の文字列内でのインデクス値列
   -   何番目の文字なのかを並べた数列。定義から重複無しで昇順
   -   i = (i1, ..., i|u|) (1≦i1<…<ik<ik+1<…<i|u|≦|S|)
        •   ik と ik+1 との大小関係には、等号を含まないことに注意
   -   j = (j1, ..., j|u|) (1≦j1<…<jk<jk+1<…<j|u|≦|T|)
• S[i] : 文字列 S から、インデクス i の各要素が
  表す位置にある文字を抜き出して、順に並べたもの
• l(i) : si1 から si|u| までの文字列の長さ i|u| - i1 + 1
   -   i = (2,3,7,8) なら、l(i) は 8-2+1=7。
   -   部分文字列同士の一致について先頭文字と終端文字を見る関数とわかる
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法        p. 9
全部分文字列カーネルの定義と例 (3)
• 全部分文字列カーネル kSK は、
  減衰係数 λ (0<λ≦1) を用いて、次式で定義される



   -   u=S[i] を満たす u がなければ、λl(i) は 0 と定義する
   -   ∑u∈∑* : u∈us∩uT である u についての総和を表している
• S=ABC, T=ABAC → u∈{A,B,C,AB,AC,BC,ABC}
   -   例として u=AC についての値を計算する
       • S[i]=AC, T[j]=AC を満たす i, j は、i=(1,3), j=(1,4), (3,4)
       • ∑i λ =λ          =λ3, ∑j λl(j)=(λ(4-1+1)+λ(4-3+1))=λ4+λ2=λ2+λ4
             l(i) (3-1+1)


       •   u=AC についての ∑i∑j λl(i)・λl(j)=λ3(λ2+λ4)=λ5+λ7
   -   他の u (∈us∧uT) についても計算し、総和をとると kSK

CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法                         p. 10
全部分文字列カーネルの計算例
• S=ABC, T=ABAC → kSK(S,T)=4λ2+λ4+2λ5+2λ7




                                     i, j の表記について、
                                     () の代わりに {} の記号を
                                     使用していることに注意




CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 11
全部分文字列カーネルのカーネルとしての性質
• ここで




  と定義すると、


• 全ての u∈∑* について φu(S) を求めて並べたものが
  S から作られる特徴ベクトル Φ(S) とみなせる
• 全部分文字列カーネルが、特徴ベクトルの内積の形
     kSK(S, T) = Φ(S)t Φ(T)
  となり、カーネル関数の性質を満たすことがわかる
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 12
全部分文字列カーネルの効率的な計算
• 全部分文字列カーネルは、動的計画法に似た
  漸化式を用いて、効率的な計算を行うことができる
   -   Si を S の先頭文字から i 番目の文字までの文字列、
       Tj を T の先頭文字から j 番目の文字までの文字列とする
   -   i と j を元の長さ |S|, |T| まで伸ばす帰納的定義を考える
• Km(Si, Tj) を新たに定義する
   -   Si と Tj の共通部分文字列のうち、終端文字が si と tj で、
       長さが m である全ての文字列 u についてのカーネル関数
        •   i, j を増分しつつ重複しないよう、末端が i, j となる i, j で計算
   -   S=ABC, T=ABAC, m=2, i=3, j=4 のときを考える
        •   s3=t4=C, 長さ m=2 の条件を満たす共通の u は {AC,BC}
        • u=AC→i=(1,3), j=(1,4),(3,4) u=BC→i=(2,3), j=(2,4)
        • K2(S3, T4) = λ3・(λ4+λ2) + λ2・λ3 = 2λ5+λ7 となる
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法        p. 13
Km(Si, Tj) の計算例 (S=ABC, T=ABAC)




CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 14
Km(Si, Tj) の計算例 (S=AB, T=ABAB)




• (si の値) = (tj の値) のとき u が定義され、Km ≠ 0 となる
• ”末尾=si” の記述は、末尾文字のインデクスが i という意味
   -   i, j の計算は、末尾はインデクスの一致、それ以外は文字値の一致
   -   K2(S2,T4) の計算で j に{1,2}が含まれず、K2(S2,T2)と重複しない
   -   l(i), l(j) の計算において先頭文字と終端文字だけを見る利点?
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法     p. 15
全部分文字列カーネルの効率的な計算手順 (1)
• Km(Si, Tj) は、
  Km-1(Si', Tj') (1≦i'≦i-1, 1≦j'≦j-1) を用いて次式で表せる
  (1) si ≠ tj のとき
            Km(Si, Tj) = 0
   -   si と tj が等しくなければ共通の u が存在しない(前項)
  (2) si = tj のとき
            Km(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j') Km-1(Si', Tj')
   -   ある m, i'≦i-1, j'≦j-1 についての共通文字列の集合 u に、
       共通の終端文字を加えると m+1, i, j における u になる
        •   u(m=1, i≦2, j≦3)={A,B} → u(m=2, i=3, j=4)={AC,BC}
• m = 1 では、si ≠ tj のとき Km = 0, si = tj のとき Km = λ2

CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法                     p. 16
全部分文字列カーネルの効率的な計算手順 (2)
• 前項の Km の m に関する漸化式
       Km(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j') Km-1(Si', Tj')
  を効率的に計算するために、
   Km(Si, Tj) = λ2K'm-1(Si, Tj)
  となる K' を新たに導入する
   -   式(150)をそのまま式(151)に置き換えて展開する
   -   i 列 j 行 (横 i, 縦 j) 表記に注意。以下テキストとやや異なる解説を行う

• K'm を、同じ m についての Km の式で表す
       λ2K'm-1(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j') Km-1(Si', Tj')
       K'm-1(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km-1(Si', Tj')
  ∴ K'm(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj')

CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法                      p. 17
全部分文字列カーネルの効率的な計算手順 (3)
• K'm(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') を確認
   -   si = tj のとき Km=1 = λ2. 各マス左上が K, 下が K'




CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法                     p. 18
全部分文字列カーネルの効率的な計算手順 (4)
• K'm(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj')
  の右辺の総和を、4つの領域の部分和に分解する
   -   2回足された両斜線部の総和の値を引いている




 K'm(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (灰色部分)
            = ∑1≦i'≦i-1 ∑1≦j'≦j-2 λ(i-i'+j-j'-2) Km(Si', Tj') (右下がり斜線部)
            + ∑1≦i'≦i-2 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (左下がり斜線部)
            - ∑1≦i'≦i-2 ∑1≦j'≦j-2 λ(i-i'+j-j'-2) Km(Si', Tj') (両斜線部)
            + ∑i'=i-1 ∑j'=j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (斜線なしの灰色部分)
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法                       p. 19
全部分文字列カーネルの効率的な計算手順 (5)
• K'm(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') であるので、
  K'm(Si, Tj-1) = ∑1≦i'≦i-1 ∑1≦j'≦(j-1)-1 λ(i-i'+(j-1)-j'-2) Km(Si', Tj')
  K'm(Si-1, Tj) = ∑1≦i'≦(i-1)-1 ∑1≦j'≦j-1 λ((i-1)-i'+j-j'-2) Km(Si', Tj')
  K'm(Si-1, Tj-1) = ∑1≦i'≦(i-1)-1 ∑1≦j'≦(j-1)-1 λ((i-1)-i'+(j-1)-j'-2) Km(Si', Tj')
• また、∑i'=i-1 ∑j'=j-1 λ(i-i'+j-j'-2) Km(Si', Tj') = Km(Si-1, Tj-1)
• したがって、K'm(Si, Tj)
   = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (灰色部分)
   = ∑1≦i'≦i-1 ∑1≦j'≦j-2 λ(i-i'+j-j'-2) Km(Si', Tj') (右下がり斜線部)
      + ∑1≦i'≦i-2 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (左下がり斜線部)
      - ∑1≦i'≦i-2 ∑1≦j'≦j-2 λ(i-i'+j-j'-2) Km(Si', Tj') (両斜線部)
      + ∑i'=i-1 ∑j'=j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (斜線なしの灰色部分)
   = λK'm(Si, Tj-1) + λK'm(Si-1, Tj) - λ2K'm(Si-1, Tj-1) + Km(Si-1, Tj-1)
• si = tj のとき K1 = λ2. また Km = λ2K'm-1 なので K'0(Si, Tj) = 1
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法                                 p. 20
全部分文字列カーネルの効率的な計算手順 (6)
• K'm(Si, Tj) =
   λK'm(Si, Tj-1) + λK'm(Si-1, Tj)
   - λ2K'm(Si-1, Tj-1) + Km(Si-1, Tj-1)
  のまま計算するとデメリットが多い
   -   再帰呼出しで計算する場合、メモ化(一度計算した K'm(Si, Tj) の値を
       KDash[m][i][j] などに記録しておくこと)で再計算を避けるのは前提
   -   K'm(Si, Tj-1) と K'm(Si-1, Tj) の式には +λK'm(Si-1, Tj-1) が含まれ、
       K'm(Si, Tj) の式には -λ2K'm(Si-1, Tj-1) が含まれているので、
       K'm(Si-1, Tj-1) への参照が最大 3 回重なるという無駄がある
   -   帰納的定義で、小さな i, j から順に繰返し計算して表を埋めるとして、
       上下左右のマス間に依存があるので、並列化がしづらい形と言える?
• 新たに K'' を導入して式を展開する
   -   必要な記憶領域は増えるが、行と列が分離された形となり並列化が容易

CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法              p. 21
全部分文字列カーネルの効率的な計算手順 (7)
• K''m を定義して、K'm(Si, Tj) の一部を置き換える
     K'm(Si, Tj) = λK'm(Si, Tj-1) + λK'm(Si-1, Tj) - λ2K'm(Si-1, Tj-1) + Km(Si-1, Tj-1)
     K''m(Si, Tj-1) :=               λK'm(Si-1, Tj) - λ2K'm(Si-1, Tj-1) + Km(Si-1, Tj-1)

    ∴ K'm(Si, Tj) = λK'm(Si, Tj-1) + K''m(Si, Tj-1)
    この K'm(Si, Tj) について i ⇐ i-1, j ⇐ j+1 とすると
     K'm(Si-1, Tj+1) = λK'm(Si-1, Tj) + K''m(Si-1, Tj)
•   K''m の定義
     K''m(Si, Tj-1) = λK'm(Si-1, Tj) - λ2K'm(Si-1, Tj-1) + Km(Si-1, Tj-1)
    において、j ⇐ j+1 とすると
     K''m(Si, Tj) = λK'm(Si-1, Tj+1) - λ2K'm(Si-1, Tj) + Km(Si-1, Tj)
•   K'm(Si-1, Tj+1) = λK'm(Si-1, Tj) + K''m(Si-1, Tj) を λ 倍して K''m の式に代入し、
     K''m(Si, Tj) = λ2K'm(Si-1, Tj) + λK''m(Si-1, Tj) - λ2K'm(Si-1, Tj) + Km(Si-1, Tj)
                 = λK''m(Si-1, Tj) + Km(Si-1, Tj)

    ∴ K''m(Si, Tj) = λK''m(Si-1, Tj) + Km(Si-1, Tj)
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法                                        p. 22
全部分文字列カーネルの効率的な計算手順 (8)
• 以上の結果をまとめると、下記の通りとなる
   -   再帰的定義。再帰呼び出しによる計算はこれでできる




CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 23
全部分文字列カーネルの効率的な計算手順 (9)
• S=ABC, T=ABAC についての K, K', K'' の計算結果
   -   帰納的定義による計算で確認する
   -   m = 1 の K について si = tj のマスを λ2 で埋める
   -   K''m(Si+1, Tj) = λK''m(Si, Tj) + Km(Si, Tj)
   -   K'm(Si, Tj+1) = λK'm(Si, Tj) + K''m(Si, Tj)
   -   Km+1(Si, Tj) = λ2K'm(Si, Tj) (si = tj のマスを計算)




CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法      p. 24
全部分文字列カーネルの効率的な計算手順 (10)
• 各マスの左上 Km(Si, Tj) の総和をとって kSK(S, T) を求める




CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 25
全部分文字列カーネルを正規化する
• 文字列 S, T の長さに依存して、
  kSK(S, T) のとる値も大きくなる傾向がある
• したがって一般に、S と T の類似度 kSim(S, T) を、
  S, T の長さで正規化した次式で定義する



• kSim(S, T) は 0 から 1 の間の値をとり、
  S=T のときに限り kSim(S, T)=1 となる




CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 26
階層的有向非循環グラフ(HDAG)カーネル
• 自然文の解析や処理を行うために、様々な解析処理により、
  木構造やグラフ構造などの構造化データに変換する
   -   形態素解析、固有表現解析、意味情報付加、文節解析、係受け解析、…
• 自然文を、これらの解析結果の統合表現として考える
   -   例)ラベルつきの、階層化された有向非循環グラフ(HDAG)




   -   文の構造に加え、単語の種類・意味などの付加情報によるラベルづけ
• HDAG の類似性を評価する HDAG カーネルという方法がある
   -   文構造が同じでも、ラベルが異なれば類似度が低いといった評価の表現
• 基本的な考え方や計算方法は、全部分文字列カーネルと同じ
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 27
畳み込みカーネルの一般的定義 (1)
• 畳み込みカーネルは、より抽象的な形で定義できる
   -   m は正の整数、χ1, ..., χm, χ はそれぞれ空でない有限集合
   -   χ1, ..., χm, χ の直積


       の部分集合を、「関係」(relation) と呼ぶ
   -   「x1∈χ1, ..., xm∈χm が x∈χ の部品である」
       という関係を、直積 χ1 × … × χm × χ 上の関係 R で表す
   -   x1, ..., xm が x の部品であるときに限り、
       R(x1, ..., xm, x) は真であるとする
   -   x = x1, ..., xm として、R(x, x) が真となる x を
       R-1(x)(={x: R(x, x)}) と表す


CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 28
畳み込みカーネルの一般的定義 (2)
• このとき畳み込みカーネル k(x, y) は、
  二つのオブジェクト x, y(∈χ) 間の類似度を表し、
  次式で定義される



   -   ki(xi, yi) は xi, yi の類似度を表す関数
   -   x = x1,...,xm は x の部品、y = y1,...,ym は y の部品
   -   全ての部品の組み合わせについて、
       i 番目の要素間の ki (xi, yi) の積を求め、総和をとっている
• この定義は集合 χ1, ..., χm, χ の選び方、
  関数 R(x, x) が真となる条件の決め方に任意性がある

CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法    p. 29
畳み込みカーネルの一般的定義 (3)
• 畳み込みカーネルの一般的定義、式 (166)



  において、
   -   m=1、χ をオブジェクトの集合、χ1 は χ に属する
       オブジェクトの構成要素の、全ての部分集合からなる集合
   -   R(x1, x) は x1(∈χ1) が x(∈χ) の構成要素であるときに真
  とすると、式 (129) の畳み込みカーネルとなる



• 式 (166) の畳み込みカーネルの一般的定義は、
  対象のオブジェクトを、構造化データに限定しない
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 30
§ 3.7 - § 3.8
• § 3.7 まとめと数学的補足
   -   '95 年に現在の形の SVM が完成. その後10年で膨大な成果
         • 実データを用いて有効性と強力さが実証された
         • カーネル法の、数学的、理論的な背景が明らかになった
   -   カーネル関数、特にガウスカーネルの式との類似
         • 1960 年代、E.Parzen が考案した Parzen window 法
         • 旧ソ連の Aizerman が考案したポテンシャル関数法
   -   統計的機械学習技術との関連が明らかになりつつある
         • ガウス過程、再生核ヒルベルト空間、正則化など
   -   カーネルの系統だった選択と設計は未解決な課題
         • 無限に用意された特徴から必要なものを選ぶフィルタ

• § 3.8 より深い理解のために
   -   参考文献多数につき、詳細はテキスト参照のこと
CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法   p. 31
テキストの誤植と思われる箇所など
• p. 122: 式 (137)、式 (144) の「u=S[j]」→「u=T[j]」
   -  「(137)の |u| に関する総和」→「(137) の u∈∑* に関する総和」
• p. 123:「λ(i-i')+(j-j') 倍して」→「λ(i-i'+j-j'-2) 倍して」
• p. 124: 図 3.17(c) の m=1, i=3, j=1 の K''m の λ の乗数は 3
   -   「Km(Si-1, Tj-1) は、灰色部分」→「K'm(Si-1, Tj-1) は、灰色部分」
       (ダッシュが抜けている)
   -   右下がり斜線部と左下がり斜線部の記述と、項との対応関係が逆
   -   右下がり斜線部は j'≦j-2, 左下がり斜線部は i'≦i-2
   -   「Km(Si', Tj') の総和」→「λ(i-i'+j-j'-2) Km(Si', Tj') の総和」
   -   式 (152) は「同じものを足して引く」というよりも、
       同じ m, i, j の K'm について、λ 倍して足すのと -λ2 して引くことで、
      重複して参照される無駄があるというほうが正確と思われる
• p. 125: 式 (161) とその2行上の Km(S, T) は kSK(S, T) が正しい
• p. 126: DAG の和訳は非循環有向グラフより有向非循環グラフが一般的?
• p. 127: B. Bishop → C. M. Bishop

CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法             p. 32

Cvim tutorial2 03_06_wk77_110220-0546

  • 1.
    CV勉強会 「コンピュータビジョン最先端ガイド2」 読書会 第3章 カーネル情報処理入門 ~非線形の魅惑~ 6. 構造化データに対するカーネル法 Twitter: @wk77 CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 1
  • 2.
    構造化データに対するカーネル法 • SVMやカーネルPCAは、入力データがベクトルデータ • 構造化データに対するカーネル法では、 文字列、木構造、グラフなどの構造化データを扱う • 二つのベクトルの類似度が内積で表現できるように、 構造化データ間の類似度を広義の内積で表現する • この内積計算を定義するためにカーネル法を利用する - 自然言語処理、バイオインフォマティクスなどの分野で 利用されている - 今後、より抽象化されたデータを扱うようになると 予想されるCVの分野でも、重要性が増すと考えられる CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 2
  • 3.
    オブジェクトと、その構成要素からなる有限集合 • オブジェクト xの例として、次の有向グラフを考える a x b c - x の構成要素 (x' と記述する) は、 3 つのノード、2 種類の部分グラフ、x それ自身 となる • x の構成要素からなる有限集合を S(x) と記述する a a a S(x) a b c b c b c CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 3
  • 4.
    畳み込みカーネル (convolution kernel)(1) • オブジェクト x, y の「畳み込みカーネル」 k(x, y) を、次式で定義する - S(x), S(y) はオブジェクトの構成要素からなる有限集合 - x', y' は x, y の構成要素 • ks(x', y') は x', y' の類似度を表す関数 - ks(x', y') が半正定値ならば k(x, y) も半正定値 • つまり畳み込みカーネル k(x, y) の定義は - x の全ての部分要素 x'∈S(x) と、 y の全ての部分要素 y'∈S(y) との組合せを考え、 全てについて類似度 ks(x', y')を計算し、総和をとったもの CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 4
  • 5.
    畳み込みカーネル (convolution kernel)(2) • 類似度の計算式 ks(x', y') を、次式で定義する - この定義による k(x, y) は、二つのオブジェクト x, y を、 構成要素とその組からなる部分集合 S(x), S(y) に分解し、 両者間で共通する組の延べ数を数え上げることに相当する - 後述の「全部分文字列カーネル」とは別の物として考える • 例)x: a→b→c y: a→b→d - S(x): a, b, c, a→b, b→c, a→b→c - S(y): a, b, d, a→b, b→d, a→b→d - 共通する組: a, b, a→b - 畳み込みカーネル k(x, y) の値: 3 CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 5
  • 6.
    畳み込みカーネルによる評価における任意性 • 前述の k(x,y) で与えられる畳み込みカーネルには、 部分集合 S(x), S(y) の作り方と、 類似度 ks(x', y') の定義の仕方に、任意性がある - 様々な種類のオブジェクトに対して適用できるが、 逆にこの二つを具体的に与えなければならない - 構成要素に分解すれば類似性が見えてくることがあり、 それによって一見抽象的に見えるオブジェクト同士の、 類似性を評価できる可能性があるという考え方 CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 6
  • 7.
    文字列カーネル • 畳み込みカーネルは、実際に、 文字列、木構造、グラフなどの 様々な構造化データに適用されている - 木やグラフの形で情報が表現される自然文(NLP) - 遺伝子の塩基配列や、アミノ酸配列(Bioinformatics) • 構造化データの代表例として、文字列を取り上げる • 文字列カーネルには 様々なバリエーションが提案されている • ここでは、最も標準的かついろいろなタイプのものを 包含した形になっている、全部分文字列カーネル (all string subsequence kernel) を取り上げる CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 7
  • 8.
    全部分文字列カーネルの定義と例 (1) • Σ: 文字(アルファベットなど)の集合 - A, B, ..., Z • Σ* : Σ から生成される全ての有限長文字列の集合 - A, B, ..., Z, AA, AB, ..., AZ, BA, BB, ..., BZ, ..., AAA, ... • u : Σ* の要素である文字列 • S, T : Σ から生成される長さ |S|, |T| の文字列 - 例として S = ABC, T= ABAC を考える • uS, uT : S, T の部分文字列 - uS ∈ {A,B,C,AB,AC,BC,ABC} - uT ∈ {A,B,C,AA,AB,AC,BA,BC,ABA,AAC,ABC,BAC,ABAC} • si, tj : 文字列 S の i 番目の文字、T の j 番目の文字 - s は小文字で i は太字でないことに注意。S, si, S[i], Si を区別する - i 番目の位置にある文字と、その文字の値とを区別する。ここでは前者 CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 8
  • 9.
    全部分文字列カーネルの定義と例 (2) • 定義の前に例を記述)S=ABC,T=ABAC として - i = (1,3) なら S[i]=AC, T[i]=AA - j = (2,3,4) なら S[j]は定義できず、T[j]=BAC • i, j : 部分文字列の、元の文字列内でのインデクス値列 - 何番目の文字なのかを並べた数列。定義から重複無しで昇順 - i = (i1, ..., i|u|) (1≦i1<…<ik<ik+1<…<i|u|≦|S|) • ik と ik+1 との大小関係には、等号を含まないことに注意 - j = (j1, ..., j|u|) (1≦j1<…<jk<jk+1<…<j|u|≦|T|) • S[i] : 文字列 S から、インデクス i の各要素が 表す位置にある文字を抜き出して、順に並べたもの • l(i) : si1 から si|u| までの文字列の長さ i|u| - i1 + 1 - i = (2,3,7,8) なら、l(i) は 8-2+1=7。 - 部分文字列同士の一致について先頭文字と終端文字を見る関数とわかる CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 9
  • 10.
    全部分文字列カーネルの定義と例 (3) • 全部分文字列カーネルkSK は、 減衰係数 λ (0<λ≦1) を用いて、次式で定義される - u=S[i] を満たす u がなければ、λl(i) は 0 と定義する - ∑u∈∑* : u∈us∩uT である u についての総和を表している • S=ABC, T=ABAC → u∈{A,B,C,AB,AC,BC,ABC} - 例として u=AC についての値を計算する • S[i]=AC, T[j]=AC を満たす i, j は、i=(1,3), j=(1,4), (3,4) • ∑i λ =λ =λ3, ∑j λl(j)=(λ(4-1+1)+λ(4-3+1))=λ4+λ2=λ2+λ4 l(i) (3-1+1) • u=AC についての ∑i∑j λl(i)・λl(j)=λ3(λ2+λ4)=λ5+λ7 - 他の u (∈us∧uT) についても計算し、総和をとると kSK CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 10
  • 11.
    全部分文字列カーネルの計算例 • S=ABC, T=ABAC→ kSK(S,T)=4λ2+λ4+2λ5+2λ7 i, j の表記について、 () の代わりに {} の記号を 使用していることに注意 CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 11
  • 12.
    全部分文字列カーネルのカーネルとしての性質 • ここで と定義すると、 • 全ての u∈∑* について φu(S) を求めて並べたものが S から作られる特徴ベクトル Φ(S) とみなせる • 全部分文字列カーネルが、特徴ベクトルの内積の形 kSK(S, T) = Φ(S)t Φ(T) となり、カーネル関数の性質を満たすことがわかる CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 12
  • 13.
    全部分文字列カーネルの効率的な計算 • 全部分文字列カーネルは、動的計画法に似た 漸化式を用いて、効率的な計算を行うことができる - Si を S の先頭文字から i 番目の文字までの文字列、 Tj を T の先頭文字から j 番目の文字までの文字列とする - i と j を元の長さ |S|, |T| まで伸ばす帰納的定義を考える • Km(Si, Tj) を新たに定義する - Si と Tj の共通部分文字列のうち、終端文字が si と tj で、 長さが m である全ての文字列 u についてのカーネル関数 • i, j を増分しつつ重複しないよう、末端が i, j となる i, j で計算 - S=ABC, T=ABAC, m=2, i=3, j=4 のときを考える • s3=t4=C, 長さ m=2 の条件を満たす共通の u は {AC,BC} • u=AC→i=(1,3), j=(1,4),(3,4) u=BC→i=(2,3), j=(2,4) • K2(S3, T4) = λ3・(λ4+λ2) + λ2・λ3 = 2λ5+λ7 となる CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 13
  • 14.
    Km(Si, Tj) の計算例(S=ABC, T=ABAC) CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 14
  • 15.
    Km(Si, Tj) の計算例(S=AB, T=ABAB) • (si の値) = (tj の値) のとき u が定義され、Km ≠ 0 となる • ”末尾=si” の記述は、末尾文字のインデクスが i という意味 - i, j の計算は、末尾はインデクスの一致、それ以外は文字値の一致 - K2(S2,T4) の計算で j に{1,2}が含まれず、K2(S2,T2)と重複しない - l(i), l(j) の計算において先頭文字と終端文字だけを見る利点? CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 15
  • 16.
    全部分文字列カーネルの効率的な計算手順 (1) • Km(Si,Tj) は、 Km-1(Si', Tj') (1≦i'≦i-1, 1≦j'≦j-1) を用いて次式で表せる (1) si ≠ tj のとき Km(Si, Tj) = 0 - si と tj が等しくなければ共通の u が存在しない(前項) (2) si = tj のとき Km(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j') Km-1(Si', Tj') - ある m, i'≦i-1, j'≦j-1 についての共通文字列の集合 u に、 共通の終端文字を加えると m+1, i, j における u になる • u(m=1, i≦2, j≦3)={A,B} → u(m=2, i=3, j=4)={AC,BC} • m = 1 では、si ≠ tj のとき Km = 0, si = tj のとき Km = λ2 CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 16
  • 17.
    全部分文字列カーネルの効率的な計算手順 (2) • 前項のKm の m に関する漸化式 Km(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j') Km-1(Si', Tj') を効率的に計算するために、 Km(Si, Tj) = λ2K'm-1(Si, Tj) となる K' を新たに導入する - 式(150)をそのまま式(151)に置き換えて展開する - i 列 j 行 (横 i, 縦 j) 表記に注意。以下テキストとやや異なる解説を行う • K'm を、同じ m についての Km の式で表す λ2K'm-1(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j') Km-1(Si', Tj') K'm-1(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km-1(Si', Tj') ∴ K'm(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 17
  • 18.
    全部分文字列カーネルの効率的な計算手順 (3) • K'm(Si,Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') を確認 - si = tj のとき Km=1 = λ2. 各マス左上が K, 下が K' CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 18
  • 19.
    全部分文字列カーネルの効率的な計算手順 (4) • K'm(Si,Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') の右辺の総和を、4つの領域の部分和に分解する - 2回足された両斜線部の総和の値を引いている K'm(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (灰色部分) = ∑1≦i'≦i-1 ∑1≦j'≦j-2 λ(i-i'+j-j'-2) Km(Si', Tj') (右下がり斜線部) + ∑1≦i'≦i-2 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (左下がり斜線部) - ∑1≦i'≦i-2 ∑1≦j'≦j-2 λ(i-i'+j-j'-2) Km(Si', Tj') (両斜線部) + ∑i'=i-1 ∑j'=j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (斜線なしの灰色部分) CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 19
  • 20.
    全部分文字列カーネルの効率的な計算手順 (5) • K'm(Si,Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') であるので、 K'm(Si, Tj-1) = ∑1≦i'≦i-1 ∑1≦j'≦(j-1)-1 λ(i-i'+(j-1)-j'-2) Km(Si', Tj') K'm(Si-1, Tj) = ∑1≦i'≦(i-1)-1 ∑1≦j'≦j-1 λ((i-1)-i'+j-j'-2) Km(Si', Tj') K'm(Si-1, Tj-1) = ∑1≦i'≦(i-1)-1 ∑1≦j'≦(j-1)-1 λ((i-1)-i'+(j-1)-j'-2) Km(Si', Tj') • また、∑i'=i-1 ∑j'=j-1 λ(i-i'+j-j'-2) Km(Si', Tj') = Km(Si-1, Tj-1) • したがって、K'm(Si, Tj) = ∑1≦i'≦i-1 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (灰色部分) = ∑1≦i'≦i-1 ∑1≦j'≦j-2 λ(i-i'+j-j'-2) Km(Si', Tj') (右下がり斜線部) + ∑1≦i'≦i-2 ∑1≦j'≦j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (左下がり斜線部) - ∑1≦i'≦i-2 ∑1≦j'≦j-2 λ(i-i'+j-j'-2) Km(Si', Tj') (両斜線部) + ∑i'=i-1 ∑j'=j-1 λ(i-i'+j-j'-2) Km(Si', Tj') (斜線なしの灰色部分) = λK'm(Si, Tj-1) + λK'm(Si-1, Tj) - λ2K'm(Si-1, Tj-1) + Km(Si-1, Tj-1) • si = tj のとき K1 = λ2. また Km = λ2K'm-1 なので K'0(Si, Tj) = 1 CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 20
  • 21.
    全部分文字列カーネルの効率的な計算手順 (6) • K'm(Si,Tj) = λK'm(Si, Tj-1) + λK'm(Si-1, Tj) - λ2K'm(Si-1, Tj-1) + Km(Si-1, Tj-1) のまま計算するとデメリットが多い - 再帰呼出しで計算する場合、メモ化(一度計算した K'm(Si, Tj) の値を KDash[m][i][j] などに記録しておくこと)で再計算を避けるのは前提 - K'm(Si, Tj-1) と K'm(Si-1, Tj) の式には +λK'm(Si-1, Tj-1) が含まれ、 K'm(Si, Tj) の式には -λ2K'm(Si-1, Tj-1) が含まれているので、 K'm(Si-1, Tj-1) への参照が最大 3 回重なるという無駄がある - 帰納的定義で、小さな i, j から順に繰返し計算して表を埋めるとして、 上下左右のマス間に依存があるので、並列化がしづらい形と言える? • 新たに K'' を導入して式を展開する - 必要な記憶領域は増えるが、行と列が分離された形となり並列化が容易 CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 21
  • 22.
    全部分文字列カーネルの効率的な計算手順 (7) • K''mを定義して、K'm(Si, Tj) の一部を置き換える K'm(Si, Tj) = λK'm(Si, Tj-1) + λK'm(Si-1, Tj) - λ2K'm(Si-1, Tj-1) + Km(Si-1, Tj-1) K''m(Si, Tj-1) := λK'm(Si-1, Tj) - λ2K'm(Si-1, Tj-1) + Km(Si-1, Tj-1) ∴ K'm(Si, Tj) = λK'm(Si, Tj-1) + K''m(Si, Tj-1) この K'm(Si, Tj) について i ⇐ i-1, j ⇐ j+1 とすると K'm(Si-1, Tj+1) = λK'm(Si-1, Tj) + K''m(Si-1, Tj) • K''m の定義 K''m(Si, Tj-1) = λK'm(Si-1, Tj) - λ2K'm(Si-1, Tj-1) + Km(Si-1, Tj-1) において、j ⇐ j+1 とすると K''m(Si, Tj) = λK'm(Si-1, Tj+1) - λ2K'm(Si-1, Tj) + Km(Si-1, Tj) • K'm(Si-1, Tj+1) = λK'm(Si-1, Tj) + K''m(Si-1, Tj) を λ 倍して K''m の式に代入し、 K''m(Si, Tj) = λ2K'm(Si-1, Tj) + λK''m(Si-1, Tj) - λ2K'm(Si-1, Tj) + Km(Si-1, Tj) = λK''m(Si-1, Tj) + Km(Si-1, Tj) ∴ K''m(Si, Tj) = λK''m(Si-1, Tj) + Km(Si-1, Tj) CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 22
  • 23.
    全部分文字列カーネルの効率的な計算手順 (8) • 以上の結果をまとめると、下記の通りとなる - 再帰的定義。再帰呼び出しによる計算はこれでできる CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 23
  • 24.
    全部分文字列カーネルの効率的な計算手順 (9) • S=ABC,T=ABAC についての K, K', K'' の計算結果 - 帰納的定義による計算で確認する - m = 1 の K について si = tj のマスを λ2 で埋める - K''m(Si+1, Tj) = λK''m(Si, Tj) + Km(Si, Tj) - K'm(Si, Tj+1) = λK'm(Si, Tj) + K''m(Si, Tj) - Km+1(Si, Tj) = λ2K'm(Si, Tj) (si = tj のマスを計算) CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 24
  • 25.
    全部分文字列カーネルの効率的な計算手順 (10) • 各マスの左上Km(Si, Tj) の総和をとって kSK(S, T) を求める CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 25
  • 26.
    全部分文字列カーネルを正規化する • 文字列 S,T の長さに依存して、 kSK(S, T) のとる値も大きくなる傾向がある • したがって一般に、S と T の類似度 kSim(S, T) を、 S, T の長さで正規化した次式で定義する • kSim(S, T) は 0 から 1 の間の値をとり、 S=T のときに限り kSim(S, T)=1 となる CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 26
  • 27.
    階層的有向非循環グラフ(HDAG)カーネル • 自然文の解析や処理を行うために、様々な解析処理により、 木構造やグラフ構造などの構造化データに変換する - 形態素解析、固有表現解析、意味情報付加、文節解析、係受け解析、… • 自然文を、これらの解析結果の統合表現として考える - 例)ラベルつきの、階層化された有向非循環グラフ(HDAG) - 文の構造に加え、単語の種類・意味などの付加情報によるラベルづけ • HDAG の類似性を評価する HDAG カーネルという方法がある - 文構造が同じでも、ラベルが異なれば類似度が低いといった評価の表現 • 基本的な考え方や計算方法は、全部分文字列カーネルと同じ CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 27
  • 28.
    畳み込みカーネルの一般的定義 (1) • 畳み込みカーネルは、より抽象的な形で定義できる - m は正の整数、χ1, ..., χm, χ はそれぞれ空でない有限集合 - χ1, ..., χm, χ の直積 の部分集合を、「関係」(relation) と呼ぶ - 「x1∈χ1, ..., xm∈χm が x∈χ の部品である」 という関係を、直積 χ1 × … × χm × χ 上の関係 R で表す - x1, ..., xm が x の部品であるときに限り、 R(x1, ..., xm, x) は真であるとする - x = x1, ..., xm として、R(x, x) が真となる x を R-1(x)(={x: R(x, x)}) と表す CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 28
  • 29.
    畳み込みカーネルの一般的定義 (2) • このとき畳み込みカーネルk(x, y) は、 二つのオブジェクト x, y(∈χ) 間の類似度を表し、 次式で定義される - ki(xi, yi) は xi, yi の類似度を表す関数 - x = x1,...,xm は x の部品、y = y1,...,ym は y の部品 - 全ての部品の組み合わせについて、 i 番目の要素間の ki (xi, yi) の積を求め、総和をとっている • この定義は集合 χ1, ..., χm, χ の選び方、 関数 R(x, x) が真となる条件の決め方に任意性がある CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 29
  • 30.
    畳み込みカーネルの一般的定義 (3) • 畳み込みカーネルの一般的定義、式(166) において、 - m=1、χ をオブジェクトの集合、χ1 は χ に属する オブジェクトの構成要素の、全ての部分集合からなる集合 - R(x1, x) は x1(∈χ1) が x(∈χ) の構成要素であるときに真 とすると、式 (129) の畳み込みカーネルとなる • 式 (166) の畳み込みカーネルの一般的定義は、 対象のオブジェクトを、構造化データに限定しない CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 30
  • 31.
    § 3.7 -§ 3.8 • § 3.7 まとめと数学的補足 - '95 年に現在の形の SVM が完成. その後10年で膨大な成果 • 実データを用いて有効性と強力さが実証された • カーネル法の、数学的、理論的な背景が明らかになった - カーネル関数、特にガウスカーネルの式との類似 • 1960 年代、E.Parzen が考案した Parzen window 法 • 旧ソ連の Aizerman が考案したポテンシャル関数法 - 統計的機械学習技術との関連が明らかになりつつある • ガウス過程、再生核ヒルベルト空間、正則化など - カーネルの系統だった選択と設計は未解決な課題 • 無限に用意された特徴から必要なものを選ぶフィルタ • § 3.8 より深い理解のために - 参考文献多数につき、詳細はテキスト参照のこと CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 31
  • 32.
    テキストの誤植と思われる箇所など • p. 122:式 (137)、式 (144) の「u=S[j]」→「u=T[j]」 - 「(137)の |u| に関する総和」→「(137) の u∈∑* に関する総和」 • p. 123:「λ(i-i')+(j-j') 倍して」→「λ(i-i'+j-j'-2) 倍して」 • p. 124: 図 3.17(c) の m=1, i=3, j=1 の K''m の λ の乗数は 3 - 「Km(Si-1, Tj-1) は、灰色部分」→「K'm(Si-1, Tj-1) は、灰色部分」 (ダッシュが抜けている) - 右下がり斜線部と左下がり斜線部の記述と、項との対応関係が逆 - 右下がり斜線部は j'≦j-2, 左下がり斜線部は i'≦i-2 - 「Km(Si', Tj') の総和」→「λ(i-i'+j-j'-2) Km(Si', Tj') の総和」 - 式 (152) は「同じものを足して引く」というよりも、 同じ m, i, j の K'm について、λ 倍して足すのと -λ2 して引くことで、 重複して参照される無駄があるというほうが正確と思われる • p. 125: 式 (161) とその2行上の Km(S, T) は kSK(S, T) が正しい • p. 126: DAG の和訳は非循環有向グラフより有向非循環グラフが一般的? • p. 127: B. Bishop → C. M. Bishop CV勉強会「コンピュータビジョン最先端ガイド2」読書会 第3章6節 構造化データに対するカーネル法 p. 32