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