不要一上來(lái)就學(xué)機(jī)器學(xué)習(xí),要先學(xué)會(huì)用機(jī)器學(xué)習(xí)模型構(gòu)建軟件
掃描二維碼
隨時(shí)隨地手機(jī)看文章
如果你決定開(kāi)始學(xué)機(jī)器學(xué)習(xí),并且按照常規(guī)的方式開(kāi)始學(xué)習(xí),那么很可能出現(xiàn)這樣的情況:學(xué)習(xí)線(xiàn)性代數(shù)和多變量微積分兩周后就選擇放棄。
原因在于,大多數(shù)機(jī)器學(xué)習(xí)的入門(mén)材料不是面向開(kāi)發(fā)者的,而是面向機(jī)器學(xué)習(xí)研究人員開(kāi)發(fā)的,而對(duì)于只想使用機(jī)器學(xué)習(xí)來(lái)構(gòu)建產(chǎn)品的開(kāi)發(fā)者來(lái)說(shuō),這些材料未免太難了。
你是想只想做產(chǎn)品還是想做研究?在20年代末,機(jī)器學(xué)習(xí)或多或少只是一個(gè)學(xué)術(shù)研究問(wèn)題,在實(shí)際產(chǎn)品中使用機(jī)器學(xué)習(xí)的公司并不多。
因此,很多機(jī)器學(xué)習(xí)的入門(mén)資料都是從這個(gè)學(xué)術(shù)研究的角度出發(fā),它首先從數(shù)學(xué)的角度解釋了神經(jīng)網(wǎng)絡(luò)、機(jī)器學(xué)習(xí)背后的理論知識(shí)、反向傳播和對(duì)抗性網(wǎng)絡(luò)等等。
即使不是屬于大學(xué)課程的學(xué)習(xí)資料也是沿用了這個(gè)模式,例如,這句直接摘自Tensor Flow的中的一句話(huà):
很顯然,如果你已經(jīng)掌握了機(jī)器學(xué)習(xí)背后的數(shù)學(xué)知識(shí)或者你對(duì)學(xué)習(xí)機(jī)器學(xué)習(xí)本來(lái)充滿(mǎn)了興趣,那么這種學(xué)習(xí)方法對(duì)你來(lái)說(shuō)會(huì)是可行的。但是,如果你主要是想在構(gòu)建產(chǎn)品加入機(jī)器學(xué)習(xí),那么這可能不是你需要的。
就好比你想學(xué)習(xí)程序設(shè)計(jì),這種方法就像先學(xué)習(xí)匯編代碼,然后學(xué)習(xí)寫(xiě)代碼,事實(shí)是幾乎沒(méi)有面向產(chǎn)品的開(kāi)發(fā)者是這樣學(xué)習(xí)的。
當(dāng)你學(xué)習(xí)代碼時(shí),你很可能是通過(guò)使用高級(jí)語(yǔ)言寫(xiě)“hello world”來(lái)入門(mén)的,然后,當(dāng)項(xiàng)目變得稍微復(fù)雜了些,你會(huì)按照需求學(xué)習(xí)越來(lái)越多的低級(jí)編程。
如果你在構(gòu)建自動(dòng)推薦引擎和發(fā)表論文,那么你就應(yīng)該去學(xué)習(xí)機(jī)器學(xué)習(xí)本身,如果只是想構(gòu)建產(chǎn)品,那么你需要通過(guò)構(gòu)建軟件來(lái)學(xué)習(xí)機(jī)器學(xué)習(xí)。
如何通過(guò)構(gòu)建軟件來(lái)學(xué)習(xí)機(jī)器學(xué)習(xí)如果你喜歡通過(guò)線(xiàn)上課程來(lái)學(xué)習(xí),那么最好的資源或許就是fast.ai的Practial Deep Learning For Coders,fast.ai是最有發(fā)言權(quán)的機(jī)器學(xué)習(xí)倡導(dǎo)者,它推薦使用自上而下、理論實(shí)踐相結(jié)合的學(xué)習(xí)方法來(lái)學(xué)習(xí)機(jī)器學(xué)習(xí)。
課程鏈接:
https://course.fast.ai/
當(dāng)然,這篇文章的目的不是為fast.ai做廣告,只是想說(shuō)fast.ai的創(chuàng)始人Jeremy Howard和Rachel Thomas成功地把幾門(mén)課程整合在一起,這些課程讓開(kāi)發(fā)者構(gòu)建產(chǎn)品、深入了解項(xiàng)目相關(guān)的底層邏輯。
另外,如果你是那種通過(guò)深入了解并且自己構(gòu)建知識(shí)體系,以此可以達(dá)到最大的學(xué)習(xí)效果的人,那么學(xué)習(xí)機(jī)器學(xué)習(xí)就和你學(xué)過(guò)的編程語(yǔ)言一樣。挑選一個(gè)聽(tīng)起來(lái)讓你感興趣的項(xiàng)目,并深入其中學(xué)習(xí)就可以了。
這里推薦一種熟悉機(jī)器學(xué)習(xí)的好方法:
確定目標(biāo),例如構(gòu)建文本自動(dòng)填充器或車(chē)牌識(shí)別器。
找到一個(gè)適合你項(xiàng)目的預(yù)訓(xùn)練模型,比如用GPT2和YOLOv3分別適用于前面提到的文本自動(dòng)填充器和車(chē)牌識(shí)別器。
如果你覺(jué)得太復(fù)雜了,你甚至可以使用GPT2-simple這樣的庫(kù)來(lái)微調(diào)你的模型(根據(jù)數(shù)據(jù)集定制)。
最后,將你的模型部署成一項(xiàng)小型應(yīng)用。
一旦你有了一個(gè)API接口的模型,你就可以像其他查詢(xún)web服務(wù)一樣,并且圍繞它構(gòu)建你的應(yīng)用程序。
通過(guò)這種學(xué)習(xí)方法,可以促使你了解到不同流行的模型構(gòu)架和機(jī)器學(xué)習(xí)的方法,以及它們的使用場(chǎng)景。同樣重要的是,你將學(xué)習(xí)機(jī)器學(xué)習(xí)基礎(chǔ)構(gòu)架,這對(duì)構(gòu)建真實(shí)的產(chǎn)品至關(guān)重要。
學(xué)會(huì)構(gòu)建產(chǎn)品后可以回頭再學(xué)習(xí)理論如果你是一名工程師,你可能已經(jīng)學(xué)習(xí)過(guò)實(shí)現(xiàn)了某種形式的身份驗(yàn)證,這意味著你很可能用過(guò)散列密碼。
那么當(dāng)你設(shè)置散列密碼時(shí),你是否有自定義散列算法?你花了幾周時(shí)間去研究密碼學(xué)?還是說(shuō)你只是使用內(nèi)置的加密算法bcrypt。
同樣,當(dāng)你構(gòu)建你的第一個(gè)Web應(yīng)用程序時(shí),你是否花了幾周時(shí)間去學(xué)習(xí)數(shù)據(jù)庫(kù)?你是否從頭開(kāi)始編寫(xiě)自己的數(shù)據(jù)庫(kù)?還是說(shuō)使用了你最喜歡的框架所附帶的ORM?
這些問(wèn)題的邏輯同樣也適用于機(jī)器學(xué)習(xí),如果你是那種喜歡構(gòu)建軟件的人,那就從構(gòu)建軟件開(kāi)始,從工具、預(yù)訓(xùn)練模型和機(jī)器學(xué)習(xí)框架中抽象出底層的機(jī)器學(xué)習(xí)理論。如果你依然很好奇或者你的項(xiàng)目需要更高的復(fù)雜度,那就深入進(jìn)去,看看這一切是如何運(yùn)作的。