上一篇文章介紹AI產品經理能力模型,人工智能的發展歷史,人工智能常見概念的結構梳理,也簡要做了BAT人工智能的優勢分析,感興趣的朋友可以點擊鏈接查看上文。轉型AI產品經理需要掌握的硬知識一:AI產品能力框架和看待AI的幾個視角 本文將繼續介紹Ai產品經理需要理解的一些概念,常見AI算法,機器學習的工作方式和三大流派,使用Tensorflow實現手寫數字識別,幫助大家理解技術實現流程和一些AI技術名詞,更有助于同AI科學家或AI工程師的溝通。
一、常用AI技術概念
提到人工智能,大家應該都聽說過這樣幾個概念:人工智能,機器學習,深度學習,模式識別,知識圖譜,卷積神經網絡,遞歸神經網絡,以及與人工智能直接相關的概念,如云計算,數據挖掘等,這些概念之間是什么關系呢?筆者找到了一張這些概念的關系圖,可以將上述概念串在一起,更易理解,如下圖所示:
1、人工智能>機器學習>深度學習
人工智能(Artificial Intelligence):英文縮寫為AI。它是研究、開發用于模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新的技術科學。人工智能是計算機科學的一個分支,它企圖了解智能的實質,并生產出一種新的能以人類智能相似的方式做出反應的智能機器,該領域的研究包括機器人、語言識別、圖像識別、自然語言處理和專家系統等。
機器學習(Machine Learning):機器學習是人工智能領域的一部分,并且和知識發現與數據挖掘有所交集。機器學習還有下面幾種定義: “機器學習是一門人工智能的科學,該領域的主要研究對象是人工智能,特別是如何在經驗學習中改善具體算法的性能”。 “機器學習的應用已遍及人工智能的各個分支,如專家系統、自動推理、自然語言理解、模式識別、計算機視覺、智能機器人等領域。機器學習的研究是根據生理學、認知科學等對人類學習機理的了解,建立人類學習過程的計算模型或認識模型,發展各種學習理論和學習方法,研究通用的學習算法并進行理論上的分析,建立面向任務的具有特定應用的學習系統。
深度學習(Deep Learning):深度學習的概念源于人工神經網絡的研究,是一種含多隱層的多層感知器。深度學習通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發現數據的分布式特征表示。深度機器學習方法也有監督學習與無監督學習之分.不同的學習框架下建立的學習模型很是不同.例如,卷積神經網絡(Convolutional neural networks,簡稱CNNs)就是一種深度的監督學習下的機器學習模型,而深度置信網(Deep Belief Nets,簡稱DBNs)就是一種無監督學習下的機器學習模型。
2、神經計算>人工神經網絡>深度學習>卷積神經網絡/遞歸神經網絡
神經計算科學是使用數學分析和計算機模擬的方法在不同水平上對神經系統進行模擬和研究: 從神經元的真實生物物理模型,它們的動態交互關系以及神經網絡的學習, 到腦的組織和神經類型計算的量化理論等,從計算角度理解腦,研究非程序的、 適應性的、大腦風格的信息處理的本質和能力,探索新型的信息處理機理和途徑。
延伸閱讀 計算神經科學
人工神經網絡(Artificial Neural Network,即ANN ),是20世紀80 年代以來人工智能領域興起的研究熱點。它從信息處理角度對人腦神經元網絡進行抽象, 建立某種簡單模型,按不同的連接方式組成不同的網絡。神經網絡是一種運算模型,由大量的節點(或稱神經元)之間相互聯接構成。每個節點代表一種特定的輸出函數,稱為激勵函數(activation function)。每兩個節點間的連接都代表一個對于通過該連接信號的加權值,稱之為權重,這相當于人工神經網絡的記憶。網絡的輸出則依網絡的連接方式,權重值和激勵函數的不同而不同。而網絡自身通常都是對自然界某種算法或者函數的逼近,也可能是對一種邏輯策略的表達。
延伸閱讀 神經網絡的簡化理解
深度學習的概念見上文。
卷積神經網絡和遞歸神經網絡下文算法中詳細介紹。
3、模式識別、知識圖譜和專家系統
模式識別(Pattern Recognition)是指對表征事物或現象的各種形式的(數值的、文字的和邏輯關系的)信息進行處理和分析,以對事物或現象進行描述、辨認、分類和解釋的過程,是信息科學和人工智能的重要組成部分。模式識別又常稱作模式分類,從處理問題的性質和解決問題的方法等角度,模式識別分為有監督的分類(Supervised Classification)和無監督的分類(Unsupervised Classification)兩種。我們所指的模式識別主要是對語音波形、地震波、心電圖、腦電圖、圖片、照片、文字、符號、生物傳感器等對象的具體模式進行辨識和分類。模式識別研究主要集中在兩方面,一是研究生物體(包括人)是如何感知對象的,屬于認識科學的范疇,二是在給定的任務下,如何用計算機實現模式識別的理論和方法。應用計算機對一組事件或過程進行辨識和分類,所識別的事件或過程可以是文字、聲音、圖像等具體對象,也可以是狀態、程度等抽象對象。這些對象與數字形式的信息相區別,稱為模式信息。它與人工智能、圖像處理的研究有交叉關系。
知識圖譜本質上是語義網絡,是一種基于圖的數據結構,由節點(Point)和邊(Edge)組成。在知識圖譜里,每個節點表示現實世界中存在的“實體”,每條邊為實體與實體之間的“關系”。知識圖譜是關系的最有效的表示方式。通俗地講,知識圖譜就是把所有不同種類的信息連接在一起而得到的一個關系網絡。構建知識圖譜的重點在于語義理解、知識表示、QA、智能對話和用戶建模。知識圖譜是一系列結構化數據的處理方法,它涉及知識的提取、 表示、存儲、檢索等諸多技術。從淵源上講,它是知識表示與推理、數據庫、信息檢索、自然語言處理等多種技術發展的融合。
延伸閱讀 知識圖譜技術解剖
專家系統是一個具有大量的專門知識與經驗的程序系統,它應用人工智能技術和計算機技術,根據某領域一個或多個專家提供的知識和經驗,進行推理和判斷,模擬人類專家的決策過程,以便解決那些需要人類專家處理的復雜問題。專家系統就是人去學一個東西,然后把學到的知識理論化,再把這些理論模型化,最后把這個模型程序化,形成一個系統,就叫專家系統。知識圖譜可以作為專家系統的一部分存在,提供半自動構建知識庫的方法。
二、常見算法概述
前文中我們提到了深度學習,既然有深度學習就一定有淺度學習,其區別體現在隱藏層的數量上,一般來說,淺層學習沒有隱藏層或者只有一層隱藏層,常見算法包括線性回歸、邏輯回歸、隨機森林、SVM、K-means、RBM、AutoEncoder、PCA、SOM等。深度學習通常會有較多隱藏層,可以表達復雜函數,識別更多復雜特征。常見算法有CNN卷積神經網絡和RNN遞歸神經網絡,而基于RNN衍生出了LSTM和GRU等一系列算法。
下面將介紹學習過程中一些常見的算法分類,AI產品未必掌握具體算法實現細節,但是需要掌握一些常見算法概念,它們可以處理什么類型的問題,有什么優點,一般應用在哪些領域。
1、決策樹
決策樹根據數據的屬性采用樹狀結構建立決策模型, 用樹形結構對數據進行分類,在進行逐步應答過程中,典型的決策樹分析會使用分層變量或決策節點,決策樹模型常常用來解決分類和回歸問題。以服裝購買為例,首先判定是否喜歡,不喜歡則不買,喜歡則看價格,價格不合適則不買,合適則看是否有合適的尺碼,沒有合適的尺碼則不買,有則購買,基于以上選擇,可以畫出一個簡單的樹樁結構。
場景舉例:基于規則的信用評估、賽馬結果預測
優點:擅長對人、地點、事物的一系列不同特征、品質、特性進行評估
常見相關算法:分類及回歸樹(Classification And Regression Tree, CART)、ID3(Iterative Dichotomiser 3)、GBDT、C4.5、Chi-squared Automatic Interaction Detection(CHAID)、Decision Stump、隨機森林(Random Forest)、多元自適應回歸樣條(MARS)、梯度推進機(Gradient Boosting Machine, GBM)
隨機森林(Random forest):隨機森林算法通過使用多個帶有隨機選取的數據子集的樹(tree)改善了決策樹的精確性。
優點:隨機森林方法被證明對大規模數據集和存在大量且有時不相關特征的項(item)來說很有用
場景舉例:用戶流失分析、風險評估
2、回歸算法
回歸算法是試圖采用對誤差的衡量來探索變量之間的關系的一類算法,可以勾畫出因變量與一個或多個因變量之間的狀態關系。可以利用回歸算法將垃圾郵件和非垃圾郵件進行了區分。常見算法有最小二乘法(Ordinary Least Square)、線性回歸、邏輯回歸(Logistic Regression)、逐步式回歸(Stepwise Regression)、多元自適應回歸樣條(Multivariate Adaptive Regression Splines)、本地散點平滑估計(Locally Estimated Scatterplot Smoothing)
場景舉例:路面交通流量分析、郵件過濾
優點:回歸可用于識別變量之間的連續關系,即便這個關系不是非常明顯
3、基于核函數的學習算法
基于核的算法中最著名的莫過于支持向量機(SVM)了。 基于核的算法把輸入數據映射到一個高階的向量空間, 在這些高階向量空間里, 有些分類或者回歸問題能夠更容易的解決。常見算法有支持向量機(Support Vector Machine, SVM)、徑向基函數(Radial Basis Function ,RBF)、線性判別分析(Linear Discriminate Analysis ,LDA)。
延伸閱讀 基于核函數的學習算法
4、基于實例的算法
常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本數據,然后根據某些近似性把新數據與樣本數據進行比較。通過這種方式來尋找最佳的匹配。常見算法有k-Nearest Neighbor(KNN),、學習矢量量化(Learning Vector Quantization, LVQ)、自組織映射算法(Self-Organizing Map , SOM)。
延伸閱讀 基于實例的學習
5、神經網絡
神經網絡也是一種分類器。它是由很多個虛擬的神經元組成的一個網絡,我們可以把一個神經元看做是一個分類器,那很多個神經元組成的網絡就能對樣本進行很多次分類。
CNN(Convolutional Neural Networks)卷積神經網絡,是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋范圍內的周圍單元,對于大型圖像處理有出色表現。
優點:當存在非常大型的數據集、大量特征和復雜的分類任務時,卷積神經網絡是非常有用的
場景舉例:圖像識別、文本轉語音、藥物發現、照片濾鏡、人臉識別,無人汽車等。
RNN(Recurrent Neural NetWorks)遞歸神經網絡,在任意神經網絡中,每個神經元都通過 1 個或多個隱藏層來將很多輸入轉換成單個輸出。遞歸神經網絡(RNN)會將值進一步逐層傳遞,讓逐層學習成為可能。換句話說,RNN 存在某種形式的記憶,允許先前的輸出去影響后面的輸入。
遞歸神經網絡其實是兩種人工神經網絡的總稱,一種是時間遞歸神經網絡(recurrent neural network),另一種是結構遞歸神經網絡(recursive neural network)。時間遞歸神經網絡的神經元間連接構成有向圖,而結構遞歸神經網絡利用相似的神經網絡結構遞歸構造更為復雜的深度網絡。兩者訓練的算法不同,但屬于同一算法變體。基于RNN還衍生出了LSTM(Long-Short-Term-Memerory)和GRU(Gated Recurrent Unit)等一系列算法,這些算法擁有記住過去的能力,所以可以用來處理一些有時間序列屬性的數據,在處理語言、文字等方面有獨到的優勢,LSTM和GRU的優點是具備與其它遞歸神經網絡一樣的優點,但因為它們有更好的記憶能力,所以更常被使用。
優點:遞歸神經網絡在存在大量有序信息時具有預測能力
場景舉例:圖像分類與字幕添加、政治情感分析、對話機器人,機器翻譯,科大訊飛的自然語言識別,文章編輯等。
6、葉貝斯算法
貝葉斯是一個定理,它的意思是:當你不能準確知悉一個事物的本質時,你可以依靠與事物特定本質相關的事件出現的多少去判斷其本質屬性的概率。當我們找到若干個這樣的特征,然后用這些特征進行組合后,可以進行判斷,常見算法有樸素貝葉斯算法、平均單依賴估計(Averaged One-Dependence Estimators, AODE)、Bayesian Belief Network(BBN)。
舉例來看,要識別一封郵件是不是垃圾郵件。可以隨機挑選出100封垃圾郵件,分析它的特征,我們發現“便宜”這個詞出現的頻率很高,100封垃圾郵件里,有40封出現了這個詞。那我們就以這個認知為依據,得出結論:如果出現了“便宜”,那這封郵件有40%的概率是垃圾郵件。
優點:對于在小數據集上有顯著特征的相關對象,樸素貝葉斯方法可對其進行快速分類
場景舉例:情感分析、消費者分類
7、聚類
聚類是一種非監督學習的方式。簡單的說,就是通過不斷的迭代計算,把數據分成若干個組,使得這個組里的都是類似的數據,而不同組之間的數據是不相似的。聚類算法通常按照中心點或者分層的方式對輸入數據進行歸并。所以的聚類算法都試圖找到數據的內在結構,以便按照最大的共同點將數據進行歸類。可以用于圖像分類識別,用戶行為識別,用戶畫像等領域。常見算法有k-Means算法、期望最大化算法(Expectation Maximization, EM)。
8、強化學習模型
在沒有給出任何答案的情況下,先進行一些嘗試,通過嘗試所得到的回報,來確定這個嘗試是否正確,由這一系列的嘗試來不斷調整和優化算法,最后算法知道在某種情況下,采取何種動作可以得到最好的結果。他的本質是解決“決策問題”,就是通過不斷做出決策并獲得結果反饋后,學會自動進行決策,得到最優結果。比如上面說過的猴子“學會”做算術題的過程。
9、集成學習模型
用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然后把結果整合起來進行整體預測。集成算法的主要難點在于究竟集成哪些獨立的較弱的學習模型以及如何把學習結果整合起來。
我們在做機器學習的時候,希望能做出各個方面表現都比較好的模型。但常常現實是我們的模型是有偏好的,可能只對某一些情況效果比較好,這個時候我們就希望把若干個這樣的模型組合起來,得到一個更好更全面的模型,這種方法,就叫做集成學習。常見算法有Boosting、Bootstrapped Aggregation(Bagging)、AdaBoost、堆疊泛化(Stacked Generalization, Blending)、梯度推進機(Gradient Boosting Machine, GBM)、隨機森林(Random Forest)。
三、三大流派
經過幾十年的發展,人工智能演化出了多個分支流派,這些分支一直都在彼此爭奪主導權,此次人工智能的爆發,主要源于聯結主義的神經網絡有了突破性發展,將語音識別和視覺識別的準確度分別達到了99%和95%。未來的發展很可能是這三大流派彼此合作,因為算法融合是實現真正通用人工智能(AGI)的唯一方式。
①符號主義(Symbolism):是一種基于邏輯推理的智能模擬方法,又稱為邏輯主義(Logicism)、心理學派(Psychlogism)或計算機學派(Computerism),其原理主要為物理符號系統(即符號操作系統)假設和有限合理性原理,長期以來,一直在人工智能中處于主導地位。
②聯結主義(connectionism):認為人工智能源于仿生學,特別是對人腦模型的研究。它從神經元開始進而研究神經網絡模型和腦模型,開辟了人工智能的又一發展道路。1986年,魯梅爾哈特(Rumelhart)等人提出多層網絡中的反向傳播算法(BP)算法。此后,連接主義勢頭大振,從模型到算法,從理論分析到工程實現, 為神經網絡計算機走向市場打下基礎。
③行為主義:控制論思想早在20世紀40~50年代就成為時代思潮的重要部分,影響了早期的人工智能工作者。實際上是從行為上模擬和體現智能,也就是說,模擬人在控制過程中的智能活動和行為特性來研究和實現人工智能,行為主義思想在智能控制、機器人領域獲得了很多成就。
還有一種說法,將人工只分為五大流派,分別是符號主義,貝葉斯主義,聯結主義,進化主義和Analogizer,擴展閱讀三張圖讀懂機器學習:基本概念、五大流派與九種常見算法 文中包含大量延伸閱讀鏈接。
四、機器學習的工作流程
①選擇數據:將你的數據分成三組:訓練數據、驗證數據和測試數據
②模型數據:使用訓練數據來構建使用相關特征的模型
③驗證模型:使用你的驗證數據接入你的模型
④測試模型:使用你的測試數據檢查被驗證的模型的表現
⑤使用模型:使用完全訓練好的模型在新數據上做預測
⑥調優模型:使用更多數據、不同的特征或調整過的參數來提升算法的性能表現
五、手寫數字識別流程概述
本文下面內容源于gitchat上劉穎老師的人人都能看懂的 AI 入門課,對代碼感興趣的朋友可以點擊查看。本文不討論代碼實現,僅討論實現流程和實現過程中的一些概念。
1、TensorFlow基礎
TensorFlow 是 Google 開源的一款人工智能學習系統。使用很方便,幾行代碼就能開始跑模型,這讓神經網絡的入門變得非常簡單。Google 開源了 TensorFlow,希望占領 AI 端。Google 也為入門者提供了一個這樣的例子,也就是 TensorFlow 里的“ hello world ”,這個例子的名字叫“ MNIST ”,MNIST機器學習入門可點擊查看。下文將簡述實現過程,重在理解流程和一些模型設計概念。
2、 手寫圖片識別實現步驟概述
劉穎老師對項目做了三次優化,使手寫數字的準確率從92%->98%->99.25%,1.0版使用一個最簡單的單層的神經網絡進行學習,2.0版使用了卷積神經網絡,3.0版使用 Keras 框架,增加20層網絡的深度。
手寫圖片識別的實現,分為三步:(1)數據的準備;(2)模型的設計;(3)代碼實現
3、數據準備
在寫代碼的過程中,數據的預處理是最大的一塊工作,60%以上的代碼在做數據預處理。 這個項目的預處理,分為5步:
把輸入和結果分開
對輸入進行處理:把一維的輸入變成28*28的矩陣
對結果進行處理:把結果進行 One-Hot 編碼
把訓練數據劃分訓練集和驗證集
對訓練集進行分批
那么準備的數據是什么樣的呢?劉穎老師使用Kaggle 里包含了42000份訓練數據和28000份測試數據,這些數字是28*28像素的手寫數字圖片,可以將一張圖理解為一個二維數組結構,如下圖所示:
Kaggle 的數據將二維數組轉化為了一維數組,也就是28*28=784列,包括圖片代表的數字一共785列,所以上文中的測試和訓練數據被轉為[42000,785]和[28000,784]的數組,這就是圖片的預處理。
人類可以快速識別圖像并對應到記憶中的事物,而圖像在計算機看來是這樣的:
4、單層的神經網絡學習流程及相關概念
使用一個最簡單的單層的神經網絡進行學習的模型設計如下所示:
用 SoftMax 來做為激活函數
用交叉熵來做損失函數
用梯度下降來做優化方式
激活函數:每個神經元,在通過一系列計算后,得到了一個數值,怎么來判斷應該輸出什么?激活函數就是解決這個問題,你把值給我,我來判斷怎么輸出。所以一個神經網絡,激活函數是非常重要的。目前主流的幾個激活函數是:softMax,sigmoid,tanh,ReLU。
SoftMax:我們知道 max(A,B)是指 A 和 B 里哪個大就取哪個值,但我們有時候希望比較小的那個也有一定概率取到,怎么辦呢?我們就按照兩個值的大小,計算出概率,按照這個概率來取 A 或者 B。比如A=9,B=1,那取 A 的概率是90%,取B的概率是10%,這就是SoftMax。
損失函數:損失函數是模型對數據擬合程度的反映,擬合得越好損失應該越小,擬合越差損失則越大,然后我們根據損失函數的結果對模型進行調整。
交叉熵:交叉熵通俗的講就是現在的訓練程度和圓滿之間的距離,我們希望距離越小越好,所以交叉熵可以作為一個損失函數,來衡量和目標之間的距離。
梯度下降:我們將要解決的問題比作是一座山,答案在山底,我們從山頂到山底的過程就是解決問題的過程。在山頂,想找到最快的下山的路。這個時候,我們的做法是什么呢?在每次選擇道路的時候,選最陡的那條路。梯度是改變率或者斜度的另一個稱呼,用數學的語言解釋是導數。對于求損失函數最小值這樣的問題,朝著梯度下降的方向走,就能找到最優值了。
5、卷積神經網絡學習流程及相關概念
卷積神經網絡(CNN)由輸入層、卷積層、激活函數、池化層、全連接層組成,即INPUT(輸入層)-CONV(卷積層)-RELU(激活函數)-POOL(池化層)-FC(全連接層)
卷積層1+激活函數+池化層1+卷積層2+激活函數+池化層2+全連接1+Dropout 層+輸出層
卷積層的作用是指對圖片的矩陣進行卷積運算,得到一些數值,作為圖片的某些特征。
池化層的作用是對上層的數據進行采樣,也就是只留下一部分,這樣的作用是可以縮小數據量和模糊特征。
全連接層就是連在最后的分類器。前面卷積層和池化層進行處理后,得到了很多的特征,全連接層使用這些特征進行分類。比如識別數字,那就是對0~9的十個類別進行分類。
Dropout層是為了防止 CNN 對訓練樣本過擬合,而導致處理新樣本的時候效果不好,采取的丟棄部分激活參數的處理方式。
這里對這些概念的解釋都是比較簡單的,如果希望詳細了解,可以看知乎的這個鏈接:CNN卷積神經網絡是什么? 卷積神經網絡
6、使用 Keras 框架實現多層神經網絡學習
使用 Keras 框架提升準確率
增加網絡的深度,這里增加到了20層
每次卷積完之后,加入規范層
使用最新的 SELU 激活函數,這是 Sepp Hochreiter 最新發表在 arXiv 上的激活函數
概括來看,圖片識別中需要完成數據的準備,模型設計,代碼實現三部分,淺層學習需要選擇激活函數,損失函數和優化方式,應用卷積神經網絡在模型設計時需要考慮輸入層、卷積層、激活函數、池化層、全連接層等。
筆者暫時可以理解的只有這些,希望AI大神或前輩可以多多指正,如果AI產品經理的崗位求內推,
下一篇文章嘗試總結我們身邊的一些2B和2C的AI產品,并且嘗試著對于未來AI產品的應用場景開開腦洞。