文章目录[隐藏]
如何利用神经网络解决多类别分类问题?
(手写数字的识别问题,其实就是一个多类别分类问题,因为它有 10 10 10 种需要识别的类别,也就是数字 0 0 0 到 9 9 9。)
要在神经网络中实现多类别分类,采用的方法本质上是一对多法的拓展。
假设有一个计算机视觉的例子,我们不只需要识别出图中的汽车,现在我们需要识别四个类别的对象,通过图像来辨别出哪些是行人、汽车、摩托车或者货车:
这样的话,我们要做的就是建立一个有四个输出单元的神经网络:
现在神经网络的输出将是一个含 4 4 4 个数的向量:
输出变成了一个四维的向量,那么现在要做的就是,用第一个输出单元来判断图中是否是一个行人,再用第二个输出单元来判断图片中是否是一辆汽车,以此类推……
当图像中是一个行人时,理想情况下,这个网络会输出:
当图中是一辆汽车时,希望输出:
以此类推……
现在可以说我们有 4 4 4 个逻辑回归分类器:
它们每一个都将识别图片中的物体是否是四种类别中的一种。
这就是四输出单元的神经网络:
下面是 h ( x ) h(x) h(x) 对应不同图片的取值情况,我们对这种设定下的训练集的表示方式如下所示:
当训练集中有各种图片,包含行人、汽车、摩托车、卡车,应该怎么办呢?
首先,输出的表示方法如下所示:
y ( i ) y^{(i)} y(i) 的值取决于对应的图像 x ( i ) x^{(i)} x(i),那么一个训练样本将由一组 ( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)}) (x(i),y(i)) 组成。
其中 x ( i ) x^{(i)} x(i) 就是四种物体其中一种的图像,而 y ( i ) y^{(i)} y(i) 就是这些向量中的一个:
我们希望找到一个方法,让神经网络输出一些数值,输出值 h ( x ( i ) ) h(x^{(i)}) h(x(i)) 约等于 y ( i ) y^{(i)} y(i),并且 h ( x ( i ) ) 和 y ( i ) h(x^{(i)})和y^{(i)} h(x(i))和y(i) 在该例子中都是四维向量,分别代表四种不同的类别。
这需要一个算法,它能在给定训练集时,为神经网络拟合参数。下一篇笔记会提到。
这就是让神经网络解决多类别分类问题的方法。
参考资料:吴恩达机器学习系列课程
原文链接:https://blog.csdn.net/weixin_45961774/article/details/104398289?ops_request_misc=&request_id=8bd70c8125f1429c8fe1ae9022366938&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~koosearch~default-5-104398289-null-null.268%5Ev1%5Econtrol&utm_term=%E8%A5%BF%E5%AE%89%E6%91%A9%E6%89%98%E8%BD%A6