一、什么是算法
1.1算法是一系列的指令
我們所生活的這個時代,處處都存在著算法。比如當今已經普及的的手機或筆記本電腦、汽車、家電等都留有算法的印記,再如,銀行系統(tǒng)、航空系統(tǒng)、物流系統(tǒng)就是各類復雜算法的集成體。算法能夠經營工廠、進行交易、運輸物品,還能保存記錄。在人未知道“算法”這個詞以先,算法已走進生活生產方方面面的實際。那么算法究竟是什么呢?算法其實是一系列的指令,告訴計算機該做什么。
1.2算法的運算邏輯是“與、或、非”
眾所周知,計算機是由海量個微小開關即晶體管所組成,而算法能夠在一秒內打開并關閉這些開關上億次,這是算法的物理底層構造。最簡單的算法就是觸動開關。如果開關打開,信息就是1;如果開關關閉,信息就是0。這樣的一個晶體管信息就構成一個比特信息。兩個比特信息形成并列組合并與另外一個比特信息進行串聯,就可以形成一組簡單算法。所有的算法都是基于這樣開關的物理基礎組合。通過這種組合的原理分析,無論有多么復雜,算法的邏輯都能被分解為“與、或、非”三種。實際應用中,這些“與、或、非”的邏輯是用不同的符號來代替運算,簡單的算法就可以用圖表來表示。舉個形象化點的例子,如下圖所示,這就是一個簡單的算法表達,按照這個算法邏輯,發(fā)燒可由感冒或者咳嗽引起,而發(fā)燒又有頭疼,則可用泰諾進行治療。
通過許多這樣的邏輯單元組合,能夠進行極其復雜的邏輯推理運算。但歸源溯本,就是上述算法的三種運算邏輯:與、或、非。因此,從這樣嚴謹的邏輯結構可以看出,這是一套既精確又嚴格的指令系列,而非模糊的要求
1.3算法是有效的程序設計結果
算法的設計就是人借著計算機語言的媒介設計指令要求匹配到計算機中去的過程,所以,所要求的算法要先經過設計,所設計的算法未必就能復合計算機的物理屬性邏輯,需要加以驗證調節(jié)。一個有效的算法應該含有三個重要特性:
A:它必須是有限的:如果設計的算法永無休止地嘗試解決問題,那么它是無用的。
B:它必須具備明確定義的指令:算法的每一步都必須準確定義,在任何場景下指令都應當沒有歧義。
C:它必須是有效的:一個算法被設計用以解決某個問題,那么它就應當能解決這個問題,并且僅僅使用紙和筆就能證明該算法是收斂的。
上述這些特性在小編看來可以是作為兩個方面的驗證必要:
一方面是所設計的算法邏輯與計算機物理晶體管的實際層面的一致性驗證,即設計的算法是能夠運行得通的算法。
另一方面就是所設計的算法與要達到的運行目的的一致性,即設計的算法能夠實現既定的目標功能。
設計算法并非易事。首先是算法的構思,然后是要用一種計算機能理解的語言來將算法記錄下來,如Java、Python、C++等。接下來就需要進行糾錯,找出每個誤差并修正,直到計算機能夠運行程序為止。
二、什么是機器學習
通過上述對算法的分享可知,算法是由人定義設計的一系列的指令。一旦人能夠完成所愿的程序后,計算機就會以飛快的速度按照我們的意旨辦事。然而,即便是事先做了較為充分的算法設計和錄入,不可避免的是,仍會不時遇到一些靠現有算法不能發(fā)揮作用的應用場景。這分為三類情況:
情況一:沒有對應的算法存儲。
情況二:有算法存儲,卻無足夠內存,算法不能發(fā)揮作用。
情況三:有算法存儲,且有內存,但運算步驟繁多,運行時間占用很長,不能滿足效率要求。
為此,聰明的人類科學家就換了一個思路,提出機器學習的出路,顧名思義,就是讓機器在運行過程中學習形成新的應用算法。按小編的理解,機器學習就是對算法的算法
2.1機器學習是求算法的算法
體驗過編程的各位親們都知道,每個程序都會有輸入和輸出。同理,算法也是按照這個順序進行:數據輸入計算機,算法利用數據完成接下來的事,然后結果就出來了。
而機器學習則是倒過來的順序:輸入數據和想要的結果,輸出的則是算法,即把數據轉換成結果的算法。舉個簡單例子,算法相當于對已經函數關系式y(tǒng)=ax+b,代入具體的X數值,求解對應的y結果,而機器學習則是已知多組(x,y)的數值,對應求解函數關系式的過程。這些數學函數關系式的正推和逆推在我們從小到大所受的教育中已經是司空見慣之事。其實,算法和機器學習的關系正式這個類似之理。機器學習就是對算法的逆運算過程,就是算法的函數關系式求解,是屬于歸納的過程,相應的算法應用就屬于演繹的過程。學習算法能夠制作出其它的算法。通過機器學習,計算機就會自己編寫程序,碼農們就等著“下崗”了。這個技術是目前人工智能技術的核心之一,正在發(fā)展之中。
2.2機器學習的運行邏輯是統(tǒng)計方法和數學模型
就以農場作個比方:學習算法就像是種子,大量的數據是土壤,被掌握的程序算法則是成熟的作物。機器學習專家就像是農民,他們散播種子,澆水施肥,時時留意作物生長狀況。這顆種子就是統(tǒng)計方法的設定,土壤就是大量所掌握的相關數據信息,看顧的過程就相當于驗證修正調整的過程。這和人的學習思維是有明顯差別的。人是有淺意識和自由意志,而計算機是沒有的,計算機里有的是基于物理結構和數學統(tǒng)計所形成的邏輯知識。在機器學習中,知識往往以統(tǒng)計模型的形式出現,因為多數知識都是可以統(tǒng)計的。因此,截至目前,許多人們能夠編寫的程序是計算機學習的內容,而令人詫異的是,也有許多人們無法編寫的程序,計算機卻能學習出來算法。比如,我們會認出某人的筆跡,這個技能是從人的潛意識里發(fā)出的,無法向計算機解釋這些事情在我們腦海里是如何完成的。但是,如果我們把關于這個人足夠多的筆跡交給機器學習算法,機器則會根據圖像筆跡的導入做統(tǒng)計分析和比對,繼而會按照機器的統(tǒng)計思維來判斷出某人的筆跡來。這類的技術目前在國內圖像和聲音識別技術方面得到了較為廣泛的應用。
2.3機器學習的核心是基于過去經驗的分析預測
計算機自身并沒有創(chuàng)造性,它們只能做人讓它們做的事情,這點上是與人腦意識本質性的差別。只是機器學習算法是一種人讓它們去做的特殊指令,但其背后仍是基于過去所獲得的經驗數據進行分析,把數據變成算法,用這種基于過去經驗數據所得出的規(guī)律來進行分析預測。在小編看來,這種基于經驗數據所得出的規(guī)律算法是能夠適應變化的周圍環(huán)境和對象需求或行為,但仍是限制于機器學習算法的本身——預設的數理統(tǒng)計模型。從這個角度而言,也許是機器學習難以取代人腦思維的重要因素所在。
2.4機器學習是機器人本身實現自動化智能化的技術
沒有機器學習,計算機就無法跟上人類的步伐,有了學習,一切都能與時俱進。機器學習目前應用的領域已經較為廣泛,包括數據挖掘、計算機視覺、自然語言處理、生物特征識別、搜索引擎、醫(yī)學診斷、檢測信用卡欺詐、證券市場分析、DNA序列測序、語音和手寫識別、戰(zhàn)略游戲和機器人運用等多個方面。由于小編目前是處在工業(yè)領域之中,對比下幾次工業(yè)革命的特點后發(fā)現,工業(yè)的一次、二次革命使得工業(yè)實現了自動化,工業(yè)的第三次革命,即信息革命,使得腦力勞動生產力得到了解放,機器學習則是使得自動化本身自動化。一旦這類技術成熟且應用面廣泛起來,將會大有助于提升”智造”的水平。特別是在機器人的應用方面,目前生產中絕大多數的機器人是以第一代傻瓜示教式為主,這對于制造的柔性要求是一種局限,要求做的事情只能依靠現有編程輸入為主,難以滿足變化環(huán)境中快速響應的要求。諸如焊接、打磨、噴涂等諸多的應用,都是需要時時跟蹤監(jiān)控反饋和補償,目前在這方面已經有一些推廣應用的機器學習集成產品,如機器人焊接的焊縫時時跟蹤系統(tǒng),機器人打磨的力傳感系統(tǒng)等等。但相關應用的面還較窄,成本較高。這塊的需求潛力較大,機器學習是軟件系統(tǒng)的活,確是硬件相關的事,是機器人本身實現自動化智能化的賦智關鍵。
三、機器學習的基本思路
機器學習的研究和探索正如火如荼,每年都會出現上百種新的算法,但它們都是基于幾個相似的基本思路。對于小編這樣一個非算法研究人士而言,了解下這些基本思路的類型是有助于明白機器學習究竟是如何帶來改變。不同的基本思路提供的是不同的側重方面,可以幫助我們建立立體化的認識。目前主要有5大基本思路學派,他們分別是符號學派、聯結學派、演化學派、貝葉斯學派、類推學派。下面小編就概括性的介紹下這五種思路的要點。
5.1符號學派
其核心理念是所有與智力相關的工作都可以簡化為對符號的操縱,符號和它們所待播啊的概念是一一對應的關系。它將機器學習看所是逆向演繹。就像數學家求解方程式的過程,是透過用其他表達式來替換表達式的方法。持符號學派思路者已經弄明白如何將現有的知識納入學習中,與動態(tài)的知識進行結合,來解決新的問題。因為他們清楚你不能從零開始學習:除了數據,你還需要一些原始的知識。其主算法是逆向演繹,主要側重在找尋哪些知識被忽略了,然后作出邏輯的演繹推論,盡可能地被通則所應用。
5.2聯結學派
符號學派的方法是簡潔快捷直接,但這種邏輯規(guī)則定義出的概念好像冰山一角,其表面之下還有很多東西是形式推理無法看到的。聯結學派的思路認為學習就是大腦那樣的模式,每個概念由許多神經元來表示,而每個神經元又會和其它神經元一起代表許多不同的概念。讓計算機模擬大腦是有一定的物理基礎的:目前計算機里面的晶體管數量已經趕上人類大腦里神經元的數量。但在連接數量上,人類的大腦輕易獲勝,因為本質原理還是差別的,計算機本質上是0/1的晶體管通電狀態(tài)組合,而人腦卻是由生理機能的神經元細胞組成。兩者單從耗能和連接反應速度方面就顯出巨大落差。比如人在大街上認出一個熟人只需要0.1秒,而這個時間,供計算機識別最多勉強完成100個處理步驟。不過,聯結學派的思路是模擬大腦進行逆向演繹。大腦通過調整神經元之間連接的強度來進行學習,關鍵問題是找到哪些連接導致了誤差,以及如何糾正這些誤差。它的主算法是反向傳播學習算法,該算法將系統(tǒng)的輸出與想要的結果做比較,然后連續(xù)一層一層地改變神經元之間的連接,目的就是為了使得輸出的東西更接近想要的東西。
5.3演化學派
該學派的思路是認為所有形式的學習是基于自然選擇。因此,他們就在計算機上模擬自然選擇。其關鍵性的問題是學習結果:不只是像反向傳播那樣調整參數,它還要創(chuàng)造一個類大腦,用來對參數進行微調。其主算法是基因式編程,模擬自然環(huán)境對有機體進行交配和演化那樣,基因式編程也對計算機程序進行配對和提升。其實,演化學派和連接學派有著共同的點:他們都因為受到自然啟發(fā)而設計了學習算法。不過后來往不同方面去側重。演化學派者關注的學習結構,就像基因關注DNA的結構一樣。而聯結學派則更喜歡用一個簡單、手工編寫的結構,加上許多連接行為,然后讓權值學習來完成所有工作。前者是側重結構學習,后者是側重權值學習。受小編能力有限,再下去就太抽象了,且這些學派的思路之于應用的實際還在路上,所以,就只能先表達到這個程度。
5.4貝葉斯學派
提及貝葉斯,就會想到概率論課堂上曾經上過的貝葉斯定理。沒錯,貝葉斯學派就是基于貝葉斯定理進行構思。先來下溫故,貝葉斯定理:
P( A | B )=P( A )P( B | A)/P( B )
貝葉斯定理是關于隨機事件A和B的條件概率(或邊緣概率)的一則定理.
貝氏定理學派最關注的問題是不確定性。這門學派主張所有學到的知識都是不確定的,而且學習本身就是一種不確定的推理形式。那么這個問題就變成在不破壞信息的情況下如何處理嘈雜、不完整,以及相互矛盾的信息。解決的辦法就是運用概率推理,而主算法就是貝葉斯定理與其衍生定理。貝葉斯定理告訴我們如何把新證據轉化為信念,而概率推理算法則盡可能有效地做到這一點??梢詫⑸鲜龉娇梢园凑杖缦吕斫廪D化:
P(原因|結果)=P(原因)P(結果|原因 )/P(結果)
舉個例子,假設我是一位醫(yī)生,上個月已經為100名病人進行診療。其中有16名病人患感冒,24名發(fā)燒,12名既感冒又發(fā)燒。因此感冒的人群中有發(fā)燒的病人條件概率為12/24。
設立條件縮小了我們正在考慮的集合,在這個例子中,所有病人的范圍就縮小為患有感冒的病人群。在所有病人的群中,發(fā)燒的概率是24/100;而在感冒病人的集合中,發(fā)燒的概率則是12/24。病人既發(fā)燒又感冒的概率,是患感冒病人的概率乘以發(fā)燒病人的概率:
P(感冒,發(fā)燒)=P(感冒) X P(發(fā)燒|感冒 )=24/100 X 12/24=12/100
而貝葉斯定理的算法思路就是將這個公式變換來計算:
P(感冒) X P(發(fā)燒|感冒 )=P(發(fā)燒) X P(感冒|發(fā)燒 )
推出:P(感冒|發(fā)燒)=P(感冒)P(發(fā)燒|感冒 )/P(發(fā)燒)
如此一來,可以由原因推出結果,又可以由結果知道原因,其內在的邏輯關系固定,而未知的解則可以根據此計算出來。不過,貝葉斯學派面臨著難題之一就是實際機器學習的處境,受制于環(huán)境樣本的有限,往往難以得到相對確切地概率。因此,當機器學習通過有限的樣本統(tǒng)計出概率,以此作為推導出新解時,其本身就是存在不確定性。因此,這個思路也是要看應用處境需要而定。
5.5類推學派
對于類推推理學派而言,機器學習的關鍵是認識各種場景之間的相似之處,從而推斷其它情境的相似地方。如果兩位患者都有相似的癥狀,也許他們患有相同的疾病,問題的關鍵是要判斷兩件事情之間是如何相似。類推推理學派的主算法是支持向量機,可以找出哪些經驗是需要記住的,以及如何結合這些經驗,做出新的預測。類比學派的技巧在于跨越問題領域來進行學習。它是五個學派里最不具有凝聚力的一個學派。它的統(tǒng)一依靠的是對于作為學習基礎的、相似性判斷的信任。