很基础!!!吴恩达deeplearning.ai:多分类问题
以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai
多分类问题指的是分类问题你可能有多于两个以上可能的输出标签(而不只是0和1)让我们通过例子具体看看是怎么样的。
举例
MNIST 例子(手写数字识别问题)
在之前的博客之中,我们的y标签只有0、1两种选择。但在真实的手写识别中,y的可能取值有10个:0~9。从这里你可以看出,多分类问题仍然是一个分类问题,但是y可以取少量离散类别的数字(不是任何数字都行)
多分类问题的例子
这是之前我们遇到的例子:
图中只有圆圈和叉叉两种不同的类型;而在多分类问题中,我们常常遇到的是这样子的:
例如上图就有四种不同的类别。因此在估计时,答案就应该是答案为第一种的概率为多少,第二种的概率为多少,第三种的概率,第四种等等。数学表达式写法为:
P
(
y
=
1
∣
x
⃗
)
P(y=1|\vec{x} )
P(y=1∣x)
新的算法——softmax
回顾
很明显,之前的算法无法满足我们多分类问题的需要,因此我们引入了一种新算法softmax,softmax是对原本逻辑回归算法的一种推广。
我们先回忆一下逻辑回归,先求出z,再求其sigmoid,即为概率:
z
=
x
⃗
⋅
w
⃗
+
b
a
=
g
(
z
)
=
1
1
+
e
−
z
=
P
(
y
=
1
∣
x
⃗
)
z=\vec{x}\cdot\vec{w}+b\\ a=g(z)=\frac{1}{1+e^{-z}}=P(y=1|\vec{x})
z=x⋅w+ba=g(z)=1+e−z1=P(y=1∣x)
公式
现在让我们推广到softmax,即y的值可以推广到1,2,3,4。那么,我们需要分别计算出1,2,3,4的概率,求z的数学公式与上面类似:
z
1
=
w
1
⃗
⋅
x
⃗
+
b
1
z
2
=
w
2
⃗
⋅
x
⃗
+
b
2
z
3
=
w
3
⃗
⋅
x
⃗
+
b
3
z
4
=
w
4
⃗
⋅
x
⃗
+
b
4
z_1=\vec{w_1}\cdot\vec{x}+b_1\\ z_2=\vec{w_2}\cdot\vec{x}+b_2\\ z_3=\vec{w_3}\cdot\vec{x}+b_3\\ z_4=\vec{w_4}\cdot\vec{x}+b_4
z1=w1⋅x+b1z2=w2⋅x+b2z3=w3⋅x+b3z4=w4⋅x+b4
但计算概率的公式有些变化,分母变成了四项的相加:
a
1
=
e
z
1
e
z
1
+
e
z
2
+
e
z
3
+
e
z
4
a
2
=
e
z
2
e
z
1
+
e
z
2
+
e
z
3
+
e
z
4
a
3
=
e
z
3
e
z
1
+
e
z
2
+
e
z
3
+
e
z
4
a
4
=
e
z
4
e
z
1
+
e
z
2
+
e
z
3
+
e
z
4
a_1=\frac{e^{z_1}}{e^{z_1}+e^{z_2}+e^{z_3}+e^{z_4}}\\ a_2=\frac{e^{z_2}}{e^{z_1}+e^{z_2}+e^{z_3}+e^{z_4}}\\ a_3=\frac{e^{z_3}}{e^{z_1}+e^{z_2}+e^{z_3}+e^{z_4}}\\ a_4=\frac{e^{z_4}}{e^{z_1}+e^{z_2}+e^{z_3}+e^{z_4}}
a1=ez1+ez2+ez3+ez4ez1a2=ez1+ez2+ez3+ez4ez2a3=ez1+ez2+ez3+ez4ez3a4=ez1+ez2+ez3+ez4ez4
a
x
a_x
ax解释为算法对于概率的估计。以上就是softmax模型的一个例子。它具有参数w1到w4;b1到b4。
另外你也应该感觉到了,这四个概率满足:
a
1
+
a
2
+
a
3
+
a
4
=
1
a_1+a_2+a_3+a_4=1
a1+a2+a3+a4=1
我们可以把softmax的数学公式总结一下:
z
j
=
w
j
⋅
x
+
b
j
,
j
=
1
,
.
.
.
.
,
N
a
j
=
e
z
j
∑
e
z
k
∑
a
n
=
1
z_j=w_j\cdot x+b_j,j=1,....,N\\ a_j=\frac{e^{z_j}}{\sum e^{z_k}}\\ \sum a_n=1
zj=wj⋅x+bj,j=1,....,Naj=∑ezkezj∑an=1
此处的aj就是对模型等于j的估计。
这个模型可以看作是逻辑回归的一个泛化,因为如果j只有1,2的话,就是普通的逻辑回归了。
成本函数
接下来就该看看成本函数该怎么写了,同样地,我们仍然先回顾一下逻辑回归中的成本函数“二元交叉熵”是怎么写的:
l
o
s
s
=
−
y
l
o
g
a
1
−
(
1
−
y
)
l
o
g
(
1
−
a
1
)
(
P
S
:
1
−
a
1
=
a
2
)
J
(
w
,
b
)
=
a
v
e
r
a
g
e
l
o
s
s
loss=-y loga_1-(1-y)log(1-a_1)\\ (PS:1-a_1=a_2)\\ J(w,b)=average\:loss
loss=−yloga1−(1−y)log(1−a1)(PS:1−a1=a2)J(w,b)=averageloss
我将在下方写出softmax的损失函数:
l
o
s
s
=
:
{
−
l
o
g
a
1
,
i
f
y
=
1
−
l
o
g
a
2
,
i
f
y
=
2
−
l
o
g
a
3
,
i
f
y
=
3
−
l
o
g
a
4
,
i
f
y
=
4
loss=:\begin {cases}-loga_1,if\:\:y=1\\ -loga_2,if\:\; y=2\\ -loga_3,if\;\;y=3\\ -loga_4,if\;\;y=4 \end{cases}
loss=:⎩
⎨
⎧−loga1,ify=1−loga2,ify=2−loga3,ify=3−loga4,ify=4
它的意思是,如果这个标签的值y为n,那么就运行第n个式子。如果该答案概率远小于1,那么修正就会很大,否则就会很小,如下图:
(上图的图像大佬画的其实是有问题的,蓝色线应该穿过(1,0)。
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。
原文地址:https://blog.csdn.net/m0_75077001/article/details/136310690
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!