SVM/SMO算法的并行化加速:从多核到硬件加速器
1. SMO算法实现
SMO(Sequential Minimal Optimization)算法在MiLDe中以 lo 和 hi 参数化形式实现。在顺序版本中,算法处理完整数据集, lo = 1 且 hi = n 。不过,该算法具有高度的数据独立性,因此非常适合并行化,无需共享内存,可在多个CPU/核心或机器集群上执行。并行运行时,每个CPU/核心或集群中的机器仅处理由 lo 和 hi 参数指定的数据向量子集,但需将局部找到的工作集合并为全局工作集,这会增加并行化的开销。
以下是SMO算法的主循环:
Algorithm 15: SMO: Main Loop
1: lo ⇐1
2: hi ⇐n
3: αi ⇐0, i = 1 . . . n
4: Gi ⇐−1, i = lo. . . hi
5: Repeat
6: (i, j) ⇐find working set(lo, hi)
7: (αi, α j) ⇐compute delta alphas(i, j)
8: αi += αi
9: α j += αj
10: Gk += yiykαi K(xi, xk), k = lo. . . hi
11: Gk += yjykα j K(xj, xk), k = lo. . . hi
12: Until converged
超级会员免费看
订阅专栏 解锁全文
771

被折叠的 条评论
为什么被折叠?



