怎样把机器学习的方法融合到我的应用中?
提取特征-》训练-》分类
使用机器学习的问题主要是,样本的构造比较麻烦,而且会进一步降低实时性。
如果在我的应用中使用机器学习的话,步骤应该是这样:
1,确定特征。
首先要确定障碍物和地板(可行走路径)的最大的区别在哪里。也就是它们之间显著的区别特征在哪里。在我的应用中,可以区分它们的特征无非是颜色(RGB), HSV,灰度,纹理,边缘等等。这个步骤最重要的是找出它们之间区别最大的特征,这样利于进一步的根据这些特征分类。特征选择的好,训练过程更容易收敛,更快。
2,构造样本
根据实际的应用,构造尽可能典型,尽可能多的样本。包括正例和反例。对于我的应用来说,就是构造在各种条件下(光照)的典型障碍物(桌子,凳子,冰箱等等)的图片和地板的图片。样本图片的大小要根据摄像头采集的图像的大小及机器人所能识别的最小障碍物的大小和最小安全距离等确定。
3,选择机器学习的算法
神经网络,遗传算法,SVM,GMM,EM等等。每种机器学习的算法都有自己的特点和使用的范围,根据自己对性能和实时性的要求,选择一个适合自己应用的。
4,训练
用样本对算法进行训练,可能需要调整学习算法的一些参数,比如学习率等。
5,分类
对于自己训练过的算法,对实际的输入进行分类,并评估其性能。若不符合要求则转到步骤1。
是否在我的应用中使用机器学习算法就一定能够提高性能?如果直接只是使用HSV空间作为分割的特征的话,这样特征的取值与结果之间甚至可以近似的使用解析式和条件判断式表达。这样机器学习是不是就没有发挥的余地了?在这种情况下使用机器学习就有种脱了裤子放屁之感。而如果使用Gabor小波多尺度多方向提取的纹理作为分割的特征的话,比较简单的方法是用他们的方差和均方值进行分割。
机器学习应该适用于那种输入和输入不能或很难用解析式和条件判断表达的情况,例如垃圾邮件的分类,是否获得癌症的判断等。
如果有多个特征进行分类时,用我们简单的对他们加权计算欧式距离并不一定能接近真实的情况,而机器学习却可以通过样本学习,逐步逼近真实的情况。
如果使用多个特征的加权进行判别,例如x+y+z+h <200 ->属于A类,>=200 ->属于B类,本质上是在一个4维空间里的一个判别面,这个面的一边是一个类,另一面是另一个类。而实际中,多个特征之间不可能是线性无关的,而且简单的加权并不能反映真实的情况。而使用机器学习的方法,如人工神经网络,支持向量机,则通过样本学习,构造的这个判别面不是一个线性的面,而可能是一个非线性的面。例如在三维空间里不是一个平面,而可能是一个凸面等等,通过对大量样本的学习,这个面会逐步的接近(接近的方法取决于机器学习的算法本身)那个理想中的面。而通过调正算法的参数,如增加神经网络的神经元节点的个数等会使这个面更平滑,即更接近于真实的情况,当然学习的时间会更长。感觉类似于最优化方法,只不过是一个迭代的过程。
提取特征-》训练-》分类
使用机器学习的问题主要是,样本的构造比较麻烦,而且会进一步降低实时性。
如果在我的应用中使用机器学习的话,步骤应该是这样:
1,确定特征。
首先要确定障碍物和地板(可行走路径)的最大的区别在哪里。也就是它们之间显著的区别特征在哪里。在我的应用中,可以区分它们的特征无非是颜色(RGB), HSV,灰度,纹理,边缘等等。这个步骤最重要的是找出它们之间区别最大的特征,这样利于进一步的根据这些特征分类。特征选择的好,训练过程更容易收敛,更快。
2,构造样本
根据实际的应用,构造尽可能典型,尽可能多的样本。包括正例和反例。对于我的应用来说,就是构造在各种条件下(光照)的典型障碍物(桌子,凳子,冰箱等等)的图片和地板的图片。样本图片的大小要根据摄像头采集的图像的大小及机器人所能识别的最小障碍物的大小和最小安全距离等确定。
3,选择机器学习的算法
神经网络,遗传算法,SVM,GMM,EM等等。每种机器学习的算法都有自己的特点和使用的范围,根据自己对性能和实时性的要求,选择一个适合自己应用的。
4,训练
用样本对算法进行训练,可能需要调整学习算法的一些参数,比如学习率等。
5,分类
对于自己训练过的算法,对实际的输入进行分类,并评估其性能。若不符合要求则转到步骤1。
是否在我的应用中使用机器学习算法就一定能够提高性能?如果直接只是使用HSV空间作为分割的特征的话,这样特征的取值与结果之间甚至可以近似的使用解析式和条件判断式表达。这样机器学习是不是就没有发挥的余地了?在这种情况下使用机器学习就有种脱了裤子放屁之感。而如果使用Gabor小波多尺度多方向提取的纹理作为分割的特征的话,比较简单的方法是用他们的方差和均方值进行分割。
机器学习应该适用于那种输入和输入不能或很难用解析式和条件判断表达的情况,例如垃圾邮件的分类,是否获得癌症的判断等。
如果有多个特征进行分类时,用我们简单的对他们加权计算欧式距离并不一定能接近真实的情况,而机器学习却可以通过样本学习,逐步逼近真实的情况。
如果使用多个特征的加权进行判别,例如x+y+z+h <200 ->属于A类,>=200 ->属于B类,本质上是在一个4维空间里的一个判别面,这个面的一边是一个类,另一面是另一个类。而实际中,多个特征之间不可能是线性无关的,而且简单的加权并不能反映真实的情况。而使用机器学习的方法,如人工神经网络,支持向量机,则通过样本学习,构造的这个判别面不是一个线性的面,而可能是一个非线性的面。例如在三维空间里不是一个平面,而可能是一个凸面等等,通过对大量样本的学习,这个面会逐步的接近(接近的方法取决于机器学习的算法本身)那个理想中的面。而通过调正算法的参数,如增加神经网络的神经元节点的个数等会使这个面更平滑,即更接近于真实的情况,当然学习的时间会更长。感觉类似于最优化方法,只不过是一个迭代的过程。
2008-01-29
于士友
没有评论:
发表评论