支持向量机是一种二分类模型算法,它的基本模型是定义在特征空间的间隔最大的线性分类器,说白了就是在中间画一条线,然后以 “最好地” 区分这两类点。以至如果以后有了新的点,这条线也能做出很好的分类。SVM 适合中小型数据样本、非线性、高维的分类问题。
样本数量b,类别数量n,特征长度d。
全连接+softmax(适合大样本量):
Y=X@W+b
X [b, d] W [d, n] b [n] Y [b, n]
Y按行进行softmax,即每个样本属于各个类别的概率和为1
使用交叉熵损失优化
SVM(适合小样本量):
Y=X@W
X [b, d] W [d, n] Y [b, n]
使用sigmoid将结果映射到[0, 1]
原则上每个样本属于每个类别的概率均属于[0, 1]且无和为1的限制
W每列代表一个SVM分类器,n个类别共n个SVM分类器,每个SVM分类器输出该样本属于某一个类的概率(即每个SVM均做二分类)
对于第
j
个
S
V
M
分类器,其损失定义为:
S
V
M
j
=
1
b
∑
i
=
1
b
(
o
u
t
i
j
−
g
t
i
j
)
2
o
u
t
i
j
∈
[
0
,
1
]
g
t
i
j
=
0
/
1
,且对“行和”“列和”无限制
总损失:
S
V
M
j
=
1
n
1
b
∑
j
=
1
n
∑
i
=
1
b
(
o
u
t
i
j
−
g
t
i
j
)
2
对于第j个SVM分类器,其损失定义为:\\ SVM_j=\frac{1}{b}\sum_{i=1}^b(out_{ij}-gt_{ij})^2\\ out_{ij}\in[0,1]\:gt_{ij}=0/1,且对“行和”“列和”无限制\\ \\ 总损失: SVM_j=\frac{1}{n}\frac{1}{b}\sum_{j=1}^n\sum_{i=1}^b(out_{ij}-gt_{ij})^2
对于第j个SVM分类器,其损失定义为:SVMj=b1i=1∑b(outij−gtij)2outij∈[0,1]gtij=0/1,且对“行和”“列和”无限制总损失:SVMj=n1b1j=1∑ni=1∑b(outij−gtij)2