模式分类 绪论,模式分类绪论


姗姗来迟的文章,依旧是老风格,先来几句废话,现在工作比较忙,也成功的转型到了本行,不用忍受各种“xx领导对你很不满意”这种恶心人的话了,可以安静的,专心的做的我的非主流科学家。
做技术的人,我们对自己的技术水平必须有一个客观的认识,不管现在什么职位,多少收入,这只能从另一个角度佐证一个人的能力,但距离自己心中的水平差多少,只有自己能评估出来,有差距,就去学,去做,去思考。
废话完毕。
本系列博客内容为对《模式分类》学习的总结和问题讨论,如有纰漏或错误,请各位留言指正,谢谢。

模式分类 绪论

绪论,多半都是告诉读者,我们的书是讲什么的,然后我们的书有多么多么的好,都有谁在用,巴拉巴拉一大堆(国内的书都这样),但这个绪论却让人一头雾水,它先介绍了模式分类是啥,然后给出好多好多问题,后面给了一句“哦,这些问题你看了这本书可能也解决不了”,让人哭笑不得,本书数学成分很多,所以,要做好持久战的准备,但绪论最后一部分还是很有鼓舞的,就是这些问题虽然还没有解决办法,但是我们非常肯定一定有一天会解决,原因就是这个系统的存在已经不需要证明了,我们自己就是活的模式分类系统,低功耗,高准确,高速,高可扩展性,高学习能力。。。。

机器感知

机器感知,让机器(计算机)能够进行一些识别、分类能力。比如人能很轻易的拿起一个苹果咬一口,说出甜的酸的,而不会拿起一个鼠标津津有味的品尝,这种能力可以叫为感知,可以通过一些事物的某些特点,来判断推测其属性,下面开始介绍一些名词,还是根据上面吃苹果和吃鼠标的例子:

特征:上面例子里面,我们区分了苹果和旁边的鼠标,可能通过苹果和鼠标的形状,或者颜色,也有可能是味道,但不管通过什么,都是他们本身的一种属性,这个又可以叫做特征(Feature)。
模型:原文用的两种鱼进行分类,但根据我们上面的例子,鼠标和苹果他们从某种角度可以用不同数学度量来分别表示自己的某些特征,这个就是两个东西有不同模型。
模式分类:为了将苹果和鼠标,我们通过我们的传感器,测得两个物体某一属性的不同数据,根据模型(由测得的数据类型组成的模型)来将物体进行分类(到底是苹果还是鼠标)的这个过程,换句话说,我们设计采集属性,建立采集属性的模型,区分不同类之间的模型。
数据采集:这个词不是解释它的意思,它的意思就是数据采集没有别的意思,但是这里要说一下的是,一旦数据经过采集,那么原有信息一定会丢失,而且大部分时间采集以后的数据丢失率是很高的,我们期望采集到的是更多的,对分类更有利的数据,尽量抛弃无用信息。
总体代价函数:完美主义者对这个可能比较反感,不得不说,不论什么分类都有出错的时候,而我们的目标是最大可能的降低出错率,或者将一个叫做“代价函数”的函数最小化,代价函数可以这样通俗一下:如果你把苹果当做了鼠标,你的代价是,不能工作了;如果你把鼠标当做了苹果,并且吃了下去,你的代价就是轻者手术,重者呜呼。这就是你分错类的代价,所以你宁可天天把苹果当鼠标,也不愿意把鼠标当苹果。当代价分配为所有出错的惩罚都一样的时候,等效于最小化出错率。
决策:模式分类(模式识别,模式判别)种最关键的一步,其本质是信息压缩的过程,比如一个苹果拥有的所有数据经过决策后他只有一个属性(苹果)

对于特定任务的性质:我们设计出来的模式分类算法或者系统都是针对某一特定问题,比如区分鼠标和苹果,这个算法或者系统可能并不适用于分类苹果和橘子,能够通用识别各种各样物体的系统,除了人和部分高级动物外,目前还是个大问题(书中作者表示,现在真的搞不定0.0)。
本书中使用个较多是基于统计特性的模式,从概率的观点来解释一些原理,实现一些系统,概率论不好的速度去补习。
另外模式表达有很多种,但常用的是两种,一种是实数向量法,比如苹果的(重量,高度,最大宽度)为(10,10,20),这就是一个实数向量的模式表示,其中每一个项都是一个特征,还有一些特征也是实数向量,但其本身的物理含义不明确,或者不直观,比如SIFT特征的128维描述子。还有一种是属性列表的模式表达,比如苹果的属性列表(颜色,产地,口感)为(红,山东,甜),这就是个属性列表组成的模式。
我们更倾向于,使用较少的特征,完成最好的分类,较少的特征带来的好处是

a)更简单的分类区间
b)更容易训练的分类器

当样本空间不足或者特征都不太好用时候,可以加入第三方知识背景,但前提是你能得到这些信息,比如苹果是妈妈拿到桌子上的,鼠标是自己拿到桌子上的,如果我们的机器捕捉到,这个物体是自己拿出来的,所以更倾向于判定物体为鼠标。
模式识别种集中比较重要的技术:

回归分析
函数内插
概率密度估计

需要说明的是,机器感知的概念是很大,就像人工智能一样,是一个大方向,而我们更多的是在做这个大方向种的一块小小的工作。
本文的整体结构:

这里写图片描述

模式识别系统

结合我少量的工作经验,模式识别系统是我们主要的,要设计算法的地方,整个系统的难点,但是相信我设计循环,也就是下一部分才是工作量最大的地方。
首先来看模式识别系统一般的整体结构和工作流程:

这里写图片描述

接下来详细的介绍下识别系统的各部分,其实这些如果做过一次模式识别程序的人,基本都有做过这些步骤,比较通用的一种系统结构。首先是信号的获取,无论是光学信号,电信号,声音信号,还是力学信号,输入到计算机,那么必须要采样,或者叫做采集,于是必须使用传感器,通过采集后的信号混有噪声和干扰信号,分割后,我们提取我们关心的信号,去除不关心的或者少部分比较关心的信号,选择可靠的特征,进行分类,最后根据分类结果进行决策。

1)传感器:传感器是对信号进行采集的设备,可以根据具体问题选择,本系列不研究硬件采集设备,但必须要知道的是,大部分信号噪声是这里产生的,而且只要有采样就有信息损失,这是无法避免的。
2)分割器,这是模式识别系统里面最深层的问题之一,也是最难解决的环节,这个环节的成败和效果对分类结果会产生直接影响,分割其实是组织结构学中的一个问题,也就是我们更关心数据集合中的一个子集,而如何不偏不倚的得到这个子集,是一个很困难的问题。如何找到一张图片中的人脸,直接决定了识别这个人脸是谁的结果,如果一张草原上的人的图片,分割的结果是两个羊驼的脸,想识别出这个脸的身份肯定没戏。而人类的视觉就具有这种不可思议的功能,仔细思考,真的太神奇了。
3)特征提取,特征提取和分类器之间界限不是很清楚,因为有时候不用提取特征也可以进行分类,或者如果你的分类器已经进化到一定阶段以后,可以完全对输入信号进行准确分类,而不需复杂的特征提取过程,但是这里讲特征提取拎出来讲的原因,是我们更希望有这样一个部分使得,同类信号进行分类时其信号特征非常相近,而不同类之间的信号特征尽可能远离,而且更重要的一点是,计算出来的特征,对非类别变化的其他变化不敏感(翻译通俗一点就是,一个苹果这么旋转,怎么切,怎么咬,它计算出来的特征值都应该不变,或者还是更接近苹果那一类,而不是鼠标),特征提取面向问题,不同的问题,有不同的解决办法。
4)分类器:未来我们主要研究的是分类器,这个器的主要功能就是特征提取后或者直接对输入信号进行分类,此处进行后信息会被压缩很多,比如判断鼠标和苹果,如果用图像的话,一张640X480的灰度图(8 bits),共有,8bits×640×480位的信号,而压缩后的信号只有,是苹果,是鼠标,即只有1Bits。 分类器主要面对的挑战是信号的波动,同类之间的波动,和不同类之间的波动,或者有可能出现信号的丢失,各种各样的问题。
5)后处理主要要考虑的是代价函数,或者叫做损失函数,或者根据上下文的一些信息,进行最后的决断。

这里必须要明确的一个事情就是,千万别想一次,一个简单的处理就能解决模式识别问题,这是一个环环紧扣的复杂系统,所以怕麻烦或者不愿意深入研究只想了解一些皮毛去应付什么的话,这里真的不好混。

设计循环

设计循环,这个项目进行的循环过程,一个痛苦的过程,不过每次痛苦都是进化,来看看我们的进化路线:

这里写图片描述

好吧,说说我的痛苦经历,采集数据是最痛苦的,首先必须准备好资金,因为你面临着选择传感器和传感系统的问题,最简单的,做视觉都知道相机的重要性,以及场景的光线,背景等,这些理论上在设计阶段都是可控的,但必须要考虑到你目前问题的规模和你的自己预算,这部分成本必须要考虑到,不然就只能做点简单的设计,想要得到好的结果,这部分不可避免,而且有一些是从算法或者其他后处理解决不了的。而且,数据采集的工作远大于其他部分!!
特征选择相对来说更加偏向设计,也是比较考察个人的先验知识,对整个问题的把握,这部分以及下一部分选择模型都是对知识的应用以及对知识了解的程度来决定好坏的,所以要多研究理论,然后这个时候就可以让理论大显神通了,切记不要一个个的试(这种方法叫做穷举,当使用这种方法进行破解的时候,叫做暴力破解,我以前的组长,高级工程师,高级项目经理,资深员工,不知道穷举啥意思,这里给他科普一下,不过他估计没时间看技术博客,应该是去做周报去了),所有这些选择模型和特征,都来自基础知识的运用,加上个人的灵感以及对问题的理解,这个是要重点修炼的地方。书上也重点强调了选择的重要性,但目前还没有一种通用的方法,帮我们做这些选择,这里真正的体现工程师的智慧和知识功底,只会跟着别人走的人只能叫干活的,而不是工程师!
训练模型就相对容易了,只是完成你的分类代码,让计算机飞快的计算你的算法, 这里也有一个问题就是计算量,如何降低学习过程的运算量(时间复杂度,空间复杂度),以及你目前的计算资源都是要考虑的,但是最近几十年的研究表明,基于样本的学习是设计分类器最有效的办法。
评价过程就是你对结果以及整个过程的接受与否,包括例如结果是否存在“过拟合”或者“欠拟合”的问题,计算过程时间复杂度的问题,这个过程对测试过程计算复杂度要求更苛刻一些,相比之下学习过程的复杂度要求更宽松,但也要追求高效。

学习和适应

这部分主要讲解学习算法的一些基础知识:

监督学习:给出分类结果,对模型进行优化是结果尽可能与给出的分类结果一致
非监督学习:不给出结果,算法根据规则自由发挥,产生若干个类别
强化学习:与监督学习不同,其结果不是给出是否分类正确,而是给出离正确结果的距离是多少,然后再进行循环优化

总结

虽然问题很复杂,也很多,但我们已经知道,这些问题必然能解决,解决问题的方法就在你的脑子里,其次最近的数学相关理论已经发展起来了,最后,还有更多令人激动的问题等待的我们去解决。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关内容