江西天亿建设有限公司网站,高端网站哪种好,许昌长葛网站建设制作设计,金融网站源码 asp上一章——激活函数 文章目录什么是多分类问题Softmax贝叶斯公式softmax的损失函数多标签分类问题什么是多分类问题
在之前的课程中#xff0c;我们学习了二分问题#xff0c;二分问题中的所有数据会被分类为0和1#xff08;或者Ture和False#xff09;两种输出标签。但是…上一章——激活函数 文章目录什么是多分类问题Softmax贝叶斯公式softmax的损失函数多标签分类问题什么是多分类问题
在之前的课程中我们学习了二分问题二分问题中的所有数据会被分类为0和1或者Ture和False两种输出标签。但是在大多数情况下分类问题的输出远远不止两种情况例如之前在课程中举例的肿瘤问题肿瘤被分为良性和恶性两种但实际上会有更多的分类情况它有可能是A型B型C型…我们将这种拥有2种以上输出标签的问题称为多分类问题。虽然输出y依旧只能取值有限的离散值但是输出标签的种类将会有两个以上。
MNIST被称为机器学习的“Hello World”MNIST要求算法识别出不同的字迹所对应的数字所有的阿拉伯数字总共有10个0~9MNIST就是一个典型的多分类问题。 在二分问题中我们的拟合方法是找到假设函数g(z)g(z)g(z)中的决策边界z那么推广到多分类问题中也是同样的方法二分问题只需一条决策边界而往后的n分问题则需要n条决策边界。类比二分问题中我们使用的是逻辑回归在多分问题中我们将学习Softmax算法。 Softmax
Softmax算法是对逻辑回归的推广和泛化是一种针对多分类环境下的二元分类算法 首先我们要指出一点所有离散值的预测概率之和一定为1。 以二分问题中的逻辑回归为例假设P(y1∣x)0.71P(y1|x)0.71P(y1∣x)0.71,那么P(y0∣x)1−0.710.29P(y0|x)1-0.710.29P(y0∣x)1−0.710.29, 这个很好理解因为输出结果不是0就是1那么P(y1∣x)P(y0∣x)1P(y1|x)P(y0|x)1P(y1∣x)P(y0∣x)1那么我们推广到多元
我们会发现Softmax的计算公式与Sigmoid相似 Softmaxzjw⃗j⋅x⃗bj(j1...N)z_j\vec w_j \cdot \vec xb_j(j1...N)zjwj⋅xbj(j1...N) ajezj∑k1NezkP(yj∣x⃗)a_j\frac{e^{z_j}}{\sum^N_{k1} e^{z_k}}P(yj|\vec x)aj∑k1NezkezjP(yj∣x) 如果想要从数学上理解Softmax函数我们必须先了解一个概念
贝叶斯公式 贝叶斯公式
条件概率公式 P(x∣y)P(xy)P(y)P(x|y)\frac {P(xy)}{P(y)}P(x∣y)P(y)P(xy) 其中P(x∣y)P(x|y)P(x∣y)代表在y事件已经发生的情况下x事件发生的概率P(xy)P(xy)P(xy)代表事件xy都发生的概率P(y)代表y事件发生的概率无论x事件是否发生
全概率公式 P(x)∑i1nP(yi)P(x∣yi)P(x)\displaystyle\sum^n_{i1}P(y_i)P(x|y_i)P(x)i1∑nP(yi)P(x∣yi) 因此x事件发生的全概率是在每一种yiy_iyi事件发生的情况下事件x发生的概率之和
贝叶斯公式 P(yi∣x)P(x∣yi)P(yi)P(x)P(x∣yi)P(yi)∑j1nP(yi)P(x∣yj)P(y_i|x)\frac {P(x|y_i)P(y_i)}{P(x)}\frac {P(x|y_i)P(y_i)}{\sum^n_{j1}P(y_i)P(x|y_j)}P(yi∣x)P(x)P(x∣yi)P(yi)∑j1nP(yi)P(x∣yj)P(x∣yi)P(yi) 其中根据条件概率公式我们知道P(x∣yi)P(yi)P(xyi)P(x|y_i)P(y_i)P(xy_i)P(x∣yi)P(yi)P(xyi)即为x和yiy_iyi事件都发生的概率P(x)为x事件发生的全概率 因此P(yi∣x)P(xyi)P(x)P(y_i|x)\frac {P(xy_i)}{P(x)}P(yi∣x)P(x)P(xyi)
在二分类问题中由于分类只有两种因此事件y只有两项如果我们将贝叶斯公式上下同时除以P(y1)P(x∣y1)P(y_1)P(x|y_1)P(y1)P(x∣y1) P(y1∣x)P(y1)P(x∣y1)P(y1)P(x∣y1)P(y2)P(x∣y2)P(y_1|x)\frac {P(y_1)P(x|y_1)}{P(y_1)P(x|y_1)P(y_2)P(x|y_2)}P(y1∣x)P(y1)P(x∣y1)P(y2)P(x∣y2)P(y1)P(x∣y1) 11P(y2)P(x∣y2)P(y1)P(x∣y1)\frac {1}{1\frac {P(y_2)P(x|y_2)}{P(y_1)P(x|y_1)}}1P(y1)P(x∣y1)P(y2)P(x∣y2)1
我们将P(y2)P(x∣y2)P(y1)P(x∣y1)\frac {P(y_2)P(x|y_2)}{P(y_1)P(x|y_1)}P(y1)P(x∣y1)P(y2)P(x∣y2)设为e−ze^{-z}e−z P(y1∣x)11e−zP(y_1|x)\frac {1}{1e^{-z}}P(y1∣x)1e−z1 是不是有点眼熟没错这就是Sigmoid函数 其中zlnP(y2)P(x∣y2)P(y1)P(x∣y1)zln\frac {P(y_2)P(x|y_2)}{P(y_1)P(x|y_1)}zlnP(y1)P(x∣y1)P(y2)P(x∣y2),z与向量的关系请参考sigmoid与条件概率的关系及推导过程 之所以要设成e的指数形式是为了防止概率出现负数以e的指数形式表示是不会出现负数的 我们说softmax是Sigmoid的推广你可以简单地把P(y1∣x)看作t1t1t2,P(y_1|x)看作\frac {t_1}{t_1t_2},P(y1∣x)看作t1t2t1,则P(y2∣x)1−t1t1t2t2t1t2P(y_2|x)1-\frac {t_1}{t_1t_2}\frac {t_2}{t_1t_2}P(y2∣x)1−t1t2t1t1t2t2然后推广到n阶就有P(yN∣x)tNt1...tNP(y_N|x)\frac {t_N}{t_1...t_N}P(yN∣x)t1...tNtN,当然我只是从结果上讲没有什么数学推理具体原理贴在下面链接
本文只是简单地提一下概率论的一些基本知识至于softmax公式的推导如果还想深究里面的数学原理可以看看这个视频作者本人打算学完这个系列之后在复习这些内容softmax是为了解决归一问题凑出来的吗和最大熵是什么关系最大熵对机器学习为什么非常重要 softmax的损失函数
回到我们上面的内容Softmax zjw⃗j⋅x⃗bj(j1...N)z_j\vec w_j \cdot \vec xb_j(j1...N)zjwj⋅xbj(j1...N) ajezj∑k1NezkP(yj∣x⃗)a_j\frac{e^{z_j}}{\sum^N_{k1} e^{z_k}}P(yj|\vec x)aj∑k1NezkezjP(yj∣x) 我们说Softmax是逻辑回归的推广那么其损失函数也应当类似 其中loss(a1,....aN,y){−loga1ify1−loga2ify2...−logaNifyNloss(a_1,....a_N,y) \begin{cases} -log\space a_1 \space\space if \space y1 \\ -log\space a_2 \space\space if \space y2 \\ ... \\ -log\space a_N \space\space if \space yN \end{cases}loss(a1,....aN,y)⎩⎨⎧−log a1 if y1−log a2 if y2...−log aN if yN 当概率aia_iai越接近0损失越大其中N代表单层内神经元的个数 多标签分类问题 如果我们想要用人工智能来实现视觉识别就像你平时在上网时遇到的一些验证题目“为了验证您不是机器人请找出图中的汽车”。我们想要实现对一张图片同时多处进行识别以上图为例识别图中是否有轿车是否有公交车是否有行人 那么该例子中输入图片x我们将会得到一个含三个数字的输出向量y。
注意多标签分类问题和我们在上面所说的多分类问题并不是同一个东西在多分类问题中尽管有多种不同的取值但我们最后得到的输出结果往往是数字y。其本质回答的是一个问题预测值属于哪一类 而在多标签分类问题中最终的输出结果是一个含多个数字的向量这意味着你可以认为它同时解答了多个问题是否存在a是否存在b…是否存在n在多分类问题中最终结果只能是多个标签中的一个但在多标签分类问题中最终结果可能是多个标签同时存在。 我们怎样去实现多标签分类问题如果说回答三个问题我们当然可以设计三个神经网络来分别解决。但是这样未免也太浪费了实际上由于这三个问题的结构都是一模一样的本质上来说都是同样的算法它们的隐藏层都是一样的因此我们可以将它们进行合并。 最终我们可以构造这样的一个神经网络唯一的区别在于输出层使用了多个神经元而非单个相当于我们将上面的三个神经网络的输出层的神经元合并到同一个输出层。而且注意在此处我们使用的是Sigmoid函数而非Softmax。不是说Softmax用于解决多个标签的分类问题吗因为本质上该例子中需要预测的问题是三个二分问题所以我们使用的是三个Sigmoid函数而非Softmax。
在学习中不要搞混了多分类问题和多标签分类问题的概念。你可以简单理解为多分类问题中的所有输出标签都是互斥的如果是A那就不能是B、C… 而在多标签分类问题中所有的输出标签并无互斥关系输出有A也不影响输出B它们可以同时存在。