-
1 # 雪山草地4
-
2 # it鹹魚
感覺作者應該問的問題是應該攻讀影象處理好還是自然語言處理好(目前深度學習的兩大分支)。當然深度學習也不完全包含這兩個,比如自然語言處理(NLP)在之前都是用統計學方法處理的,這兩年才流行起來用了深度學習。我的研究方向和NLP相關,就重點說說NLP吧。
首先目前深度學習領域有兩個最主流的模型CNN和RNN。CNN就是卷積神經網路,通常用在影象處理上,RNN是迴圈神經網路,自然語言領域用的比較多。作者說攻讀深度學習,通常也需要找個小的點來攻讀。比方NLP,也是個非常大的概念,在NLP這個大概念下,又有很小的一些方向,比方說問答系統(類似於聊天機器人),文件主題抽取,語音識別,機器翻譯等等。還可以應用到其他領域,比如我的方向是利用NLP做安全領域的一些事情,如bug定位,summarize code,漏洞檢測等(程式碼本身也是一種語言)。
接下來說說入門的難度吧,無論自然語言處理也好,影象處理也好,本質上都是把圖片或者語句轉換成向量,然後對向量做一些處理。既然是轉換成向量,就得提到特徵提取。個人覺得自然語言處理的提取難度是大於圖片的,畢竟語言這種東西還是比較抽象的東西。提取的方法比如說按照詞頻,高階點的有基於語義的word2vec,但是這種特徵再怎麼表示,也沒有圖片的畫素點,或者圖片二值化以後的特徵來的直觀明瞭。
但是NLP無疑是很容易入門的,為什麼這麼說呢,因為nlp現在有太多太多容易又好用的工具了。比方說word2vec,可以用的工具太多太多,我最常用的就是gensim,基本上所有自然語言處理的演算法都有api。如果想要解析語法樹,可以用stanford corenlp。其他的很多就是簡單的字串處理。入門可以說很容易,你理解完概念之後就可以上手了。記得我剛入坑的時候,第一個任務是實現14年一篇軟工領域頂會的論文,完全是當做字串處理,看懂論文就直接上手寫程式碼了,都沒用api(當然因為程式碼基礎還可以,哈哈,吹個牛)。
但是想深入的話,無論是影象處理還是NLP都是非常難的,但是我覺得,NLP更難。影象處理其實是個比較直觀的東西,比如人臉識別,各種識別,很少涉及邏輯理解,但是NLP不一樣,很多領域的任務都是基於理解,而且結果也很難評判,比方機器翻譯,你生成一句句子,雖說有BLEU這種指標,但是具體好壞,我覺得還是需要人閱讀後來衡量的。
比方說上圖,是最近研究的一個透過自然語言自動生成程式碼的一個基於Python ast的RNN(ACL 2017的論文的圖),就是根據一句描述,生成程式碼,沒錯,我研究的就是那些傳說中能取代程式猿的東西(瞎扯淡),生成的東西,根本沒有一個評判標準,不像影象,有一個確定的標籤,這是個非常主觀的東西。
另外透過這張圖再說一點,上面這張圖看起來很牛逼,什麼attention Bi-directional LSTM RNN(注意力機制雙向長短時記憶迴圈神經網路),什麼基於Python AST(抽象語法樹)的生成和應用規則,本質上都是一個RNN,做了一些不同的變種而已
回覆列表
謝謝邀請。深度學習和自然語言處理都和人工智慧有關,至於學哪個比較好,要從以下幾方面看,首先是自己的興趣,若對其中一個特別感興趣,自然學自己感興趣的。若沒有特別大的興趣差別,我認為深度學習是人工智慧更基礎一些的知識,應用範圍更廣。而自然語言處理是人工智慧的一個應用。選擇學習深度學習,將來就業選擇更廣,因其可以應用於各行各業的人工智慧。而專門開發自然語言處理的公司相對要少很多,就業工作時很可能要轉其它軟體或人工智慧領城。所以我傾向於碩士期間選擇深度學習。