作者narwhalgary (獨角鯨葛瑞)
看板Soft_Job
標題Re: [請益] 非本科(無程式基礎),想走機械學習
時間Fri May 13 15:01:46 2016
我想就原po的問題做一些分享,不能說絕對正確,
至少是我轉進資工三年來的心得,
原po的問題是,一個沒有程式和資工基礎的人,是否有辦法轉進機器學習的領域?
這個問題其實很大很難回答,首先,機器學習這個詞現在是很廣泛的,
凡是有用到一些類似的演算法,不管再電腦視覺、人工智慧、自然語言處理等等,
其實都可以歸到機器學習的範疇,問題是,你到底對哪個有興趣?
接下來的討論就學術的領域回答,因為我不知道工業領域的可能性:
(1)我可能對很多都有興趣,反正以後再轉就好啦
Ans:錯。
一旦你進了實驗室,你大半的實驗方向其實就決定了,舉例來說,
我進了電腦視覺的實驗室,你就不能去做自然語言的東西啦,除非你轉實驗室。
所以你必須先清楚自己到底對哪種有興趣才是最重要的。
(2)可是我又還沒有進實驗室,我哪知道?
Ans:錯。
你當然可以進實驗室再找方向,但是這真的很冒險,尤其是你事先離職進入一個
未知的領域,我建議你先看一些top conference,看一些paper讓你有些感覺,
你真的對某一方面有很濃厚的興趣,你再去深入考慮要不要進去這領域。
舉例:電腦視覺有CVPR,ECCV,ICCV,人工智慧有AAAI等等(我只看電腦視覺的)。
(3)好吧,那假設我想走電腦視覺這樣算決定題目了嗎?
Ans:還是不行。
光是電腦視覺裡面還有好幾個子項目,classification,recoginition,image matching
很多東西可以跟類似的演算法結合,但是差異真的很大,你必須了解每個子項目
的優勢和缺點,你才有可能做的好,不然你會痛苦很久,通常了解一個子項目,
我會建議你花一年的時間實作一些open source的程式,假設今年是2016,
你最好把2015的每種最好的方法至少有辦法做出兩三種來,不然你無法比較。
(4)可是我只是想踏入這個領域,有必要要求這麼高嗎?
Ans:有。
一旦你踏入了某某資工系,或某某學術機構,你想做類似ML的研究,除非你是一開始
就想走創業這條路,不然你大概就是學術研究優先,如果你要學術研究,
你的目標就是打敗現今最強的方法,才有可能發paper(有用的paper),
如果你只是想要隨便發一篇碩士論文,隨便畢業一下去上班,那我不建議你這樣走。
但是當然,沒有開始了解就沒有結果,沒有接觸也沒有感觸,所以這也只是建議而已。
(5)好吧,所以你還是沒回答我轉進去是不是可行的?
Ans:可以的。
因為我是物理系的,博士班才轉進去,我同實驗室的各種電機系、半導體和寫網頁的,
其實和ML沒半點關係,大家即使進去了,其實也會卡住很久,卡住幾個月或幾年這
是看你的努力程度和資質,並不是說有程式背景就會一帆風順,重要的還是你的動機,
足不足夠讓你撐到你發達的那天(發paper的那天)。
(6)那我需要先學好什麼程式嗎?
Ans:yes and no.
你不應該預設你自己該學什麼程式,因為你會需要學很多種(掩面),特別是不同領域
習慣使用的程式也差很多,我舉個例子來說,你應該有聽過深度學習(deep learning),
你知道光是深度學習的套件大概就有六七種之多,你知道光是電腦視覺之中,每種子項目
所使用的套件就有嚴重的不同,簡單來說,一旦以前的人用了某種套件,你最好能夠
跟他比較,那你就最好學會這種套件,而學會一種,都要花上很多很多的時間,
所以回過頭來,我還是先建議你先決定你到底真正對哪種領域的哪個子項目有興趣,
才是最重要的。
可能有些人會跟你說,『只要你精通某種程式,你就可以寫出天下所有演算法。』
理想上來說是這樣沒錯,但是實際上我認為是浪費時間,因為學術研究上,
你會發現很多人的演算法,你是極為難以複製的,簡單來說,你最好使用他提供的
程式,不然你重新做出來的東西效能可能沒有人家report的十分之一,而這不是因為他的
方法錯了,是因為你程式做錯了(當然也有可能是因為他paper說謊,不過通常是
寫錯了),如果你是對ML本身有興趣而不是程式優化,你不該太執著於自己把某種方法
做出來,因為通常是做不到的(而通常有人會誤解這是自己程式基礎不夠)。
(7)那我到底應該先會什麼?
Ans:Google。
這點我真的完全沒有在開玩笑,基本上你只要有一台電腦,可以google,可以拿到那些
paper,你就可以開始做研究了。因為我剛剛提到的每一點,都可以從搜尋開始,
你可以搜尋那些大領域、子項目、paper、最新的code,你通通拿的到,只是可能你不
知道其實現在的網路如此強大,還有你可能沒有一些一起研究的同學之類的。你可能
不知道一些專有名詞如何去搜尋,可能你也不知道要先去找引用citation最多的paper,
有些東西的確需要老師,有些也許需要學校,但是你最需要的其實是google,
舉例來說,你想知道什麼是PCA,你可以去翻課本,去上數學課,你也可以去google找
到一篇中國人寫的blog然後用一個小時弄懂順便把他的code拿來實作一下,(為什麼
是中國人是因為他們寫blog分享研究的風氣很盛行,你甚至不太需要懂英文)。
(8)我什麼時候才知道我具備這些能力了?
Ans:Related work。
你看paper的related work的時候,你已經知道作者會講某些方法,而這些方法
你都大概知道做什麼了,而且你知道彼此的優劣,你就具備了研究的能力了。
(9)那我該怎麼開始?
Ans:開始看paper。
只有開始看,你才有機會去碰到我剛剛說的每一項問題,你才知道原來自己是做不出
來某些paper上面根本沒有提過,但是他們放出來的code裡面卻有的細節,
你才知道某些paper是bull shit,某些是瑰寶,你的心裡應該要記得某些打動你
心的paper,如果你對某些work有深深的敬畏,你就知道你其實適合做研究了,
至於是不是ML,是哪種ML,我覺得還是先看paper之後你才知道。
(10)那考試呢?
Ans:蒐集資料。
基本上台大博士班的考試,期中或是資格考,還是一個蒐集資料的過程,簡單來說
就是考古題,我和我同學都認為蒐集完這個資料能讓我考試準備的過程越短越好,
為什麼?因為我們想要做研究,考試是浪費時間但是又不得不考。你可能會問,
申請碩士或博士的考試呢?我認為最好的方法就是不考試,所以你應該先去找個
老師,用研究助理的方法直接進去研究(我們很多同學都無背景),然後申請學校
的時候最好有老師的推薦信,這樣口試委員基本上就讓你過了(真的),如果
你可能沒辦法這樣,那你可能會需要筆試,就硬著頭皮去做吧,但是你要知道,
真正重要的開始是你開始看paper研究,開始真正的去想、思考、實作,
而不是說你辭職想考資工系叫做開始。
祝
萬事順利
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.16.132
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1463122908.A.F91.html
1F:推 alongalone: 首推..!? 05/13 15:07
※ 編輯: narwhalgary (140.112.16.132), 05/13/2016 15:12:18
※ 編輯: narwhalgary (140.112.16.132), 05/13/2016 15:13:07
2F:推 storm654321: 推分享 05/13 16:41
3F:推 LinkCoffin: 推 05/13 17:12
4F:推 neo5277: 看天分 05/13 17:12
5F:推 stitchris: 推 05/13 17:22
6F:推 xaos: 好文 推 05/13 17:26
7F:→ xaos: 想當初 大一進資工系 05/13 17:26
8F:→ xaos: 都不知道領域會分這麼細 05/13 17:26
9F:→ xaos: 到大四了 只知道自己蠻喜歡ai 05/13 17:26
10F:→ xaos: 少了很多時間去做相關的專題 05/13 17:26
11F:→ narwhalgary: 有人問可以省很多時間啊(茶 05/13 17:33
12F:推 MIKEmike07: XXX1好文 m 05/13 18:30
13F:推 A4P8T6X9: 推好文 05/13 19:28
14F:推 htc812: 推,我數學轉資工的心路歷程和你滿像 05/13 19:47
15F:推 hsu761001: 推 05/13 19:55
16F:→ narwhalgary: 希望拋磚引玉,大家能分享各自不同的經驗 05/13 20:08
17F:推 hei566: 好文 不過當初真的很難想那麼細 05/13 21:48
18F:推 james847286: 推 這篇還蠻中肯的 05/13 22:05
19F:推 cocoyan: 好文 05/13 23:06
20F:推 joeywayi: 推推我也是物理系 05/14 03:13
21F:推 nitero: 好文 05/14 09:06
22F:推 yibaby77: 推 05/14 12:21
23F:→ baseguard: computer vision不一定全跟ML有關 05/14 18:08
24F:推 ptt0211: 好文推 05/15 00:03
25F:→ jskblack: Image processing->computer vision-> ML 05/16 23:17
26F:推 dophin332: 推 05/19 16:40