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