1. 程式人生 > >深度學習筆記——理論與推導之Structured Learning【Structured SVM】(七)

深度學習筆記——理論與推導之Structured Learning【Structured SVM】(七)

Separable case

1. 定義:

這裡寫圖片描述

2. 用來計算weight的Structured Perceptron演演算法:

  • 那麼面對很多個y,是否可以順利在有限次內找到weight呢?答案是可以的,況且只需要(R/δ)^2次,R是同一個x下Φ(x,y)和Φ(x,y’)的最大距離;δ是margin(即第一個圖上畫的那塊)。與y的個數沒有關係。
    • 證明如下:
      這裡寫圖片描述
      這裡的w head 為什麼可以不失一般性的假設其長度為1呢,因為我們可以找到w head 可以讓data是separable的,那麼我們這時候對w head做normalize,這些data也依舊是separable的。
    • 當k越大的時候,wk與w head 之間的夾角是越來越小的,也就是cosρk會越來越大:
      這裡寫圖片描述
      這裡寫圖片描述
      下面,wk-1要更新的原因就是它乘以Φ(x,y)最大值而找出來的y不是準確的y,因此,下圖後面這項這裡寫圖片描述是小於0的。接下來假設兩個feature之間的距離的最大值是R。因此有了以下的推導:
      這裡寫圖片描述
      所以我們現在得到兩個結論:
      這裡寫圖片描述
      因此我們可以發現w的迭代次數是有窮的,且與y無關。
  • 那麼如何讓訓練速度更快呢?
    要真正改變點才能讓訓練速度變快,如果只是單方面的放大圖片,那麼由於R變大了,δ也會變大,這是沒有用的,如下圖:
    這裡寫圖片描述

Non-separable case

1. 定義:

如果今天我們沒有vector可以讓正確和錯誤答案分開(無法讓正確答案的F(x,y)高出其他錯誤答案),而在這些weights vector還是可以辨別出好壞:
這裡寫圖片描述


因此在這些情況下,我們還是可以定義一些Evaluation 去判斷weight的好壞。

2. Cost Function

接下來,我們定義一個cost function來判斷weight有多不好。下面就是用第一名的y的value減去正確的y的value。那我們接下來考慮兩個問題:a) 這個值最小是多少,答案:一定大於0,因為如果w*Φ(xn,y head n)是最大值,那麼Cn就變成了0。b) 還有沒有其他的選擇呢?
這裡寫圖片描述

3. 梯度下降演算法(Gradient Descent)

接下來我們需要的是計算Cost function的(Stochastic)Gradient Descent:
- 我們可以對每一個由w分割開的region進行微分。
這裡寫圖片描述


下面是過程(η是Learning rate):
這裡寫圖片描述

Considering Errors

1. 問題引入:

現在我們需要考慮一個問題,就是我們對待錯誤都是同等的在看。可是有的明明誤差大很多,如下:
這裡寫圖片描述

2. 思路:

那麼我們應該如何定義準確值和錯誤值之間的差距呢?
這裡寫圖片描述

3. 解決方法:Error Function與更新後的Cost Function

  1. Error Function:定義正確值和錯誤值之間的差距。
    這裡寫圖片描述
  2. Another Cost Function:將Error Function帶入到之前的Cost Function中:
    這裡寫圖片描述
  3. Gradient Descent:
    參考之前沒做Error Function時的Gradient Descent:
    這裡寫圖片描述
    這裡與沒做Error Function的時候不同的一點,也就是最後算出來的y值不同,所以:
    這裡寫圖片描述
  4. Another Viewpoint:
    • 因為最小化新的成本函式就是在最小化錯誤的上界,即:
      這裡寫圖片描述
      因為C’很難計算,我們不知道它會不會是一個階梯狀的函式,所以,我們現在通過這裡寫圖片描述來最小化它。
    • 那麼為什麼這裡寫圖片描述呢,即:
      這裡寫圖片描述
  5. More Cost Functions:
    這裡寫圖片描述

Regularization

  1. 我們知道w越接近0就越能減小mismatch帶來的影響,所以我們這裡在原本的C的基礎上進行修改,添加了一個1/2*||w||^2這項,令w趨於0,就可以減小mismatch帶來的影響了。
    這裡寫圖片描述
  2. 在接下來的每次迭代中,帶入正確的(x,y)對:
    對比與過去的沒有修改的Cost Function,新的Cost Function有以下綠色的不同:
    這裡寫圖片描述

Structured SVM

1. 公式變換:

對於下面這個公式,因為我們需要求最小的C值,所以下面藍色框框和綠色框框的公式是等價的。
這裡寫圖片描述
這裡後,可以寫成:
Slack variable:鬆弛變數
這裡寫圖片描述
接下來,有一個constraint,就是y求到真實值的時候:
這裡寫圖片描述
利用上述公式我們知道,每一個y≠y的真實值時都會產生一個限制(不等式),如下:
這裡寫圖片描述
基於這些個限制(不等式),我們要求出C的最小值,如下:
這裡寫圖片描述
我們要找到一個w,和每一個example都有的ε,我們需要minimize這個function,並且滿足下面的限制(不等式)
這裡寫圖片描述
SVM:這個式子和SVM的式子是類似的

Structured SVM的API

這裡寫圖片描述
這裡寫圖片描述

Cutting Plane Algorithm for Structured SVM

1. 產生原因:

現在我們面臨的問題就是太多constraints(不等式)了。我門將每個constraint都畫在圖上,為此,我們發現,只需要少數constraint其實就可以找到最小值了:
這裡寫圖片描述

2. 解決方法

方法思想:
我們發現,在處理中,Red line是我們需要的兩個constraint,而例如綠色的constraint即使忽略,也不會對結果產生其他影響。
這裡寫圖片描述
那麼如何找到一個working set呢?
1. 為每一個example initialize 一個空的working set
2. 我們只需要考慮working set裡面的y,重新得到一個w
3. 通過w,重新找一個working set成員(每找一次最小值,新增一個working set)
4. 再得到一個w,重新找到一個新的working set,接下來依次類推。
這裡寫圖片描述
舉例:
1. 假設A^n在初始的時候是空集合,也就是求解QP的時候沒有限制,因此我們直接求解最小值,得到藍色的點。
這裡寫圖片描述
2. 接下來看看這麼多constraint中,有什麼是這個解滿足不了的(如下圖1的紅線),我們從所有沒有被滿足的constraint中挑出最難處理的。
這裡寫圖片描述
3. 例如我們找出最難處理的那條線(下圖的紅線),在這個圖上就是表示和真實值舉例最遠的constraint。然後我們將這個紅線新增到working set中,如下所示:
這裡寫圖片描述
4. 接下來工具working set中的最小值,我們可以重新計算這個問題,因此我們找到一個最小值,即圖上的藍點。
這裡寫圖片描述
5. 接下來我們繼續找到最難滿足的constraint,然後根據現有的working set(以下兩條紅線),我們又可以找到一個最小值(即以下的藍點點)。
這裡寫圖片描述
6. 接下來我們繼續找一個constraint,找到一個最小值。
這裡寫圖片描述
那麼我們應該如何找到最難處理的constraint呢?
給定一個w’和ε’,如何求解最難處理的constraint呢?
首先,我們找到constraint是底下Constraint公式,那麼最難處理的constraint就是底下這個Violate a Constraint公式(本來我們的大於等於,變成了小於),那麼由於Violate會有很多個,因此我們需要一個公式Degree of Violation來定義violation的程度,即如果這項比較大則說明violate的程度越大(由於y head對於每一個y都是固定值且ε’不影響我們計算violate的值,因此,我們可以得到以下獲得最大violate的值的公式):
這裡寫圖片描述
Cutting Plane Algorithm的過程:
這裡寫圖片描述
Cutting Plane Algorithm演算法過程:
1. 我們這裡的ε有一個constraint,即大於0,因此可以求出最小值為w = 0時,如下圖所示:
這裡寫圖片描述
2. 接下來我們通過w = 0,找到一個most violate constraint,即計算下述方程:
這裡寫圖片描述
由於w = 0,接下來我們可以計算下面式子(y和y head沒有交集時,答案均為1)
這裡寫圖片描述
3. 接下來,我們通過給定的constraint求出C function的最小值,從而得到w = w1。
這裡寫圖片描述
4. 接下來我們用w1,找出most violate的constraint
這裡寫圖片描述
將most violate constraint放到我們的working set中:
這裡寫圖片描述
我們對A^2也做這個這個過程,也在working set中添加了一個constraint
這裡寫圖片描述
5. 接下來,我們只需要求解帶有4個constriants方程就好,以此類推:
這裡寫圖片描述

Multi class and binary SVM

Multi-class SVM

現在我們用Structured SVM來求解這個問題,首先,我們要思考三個problem
1. Evaluation:有K個class,有K個weight。
這裡寫圖片描述
2. Inference:
這裡寫圖片描述
3. Training:
這裡寫圖片描述

Binary SVM

定義:
Binary SVM其實就是K = 2的情況,我們假設如果y和y head不同則為1(因為Binary SVM其實就是有兩個y的情況),我們假設y∈{1,2}
這裡寫圖片描述

Beyond Structured SVM(open question)

  1. Structured SVM是Linear的,因此我們需要找到比較好的feature function,我們可以用DNN的方法:
    這裡寫圖片描述
  2. 也可以一起Learn DNN和Structured SVM,把θ和w一起做Gradient Descent
    這裡寫圖片描述
  3. 也可以用DNN替換Structured SVM,然後一起learn θ和θ’:
    這裡寫圖片描述