關於模式識別
對模式的識別是人類智慧的一個重要體現,人類具有很強的模式識別能力,能對千千萬萬的具體的物質進行識別,也能對事物進行高階抽象後的模式進行識別。一個人對模式識別的學習從小孩就開始,知道了這是花草、那是藍天白雲。這些對人類來說很簡單的事情,其實是很複雜的智慧行為。
關於模式
模式(pattern)可以看成是一種規律,可以用於刻畫事物的原型或表徵事物的特徵,比如花的形狀、狗吠的聲音等等。我們從生活經驗中抽象提煉各種各樣的模式,當我們具備這些核心知識後即能對各類事物進行判斷,可以說是從生活中不斷總結學習而得到事物的抽象規律。
比如看到下面的圖片時我們會想到:這是一個海邊風景圖片,即識別出了海邊風景圖而不是人物圖,識別出圖片中包括了沙灘、大海、藍天、白雲。而且我們對大海的識別並不是因為記住了大海的形狀,大海的形狀都是各種各樣不盡相同的,而是根據以往見過的大海的顏色特徵,外加大海與沙灘天空相鄰的特點,從而識別出是大海。
分類
人類對事物的識別其實很大程度就是對事物進行分類,就好比下面圖中的各種花,我們看到了桔梗時認為它是一種花,看到曼陀羅時也認為它是一種花,看到不同的花我們都對其進行分類,認為是花。類似地還有人、樹、汽車等等,都屬於分類概念,當看到相應事物時都會對其進行分類。
人類對模式的識別實際生活中包含了很多模糊抽象的分類,比如一個人是否智商高、一個人是不是很nice、一個人身體是否健康等等,這些需要不同的標準來定義。這些也是模式識別。
模式識別方法
模式識別的主要方法分為兩大類:基於知識的方法和基於資料的方法。
- 基於知識的方法主要是類似專家系統的方法,根據專家對某些物件或模式的研究,從中總結出描述某些類別的特徵,根據這些特徵對未知樣本進行推理。
- 而基於資料的方法主要是讓模型自己從資料中抽象一個模型,但我們需要先預確定好若干特徵,它不依靠專家對某些對話或模式的研究知識,實際上專門做模式識別的人也不可能在每個領域都去研究下,所以基於資料的方法更加友善。
兩類方法其實都有各自的優缺點。
- 我們可以認為基於資料的方法是以統計為基礎的,根據樣本對各種特徵進行統計得到分類器,整個過程我們可以不依賴於專家知識,我們只知道某些特徵與分類結果是有聯絡的,但我們沒必要確切知道這些聯絡具體是怎樣的。反過來,這也恰恰是它的缺點,有時我們想確切知道特徵與分類直接的內在關係,但這時卻無能為力,主要是基於資料方法的模型的內在機理還未被研究透徹,它更像是一個黑盒,而且還存在樣本差異性和問題不確定性等。
- 基於知識的方法則讓分類結果有明確的解釋,而且如果我們已經明確知道特徵和分類之間的關係,那麼直接使用基於知識的方法一般來說效果會更加好,因為專家知識是明確的。
模式識別中特徵和分類之間肯定存在某種規律時我們做這項工作才有意義,但如果二者是完全隨機的,那麼模式識別則失效。
常見場景
- 語言識別
- 光學字元識別(OCR)和手寫字元識別
- 影象目標定位
- 醫學生癌症識別
- 地質識別
模式識別一般過程
- 問題分析,分析問題能否使用模式識別,分析物件哪些特徵與分類結果相關。
- 樣本獲取,根據問題分析中需要用到的特徵和分類結果去採集樣本。
- 樣本處理,可能需要對樣本的原始特徵進行預處理操作,比如標籤化、規範化之類的。
- 分類器訓練,選擇一個分類演算法,搭建模型,使用樣本對該模型進行訓練。
- 模型效能評估,根據前面得到的樣本、定好的特徵、搭建好的模型訓練得到的模型進行效能評估。
- 模型迭代,可能目前模型效果不理想,需要重新確定特徵,也可能是對原始特徵進行處理得到新特徵,然後再一次訓練並進行效果評估。
-------------推薦閱讀------------
我的開源專案彙總(機器&深度學習、NLP、網路IO、AIML、mysql協議、chatbot)
跟我交流,向我提問:
歡迎關注: