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