天天看點

機器學習為何重要|通過計算一個句子的音節總數證明給你看◆ ◆ ◆◆ ◆ ◆

 對資訊時代的大多數人來說,如果想通過電腦程式設計解決一些難題,你隻有兩種方法:查找式和啟發式。

機器學習為何重要|通過計算一個句子的音節總數證明給你看◆ ◆ ◆◆ ◆ ◆

現在,便利的機器學習算法的出現提供了新的有力選擇,我們可以用它來解決一些以前無法解決的問題。

機器學習為何重要|通過計算一個句子的音節總數證明給你看◆ ◆ ◆◆ ◆ ◆

我們用這個看似簡單實則困難的例子,計算一個句子裡面音節的總數來說明機器學習的強大。

計算一個句子裡面音節的總數

解決這個難題的一個方法是從現有的清單裡去尋找答案。似乎我們可以通過簡單地查字典,找出每一個詞的音節數,然後把所有的詞加起來就得到了總數。

這個非常直接的方法在實踐中很快就失效了。

因為實際的句子中包含出乎意料之多的沒有收錄在普通字典裡的單詞,如外來詞,姓名,拼寫錯誤,流行文化詞,俚語等。字典通常不包含一個單詞的所有變異體,也不包含所有單詞的音節數。如果一個句子中即使隻有一個單詞我們找不到,使用這種查找的辦法就解決不了問題。是以,這種方法非常局限,很多情況下不能使用。

作為替代,多數軟體使用啟發式的或者稱作“聰明的算法”。這種方法彙總一套用某種程式設計語言寫下來的算法,或一系列的指令讓計算機去遵從。隻要你對問題了解得足夠好,能夠寫下來這些算法,啟發式算法則能非常有力地解決問題并能得到很好的結果。不幸的是,它們很脆弱——計算機隻會照着指令執行。

機器學習為何重要|通過計算一個句子的音節總數證明給你看◆ ◆ ◆◆ ◆ ◆

如果你的問題有許多特例,你必須不斷地在算法裡面增加特殊的邏輯,當問題變得越來越微妙時,比如檢測自然語言(examing nature langguage)——啟發式就會失敗,而且超過一定門檻值,則沒有辦法再改進。超過某個點,啟發式在一堆互相沖突的特例中糾結成一團亂麻,顧此而失彼。

而機器學習會采用一個完全不同的方法

程式員不再需要寫算法,隻要選擇一個機器學習的模型應用于訓練資料就可以了。基于回報機制,模型會進行自調節來得到理想的結果。

一個好的模型可以學習到資料中潛在的規則,即便這些規則是複雜的,例如我們自己寫程式時,因為沒有完全了解問題而寫出的不夠明确的規則,但隻要回報機制是紮實可靠的,模型就可以對自身進行動态的調整,并可學習在這個系統建立最初教育訓練中沒有學到的資料中的變化。如果能夠建立一個比較好地查出實際句子中音節數的機器學習模型,并且定期的給它回報,我們就可以期望随着時間的推移,它變得越來越來好– 即使有從不同來源的新詞加入。

機器學習為何重要|通過計算一個句子的音節總數證明給你看◆ ◆ ◆◆ ◆ ◆

啟發式和機器學習有相反的特征。

一個啟發式可以很快地提供非常好的結果,但是當資料量增加、或一些之前沒有料到的特例出現時,它的品質就會變得不可靠。想要提高啟發式則需要不斷地修改它的代碼,而且會逐漸變得複雜和昂貴。一旦錯過了某些時機,想要改良啟發式也會變得幾乎不可能。相比之下,雖然一個機器學習模型在最初的階段需要更多的功夫來創造和訓練,但是之後它就可以通過學習來不斷提高它自己。這種提高是通過從更多的資料中學習得來的,而不是通過重新設計算法。最終,這個機器學習模型可以通過學習處理一些連我們都無法清晰表述的微小的規則。這是一個從根本上與我們所了解的查找或啟發式方法都不同的功能,它幫我們創造出的軟體解決方案是之前通過查找和啟發法所無法達到的。

機器學習本身并不是一個新的方法,但它的使用已經開始大爆發。這種爆發是通過多種因素綜合作用驅使的,如提高了的訓練方法、逐漸增長的電腦的計算能力、巨大型“大資料”資料集中啟發式顯露出的缺陷、以及機器學習工具包的可用性的不斷改善。

機器學習的真正價值在于它為我們開辟了一個全新的技術能力,可以很好地解決基于查找或是啟發式無法處理的棘手問題。我們現在可以重新審視以前覺得遙不可及的挑戰,并期待着有更多的新一代産品能夠應用這個強大的新方法。

原文釋出時間為:2016-08-19

本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号

繼續閱讀