Add. Sequetial minimal optimization

pull/2/head
benjas 4 years ago
parent 9b53301c53
commit 55f13c8694

@ -216,11 +216,9 @@ $$
2.求minL(w,b,α)对α的极大,即是对偶问题 2.求minL(w,b,α)对α的极大,即是对偶问题
![1620100936402](assets/1620100936402.png)
3.求max转换成min 3.求max转换成min
![1620101031289](assets/1620101031289.png) ![1620100936402](assets/1620100936402.png)
接下来就是求解α的问题了,但是我们还得解决另外的一个问题 接下来就是求解α的问题了,但是我们还得解决另外的一个问题
@ -262,10 +260,105 @@ Maximum soft interval
Kernel function Kernel function
现在到了这里: **现在到了这里:**
![1620101877936](assets/1620101877936.png) ![1620101877936](assets/1620101877936.png)
![1620101888622](assets/1620101888622.png) ![1620101888622](assets/1620101888622.png)
**目前的问题:**
式子中间有xi核xj的点积
例如在手写数字数据集中训练集有6万个样本6万乘6万勉强能接受
但如果每个样本有784维6万样本两两做点积是非常慢的。如果x是更高的维度呢
**梳理一下:**
1. 由于公式的需要我们需要计算xi和xj的点积
2. 此外,我们需要将样本映射到高维去,加入映射函数ø(x),那么ø(xi)和ø(xj)的维度数目进一步扩大,它们的点积会让运算变得极其复杂
3. 我们希望存在一个函数K(xi,yi)=ø(xi)×ø(xj)但函数K的计算方式更简单。也就是说我们将样本通过函数升维得到ø(xi)和ø(xj),接下来要计算它们的点积,能不能有个简单的计算公式,计算出来的结果和ø(xi)×ø(xj)一样?那样我们就不用再去算ø(xi)和ø(xj)的结果了,直接用简单方式计算不是更好吗?
这个简便方式,就是核函数
**在SVM中我们通常使用高斯核:**
![1620102775997](assets/1620102775997.png)
在计算x和z的点积时直接用这个公式替代就好了
### 序列最小最优化算法SMO
Sequetial minimal optimization
之前我们还剩下α求解我们用SMO
**我们最后求解出来的α一定是让整个结果满足KKT条件的。如果不满足那一定不是最优解。**
**所以我们可以不断地调整α的值直到所有α都满足KKT条件这是我们一定能得到最优解。**
**怎么调整呢——用SMO**
假设整个式子中有N个α(α1,α2,α3,...,αN)先固定其它αα1,先让α1满足KKT条件。但如果固定除α1以外的所有α等于也固定了α1.
![1620103167523](assets/1620103167523.png)
所以我们每次选择优化两个α
![1620103181711](assets/1620103181711.png)
进一步原式中目前hi有α1和α2两个变量我们将其它作为常数去除。
![1620100936402](assets/1620100936402.png)
整理如下:
![1620104035262](assets/1620104035262.png)
![1620104045040](assets/1620104045040.png)
目前可知α1一定在0和C之间
![1620104366359](assets/1620104366359.png)
![1620104377604](assets/1620104377604.png)
![1620104388470](assets/1620104388470.png)
![1620104396366](assets/1620104396366.png)
**最终得到结果:**
![1620104470719](assets/1620104470719.png)
其中L与H是![1620104485040](assets/1620104485040.png)所在对角线段端点的界如果y1≠y2如下左图所示
![1620104518723](assets/1620104518723.png)
如果y1=y2如下右图所示
![1620104531858](assets/1620104531858.png)![1620104541380](assets/1620104541380.png)
现在对于两个α,我们已经知道该怎么优化了。那么怎么从总舵的α中挑选两个合适的来进行优化呢?
——找到**违反KKT最严重**的。
**第一个变量的选择:**
![1620107006621](assets/1620107006621.png)
**第二个变量的选择:**
在第一个变量步子迈大的情况下,再找一个步子迈得最大的α。它的量化方式|E1-E2|
![1620107078112](assets/1620107078112.png)
两个α都找到一个进行优化然后找下一对α直到再也找不到不违反KKT的α为止。

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Loading…
Cancel
Save