Machine learning 这是否可能运行梯度下降来训练支持向量机?

Machine learning 这是否可能运行梯度下降来训练支持向量机?,machine-learning,svm,Machine Learning,Svm,支持向量机的经典实现通常使用SMO算法来训练支持向量机,这有点笨拙和冗长。偶尔我会看到这行代码: 范围内ii的(外环*M): i=int(np.random.rand()*M) 边距=Y[i]*np.dot(K[i,:],alpha) 梯度=M*L*K[:,i]*alpha[i] 如果(保证金

支持向量机的经典实现通常使用SMO算法来训练支持向量机,这有点笨拙和冗长。偶尔我会看到这行代码:

范围内ii的
(外环*M):
i=int(np.random.rand()*M)
边距=Y[i]*np.dot(K[i,:],alpha)
梯度=M*L*K[:,i]*alpha[i]
如果(保证金<1):
grad-=Y[i]*K[:,i]
α-=梯度/np.sqrt(ii+1)
alpha_平均值+=alpha
训练参数。

这让我困惑了好几个小时,我不知道渐变会在哪里弹出,也不知道当边距低于1时会出现奇怪的
if
块来“更新”渐变。但结果却相当不错。

所以我真的想知道为什么这段代码是合理的,为什么使用梯度下降而不是凸优化技术是可以的