自学内容网 自学内容网

很基础!!!吴恩达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+ez1=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=wjx+bj,j=1,....,Naj=ezkezjan=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(1y)log(1a1)(PS:1a1=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=1loga2,ify=2loga3,ify=3loga4,ify=4
它的意思是,如果这个标签的值y为n,那么就运行第n个式子。如果该答案概率远小于1,那么修正就会很大,否则就会很小,如下图:
在这里插入图片描述
(上图的图像大佬画的其实是有问题的,蓝色线应该穿过(1,0)。
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。


原文地址:https://blog.csdn.net/m0_75077001/article/details/136310690

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!