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