前言
這幾天讀ISK那篇文章把人傷着了,o( ̄ヘ ̄o#)
先找一篇看起來要簡單些的論文看看,論文地址如下:
https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/ijcai17miki.pdf
摘要
熟悉的話語。。周老師這篇文章屬於標準多示例,即一個包中的實例至少有一個擁有某類標籤,則該包屬於該類。特別的,對於二分類數據集,如果一個包包含至少一個正實例,則該包爲正,反之爲負。這個正實例也叫做關鍵 (key)實例 ,畢竟它叫“啥”,這個包就得叫“啥”。以往的大佬們大都假設訓練數據和測試數據同一分佈,現實裏可不一定行哦ㄟ( ▔, ▔ )ㄏ,所有,“我們”就來解決關鍵實例在測試與訓練階段的分佈變化 問題。取個名字,就叫關鍵實例位移 (key instance shift)問題吧,注意instance沒有加s,初步推測每個包最多一個。整個問題流程的名字就叫MIKI ,是一種基於嵌套 (embedding)的方法。具體的步驟如下:
將包轉換爲向量,這個就和ISK的解決方式類似了,即將多示例轉換爲單示例問題解決,提出了一種加權多類模型 (weighted multi-class model),以選擇具有高positiveness score(積極性?正面性?暫且叫“正分”吧)的實例作爲實例原型;
對轉換後的包向量 (bag vectors)重要性權重 (importance weights)進行學習,再將原型實例權重融合,以縮小測試、訓練分佈之間的差距;
實驗證明“我們”牛逼。
1 引入
部分要點摘要中已經提及,這裏只說明新增的部分:
包標籤已知,實例標籤未知。
在不同時間、地點或者標記代價下訓練集和測試集的收集會出現分佈差異。以文本數據 (text categorization)爲例:
2.1 訓練/測試集收集於2012/2016,年,需要判斷文字是否與sport 有關;
2.2 與訓練數據相比,測試數據中關於“Kobe Bryant”的文字可能更少,而關於“Stephen Curry”的文字更多;
2.3 包含“Kobe Bryant”以及“Stephen Curry”的字段可以被視爲關鍵實例;
2.4 這種情況下,因爲收集時間的差異,訓練、測試階段的關鍵實例分佈就會有差異。
MIKI 採用基於manner的嵌入方法,通過嵌入將包轉換爲實例。
通過對包級別 (bag-level)信合和關鍵實例位移信息編碼,以此選擇原型實例。
2 MIL of key instance shift
2.1 問題陳述和符號
以下給出符號表:
符號
意義
X = R d \mathcal{X = \mathbb{R}^d} X = R d
實例空間
Y = { − 1 , + 1 } \mathcal{Y} = \{ -1, +1 \} Y = { − 1 , + 1 }
標籤空間
B t r = { ( X 1 t r , y 1 t r ) , … , ( X i t r , y i t r ) , … , ( X m t r , y m t r ) } \mathcal{B}_{tr} =\{ (X^{tr}_1, y^{tr}_1), \dots, (X^{tr}_i, y^{tr}_i), \dots, (X^{tr}_m, y^{tr}_m)\} B t r = { ( X 1 t r , y 1 t r ) , … , ( X i t r , y i t r ) , … , ( X m t r , y m t r ) }
給定大小m m m 的訓練集
m m m
數據集大小
X i = { x i 1 , … , x i j , … , x i n i } X_i = \{ x_{i1}, \dots, x_{ij}, \dots, x_{in_i} \} X i = { x i 1 , … , x i j , … , x i n i } , where x i j ∈ X x_{ij} \in \mathcal{X} x i j ∈ X
包
n i n_i n i
包大小
B t e = { X 1 t e , … , X n t e } \mathcal{B}_{te} = \{ {X_1^{te}}, \dots, X_n^{te} \} B t e = { X 1 t e , … , X n t e }
給定大小n n n 的測試集
P ( ⋅ ) P ( \cdot) P ( ⋅ )
分佈
x ∗ x_* x ∗
關鍵實例
D = { x ∗ 1 t r , … x ∗ p t r , x ∗ 1 t e , … x ∗ q t e } \mathcal{D} = \{ x_{*1}^{tr}, \dots x_{*p}^{tr}, x_{*1}^{te}, \dots x_{*q}^{te} \} D = { x ∗ 1 t r , … x ∗ p t r , x ∗ 1 t e , … x ∗ q t e }
實例原型
V t r \mathcal{V}_{tr} V t r
訓練包映射向量
V t e \mathcal{V}_{te} V t e
測試包映射向量
W = { W 1 , … , W m } W = \{ W_1, \dots, W_m \} W = { W 1 , … , W m }
訓練包權重
{ w 11 , … , w 1 n 1 , … , w m 1 , … , w m n m } \{ w_{11}, \dots, w_{1n_1}, \dots, w_{m1}, \dots, w_{mn_m} \} { w 1 1 , … , w 1 n 1 , … , w m 1 , … , w m n m }
訓練實例權重
M \mathcal{M} M
最終模型
在關鍵實例位移問題中,訓練和測試階段的關鍵實例分佈是不同的,即P ( x ∗ t r ) ≠ P ( x ∗ t e ) P (x_*^{tr}) \neq P (x_*^{te}) P ( x ∗ t r ) = P ( x ∗ t e ) 。周老師這篇文章便着力於transductive setting (轉換?映射?):
給定B t r \mathcal{B}_{tr} B t r 和B t e \mathcal{B}_{te} B t e ,滿足P ( x ∗ t r ) ≠ P ( x ∗ t e ) P (x_*^{tr}) \neq P (x_*^{te}) P ( x ∗ t r ) = P ( x ∗ t e ) ,目標是習得這種映射f f f :2 X → Y 2^{\mathcal{X}} \rightarrow \mathcal{Y} 2 X → Y ,使其能夠在測試集上表現good。
2.2 MIKI
MIKI的步驟如圖1:
假設正實例屬於不同的子概念 (sub-concepts),關鍵實例位移可以落在其中任何一個上;
假設子概念和負概念一共K K K 個,建立K + 1 K + 1 K + 1 類模型將其區分;
如果一個實例屬於任意一個子概念,即“得分高”,則有很高的概率被認爲是關鍵實例候選。因此,不同的位移 (shift)信息將會被捕獲;
爲降低關鍵實例位移的影響,引入實例權重來平衡不同分佈,因此關鍵實例選擇時就能包含更多的關鍵實例以及關鍵實例位移的信息;
獲得包映射向量後,通過權重學習來減小訓練和測試分佈之間的差距;
如果一個實例很重要,其所屬的包也應該被評估,再進一步將原型實例的權重合併到轉換後訓練包向量的權重中;
最終的模型將從訓練包向量權重和訓練包之間習得。
圖1:MIKI流程圖
2.2.1 實例原型學習
在實例原型學習階段,使用迭代來建立多類模型並優化並選擇的關鍵實例候選,即算法1 。
具體的,在迭代中,對K K K 個正示例子概念與負概念訓練權重K + 1 K + 1 K + 1 類模型M D \mathcal{M}_D M D 。如果一個屬於任意子概念的實例具有高得分,將被看做高正性 (high positiveness),其被定義爲實例x i j x_{ij} x i j 屬於第k k k 類的概率 ,即P r i j k {Pr}_{ij}^k P r i j k 。相應的,每個實例x i j x_{ij} x i j 的正分計算如下:
S i j = max k ∈ { 1 , … , K } ( P r i j k − P r i j 0 ) . (1)
S_{ij} = \max_{k \in \{ 1, \dots, K \}} ({Pr}_{ij}^k - {Pr}_{ij}^0). \tag{1}
S i j = k ∈ { 1 , … , K } max ( P r i j k − P r i j 0 ) . ( 1 )
算法2 展示了模型M D \mathcal{M}_D M D 學習的細節:
1)使用kMeans對正包中的所有實例進行聚類,並初始化他們的標籤爲所屬簇數,例如聚類成了2簇,那麼一簇標籤爲0,另一簇則爲1;負包中所有實例的標籤設爲0;
2)帶有權重的實例與相應標籤用於訓練多類SVM模型M \mathcal{M} M ;
3)給定一個實例x i j x_{ij} x i j ,模型將輸出P r i j k {Pr}_{ij}^k P r i j k ;
4)每一個正包的標籤將更新爲:
y i j = arg max k ∈ { 0 , 1 , … , K } P r i j k (2)
y_{ij} = \argmax_{k \in \{0, 1, \dots, K \}} {Pr}_{ij}^k \tag{2}
y i j = k ∈ { 0 , 1 , … , K } a r g m a x P r i j k ( 2 )
伸個懶腰ヾ(´∀`o)+ヾ(´ ・ω・`)ノ
5)言歸正傳,負包的標籤將不會改變。對於每一個正包X i X_i X i ,如果其中所有的實例標籤爲負,則其中正分最高的實例 x i p x_{ip} x i p 的標籤將會調整爲:
y i p = arg max k ∈ { 1 , … , K } P r i p k (3)
y_{ip} = \argmax_{k \in \{1, \dots, K \}} {Pr}_{ip}^k \tag{3}
y i p = k ∈ { 1 , … , K } a r g m a x P r i p k ( 3 ) 這將保證每個正包中至少擁有一個正實例。這個過程將一直進行,知道沒有標籤改變或者達到最大迭代次數,最終輸出模型M D \mathcal{M}_D M D 。
一旦獲得模型M D \mathcal{M}_D M D ,就能爲每個實例計算“正分”S i j S_{ij} S i j 以及選取關鍵實例候選。
特別的,令S θ t r ( S θ t e ) S_{\theta}^{tr} (S_{\theta}^{te} ) S θ t r ( S θ t e ) 表示具有最高得分的n θ t r ( n θ t e ) n_\theta^{tr} (n_\theta^{te}) n θ t r ( n θ t e ) 個訓練 (測試)實例,然後將所有實例按照如下劃分爲關鍵實例候選和負實例候選:
C p t r = { x i j ∣ S i j ≥ S θ t r , x i j ∈ B t r } , C n t r = { x i j ∣ S i j < S θ t r , x i j ∈ B t r } , C p t e = { x i j ∣ S i j ≥ S θ t e , x i j ∈ B t e } , C n t e = { x i j ∣ S i j < S θ t e , x i j ∈ B t e } . (4)
\begin{matrix}
C_p^{tr} = \big\{ x_{ij} | S_{ij} \geq S_{\theta}^{tr}, x_{ij} \in \mathcal{B}_{tr} \},\\
C_n^{tr} = \{ x_{ij} | S_{ij} < S_{\theta}^{tr}, x_{ij} \in \mathcal{B}_{tr} \},\\
C_p^{te} = \{ x_{ij} | S_{ij} \geq S_{\theta}^{te}, x_{ij} \in \mathcal{B}_{te} \},\\
C_n^{te} = \{ x_{ij} | S_{ij} < S_{\theta}^{te}, x_{ij} \in \mathcal{B}_{te} \}.\\
\end{matrix} \tag{4}
C p t r = { x i j ∣ S i j ≥ S θ t r , x i j ∈ B t r } , C n t r = { x i j ∣ S i j < S θ t r , x i j ∈ B t r } , C p t e = { x i j ∣ S i j ≥ S θ t e , x i j ∈ B t e } , C n t e = { x i j ∣ S i j < S θ t e , x i j ∈ B t e } . ( 4 ) C p t r ( C p t e ) C_p^{tr} (C_p^{te}) C p t r ( C p t e ) 即關鍵實例 (負實例)候選,其將攜帶更多的關鍵實例位移信息。
劃分之後,使用C p t e ( C n t e ) C_p^{te} (C_n^{te}) C p t e ( C n t e ) 對C p t r ( C n t r ) C_p^{tr} (C_n^{tr}) C p t r ( C n t r ) 的權重進行再評估,因此所有訓練實例的權重均更新。模型訓練與該過程交替進行,直至達到最大迭代次數。此時的C p t r ∪ C p t e C_p^{tr} \cup C_p^{te} C p t r ∪ C p t e 將被作爲原型實例D \mathcal{D} D 輸出。這裏具體怎麼更新原文沒有說明 ( ´・・)ノ(._.`) (坑1 ),不過周老師提供了原代碼,先擼一遍,再來實現。
有了D \mathcal{D} D ,包X i X_i X i 將被映射爲n θ t r + n θ t e n_{\theta}^{tr} + n_{\theta}^{te} n θ t r + n θ t e 維的實例v i v_i v i ,其第j j j 個屬性v i j v_{ij} v i j 計算如下:
v i j = max x i k ∈ X i exp ( − γ ∣ ∣ x i k − D j ∣ ∣ 2 ) , (5)
v_{ij} = \max_{x_{ik} \in X_i} \exp (- \gamma || x_{ik} - D_j ||^2), \tag{5}
v i j = x i k ∈ X i max exp ( − γ ∣ ∣ x i k − D j ∣ ∣ 2 ) , ( 5 ) 其中D j D_j D j 是D \mathcal{D} D 中的第j j j 項。這種新的表示保留了包級別和關鍵實例位移的信息。
算法1:MIKI實例原型選擇
輸入:訓練包B t r \mathcal{B}_{tr} B t r ,測試包B t e \mathcal{B}_{te} B t e ,實例原型參數n θ t r n_{\theta}^{tr} n θ t r 和n θ t e n_{\theta}^{te} n θ t e 。
輸出:實例原型集D \mathcal{D} D 。
1:初始化訓練實例權重w w w 。
2:重複
3: 通過算法2 訓練多類模型M D \mathcal{M}_D M D ;
4: 通過公式1 爲所有實例計算正分;
5: 通過公式4 將所有實例劃分爲:C p t r , C n t r , C p t e , C n t e C_p^{tr}, C_n^{tr}, C_p^{te}, C_n^{te} C p t r , C n t r , C p t e , C n t e ;
6: 再評估C p t r ( C n t r ) C_p^{tr} (C_n^{tr}) C p t r ( C n t r ) 中的實例以近似 ( approximate) C p t e ( C n t e ) C_p^{te} ( C_n^{te}) C p t e ( C n t e ) 中的實例;
7:直至達到最大迭代次數
8:輸出D = C p t r ∪ C p t e \mathcal{D} = C_p^{tr} \cup C_p^{te} D = C p t r ∪ C p t e 。
算法1:多類模型M D \mathcal{M}_D M D 學習算法
輸入:訓練包B t r \mathcal{B}_{tr} B t r ,訓練實例權重w w w ,聚類簇數K K K 。
輸出:多類模型M D \mathcal{M}_D M D 。
1:初始化訓練實例標籤。
2:重複
3: 基於訓練實例權重訓練多類模型M \mathcal{M} M ;
4: 根據公式2 對實例標籤中屬於正包的實例標籤進行更新;
5: 對於每一個正包,如果其中所有的實例都標記爲負,則根據公式3 選擇最“正”的那個並調整其標籤;
6:直至沒有標籤改變或者達到最大迭代次數
7:輸出最終模型M D \mathcal{M}_D M D 。
2.2.2 權重學習
該部分介紹轉換後向量權重學習的細節:
給定帶有密度p t r ( v ) p_{tr} (v) p t r ( v ) (坑2 )的訓練向量{ v i t r } i = 1 m \{v_i^{tr} \}_{i = 1}^{m} { v i t r } i = 1 m 以前帶有密度p t e ( v ) p_{te} (v) p t e ( v ) 的測試向量{ v i t e } i = 1 n \{v_i^{te} \}_{i = 1}^{n} { v i t e } i = 1 n ,“我們”想要評估所有訓練向量的權重w ( v ) = p t e ( v ) / p t r ( v ) w (v) = p_{te} (v) / p_{tr} (v) w ( v ) = p t e ( v ) / p t r ( v ) ,且採用以下線性模型:
w ^ ( v ) = ∑ l = 1 b α l φ l ( v ) , (6)
\hat{w} (v) = \sum_{l = 1}^{b} \alpha_l \varphi_l (v), \tag{6}
w ^ ( v ) = l = 1 ∑ b α l φ l ( v ) , ( 6 ) 其中α = { α 1 , … , α b } T \mathbf{\alpha} = \{ \alpha_1, \dots, \alpha_b \}^T α = { α 1 , … , α b } T (坑3 )是習得參數,{ φ l ( v ) } l = 1 b \{ \varphi_l (v) \}^b_{l = 1} { φ l ( v ) } l = 1 b 是對於所有的v v v 和l l l 均滿足φ l ( v ) ≥ 0 \varphi_l (v) \geq 0 φ l ( v ) ≥ 0 ,這裏選擇爲高斯核。
評估參數{ α l } l = 1 b \{ \alpha_l \}^b_{l = 1} { α l } l = 1 b 使得w ^ ( v ) \hat{w} (v) w ^ ( v ) 儘可能接近w ( v ) w (v) w ( v ) ,這裏爲最小化均方誤差:
L 0 ( v ) = 1 2 ∫ ( w ^ ( v ) − w ( v ) ) 2 p t r ( v ) d v = 1 2 ∫ ( w ^ ( v ) 2 p t r ( v ) − 2 w ^ ( v ) w ( v ) p t r ( v ) + w ( v ) 2 p t r ( v ) ) d v , (7)
L_0 (v) = \frac{1}{2} \int (\hat{w} (v) - w (v))^2 p_{tr} (v) dv\\
= \frac{1}{2} \int ( \hat{w} (v)^2 p_{tr} (v) - 2 \hat{w} (v) w (v) p_{tr} (v) + w (v)^2 p_{tr} (v)) dv, \tag{7}
L 0 ( v ) = 2 1 ∫ ( w ^ ( v ) − w ( v ) ) 2 p t r ( v ) d v = 2 1 ∫ ( w ^ ( v ) 2 p t r ( v ) − 2 w ^ ( v ) w ( v ) p t r ( v ) + w ( v ) 2 p t r ( v ) ) d v , ( 7 ) 上式的最後一項爲常數,可以忽略,且有p t e ( v ) = w ( v ) p t r ( v ) p_{te} (v) = w (v) p_{tr} (v) p t e ( v ) = w ( v ) p t r ( v ) 則:
L ( v ) = 1 2 ∫ w ^ ( v ) 2 p t r ( v ) d v − ∫ w ^ ( v ) p t e ( v ) = 1 2 ∑ l , l ′ = 1 b α l α l ′ ( ∫ φ l ( v ) φ l ′ ( v ) p t r ( v ) d v ) − ∑ l = 1 b α l ( ∫ φ l ( v ) p t e ( v ) d v ) . (8)
L (v) = \frac{1}{2} \int \hat{w} (v)^2 p_{tr} (v) dv - \int \hat{w} (v) p_{te} (v)\\
= \frac{1}{2} \sum_{l, l' = 1}^{b} \alpha_l \alpha_{l'} (\int \varphi_l (v) \varphi_{l'} (v) p_{tr} (v) dv) - \sum_{l = 1}^{b} \alpha_l (\int \varphi_l (v) p_{te} (v) dv). \tag{8}
L ( v ) = 2 1 ∫ w ^ ( v ) 2 p t r ( v ) d v − ∫ w ^ ( v ) p t e ( v ) = 2 1 l , l ′ = 1 ∑ b α l α l ′ ( ∫ φ l ( v ) φ l ′ ( v ) p t r ( v ) d v ) − l = 1 ∑ b α l ( ∫ φ l ( v ) p t e ( v ) d v ) . ( 8 )
通過經驗值近似L ( v ) L (v) L ( v ) ,即:
L ^ ( v ) = 1 2 ∑ l , l ′ = 1 b α l α l ′ ( 1 m ∑ i = 1 m φ l ( v i t r ) φ l ′ ( v i t r ) ) − ∑ l = 1 b α l ( 1 n ∑ i = 1 n φ l ( v i t e ) ) = 1 2 α T H ^ α − h ^ T α , (9)
\hat{L} (v) = \frac{1}{2} \sum_{l, l' = 1}^{b} \alpha_l \alpha_{l'} (\frac{1}{m} \sum_{i = 1}^{m} \varphi_l (v_i^{tr}) \varphi_{l'} (v_i^{tr})) - \sum_{l = 1}^{b} \alpha_l (\frac{1}{n} \sum_{i = 1}^{n} \varphi_l (v_i^{te}))\\
= \frac{1}{2} \alpha^T \hat{H} \alpha - \hat{h}^T \alpha, \tag{9}
L ^ ( v ) = 2 1 l , l ′ = 1 ∑ b α l α l ′ ( m 1 i = 1 ∑ m φ l ( v i t r ) φ l ′ ( v i t r ) ) − l = 1 ∑ b α l ( n 1 i = 1 ∑ n φ l ( v i t e ) ) = 2 1 α T H ^ α − h ^ T α , ( 9 ) 其中H ^ \hat{H} H ^ 是b × b b \times b b × b 的矩陣,第( l , l ′ ) (l, l') ( l , l ′ ) 號元素H ^ l , l ′ = 1 m ∑ i = 1 m φ l ( v i t r ) φ l ′ ( v i t r ) \hat{H}_{l, l'} =\frac{1}{m} \sum_{i = 1}^{m} \varphi_l (v_i^{tr}) \varphi_{l'} (v_i^{tr}) H ^ l , l ′ = m 1 ∑ i = 1 m φ l ( v i t r ) φ l ′ ( v i t r ) ;h ^ \hat{h} h ^ 是b b b 維向量,第l l l 號元素h ^ l = 1 n ∑ i = 1 n φ l ( v i t e ) \hat{h}_l = \frac{1}{n} \sum_{i = 1}^{n} \varphi_l (v_i^{te}) h ^ l = n 1 ∑ i = 1 n φ l ( v i t e )
基於公式9 ,可以得到以下優化問題:
min α ∈ R b [ 1 2 α T H ^ α − h ^ T α + λ 2 α T α ] . (10)
\min_{\alpha \in \mathbb{R}^b} [ \frac{1}{2} \alpha^T \hat{H} \alpha - \hat{h}^T \alpha + \frac{\lambda}{2} \alpha^T \alpha]. \tag{10}
α ∈ R b min [ 2 1 α T H ^ α − h ^ T α + 2 λ α T α ] . ( 1 0 ) 公式10是無約束凸二次規劃 (unconstrained convex quadratic program),可解析爲α = ( H ^ + λ I b ) − 1 h ^ \alpha = {(\hat{H} + \lambda I_b)}^{-1} \hat{h} α = ( H ^ + λ I b ) − 1 h ^ ,其中I b I_b I b 是b b b 維單位矩陣 ( identity matrix),由此可以輕鬆的獲得訓練樣本的權重 (坑2、坑3被解決,然鵝理解起來還是不容易。。 )
基於上述方法,將獲得每一個訓練向量的權重,定義爲M 0 M^0 M 0 。然後,如果一個包包含一個需要評估的實例,該包也應該被評估。因此,實例的權重需要合併到轉換後的包的權重之中。具體的,對於訓練包X i t r X_i^{tr} X i t r 、包權重W i 0 W_i^0 W i 0 、相應的實例v i t r v_i^{tr} v i t r 以及實例權重{ w i j } j = 1 n i \{ w_{ij}\}_{j = 1}^{n_i} { w i j } j = 1 n i ,v i t r v_i^{tr} v i t r 最終的權重被設置爲:
W i = max j ∈ { 1 , … , n i } w i j ⋅ W i 0 . (11)
W_i = \max_{j \in \{ 1, \dots, n_i \}} w_{ij} \cdot W_i^0. \tag{11}
W i = j ∈ { 1 , … , n i } max w i j ⋅ W i 0 . ( 1 1 )
使用訓練包轉換後的向量及相應的權重來構建分類模型,再對測試包轉換後的向量進行分類。
3 具體實現
待續。。。