AI 已經被炒得如火如荼,那么生活在這個快速變化時代的我們,不管你身處哪個行業,都不該置身事外,多多少少去了解一下,才不會和這個快速變化的時代格格不入,倍感孤獨。開篇我提過兩本書,如果你粗略翻看過,多少能理解個大概。為了讓沒有任何經驗的外行能夠快速的進入AI的神秘世界,今天就來好好討論怎么開始,如何下嘴。
AI 是個很寬泛的東西,我們通常的理解,它包括機器學習,自然語言處理,視覺識別,涉及的學科如計算機科學,數學,認知學,心理學,社會學,哲學等,我們可以把一切關于計算模擬人腦思維或功能的模擬均可以認為是AI。可以看出 AI 不是一個孤立的學科領域,其實很好理解,人類智能的形成也是包含多方面的,要模擬人的智能,離不開各領域的研究。如此說來,想進入AI領域豈不是很難?這里討論的只是AI中的某些領域,或許通過這一領域的學習,以點帶面的去了解AI的全貌,或許是個比較切合實際的做法,在接下來的篇章中,各領域均會涉及,因為是入門級別的,所以淺嘗則止,你可以選擇你喜歡的領域去專研。
接下來把我們將要涉及的內容概述一下:
1)數據挖掘和分析:主要探討數據的抓取,處理和分析
2)機器學習:主要探討深度學習模型及應用
3)計算機視覺:主要介紹和視覺識別有關的庫及其應用
4)自然語言分析:主要介紹自然語言的識別和合成,另外會涉及到情感分析的內容
5)深度學習算法:介紹幾個常見的深度學習算法及應用
以上每一個分支都可以展開來講,都可以作為一個獨立的領域花一輩子去研究,但人生苦短,這里只是點到為止,盡可能地取其精華。
一、首先來說說什么是數據挖掘
數據挖掘就是指從數據中獲取知識。
這樣的定義方式比較抽象,但這也是業界認可度最高的一種解釋了。對于如何開發一個大數據環境下完整的數據挖掘項目,業界至今仍沒有統一的規范。說白了,大家都聽說過大數據、數據挖掘等概念,在我們的商業社會里,每個人或組織的任何行為都會產生大量的數據,從表面上看這些數據是多么的繁雜無序,然而,這些數據的背后往往有某種潛在的邏輯,針對這些邏輯的挖掘探討,往往可以發掘出非常有價值的東西。這個就是數據挖掘需要做的事情。
那么,數據挖掘通常的流程是怎么樣的呢?從形式上來說,數據挖掘的開發流程是迭代式的。開發人員通過如下幾個階段對數據進行迭代式處理:
其中,
解讀需求
絕大多數的數據挖掘工程都是針對具體領域的,因此數據挖掘工作人員不應該沉浸在自己的世界里YY算法模型,而應該多和具體領域的專家交流合作以正確的解讀出項目需求。這種合作應當貫穿整個項目生命周期。
搜集數據
在大型公司,數據搜集大都是從其他業務系統數據庫提取。很多時候我們是對數據進行抽樣,在這種情況下必須理解數據的抽樣過程是如何影響取樣分布,以確保評估模型環節中用于訓練(train)和檢驗(test)模型的數據來自同一個分布。
預處理數據
預處理數據可主要分為數據準備和數據歸約兩部分。其中前者包含了缺失值處理、異常值處理、歸一化、平整化、時間序列加權等;而后者主要包含維度歸約、值歸約、以及案例歸約。后面兩篇博文將分別講解數據準備和數據歸約。
評估模型
確切來說,這一步就是在不同的模型之間做出選擇,找到最優模型。很多人認為這一步是數據挖掘的全部,但顯然這是以偏概全的,甚至絕大多數情況下這一步耗費的時間和精力在整個流程里是最少的。
解釋模型
數據挖掘模型在大多數情況下是用來輔助決策的,人們顯然不會根據'黑箱模型'來制定決策。如何針對具體環境對模型做出合理解釋也是一項非常重要的任務。
二、機器學習
作為機器學習領域的先驅,Arthur Samuel在 IBM Journal of Research and Development期刊上發表了一篇名為《Some Studies in Machine Learning Using the Game of Checkers》的論文中,將機器學習非正式定義為:”在不直接針對問題進行編程的情況下,賦予計算機學習能力的一個研究領域。”
在機器學習的歷史上,Arthur Samuel做了一些非常酷的事情。他曾經做了一個西洋棋程序,讓計算機自己跟自己下棋,下棋速度非常快,因此Arthur Samuel讓他的程序自己和自己下了成千上萬盤棋,逐漸的,程序開始慢慢意識到怎樣的局勢能導致勝利,怎樣的局勢能導致失敗,因此它反復的自己學習“如果讓競爭對手的棋子占據了這些地方,那么我輸的概率可能更大”或者“如果我的棋子占據了這些地方,那么我贏的概率可能更大”所以漸漸的,Arthur Samuel的程序掌握了哪些局面可能會輸,哪些局面可能會贏,因此奇跡出現了,他的程序的棋藝甚至遠遠超過了他自己。ArthurSamuel讓他的程序比他自己更會下棋,但是他并沒有明確的教給程序具體應該怎么下,而是讓它自學成材。
機器學習的類型有哪些呢?
監督學習
訓練數據中,每個樣本都帶有正確答案。
個人理解,這種方式有正確答案的監督或者說參照,所以稱為監督學習。就好像老師提供對錯指示、告知最終答案的學習過程。
學習器從訓練數據中學到正確答案的決策函數 y=f(x) 用于新的數據預測。
典型任務:預測數值型數據的回歸、預測分類標簽的分類、預測順序的排列
應用:手寫文字識別、聲音處理、圖像處理、垃圾郵件分類與攔截、網頁檢索、基因診斷、股票預測等。
無監督學習
訓練數據中,每個樣本都沒有正確答案。
學習器自己在訓練數據中找規律。就像在沒有老師的情況下,學生自學的過程。 所以稱為無監督學習。
典型任務:聚類(相似點)、異常檢測(異常點)。
應用:人造衛星故障診斷、視頻分析、社交網站解析、聲音信號解析、數據可視化、監督學習的前處理工具等。
半監督學習
訓練數據中,少部分樣本有正確答案。
學習器使用大量的沒有正確答案的數據,以及同時使用有正確答案的數據,來進行模式識別工作。在有正確答案的樣本幫助下,獲得比只用無正確答案的樣本得到的結果更好的學習效果,提高學習器的精度。是無監督學習和監督學習的結合,所以稱為半監督學習。
典型任務:半監督分類,半監督回歸,半監督聚類,半監督降維
強化學習
強化學習把學習看作試探評價過程,Agent選擇一個動作用于環境,環境接受該動作后狀態發生變化,同時產生一個強化信號(獎或懲)反饋給Agent,Agent根據強化信號和環境當前狀態再選擇下一個動作,選擇的原則是使受到正強化(獎)的概率增大。選擇的動作不僅影響立即強化值,而且影響環境下一時刻的狀態及最終的強化值。
三、計算機視覺
通俗地講,計算機視覺就是給機器賦予視覺的能力,比如裝上攝像頭,通過程序算法讓機器通過攝像頭獲取的圖像進行處理,模式識別,并達到理解的目的。這個比較好理解,現在我們身邊就可以看到相關的應用,比如OCR技術,識別圖像文字,人臉識別,指紋識別,這個很多智能手機已經內建了這些功能,而且趨于成熟。
計算機視覺學習過程中會用到不少現成的庫,比如openCV, DLIB, Face 等等開源的庫文件,在以后的篇幅中會詳細講解。
四、自然語言處理(NLP)
一般來說,自然語言處理的目的是讓機器能夠執行人類所期望的某些語言功能自然語言處理是人工智能的終極發展目標,大概可以分為人類語言的處理(語言學)和機器語言的翻譯.
其大致流程是語音識別與合成---語音分析、詞法分析、句法分析、語義分析、語用分析
后面篇幅重點介紹第三方庫的使用,實現簡單的語音識別和合成,并初步涉略情感語義的分析模型。非常成熟的模型目前還沒有,但這方面的研究非常的熱,畢竟它是實現AI應用的很重要的一部分。
五、深度學習
深度學習,主要就是多層神經網絡。而多層神經網絡目前效果比較好的是卷積神經網絡,目前在圖像和音頻信號上效果比較好,而在自然語言處理上效果沒有顯示出來。
深度學習從統計學的角度來說,就是在預測數據的分布,從數據中學得一個模型然后再通過這個模型去預測新的數據,這一點就要求測試數據和訓練數據必須是同分布。
從Inception的角度上來看的話,其實深度學習是在模擬人腦的工作機制,但實際上,目前對于人腦的認知機制還不是很清楚,神經網絡算法也只是簡單模擬人腦而且,談不上真正模擬。以下是神經網絡的模型圖:
定義一個深度學習模型,需要解決以下3個問題:
1)激活函數,也就是先對于輸入神經元的激活值。一般的有 logistic 、tanh、以及ReLU。
2)代價函數。一般學習過程都是優化問題。代價函數一般采用歐式距離。
3)優化策略。最簡單的用剃度下降。
根據剃度更新權重,進而減小代價函數。
由于多層神經網絡通常模型很復雜,為此還需要解決過擬合問題,目前比較有效的是通過數據增廣和dropout技術。
區別于一般的機器學習算法,深度學習更新是機器學習,之所以這么說是因為它能自動學習特征,不用人工定義特征,所以你可以不需要懂太多領域相關的知識,因為算法懂得自動學習特征。
好的,到現在為止,大家對AI涉及的這幾個方面有了初步的印象,是不是很有趣,雖然有不少專業名詞,聽起來諱莫如深,不過不要擔心,只需要你依然保持這個熱情和好奇心,隨我逐一展開,一起窺探AI的奧秘。