0
本文作者: Jasper.T | 2016-09-13 14:54 |
編者按:去年,Per Harald Borgen 寫(xiě)了一篇名為《為期一周的機(jī)器學(xué)習(xí)研究》的文章,講述了他如何通過(guò)五天的努力開(kāi)啟機(jī)器學(xué)習(xí)之旅。
接下來(lái)你看到的是此文的后續(xù),Per Harald Borgen 將和我們分享他如何在一年內(nèi)掌握機(jī)器學(xué)習(xí)知識(shí)的經(jīng)歷,并在工作中完成了第一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目,包括使用各種各樣的機(jī)器學(xué)習(xí)和自然語(yǔ)言處理技術(shù),使 Xeneta 的潛在客戶達(dá)到合格標(biāo)準(zhǔn)。
在 Per Harald Borgen看來(lái),他并不認(rèn)為只有獲得博士或碩士學(xué)位的人才能在機(jī)器學(xué)習(xí)方面更加專業(yè)。“研究機(jī)器學(xué)習(xí)并不需要你數(shù)學(xué)學(xué)得很好,也不需要你一定要取得什么樣的學(xué)位?!?/strong>
如果你對(duì)機(jī)器學(xué)習(xí)抱有好奇又心存敬畏,不妨看看這篇文章。
入門(mén):Hacker News (黑客新聞)和 Udacity (優(yōu)達(dá)學(xué)城)
我對(duì)機(jī)器學(xué)習(xí)的興趣開(kāi)始于 2014 年。那時(shí)候我剛開(kāi)始在 Hacker News 上閱讀有關(guān)它的一些文章。然后我就發(fā)現(xiàn)通過(guò)檢測(cè)數(shù)據(jù)來(lái)教會(huì)機(jī)器做一些事情,這種想法十分有趣。當(dāng)時(shí)的我甚至連一個(gè)專業(yè)的開(kāi)發(fā)員都不算,只能算是一個(gè)業(yè)余編碼員,但我還是想試一試。
所以我就開(kāi)始看 Udacity 的監(jiān)督學(xué)習(xí)課程的前幾章,并同時(shí)開(kāi)始閱讀有關(guān)這方面的所有文章。
盡管沒(méi)有掌握到實(shí)踐技能,但我還是對(duì)機(jī)器學(xué)習(xí)的概念有了一定的認(rèn)識(shí)。但由于我很少聽(tīng)大規(guī)模在線開(kāi)放課程,所以并沒(méi)有聽(tīng)完。
“成功”掛掉Coursera 機(jī)器學(xué)習(xí)課程
2015 年 1 月,我參加了倫敦的“創(chuàng)始人和程序員”訓(xùn)練營(yíng)地(FAC bootcamp),想成為一名程序員。幾周過(guò)后,我想學(xué)習(xí)如何碼機(jī)器學(xué)習(xí)算法,于是我就和幾個(gè)同伴成立了一個(gè)學(xué)習(xí)小組。每周二晚上,我們都會(huì)在 Coursera 上觀看機(jī)器學(xué)習(xí)課程。
這個(gè)課程很棒,我也學(xué)到了很多。但是對(duì)于一個(gè)初學(xué)者來(lái)說(shuō),課程內(nèi)容太難,因此我必須要一遍遍反復(fù)觀看才能掌握要點(diǎn)。
與此同時(shí), Octave 編碼任務(wù)也同樣十分具有挑戰(zhàn)性,尤其是如果你不了解 Octave 的話。后來(lái),因?yàn)殡y度太大,小伙伴們一個(gè)個(gè)都放棄了,再后來(lái),我自己也最終放棄了。
事后,我意識(shí)到,我應(yīng)該找一個(gè)適合我的課程來(lái)聽(tīng)。要么是用機(jī)器學(xué)習(xí)圖書(shū)館來(lái)進(jìn)行編碼任務(wù),而不是從頭創(chuàng)建算法,又或者至少是用我了解的編程語(yǔ)言。
對(duì)于新手來(lái)說(shuō),學(xué)習(xí)一門(mén)新的語(yǔ)言,并同時(shí)編碼機(jī)器學(xué)習(xí)算法,實(shí)在是太難了。
如果我及時(shí)發(fā)現(xiàn)的話,我會(huì)選擇 Udacity 的《機(jī)器學(xué)習(xí)介紹》這門(mén)課程,因?yàn)樗雍?jiǎn)單并且采用 Python 和 Scikit 學(xué)法。用這種方法,我們可以盡快上手,獲得自信,同時(shí)也更加有趣。
習(xí)得:從簡(jiǎn)單和實(shí)際的東西開(kāi)始學(xué),而不是困難和理論性的。
為期一周的機(jī)器學(xué)習(xí)
我在 FAC 最后進(jìn)行的努力就是每周的機(jī)器學(xué)習(xí)匯演。我的目標(biāo)是在此次訓(xùn)練周即將結(jié)束的時(shí)候,能夠運(yùn)用機(jī)器學(xué)習(xí)來(lái)解決一些實(shí)際問(wèn)題。最終我成功了。
在這一周時(shí)間內(nèi)我做了下列這些事情:
逐步了解 Scikit 學(xué)習(xí)
在真實(shí)的全球數(shù)據(jù)集上嘗試了機(jī)器學(xué)習(xí)
從頭編碼了一個(gè)線性回歸算法(用 Python )
做了一點(diǎn)點(diǎn)自然語(yǔ)言處理
這是到目前為止我所經(jīng)歷過(guò)的最曲折的機(jī)器學(xué)習(xí)的學(xué)習(xí)曲線了。如果你想了解更多詳細(xì)情況的話,就請(qǐng)繼續(xù)讀這篇文章吧。
習(xí)得:用一周的時(shí)間讓自己完全沉浸于一個(gè)新的項(xiàng)目當(dāng)中,這是極為有效的。
神經(jīng)網(wǎng)絡(luò)?我也掛了
在結(jié)束了倫敦的 FAC 訓(xùn)練營(yíng)地之后,我又回到了挪威。我試圖復(fù)制之前在機(jī)器學(xué)習(xí)周所取得的成功,將其用于神經(jīng)網(wǎng)絡(luò),結(jié)果失敗了。
因?yàn)橛刑嗟氖虑閬?lái)分散我的精力,因此我無(wú)法每天花 10 個(gè)小時(shí)的時(shí)間來(lái)編碼和學(xué)習(xí)。我這才發(fā)現(xiàn)環(huán)境的重要性,因?yàn)橹霸?FAC 訓(xùn)練營(yíng)地的時(shí)候,周?chē)际菣C(jī)器學(xué)習(xí)的愛(ài)好者。
習(xí)得:在做這類學(xué)習(xí)的時(shí)候,讓自己處在一個(gè)積極向上的環(huán)境之中。
但是,至少我開(kāi)始著手從事了神經(jīng)網(wǎng)絡(luò)的研究,并且也慢慢掌握了要領(lǐng)。終于到了 7 月 1 日,我成功編寫(xiě)了我的第一條網(wǎng)絡(luò)。它可能沒(méi)有什么價(jià)值,并且于我而言也沒(méi)什么可炫耀的,但這至少證明我了解了反向傳播和梯度下降的概念。
在后半年,由于我找了新的工作,因此項(xiàng)目進(jìn)展開(kāi)始緩慢下來(lái)。這一時(shí)期最重要的收獲就是從神經(jīng)網(wǎng)絡(luò)非向量化到向量化實(shí)施的重大飛躍,這其中包括從大學(xué)就一直重復(fù)的線性代數(shù)。
在年底的時(shí)候,我寫(xiě)了一篇文章來(lái)對(duì)我的學(xué)習(xí)進(jìn)行總結(jié)。
測(cè)驗(yàn) Kaggle 競(jìng)賽
在 2015 年圣誕假期的時(shí)候,我再一次鼓起勇氣,決定試驗(yàn) Kaggle 。因此我花了相當(dāng)一段時(shí)間來(lái)試驗(yàn)各種算法,用于測(cè)試 Kaggle 的住宅報(bào)價(jià)轉(zhuǎn)換,奧托集團(tuán)產(chǎn)品分類,以及自行車(chē)共享需求競(jìng)賽。
通過(guò)試驗(yàn)各種算法和數(shù)據(jù),使結(jié)果得到不斷改善,這是我在這次嘗試中最大的收獲。
我學(xué)會(huì)了要在做機(jī)器學(xué)習(xí)時(shí)相信自己的邏輯。此外,倘若調(diào)整一個(gè)參數(shù)或者設(shè)計(jì)一個(gè)新的特征在邏輯上看來(lái)行得通的話,那么它在實(shí)際應(yīng)用當(dāng)中也可能會(huì)有所幫助。
在工作中安排日常學(xué)習(xí)
2016 年 1 月,假期結(jié)束之后我又重新回歸工作,我想要繼續(xù)圣誕假期的研究,因此我就問(wèn)我的經(jīng)理是否可以讓我在上班時(shí)間花一些時(shí)間來(lái)學(xué)習(xí)。他欣然同意了。在對(duì)神經(jīng)網(wǎng)絡(luò)有了一個(gè)基本的了解之后,我想繼續(xù)進(jìn)行深入學(xué)習(xí)。
Udacity 的深度學(xué)習(xí)
我首先嘗試的是 Udacity 的深度學(xué)習(xí)課程,但結(jié)果令我十分失望。課程的內(nèi)容很好,但是對(duì)我來(lái)說(shuō)太短太淺顯了。
除此之外, IPython Notebook 任務(wù)的結(jié)果也十分令人沮喪。我花了大多數(shù)的時(shí)間來(lái)調(diào)試代碼缺陷,結(jié)果在連續(xù)工作數(shù)周之后,當(dāng)初的熱情逐漸退卻,到最后我基本上就放棄了。
對(duì)于我來(lái)說(shuō),談到 IPython Notebooks ,我完全是個(gè)新手。所以比起我,你們的結(jié)果或許并不會(huì)像我一樣這么壞。可能是我還沒(méi)有準(zhǔn)備聽(tīng)這個(gè)課程吧。
斯坦福的深度學(xué)習(xí)自然語(yǔ)言處理
幸運(yùn)的是,我后來(lái)又發(fā)現(xiàn)了斯坦福的 CS224D ,然后就決定試一試。這個(gè)課程很棒。盡管很難,但是在做問(wèn)題設(shè)置的時(shí)候,我從沒(méi)放棄過(guò)調(diào)試。
其次,它們也確實(shí)給了你解決方案的代碼。我在遇到困難時(shí)常常會(huì)看一下這些代碼,以便能讓自己的工作倒回去,重新去搞清楚達(dá)成解決方案所需的步驟。
盡管我還沒(méi)有完成,但這已經(jīng)大大提升了我在自然語(yǔ)言處理和神經(jīng)網(wǎng)絡(luò)方面的知識(shí)。
然而這一過(guò)程真的十分艱辛。我一度認(rèn)為自己需要一個(gè)比我好的人來(lái)幫助我,于是我找到了一個(gè)博士在讀學(xué)生,給他每小時(shí) 40 美元的報(bào)酬,他欣然接受。他幫助我解決問(wèn)題設(shè)置和整體認(rèn)識(shí)上的問(wèn)題,而他的幫助對(duì)我來(lái)說(shuō)是至關(guān)重要的,因?yàn)樗l(fā)現(xiàn)了我很多知識(shí)上的黑洞。
習(xí)得:以每小時(shí) 50 美元的報(bào)酬就有可能找到一個(gè)很好的機(jī)器學(xué)習(xí)領(lǐng)域的老師。如果你付得起的話,這絕對(duì)值得。
提升 Xeneta 的銷(xiāo)售額
在做了以上所有工作之后,我覺(jué)得自己已經(jīng)準(zhǔn)備好在工作中做一項(xiàng)機(jī)器學(xué)習(xí)項(xiàng)目了。該項(xiàng)目旨在訓(xùn)練出一套算法,利用該算法,通過(guò)閱讀企業(yè)描述來(lái)使 Xeneta 的潛在客戶達(dá)到合格標(biāo)準(zhǔn)。這對(duì)于銷(xiāo)售部門(mén)的員工來(lái)說(shuō),將節(jié)省大量的時(shí)間。
走到這一步確實(shí)是一個(gè)漫長(zhǎng)的旅程。但其實(shí)也很快。在我開(kāi)始第一周的項(xiàng)目時(shí),我完全沒(méi)想過(guò)自己能在一年的時(shí)間內(nèi)熟練使用機(jī)器學(xué)習(xí)。
但是這是完全有可能的。如果我能做,那么其他人也一定可以。
via medium
后記:看完了 Per Harald Borgen 一年來(lái)的學(xué)習(xí)歷程,有沒(méi)有覺(jué)得機(jī)器學(xué)習(xí)離我們并非那么遙不可及了呢?然而,與方法同樣重要的是恒心,如果你對(duì)機(jī)器學(xué)習(xí)真的感興趣,不妨就從現(xiàn)在開(kāi)始吧。
推薦閱讀:
Machine Learning: 一部氣勢(shì)恢宏的人工智能發(fā)展史
智能手機(jī) + 機(jī)器學(xué)習(xí) = 個(gè)人終端的未來(lái)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。