摘要:“模式識別”是一門難度較大的信息工程類專業課程。為改善課程教學效果,常應用Matlab進行算法設計與仿真。然而在實際教學過程中發現,不恰當使用Matlab會帶來一些問題。以“模式識別”課程教學為研究對象,重點分析了Matlab在課程教學中不恰當使用帶來的主要問題,并提出了針對性的解決方法。實踐證明,該解決方法能夠有效改善Matlab在“模式識別”課程教學中的應用效果。
關鍵詞:模式識別;Matlab;教學研究
作者簡介:楊勃(1974-),男,湖南岳陽人,湖南理工學院信息與通信工程學院,講師;歐陽竟成(1968-),男,湖南平江人,湖南理工學院信息與通信工程學院,副教授。(湖南 岳陽 414000)
基金項目:本文系2011年湖南省教育廳科學研究優秀青年項目(項目編號:11B055)的研究成果。
中圖分類號:G642.0 文獻標識碼:A 文章編號:1007-0079(2012)34-0063-02
“模式識別”是理論和實踐并重的一門信息工程專業課。該課程[1]涉及統計學、計算機科學、控制論、最優化、數值計算、信號處理等多領域知識,牽涉面廣且理論艱深,學生學習難度大。因此課程教學不僅要進行原理知識講授,還需進一步實現模式識別具體算法,以加深學生的直觀感受,提高學生理論和實際應用水平。
“模式識別”課程中大部分算法的處理對象是多維數據,需用到矩陣運算等數值計算過程。考慮到Matlab軟件具有便捷的矩陣運算、數據圖像繪制功能,附帶強大的數值計算工具箱,而且在很多其他關聯課程教學[2-4]中也常被用于輔助教學,為此引入了Matlab輔助“模式識別”課程教學,以加深學生對模式識別基本知識、常用算法的理解,提高教學效果。然而,在實際教學中發現,若不恰當使用Matlab,教學效果的改善并不明顯。本文主要研究Matlab在“模式識別”課程教學中的應用,首先對Matlab在該課程教學中的優勢及不足進行了分析,然后在此基礎上提出了針對性的解決方法。
一、Matlab在“模式識別”課程教學中的優勢
Matrix Laboratory(矩陣實驗室,簡稱:Matlab)是美國MathWorks公司研發的一款數學軟件。它將矩陣運算、科學數據可視化、系統建模與仿真等諸多強大的數學計算功能集成在一個易于使用的統一視窗環境中,為科學研究、工程計算的諸多科學、工程計算領域提供了一種全面解決方案。此外,Matlab還提供了諸如統計、擬合、優化、神經網絡、信號處理、圖像處理、系統辨識、控制建模與分析、嵌入式系統開發等多個工具箱,[5]很好地滿足了相關領域的科研與工程應用需求。
目前,在國內外高等院校中,Matlab事實上已成為線性代數、數理統計、信號處理、圖像處理、模式識別、自動控制原理等課程的基本教學工具。具體針對輔助“模式識別”課程教學而言,Matlab的優勢主要可體現在以下幾個方面:
“模式識別”常見的處理對象有一維時域信號、二維圖像信號等,離散化后可用一維向量、二維矩陣表示。Matlab具有便捷的向量和矩陣運算功能,通過簡單的表達式計算和基本函數調用就可以實現矩陣四則運算、求逆、特征值分解等常見矩陣運算。除此之外,Matlab還集成有數值最優化、統計分析、神經網絡、信號處理、小波分析等數值計算工具箱,可快速實現模式識別中的待識別信號預處理、小波域特征提取、統計特征降維、最優決策器設計等模式識別主要算法。
Matlab具有強大的數據可視化功能,通過簡單的函數調用可實現二維、三維甚至四維的多種可視化要求(如曲線圖、散點圖、等高線圖、表面圖、陰影圖、柱狀圖、梯度場圖等不同可視化圖形),從而可直觀感受不同模式識別算法處理數據結果的差異,進而快速理解不同算法的優劣和適用范圍。
Matlab具有強大的交互式視窗平臺開發功能,為教師開發模式識別常用算法實驗平臺提供了強有力的支持,同時為學生圍繞平臺進行二次開發提供了很大的幫助,降低了學生主動參與的門檻。
二、Matlab在“模式識別”課程教學中的不足
Matlab強大的計算能力、數據可視化能力、交互式視窗平臺開發能力為“模式識別”課程教學提供了強有力的支持。然而,正所謂“成也蕭何,敗也蕭何”,在實際教學中發現,“模式識別”課程教學的不同環節如果不恰當地使用Matlab會導致教學效果更差。下面以模式識別中的一種典型學習算法——主成分分析方法為例,對不恰當使用Matlab在“模式識別”課程教學中帶來的問題進行詳細分析。
主成分分析(Principal Components Analysis,PCA)又稱主元分析,是一種典型的非監督特征線性降維方法。該方法由Hotelling于1933年提出,其目標是要找一種最優的空間變換方式,讓標準化后的原始變量通過線性組合表達為若干個向量,同時要求這些向量之間相互正交,且第一個向量能反映樣本間自變量的最大差異。也就是說,樣本集在該向量上的投影坐標是按照樣本間自變量差異的大小確定的,其他向量所反映的這種差異程度依次降低,一般稱這些向量為主成分或主元。主成分算法的基本流程如下:
(1)已知一批高維正態分布數據,N為數據樣本數量,樣本維數為l。計算協方差矩陣為:。其中,數據均值為。
(2)對協方差矩陣進行特征值分解,非零特征值降序排列,對應的特征向量單位化。
(3)計算前k(k (4)高維樣本進行投影,即,為最終降維結果。 由以上算法描述可知,主成分分析方法主要分四步進行。從主成分分析算法實現角度來看,最主要的工作在前兩步。第一步應當首先求得數據均值,而數據均值計算可通過一個向量加法循環來實現。有了數據均值就可以將原始數據標準化。在此基礎上,通過另一個矩陣乘法循環即可求得協方差矩陣。算法第二步的核心則是矩陣特征值分解,可通過選擇冪法、反冪法、雅可比法等方法中的任意一種來實現,也可以通過直接調用Matlab中的eig函數來實現;完成特征值分解后,還需進行一次排序操作,可通過選擇冒泡排序、快速排序等經典排序算法來實現。 學生要想自己獨立實現主成分分析算法,則必然要經過以上分析過程。然而,部分學生為應付算法設計任務紛紛繞過以上分析過程,轉而求助于Matlab強大的工具箱。事實上,Matlab中的主成分分析算法實現被完全封裝在函數princomp中。學生簡單調用該函數即可實現高維數據的主成分分析: [PC,SCORE,latent,tsquare]=princomp(X) 其中,PC為求得的主成分,latent為數據矩陣X對應的協方差矩陣的特征值。顯然,僅使用該函數,學生無法了解主成分分析的工作機理,不能真正掌握該算法的具體計算流程。 在模式識別課程中,類似于主成分分析的算法還有很多。這些算法在Matlab中一般都有對應的簡單實現函數。因此,過分依賴Matlab及其工具箱提供的強大科學計算能力對于學生掌握模式識別算法流程、進一步完成算法的設計與實現是沒有好處的。 三、針對性的解決方法 針對過分依賴Matlab及其工具箱帶來的問題,提出了如下解決方法: (1)課堂教學時長相對短暫。教師在重點講解算法原理后,如果再詳細講解算法設計與實現,顯然耗時過長。因此,教師在結合Matlab講解算法實現時,宜采用Matlab中對應的算法函數直接實現。如講解主成分分析時,應采用調用princomp函數方式快速實現主成分分析。同時,將講解和演示重點真實數據在算法處理后的效果進行可視化演示,以增加學生對算法原理和效果的直觀感受。以主成分分析為例,以下是對某一批數據的主成分分析結果。數據降維分布對比如圖1所示。 通過以上分布對比圖,學生即可直觀感受到主成分將原始三維空間數據成功降至為二維平面數據。通過分布直觀比較學生易知,選取第一、第二主成分方向進行降維能夠最大程度保持原始數據方差分布特性。因此,在課堂講解過程中,采用Matlab進行輔助教學應側重于算法結果的可視化演示,使學生對算法功能有直觀的認識,激發學生進一步了解算法原理的興趣。 (2)在激發學生了解算法原理的興趣的基礎上,通過作業、課程設計等多種方式進一步強化學生課外學習,使學生通過查閱資料,在初步了解算法的計算過程的基礎上獨立設計并實現相關算法。如要求學生課后完成算法設計作業:采用Matlab編程實現主成分分析。為避免學生繞過算法具體實現,僅通過簡單調用princomp函數來完成主成分分析,特限定學生只能采用Matlab提供的基本矩陣運算功能來設計并實現算法。在此限定條件下,如果學生沒有真正掌握主成分分析算法的計算過程,是無法編程實現該算法的。 四、教學實踐成效 教學班級有學生34人,采用本文提出的解決方法引入Matlab進行“模式識別”課程教學。在課堂教學過程中,通過princomp函數快速實現主成分分析算法,并對真實數據進行主成分分析降維可視化演示。從課堂教學情況來看,所有學生從主成分降維可視化演示中掌握了主成分分析的主要功能,激發了學生了解算法原理的興趣。課后要求學生用Matlab編程實現主成分分析,29名學生較好地完成了任務,其他6名同學思路正確,但因沒有上機調試,存在一些錯誤。從學生課后作業的完成情況來看,所有同學均掌握了主成分分析算法原理和計算過程。 五、結論 本文對如何合理使用Matlab輔助“模式識別”課程教學進行了探討。分析指出,過于依賴Matlab將使學生無法真正掌握模式識別算法原理。因此,教學過程中必須合理使用Matlab:一方面,教師借助Matlab強大的圖像繪制功能,使學生獲得最為直觀的感受,加深基本知識的理解;另一方面,限制學生對Matlab工具箱的濫用,要求僅通過使用基本矩陣運算來實現算法,使學生能真正掌握算法原理,同時提高學生的程序設計能力。 參考文獻: [1]邊肇祺,張學工,等.模式識別[M].第二版.北京:清華大學出版社,2000. [2]陳懷琛.Matlab及其在理工課程中的應用指南[M].西安:西安電子科技大學出版社,2000. [3]楊雷,王丹.Matlab在“信號分析與處理”課程教學中的應用[J].南京:電氣電子教學學報,2010,32(2):84-86. [4]樊愛軍,王開發.Matlab在醫學院校高等數學教學中的應用[J].西北醫學教育,2006,14(3):331-333. [5]劉保柱,蘇彥華,等.Matlab 7.0從入門到精通(修訂版)[M].北京:人民郵電出版社,2010. (責任編輯:王祝萍)