深度學習筆記——理論與推導之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
- Error Function:定義正確值和錯誤值之間的差距。
- Another Cost Function:將Error Function帶入到之前的Cost Function中:
- Gradient Descent:
參考之前沒做Error Function時的Gradient Descent:
這裡與沒做Error Function的時候不同的一點,也就是最後算出來的y值不同,所以:
- Another Viewpoint:
- 因為最小化新的成本函式就是在最小化錯誤的上界,即:
因為C’很難計算,我們不知道它會不會是一個階梯狀的函式,所以,我們現在通過來最小化它。 - 那麼為什麼呢,即:
- 因為最小化新的成本函式就是在最小化錯誤的上界,即:
- More Cost Functions:
Regularization
- 我們知道w越接近0就越能減小mismatch帶來的影響,所以我們這裡在原本的C的基礎上進行修改,添加了一個1/2*||w||^2這項,令w趨於0,就可以減小mismatch帶來的影響了。
- 在接下來的每次迭代中,帶入正確的(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)
- Structured SVM是Linear的,因此我們需要找到比較好的feature function,我們可以用DNN的方法:
- 也可以一起Learn DNN和Structured SVM,把θ和w一起做Gradient Descent
- 也可以用DNN替換Structured SVM,然後一起learn θ和θ’: