Kaggle 聯(lián)合創(chuàng)始人談及:什么是研究機(jī)器學(xué)習(xí)和人工智能最好的資源
由量子位翻譯Ben Hammer(Kaggle CTO)在AMA的回答。
你很幸運(yùn),要開始研究機(jī)器學(xué)習(xí)和人工智能,現(xiàn)在是比任何時候都好的時機(jī)。這個領(lǐng)域近年來在快速發(fā)展,專業(yè)人士發(fā)布并改進(jìn)著高質(zhì)量的開源軟件工具和庫,每天都有新的線上公開課和博客文章出現(xiàn)。機(jī)器學(xué)習(xí)在各個領(lǐng)域每天貢獻(xiàn)著數(shù)十億美元的營收,帶來了無與倫比的資源和大量工作機(jī)會。
這也意味著,在你剛接觸這個領(lǐng)域時會有被淹沒的感覺。下面是我的入門方法,如果你在研究過程中卡住了,去Kaggle上搜索一下,很可能有人遇到過和你類似的問題,如果沒有,可以在我們的論壇上發(fā)帖提問,這是個獲得指引的好辦法。?
1. 找一個你感興趣的問題?
從一個你想解決的問題入手,會更容易集中精力,也更有學(xué)習(xí)的動力,這種方法比照著一份長得嚇人的散亂知識點(diǎn)清單來學(xué)習(xí)要好很多。和被動地閱讀相比,解決問題也能驅(qū)使你深入到機(jī)器學(xué)習(xí)之中。 好的入門問題有以下幾個標(biāo)準(zhǔn): 涉及你個人感興趣的領(lǐng)域; 有現(xiàn)成的數(shù)據(jù)適合用來解決這個問題,否則你需要花大把的時間來找數(shù)據(jù); 你能夠在一臺機(jī)器上流暢地處理這些數(shù)據(jù),或者它的子集。 想不出來要解決的問題?上Kaggle嘛……Kaggle有個入門系列競賽,提供了適用于新手的機(jī)器學(xué)習(xí)問題。推薦從泰坦尼克號乘客的生還概率預(yù)測( https://www.kaggle.com/c/titanic)開始。
?2. 做一個快速、臟亂、黑客范兒的端到端解決方案?
初學(xué)者很容易陷入一個實現(xiàn)細(xì)節(jié)之中,或者為錯誤的機(jī)器學(xué)習(xí)算法仔細(xì)調(diào)試,你需要避免這種錯誤。你的目標(biāo),是盡可能快地把端到端的基本解決方法做出來:讀入數(shù)據(jù)、把它處理成適用于機(jī)器學(xué)習(xí)的格式、訓(xùn)練一個基本的模型、得出結(jié)果、評估它的性能。?
3. 改進(jìn)你的解決方案
?現(xiàn)在,基本功能已經(jīng)實現(xiàn),發(fā)揮創(chuàng)造性的時候到了。你可以嘗試對最初解決方案中的每個組件進(jìn)行優(yōu)化,然后測試修改帶來的作用,搞清楚該在哪個部件上花時間。通常來說,獲取更多的數(shù)據(jù)或者請洗數(shù)據(jù)之類的預(yù)處理步驟,比優(yōu)化機(jī)器學(xué)習(xí)模型有著更高的投入產(chǎn)出比。 這些步驟可能需要你親自上手處理數(shù)據(jù),比如說通過檢查特定的某一行、通過可視化方法來查看數(shù)據(jù)分布等方式,來更好地理解數(shù)據(jù)的結(jié)構(gòu)和怪癖。
?4. 寫出來你的解決方案&分享
?想要獲得別人對你的解決方案的反饋,最好的方法就是寫出來并分享。寫出你的解決方案意味著你會以新的方式去看它,并加深理解,也能讓別人理解你的工作并做出反饋、幫你學(xué)習(xí)進(jìn)步。寫作也有助于開始建立機(jī)器學(xué)習(xí)作品集,來展示你的能力,對找工作很有幫助。 我們以Kaggle數(shù)據(jù)集和Kaggle Kernels為例,它們分別可以用來分享數(shù)據(jù)和解決方案,從而獲得反饋,看其他人如何對你的問題進(jìn)行擴(kuò)展。這也是豐富你的Kaggle資料的辦法。
?5. 在更多問題上重復(fù)1-4步?
現(xiàn)在,你已經(jīng)完成了一個自己喜歡的問題,接下來應(yīng)該在不同領(lǐng)域的問題上多試幾次。 你在入門的時候是不是用了表格式的數(shù)據(jù)?選一個要用到非結(jié)構(gòu)化文本的問題,再試試解決圖像相關(guān)的問題。 你是不是先解決了一個結(jié)構(gòu)化的機(jī)器學(xué)習(xí)問題?很多有價值的創(chuàng)造性工作,一開始都有賴于從寬泛的商業(yè)或研究對象找到一個定義清晰的機(jī)器學(xué)習(xí)問題。 Kaggle競賽和數(shù)據(jù)集為機(jī)器學(xué)習(xí)的兩個方面:定義清晰的機(jī)器學(xué)習(xí)問題和原始數(shù)據(jù)來源提供了一個良好的起步點(diǎn)。?
6. 認(rèn)真地參加Kaggle競賽?
和上千人比賽著去解決同一個問題,盡力做到最好,是一個很好的學(xué)習(xí)機(jī)會,這能夠驅(qū)使你在這個問題上不斷迭代,找到解決問題的有效途徑。 關(guān)于其他人是怎樣解決問題排除bug的,針對某個競賽的論壇上有著豐富的資源,kernels體現(xiàn)了其他人對數(shù)據(jù)的洞察,并且給你提供了一個輕易的上手途徑,獲勝者的博客文章則展示了什么樣的方法效果最好。 Kaggle競賽提供了和別人組隊的機(jī)會,我們的社區(qū)成員有著不同的背景和技能,每個人都能從其他人身上學(xué)到東西。
?7. 在專業(yè)領(lǐng)域應(yīng)用機(jī)器學(xué)習(xí)?
這讓你在大部分時間中都能接觸到機(jī)器學(xué)習(xí),有助于自我提升。決定你想要成為什么樣的角色、建立和這個角色相關(guān)的個人項目列表,是一個很好的開端。 如果你還沒準(zhǔn)備好應(yīng)聘機(jī)器學(xué)習(xí)相關(guān)職位,也可以在你現(xiàn)在的崗位上開辟新項目、尋找提供咨詢的機(jī)會、參與黑客馬拉松和數(shù)據(jù)相關(guān)的社區(qū)服務(wù)機(jī)會、這些都能幫你在機(jī)器學(xué)習(xí)領(lǐng)域立足。專業(yè)領(lǐng)域的工作通常需要比較強(qiáng)的編程能力。 在專業(yè)領(lǐng)域應(yīng)用機(jī)器學(xué)習(xí),有這些價值的機(jī)會:?
將機(jī)器學(xué)習(xí)用于生產(chǎn)系統(tǒng);?
專注于機(jī)器學(xué)習(xí)研究,將技術(shù)發(fā)展的最高水平向前推進(jìn);?
用機(jī)器學(xué)習(xí)進(jìn)行探查、分析,來提升你的產(chǎn)品和商業(yè)決策。
?8. 幫助別人研究機(jī)器學(xué)習(xí)
?教人學(xué)習(xí)能幫你鞏固對基礎(chǔ)概念的掌握。教別人有很多不同的方法,你可以根據(jù)自己的風(fēng)格選一個:?
寫論文;?
做演講;
?寫博客文章和教程;?
在Kaggle、Quora等網(wǎng)站上回答問題;?
親自指導(dǎo);
?在Kaggle Kernels和GitHub上分享代碼;
?講課;
?寫書。