人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

我們把知識分為兩類,一類是道理類,一類是技能類。資訊類其實很難算作知識。

道理類的知識是被高度(High Level)提煉,其目的是為了傳播,讓更多的人理解,是一種方向性的指引。但是靠他不能完成任何事情,因為他的高級-就是被抽象、提煉的層級高,靠這些知識完成不了落地。

技能類就是實際要完成這件事情所需要的具體的知識,有理論模型,也有工具來落地。

這兩類的知識都是重要的,如果浮在表面那麼就要(A+B+C+...),跨知識領域的融合。如果要沉下來,那麼就A++++++...,專業縱深學習。建議即便選擇了浮在表面的學習,也至少在ABC中,有那麼一個+++,或者++。


人工智能(AI)AI目標是使機器能夠勝任一些通常需要人類智能才能完成的複雜工作。研究機器人、語言識別、圖像識別、自然語言處理和機器學習等。每一個分支都很複雜,譬如機器視覺:指紋識別,人臉識別,視網膜識別,虹膜識別,掌紋識別,專家系統,自動規劃,智能搜索,定理證明,博弈,自動程序設計,智能控制,機器人學,語言和圖像理解,遺傳編程等。有時我們也把譬如《論人工智能未來發展趨勢》《人工智能的應用》等文章也作為知識。

我們把這些稱為道理類,只講是什麼,用來幹什麼,有多重要等,不會講如何去落地實現。

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

我們來看一下具體技能類的知識,講講如何實現

以機器視覺來講,用機器來模擬人類的視覺。人類視覺系統是大自然的一大奇蹟,從最簡單的數字識別來看,人類能夠毫不費力的識別出數字,我們可能會覺得很簡單,其實這是一個幻覺。在我們大腦各半球,有一個主要的視覺皮層,即V1,它包含1.4億個神經元以及數以百億的神經元連接。而且人類不只是有V1,還有一系列的視覺皮層——V2,V3,V4和V5,它們能夠執行更加複雜的圖像處理。通過計算機實現的人工神經元,思路與這個有一點相像

譬如讓計算機程序識別數字,如“9頭上有一個圓圈,右下角有一筆豎線”——看起來好像規則明確, 但是識別算法卻不是那麼簡單,因為這些規則會被大量的例外、警告和特殊案例打破,不再像我們嚴謹的If A then B elese C end if所處理的抽象模型。神經網絡思想是利用大量的手寫數字(訓練樣本),

開發出一套從訓練樣本中進行學習的系統。換句話說,神經網絡使用樣本來自動推理出識別手寫數字的規則。通過增加訓練樣本規模,神經網絡能學到手寫體的更多規則從而提升它的識別精度。

為了便於理解先看一種人工的神經元,即感知器(perceptron)的基本運作原理。現代的神經網絡工作中, 主要的神經網絡模型是sigmoid神經元。

一個感知器獲取幾個二進制輸入x1,x2,…x1,x2,…,並且產生一個二進制輸出。如下例子:

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策


這個感知器具有三個輸入x1,x2,x3x1,x2,x3。通過一個規則來計算最後輸出,即權重(weights) w1,w2,…w1,w2,…,這些實數表示各個輸入對輸出的重要性。這個神經元輸出(output) 0或者 1是由這些輸入的加權求和

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

是否大於或者小於某一個閾值(threshold)。不像這些權重,閾值是這個神經元的實數參數

代數式如下:

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

感知器,它是一個通過加權憑據來進行決策的設備。通過更改權重和閾值,我們能得到不同的決策模型。顯然,這個感知器不是人類決策的完整模型!

在下面這個網絡中,第一列感知器(我們稱其為第一層感知器)通過加權輸入憑據來做出三個非常簡單的決策。那第二列感知器是什麼呢?其中每一個感知器都是通過將第一列的決策結果進行加權和來做出自己的決策。通過這種方式,第二層感知器能夠比第一層感知器做出更加複雜和抽象層的決策。第三層感知器能做出更加複雜的決策,以此類推,更多層感知器能夠進行更加複雜的決策。

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

是不是與上面一系列的視覺皮層類似?且你會發現有一個關鍵問題就是權重和閾值(偏移)的設定,我們會希望這個網絡能夠學會調權和偏移以便正確決策。


學習算法,這種算法能夠自動調整人工神經網絡的權重和偏移

。這會在響應外部刺激時候發生,而且沒有程序員的直接干預。這些學習算法能讓我們用一種新的方式使用人工神經網絡,它將與傳統的邏輯門方法完全不同。

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

人工神經元(sigmoid神經元)細微調整它的權重和偏移只會很細小地影響到輸出結果。sigmoid神經元有輸入x1,x2,…x1,x‍‍2,…。但是輸入值不僅是0或者1,還可以是0到1的任意值。微積分告訴我們細小的輸出Δoutput近似等於:

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

雖然上面具有偏導運算的表達式看起來很複雜,但實際上很簡單(這是一個好消息):輸出改變Δoutput是權重和偏移改變Δwj和Δb的線性函數。這種線性使得權重和偏移的細微改變就能很容易使得輸出按期望方式微小改變。

sigmoid神經元不是隻輸出0或者1。它能夠輸出0到1之間任意實數。


如上面圖形中,網絡的最左邊一層被稱為輸入層,其中的神經元被稱為輸入神經元。最右邊及輸出層包含輸出神經元,在上面例子中,只有一個單一的輸出神經元。中間層被稱為隱含層,因為裡面的神經元既不是輸入也不是輸出。上面的網絡只包含了唯一個隱含層,但是一些網絡可能有多層。比如,下面的4層網絡具有2個隱含層:

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

針對圖像識別的入門程序, 數字識別的模型,採用的是三層

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

梯度下降學習算法(gradient descent algorithm)

我們想要的是一個能讓我們找到合適的權重和偏移的算法,以便網絡輸出y(x)能夠幾乎滿足所有訓練輸入x。為了量化這個匹配度目標,我們定義了一個代價函數:

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

這裡w表示網絡中的所有權重,b是所有偏移,n訓練輸入的總數,a是網絡輸入為x時的輸出向量,總和是對所有輸入x進行的累加。

為了最小化C(v),可以把C想象成只具有兩個變量,即v1和v2,讓我們想象有一個小球沿著山谷的坡面向低處滾。生活經驗告訴我們這個小球最終會到達谷底。可以採用類似的思路找到函數的最小值。

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策


我們將“梯度”矢量記為∇C

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

這裡 η是一個正的小參數,被稱為“學習率”(learning rate)。

人工智能(AI)-Tensorflow,機器學習基礎知識,數據模型與決策

這給了我們一種沿著梯度找到最小值的方法,即使 C依賴於很多變量。即通過不斷重複地使用以下更新規則。

總之,梯度下降算法(gradient descent algorithm)是通過不斷計算梯度∇C,然後向著梯度相反的方向小步移動的方式讓小球不斷順著坡面滑向谷底。

梯度下降如何應用於神經網絡的學習過程呢?具體思路是用梯度下降來尋找權重(weights)wk 和 偏移(bias) bl,從而最小化代價函數 。


TensorFlow 是一個用於人工智能的開源神器, 器就是工具,是具體實現的一種技術,我們要落地相應的方案,Tensorflow是個不錯的學習方向(推薦)。當然還有很多其他開源工具,如Torch Caffe、OpenCog、Deeplearning4j、Neuroph、OpenNN可以自行搜索學習。


從以上的介紹中,會發現需要一個基本思維就是問題模型化,思路類似,算法不同,譬如線性規劃問題的處理路徑一般是

描述目標:****************************

描述約束條件:

  • 約束條件1:————
  • 約束條件2:————
  • 約束條件3:————

定義決策變量:————

構建函數,求解


基於數據樣本深度學習算法,用到數據分析、模型與決策等的知識,如微積分,線性規劃,非線性最優化模型,數據的分佈(尤其是正態分佈),決策分析(已知概率、未知概率,風險分析,靈敏度分析,效用理論)等等。這些知識最好是系統化的學習,退一步也可以在應用中按需學習。

在企業信息化建設中,如果要從底層開始搭建人工智能基礎,看起來不是一個合適的做法,對於基礎雲服務的應用相對更合理,但是要學會業務建模,才能跟企業應用深度結合。


推薦兩本基礎知識的書:

《數據、模型與決策》 戴維R.安德森 等著,侯文華 楊靜蕾 等譯

《商務與經濟統計》 戴維R.安德森 等著,張建華 王建 等譯


真正的知識需要沉下來去系統化的學習,很難在公眾號學到公眾號只是一個引子,能夠引發思考,帶來行為的變化,就夠了。


希望我的分享和思考能夠對你有一點點價值。


分享到:


相關文章: