找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4004|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

李航博士的《淺談我對機器學(xué)習(xí)的理解》 機器學(xué)習(xí)與自然語言處理

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:91350 發(fā)表于 2015-10-30 12:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


算算時間,從開始到現(xiàn)在,做機器學(xué)習(xí)算法也將近八個月了。雖然還沒有達(dá)到融會貫通的地步,但至少在熟悉了算法的流程后,我在算法的選擇和創(chuàng)造能 力上有了不小的提升。實話說,機器學(xué)習(xí)很難,非常難,要做到完全了解算法的流程、特點、實現(xiàn)方法,并在正確的數(shù)據(jù)面前選擇正確的方法再進(jìn)行優(yōu)化得到最優(yōu)效 果,我覺得沒有個八年十年的刻苦鉆研是不可能的事情。其實整個人工智能范疇都屬于科研難題,包括模式識別、機器學(xué)習(xí)、搜索、規(guī)劃等問題,都是可以作為獨立 科目存在的。我不認(rèn)為有誰可以把人工智能的各個方面都做到極致,但如果能掌握其中的任一方向,至少在目前的類人尖端領(lǐng)域,都是不小的成就。
這篇日志,作為我2014年的學(xué)業(yè)總結(jié),詳細(xì)闡述目前我對機器學(xué)習(xí)的理解,希望各位看官批評指正,多多交流!
機器學(xué)習(xí)(MachineLearning),在我看來就是讓機器學(xué)習(xí)人思維的過程。機器學(xué)習(xí)的宗旨就是讓機器學(xué)會“人識別事物的方法”,我們希望人從事物中了解到的東西和機器從事物中了解到的東西一樣,這就是機器學(xué)習(xí)的過程。在機器學(xué)習(xí)中有一個很經(jīng)典的問題:
“假設(shè)有一張色彩豐富的油畫,畫中畫了一片茂密的森林,在森林遠(yuǎn)處的一棵歪脖樹上,有一只猴子坐在樹上吃東西。如果我們讓一個人找出猴子的位置,正常情況下不到一秒鐘就可以指出猴子,甚至有的人第一眼就能看到那只猴子。”
那么問題就來了,為什么人能在上千種顏色混合而成的圖像中一下就能識別出猴子呢?在我們的生活中,各種事物隨處可見,我們是如何識別出各種不同 的內(nèi)容呢?也許你可能想到了——經(jīng)驗。沒錯,就是經(jīng)驗。經(jīng)驗理論告訴我們認(rèn)識的所有東西都是通過學(xué)習(xí)得到的。比如,提起猴子,我們腦海里立刻就會浮現(xiàn)出我 們見過的各種猴子,只要畫中的猴子的特征與我們意識中的猴子雷同,我們就可能會認(rèn)定畫中畫的是猴子。極端情況下,當(dāng)畫中猴子的特征與我們所認(rèn)識某一類猴子 的特征完全相同,我們就會認(rèn)定畫中的猴子是哪一類。
另一種情況是我們認(rèn)錯的時候。其實人識別事物的錯誤率有的時候也是很高的。比如,當(dāng)我們遇見不認(rèn)識的字的時候會潛意識的念字中我們認(rèn)識的部分。 比如,“如火如荼”這個詞,是不是有朋友也跟我一樣曾經(jīng)念過“如火如茶(chá)”?我們之所以犯錯,就是因為在我們沒有見過這個字的前提下,我們會潛意 識的使用經(jīng)驗來解釋未知。
目前科技如此發(fā)達(dá),就有牛人考慮可不可以讓機器模仿人的這種識別方法來達(dá)到機器識別的效果,機器學(xué)習(xí)也就應(yīng)運而生了。
從根本上說,識別,是一個分類的結(jié)果�?吹剿臈l腿的生物,我們可能會立即把該生物歸為動物一類,因為我們常常見到的四條腿的、活的東西,九成以 上是動物。這里,就牽扯出了概率的問題。我們對身邊的事物往往識別率很高,是因為人的潛意識幾乎記錄了肉眼看到的事物的所有特征。比如,我們進(jìn)入一個新的 集體,剛開始大家都不認(rèn)識,有的時候人和名字都對不上號,主要原因就是我們對事物的特征把握不夠,還不能通過現(xiàn)有特征對身邊的人進(jìn)行分類。這個時候,我們 常常會有這種意識:哎,你好像叫張三來著?哦,不對,你好像是李四。這就是分類中的概率問題,有可能是A結(jié)果,有可能是B結(jié)果,甚至是更多結(jié)果,主要原因 就是我們的大腦收集的特征不夠多,還無法進(jìn)行準(zhǔn)確分類。當(dāng)大家都彼此熟悉了之后,一眼就能識別出誰是誰來,甚至極端情況下,只聽聲音不見人都能進(jìn)行識別, 這說明我們已經(jīng)對該事物的特征把握相當(dāng)精確。
所以,我認(rèn)為,人識別事物有四個基本步驟:學(xué)習(xí)、提取特征、識別、分類。
那么機器可不可以模仿這個過程來實現(xiàn)識別呢?答案是肯定的,但是沒有那么容易。難題有三:第一,人的大腦有無數(shù)神經(jīng)元進(jìn)行數(shù)據(jù)交換和處理,在目 前的機器中還達(dá)不到同等的處理條件;第二,人對事物特征的提取是潛意識的,提取無意識情況下的信息,誤差很大;第三,也是最重要的一點,人的經(jīng)驗來自于人 每時每刻的生活中,也就是人無時無刻都處在學(xué)習(xí)中,如何讓機器進(jìn)行各個方面的自主學(xué)習(xí)?因此,目前在人工智能領(lǐng)域始終還沒達(dá)到類人的水平,我認(rèn)為主要原因 就是機器沒有潛意識。人的潛意識其實并不完全受人的意識支配,但卻可以提高人類識別事物的概率。我們無法給機器加載潛意識,因為主動加載的意識就是主觀意 識,在機器里無法完成人類潛意識的功能。所以,以目前的發(fā)展情況來看,要達(dá)到完全類人,還有不短的時間。但即便如此,與人的思維差別很大的機器依然可以為 我們的生活帶來幫助。比如,我們常用的在線翻譯、搜索系統(tǒng)、專家系統(tǒng)等,都是機器學(xué)習(xí)的產(chǎn)物。
那么,如何實現(xiàn)機器學(xué)習(xí)呢?
整體上看,機器學(xué)習(xí)就是模仿人識別事物的過程,即:學(xué)習(xí)、提取特征、識別、分類。由于機器不能跟人類思維一樣根據(jù)事物特征自然而然的選擇分類方 法,所以機器學(xué)習(xí)方法的選擇依然還需要人工選擇。目前,機器學(xué)習(xí)的方法主要有三種:監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)。監(jiān)督學(xué)習(xí)是利用一組已知類別的樣本 調(diào)整分類器的參數(shù),使其達(dá)到所要求性能的過程。白話一點,就是根據(jù)已知的,推斷未知的。代表方法有:Nave Bayes、SVM、決策樹、KNN、神經(jīng)網(wǎng)絡(luò)以及Logistic分析等;半監(jiān)督方法主要考慮如何利用少量的標(biāo)注樣本和大量的未標(biāo)注樣本進(jìn)行訓(xùn)練和分類 的問題,也就是根據(jù)少量已知的和大量未知的內(nèi)容進(jìn)行分類。代表方法有:最大期望、生成模型和圖算法等。無監(jiān)督學(xué)習(xí)是利用一組已知類別的樣本調(diào)整分類器的參 數(shù),使其達(dá)到所要求性能的過程。也就是及其自個兒學(xué)。代表方法有:Apriori、FP樹、K-means以及目前比較火的Deep Learning。從這三方面看,無監(jiān)督學(xué)習(xí)是最智能的,有能實現(xiàn)機器主動意識的潛質(zhì),但發(fā)展還比較緩慢;監(jiān)督學(xué)習(xí)是不太靠譜的,從已知的推斷未知的,就 必須要把事物所有可能性全都學(xué)到,這在現(xiàn)實中是不可能的,人也做不到;半監(jiān)督學(xué)習(xí)是“沒辦法中的辦法”,既然無監(jiān)督學(xué)習(xí)很難,監(jiān)督學(xué)習(xí)不靠譜,就取個折 中,各取所長。目前的發(fā)展是,監(jiān)督學(xué)習(xí)技術(shù)已然成熟,無監(jiān)督學(xué)習(xí)還在起步,所以對監(jiān)督學(xué)習(xí)方法進(jìn)行修改實現(xiàn)半監(jiān)督學(xué)習(xí)是目前的主流。但這些方法基本只能提 取信息,還不能進(jìn)行有效的預(yù)測(人們就想,既然沒法得到更多,就先看看手里有什么,于是數(shù)據(jù)挖掘出現(xiàn)了)。
機器學(xué)習(xí)方法非常多,也很成熟。下面我挑幾個說。
首先是SVM。因為我做的文本處理比較多,所以比較熟悉SVM。SVM也叫支持向量機,其把數(shù)據(jù)映射到多維空間中以點的形式存在,然后找到能夠 分類的最優(yōu)超平面,最后根據(jù)這個平面來分類。SVM能對訓(xùn)練集之外的數(shù)據(jù)做很好的預(yù)測、泛化錯誤率低、計算開銷小、結(jié)果易解釋,但其對參數(shù)調(diào)節(jié)和核函數(shù)的 參數(shù)過于敏感。個人感覺SVM是二分類的最好的方法,但也僅限于二分類。如果要使用SVM進(jìn)行多分類,也是在向量空間中實現(xiàn)多次二分類。
SVM有一個核心函數(shù)SMO,也就是序列最小最優(yōu)化算法。SMO基本是最快的二次規(guī)劃優(yōu)化算法,其核心就是找到最優(yōu)參數(shù)α,計算超平面后進(jìn)行分類。SMO方法可以將大優(yōu)化問題分解為多個小優(yōu)化問題求解,大大簡化求解過程。
SVM還有一個重要函數(shù)是核函數(shù)。核函數(shù)的主要作用是將數(shù)據(jù)從低位空間映射到高維空間。詳細(xì)的內(nèi)容我就不說了,因為內(nèi)容實在太多了�?傊�,核函數(shù)可以很好的解決數(shù)據(jù)的非線性問題,而無需考慮映射過程。
第二個是KNN。KNN將測試集的數(shù)據(jù)特征與訓(xùn)練集的數(shù)據(jù)進(jìn)行特征比較,然后算法提取樣本集中特征最近鄰數(shù)據(jù)的分類標(biāo)簽,即KNN算法采用測量 不同特征值之間的距離的方法進(jìn)行分類。KNN的思路很簡單,就是計算測試數(shù)據(jù)與類別中心的距離。KNN具有精度高、對異常值不敏感、無數(shù)據(jù)輸入假定、簡單 有效的特點,但其缺點也很明顯,計算復(fù)雜度太高。要分類一個數(shù)據(jù),卻要計算所有數(shù)據(jù),這在大數(shù)據(jù)的環(huán)境下是很可怕的事情。而且,當(dāng)類別存在范圍重疊 時,KNN分類的精度也不太高。所以,KNN比較適合小量數(shù)據(jù)且精度要求不高的數(shù)據(jù)。
KNN 有兩個影響分類結(jié)果較大的函數(shù),一個是數(shù)據(jù)歸一化,一個是距離計算。如果數(shù)據(jù)不進(jìn)行歸一化,當(dāng)多個特征的值域差別很大的時候,最終結(jié)果就會受到較大影響; 第二個是距離計算。這應(yīng)該算是KNN的核心了。目前用的最多的距離計算公式是歐幾里得距離,也就是我們常用的向量距離計算方法。
個人感覺,KNN最大的作用是可以隨時間序列計算,即樣本不能一次性獲取只能隨著時間一個一個得到的時候,KNN能發(fā)揮它的價值。至于其他的特點,它能做的,很多方法都能做;其他能做的它卻做不了。
第三個就是Naive Bayes了。Naive Bayes簡稱NB(牛X),為啥它牛X呢,因為它是基于Bayes概率的一種分類方法。貝葉斯方法可以追溯到幾百年前,具有深厚的概率學(xué)基礎(chǔ),可信度非 常高。Naive Baye中文名叫樸素貝葉斯,為啥叫“樸素”呢?因為其基于一個給定假設(shè):給定目標(biāo)值時屬性之間相互條件獨立。比如我說“我喜歡你”,該假設(shè)就會假定 “我”、“喜歡”、“你”三者之間毫無關(guān)聯(lián)。仔細(xì)想想,這幾乎是不可能的。馬克思告訴我們:事物之間是有聯(lián)系的。同一個事物的屬性之間就更有聯(lián)系了。所 以,單純的使用NB算法效率并不高,大都是對該方法進(jìn)行了一定的改進(jìn),以便適應(yīng)數(shù)據(jù)的需求。
NB 算法在文本分類中用的非常多,因為文本類別主要取決于關(guān)鍵詞,基于詞頻的文本分類正中NB的下懷。但由于前面提到的假設(shè),該方法對中文的分類效果不好,因 為中文顧左右而言他的情況太多,但對直來直去的老美的語言,效果良好。至于核心算法嘛,主要思想全在貝葉斯里面了,沒啥可說的。
第四個是回歸�;貧w有很多,Logistic回歸啊、嶺回歸啊什么的,根據(jù)不同的需求可以分出很多種。這里我主要說說Logistic回歸。為 啥呢?因為 Logistic回歸主要是用來分類的,而非預(yù)測�;貧w就是將一些數(shù)據(jù)點用一條直線對這些點進(jìn)行擬合。而Logistic回歸是指根據(jù)現(xiàn)有數(shù)據(jù)對分類邊界 線建立回歸公式,以此進(jìn)行分類。該方法計算代價不高,易于理解和實現(xiàn),而且大部分時間用于訓(xùn)練,訓(xùn)練完成后分類很快;但它容易欠擬合,分類精度也不高。主 要原因就是Logistic主要是線性擬合,但現(xiàn)實中很多事物都不滿足線性的。即便有二次擬合、三次擬合等曲線擬合,也只能滿足小部分?jǐn)?shù)據(jù),而無法適應(yīng)絕 大多數(shù)數(shù)據(jù),所以回歸方法本身就具有局限性。但為什么還要在這里提出來呢?因為回歸方法雖然大多數(shù)都不合適,但一旦合適,效果就非常好。
Logistic 回歸其實是基于一種曲線的,“線”這種連續(xù)的表示方法有一個很大的問題,就是在表示跳變數(shù)據(jù)時會產(chǎn)生“階躍”的現(xiàn)象,說白了就是很難表示數(shù)據(jù)的突然轉(zhuǎn)折。 所以用Logistic回歸必須使用一個稱為“海維塞德階躍函數(shù)”的Sigmoid函數(shù)來表示跳變。通過Sigmoid就可以得到分類的結(jié)果。
為了優(yōu)化Logistic回歸參數(shù),需要使用一種“梯度上升法”的優(yōu)化方法。該方法的核心是,只要沿著函數(shù)的梯度方向搜尋,就可以找到函數(shù)的最 佳參數(shù)。但該方法在每次更新回歸系數(shù)時都需要遍歷整個數(shù)據(jù)集,對于大數(shù)據(jù)效果還不理想。所以還需要一個“隨機梯度上升算法”對其進(jìn)行改進(jìn)。該方法一次僅用 一個樣本點來更新回歸系數(shù),所以效率要高得多。
第五個是決策樹。據(jù)我了解,決策樹是最簡單,也是曾經(jīng)最常用的分類方法了。決策樹基于樹理論實現(xiàn)數(shù)據(jù)分類,個人感覺就是數(shù)據(jù)結(jié)構(gòu)中的B+樹。決 策樹是一個預(yù)測模型,他代表的是對象屬性與對象值之間的一種映射關(guān)系。決策樹計算復(fù)雜度不高、輸出結(jié)果易于理解、對中間值缺失不敏感、可以處理不相關(guān)特征 數(shù)據(jù)。其比 KNN好的是可以了解數(shù)據(jù)的內(nèi)在含義。但其缺點是容易產(chǎn)生過度匹配的問題,且構(gòu)建很耗時。決策樹還有一個問題就是,如果不繪制樹結(jié)構(gòu),分類細(xì)節(jié)很難明白。 所以,生成決策樹,然后再繪制決策樹,最后再分類,才能更好的了解數(shù)據(jù)的分類過程。
決策樹的核心樹的分裂。到底該選擇什么來決定樹的分叉是決策樹構(gòu)建的基礎(chǔ)。最好的方法是利用信息熵實現(xiàn)。熵這個概念很頭疼,很容易讓人迷糊,簡單來說就是信息的復(fù)雜程度。信息越多,熵越高。所以決策樹的核心是通過計算信息熵劃分?jǐn)?shù)據(jù)集。
我還得說一個比較特殊的分類方法:AdaBoost。AdaBoost是boosting算法的代表分類器。boosting基于元算法(集成 算法)。即考慮其他方法的結(jié)果作為參考意見,也就是對其他算法進(jìn)行組合的一種方式。說白了,就是在一個數(shù)據(jù)集上的隨機數(shù)據(jù)使用一個分類訓(xùn)練多次,每次對分 類正確的數(shù)據(jù)賦權(quán)值較小,同時增大分類錯誤的數(shù)據(jù)的權(quán)重,如此反復(fù)迭代,直到達(dá)到所需的要求。AdaBoost泛化錯誤率低、易編碼、可以應(yīng)用在大部分分 類器上、無參數(shù)調(diào)整,但對離群點敏感。該方法其實并不是一個獨立的方法,而是必須基于元方法進(jìn)行效率提升。個人認(rèn)為,所謂的“AdaBoost是最好的分 類方法”這句話是錯誤的,應(yīng)該是“AdaBoost是比較好的優(yōu)化方法”才對。
好了,說了這么多了,我有點暈了,還有一些方法過幾天再寫�?偟膩碚f,機器學(xué)習(xí)方法是利用現(xiàn)有數(shù)據(jù)作為經(jīng)驗讓機器學(xué)習(xí),以便指導(dǎo)以后再次碰到的 決策。目前來說,對于大數(shù)據(jù)分類,還是要借助分布式處理技術(shù)和云技術(shù)才有可能完成,但一旦訓(xùn)練成功,分類的效率還是很可觀的,這就好比人年齡越大看待問題 越精準(zhǔn)的道理是一樣的。這八個月里,從最初的理解到一步步實現(xiàn);從需求的邏輯推斷到實現(xiàn)的方法選擇,每天都是辛苦的,但每天也都是緊張刺激的。我每天都在 想學(xué)了這個以后可以實現(xiàn)什么樣的分類,其實想想都是讓人興奮的。當(dāng)初,我逃避做程序員,主要原因就是我不喜歡做已經(jīng)知道結(jié)果的事情,因為那樣的工作沒有什 么期盼感;而現(xiàn)在,我可以利用數(shù)據(jù)分析得到我想象不到的事情,這不僅滿足了我的好奇感,也讓我能在工作中樂在其中。也許,我距離社會的技術(shù)需求還有很遠(yuǎn)的 距離,但我對自己充滿信心,因為,我不感到枯燥,不感到彷徨,雖然有些力不從心,但態(tài)度堅定。

最后,希望各位能人、牛人、同道中人給予點評,多多交流,一個人做算法是吃力的,希望各位踴躍評價,共同進(jìn)步



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:643751 發(fā)表于 2020-2-18 23:19 | 只看該作者
看了一半 后面的技術(shù) 看不下去了 因為沒接觸過。。。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表