精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么了解NLP基礎知識的重要?

電子工程師 ? 來源:lp ? 2019-03-15 09:33 ? 次閱讀

ACL 2019投稿剛剛落幕,投稿數超過了2800篇,可以說是歷史以來最盛大的一屆ACL。在深度學習的推動下,自然語言處理這個子領域也逐漸被推上人工智能大舞臺的最前列。

最近在跟同學的郵件、或者知乎留言中的交流中,不少同學尤其是剛入(jin)門(keng)的同學,提到了深度學習背景下做NLP科研的很多迷茫。基本可以歸納為如下幾點:如今一個模型,幾十行TensorFlow或者PyTorch就可以解決掉,大家不厭其煩地刷數據集的benchmark,但是因為如今實現模型的門檻低一些,SOTA很難再刷的上去;就算好不容易刷上去了,因為模型千篇一律無非修修補補,文章投出去了因為novelty受限,文章中不中看天;即便是文章中了,似乎并無太大新意,灌水中已然迷茫。

深度算法的風靡會讓研究者過度關心這些算法本身,而層出不窮模型結構的調整和改進又讓我們眼花撩花。當侃侃而談深度學習網絡結構變成一個很cool的事情時,虛榮心會讓大家不約而同地忽略了幾個重要點。基于我自己多年來曾經走過的彎路,踩過的坑,這篇文章做了一點點小的總結。希望會對剛剛進入NLP領域的同學有所幫助。

1、了解NLP的最基本知識:Jurafsky和Martin的Speech and Language Processing是領域內的經典教材,里面包含了NLP的基礎知識、語言學掃盲知識、基本任務以及解決思路。閱讀此書會接觸到很多NLP的最基本任務和知識,比如tagging, 各種parsing,coreference,semantic role labeling等等。這對于全局地了解NLP領域有著極其重要的意義。

書里面的知識并不需要爛熟于心,但是刷上一兩遍,起碼對于NLP任務有基本認識,下次遇到了知道去哪里找還是非常有意義的。另外Chris Manning的「introduction to information retrieval」也是一本可以掃一下盲的書,當然我認為依然不需要記住所有細節,但輪廓需要了解。IR里面的很多基本算法跟NLP有不少的重合。

說說我自己曾經走過的彎路。Stanford NLP的qualification考試的一部分就是選一些jurafsky和manning書里面的一些章節來讀,然后老師來問相關問題。開始我一直懶得看,所以qualification考試一拖再拖。但博士最后一年沒辦法拖的時候,才發現如果早知道這些東西,博士早年可以少走很多彎路。

為什么了解NLP基礎知識的重要,我給大家舉幾個例子。

最近跟同學一起做語言模型language modeling相關的事情,很多同學用LSTM或者transformers做language model隨手就能實現,但是實現一個 bigram或者trigram的language model(LM),卻因為里面的OOV的平滑問題卡了大半天(熟悉的同學可能知道,需要拉普拉斯平滑或者更sophisticated的Kneser-Ney平滑)。

為什么bigram或者trigram的LM很重要呢?去做一個語言模型的問題,實現深度模型之前,第一步其實就要寫一個bigram或者trigram的LM。為什么呢? 因為這些N-gram模型實現簡單,并且robust。通過這樣簡單的實現,可以告訴你這個數據集的LM模型的下限。這樣我們心里會有數,神經網絡模型至少不應該比這個模型差的。神經網絡模型因為其超參數、梯度爆炸等問題,有時候我們不太容易決定是真的模型不行、參數沒調好還是代碼bug。那么通過N-gram LM的給出的下限,我們就可以直觀地知道神經網絡是有bug還是沒調好參數。

第二個例子就是涉及發文章了,不知道有沒有同學想過,BERT里面訓練LM的隨機替換為什么就使結果變好,隨機替換是什么鬼,怎么結果就好了。其實在BERT之前,斯坦福的吳恩達組的Ziang Xie的Data Noising as Smoothing in Neural Network Language Models(ICLR 2017)就首次提出了此方法,而且給出了理論解釋。這種random替換其實本質上屬于language modeling里面基于interpolation的平滑方式, 而基于interpolation的LM平滑,就躺在jurafsky那本書的第3.4.3節。

2.了解早年經典的NLP模型以及論文:相比簡單粗暴的神經網絡模型,早年的NLP算法確實比較繁瑣復雜,但里面確實有很多早年學者在硬件條件艱苦情況下的智慧結晶。熟悉了這些模型,可以在現在神經網絡里面融會貫通。去年在人民大學做seminar,大概30-40位同學參加。我問了一個問題,有誰知道機器翻譯中的IBM模型大概是干嘛的,舉手的同學大概有五分之一。我再問,誰能來手寫(或者大概手寫)IBM model1,一個人都沒有。僅僅是基于IBM模型的Hierarchical Phrase-based MT, 近幾年就有很多篇引用量很高的文章是基于該模型的思想。例子數不勝數:1) chris dyer組的Incorporating structural alignment biases into an attentional neural translation model(NAACL16)提出用雙向attention做神經機器翻譯的約束項,意思是如果在英語翻譯法語生成的target中的一個法語詞attend到了一個source中的英語詞,那么反過來,法語翻譯英文 target中相同這個英語詞應該也attend到source中的這個英語詞。

其實這個思想就是完完全全相似Percy Liang曾經的成名作之一。早在NAACL06年 Alignment by Agreement,大家通過題目的意思就可以猜到文章的內容,正向翻譯與反向翻譯中的對齊(alignment) 要一致(agree)。如今做神經機器翻譯的同學,有多少同學讀過Percy的這篇大作呢 (大家知道Percy最多的應該是Squad吧)?2) 處理對話系統的無聊回復,用p(target|source)做reranking現在應該已經是標配。再比如Rico Sennrich的成名作之一將Monolingual data 跟seq2seq 模型結合。其實這連個思想在phrase-base MT里面早就被廣發的使用。Neural之前的MT,需要對一個大的N-best list用MERT做 reranking, 反向概率p(target|source)以及語言模型概率p(target)是reranking中feature的標配。

3) Harvard NLP組, Sam Wiseman和Alex發表的runner-up, Sequence-to-Sequence Learning as Beam-Search Optimization(EMNLP 2016 best paper), 基本上傳承了Daume′ III and Daniel Marcu 2005年的 LaSO模型,將其思想adapt到neural里面。

如果再準本溯源,誕生于神經機器翻譯的attention,不就是IBM模型的神經網絡版本嘛。

3.了解機器學習的基本模型:神經網絡的簡單暴力并且有效。但是從科研的角度講,熟悉基本的機器學習算法是必修課。比如吳恩達的machine learning就是必要之選。記得前段時間我面試一個小伙子,一看就是很聰明的同學,而且很短的時間就有一篇NAACL在投。我就問小伙子,EM算法是什么,小伙子說沒有聽說過EM,而且自己的科研也用不到EM。我認為這其實是一個挺大的誤區。當我想起我自己,曾經就吃過很多類似的虧。因為早期數學基礎偏弱,也沒有決心惡補一下數學,所以早年每次看到跟variational inference相關的算法就頭大,這種偏科持續了很久,限制了科研的廣度。相比粗暴的神經網絡,CRF等模型的inference確實相對復雜(當年我自己也看了很多次才徹底搞明白)。

但搞懂這些,是一個NLP researcher的基本素養。Pattern Recognition and Machine Learning那本書,尤其是某些小節確實比較難(又暴露了數學基礎差的事實),即便是只是為了過一遍,也需要很強的耐力才能看完,更不用說完全看懂了。我自己也曾經很多次半途而廢,如今依然有很多章節是不太懂的。但是其中的很多基礎章節,我認為還是很值得一讀的。其實可以組成那種兩三個人的學習小組,不需要有太雄偉的目標,用個一年哪怕兩年的時間,把幾個重要的章節過一遍。

NLP相對是應用科學,并不是特別的數學。但是我們天天用的算法的基本數學邏輯我認為還是需要搞懂,比如dropout, 比如天天用到的優化(SGD, momentum, adaboost, adagrad),比如各種batch, layer normalization。這樣其實可以省去很多浪費的時間,磨刀不誤砍柴工。

這些年來,在幫同學調bug的過程中,我至少遇見過3-5個同學training的時候開dropout, test的時候沒有對每個cell用 (1-dropout)去scale (大家不要笑,這是真的)。然后畫出dropout曲線就是dropout值越大,結果越差。在討論的時候,同學一臉茫然并且不清楚test時候需要scale。其實本質就是并不了解dropout背后的數學原理。

4. 多看NLP其他子領域的論文:NLP有很多子領域,包括機器翻譯,信息抽取,parsing,tagging,情感分析,MRC等等。多熟悉其他子領域的進展是必要的。其實不同子領域所運用的模型不會相差太大,但是最開始看不熟悉領域的問題可能會有一點難,原因是對問題的formalization不是很了解。這可能就需要多花一些時間,多找懂的同學去問。其實了解不同問題的formalization也是對領域知識最好的擴充。

5. 了解 CV和data mining領域的基本重大進展:當熟悉了上面所說的點之后(當然可能至少也需要一年的時間),熟悉CV領域的基本任務、基本算法對于打開科研視野也很重要。但是不可否認,因為領域不同,寫作風格、術語表達相差很大,又因為缺乏背景知識(文章中會省略一些基礎知識,默認大家都懂,但是跨領域的人可能不懂),第一次想讀懂跨領域的文章其實并不容易。

我就出現過竟然在討論班上直接把faster-RCNN講錯了的情況,以為自己看懂了,然后就講錯了(至今昱先天天還在因為這個事情調侃我)。不過重要的是,NLP領域里面一些重要的文章其實或多或少借鑒了CV里面的思想,當然也同樣出現CV借鑒NLP的情況。NLP神經網絡可視化、可解釋性的研究,時間上還是落后于CV里面對CNN的可視化。所以很多工作大量借鑒了CV里面的類似工作。NLP運用GAN其實也是借鑒CV的。

其實兩個領域很多是很相通的。比如,如果不考慮question query, vision里面detection中的region proposal(在一個大的圖片背景下找一個特定區域), 大家想是不是跟MRC里面的span extraction (在一大堆文字里面找一個span)有異曲同工之妙。更不用說image caption generation與sequence-to-sequence模型了,本質上幾乎沒什么太大的區別。

強化學習在生成領域generation,發完了MT(Ranzato et al., ICLR2016)再發image caption generation, 再回到summarization. Actor-critic 模型也是類似的,還是很多做generation diversity的文章。

因為跨領域不好懂,所以第一次推薦看tutorial, 如果有 sudo code 的tutorial那就更好了。另外看看掃盲課的視頻,比如Stanford CS231n也是個好辦法。另外,一個NLP組里面有一個很懂CV的人也很重要(拜謝昱先), and vise versa。

graph embedding近兩年崛起于data mining領域。目測會在(或者已經在)NLP的不少任務得到廣泛應用。想到幾年前,deep walk借鑒了word2vec, 開始在data mining領域發跡,然后似乎又要輪轉回NLP了。當然啦如何寫論文也是極其重要的一環,但不是這篇文章的主題,強烈推薦清華大學劉知遠老師的相關文(https://zhuanlan.zhihu.com/p/58752815),先寫到這兒,歡迎大家補充拍磚。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 深度學習
    +關注

    關注

    73

    文章

    5493

    瀏覽量

    120983
  • 自然語言處理

    關注

    1

    文章

    614

    瀏覽量

    13510
  • nlp
    nlp
    +關注

    關注

    1

    文章

    487

    瀏覽量

    22012

原文標題:香儂科技李紀為:初入NLP領域的一些小建議

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    第48章 JavaScript基礎知識

    的腳本語言。(本章的知識點主要整理自網絡)48.1 初學者重要提示48.2 JavaScript基礎知識參考資料48.3 JavaScript基礎知識點48.4 HTML中嵌入Java
    發表于 01-11 16:58

    【HarmonyOS基礎知識】什么是HarmonyOS

    簡短的視頻,帶你了解HarmonyOS基礎知識之什么是HarmonyOS
    發表于 01-20 08:00

    計算機網絡基礎知識了解

    計算機網絡技術復習一、 計算機網絡基礎知識了解:計算機網絡(Internet)的發展 面向終端的計算機網絡(單個計算機,直接連接主機) 分組交換網絡(實現了不同計算機之間的通信。此時廣域網從邏輯上
    發表于 07-26 06:27

    示波器基礎知識

    第1章 示波器基礎知識本章的內容整理自網絡,主要講解示波器的基礎知識。如果初學的話非常有必要對這部分知識有一個了解。因為示波器是硬件調試必不可少的設備。1.1 什么是示波器1.2 示波
    發表于 08-09 07:21

    通信基礎知識教程

    通信基礎知識 1、電信基礎知識2、通信電源技術3、配線設備結構、原理與防護4、防雷基礎知識5、EMC基礎知識6、防腐蝕原理與技術7、產品安
    發表于 03-04 16:48 ?33次下載

    電阻基礎知識

    電阻基礎知識比較詳細,分類清楚,適合初學者有一個比較全面的了解
    發表于 01-11 14:55 ?0次下載

    使用Eclipse基礎知識

    使用Eclipse 基礎知識 使用Eclipse 基礎知識 適合初學者學習使用
    發表于 02-26 10:30 ?0次下載

    電子元器件基礎知識

    電子與信息工程的大一新生需了解的元器件的簡單的基礎知識
    發表于 03-09 11:05 ?695次下載

    FFC基礎知識

    FFC基礎知識,讓你真正了解FPC的各項參數指標。
    發表于 03-14 10:16 ?0次下載

    PLC基礎知識

    學習plc必備的基礎知識一網打盡,精通了解了它,你就可以很輕松了
    發表于 07-05 16:49 ?9次下載

    電源管理基礎知識電源管理基礎知識電源管理基礎知識

    電源管理基礎知識電源管理基礎知識電源管理基礎知識
    發表于 09-15 14:36 ?76次下載
    電源管理<b class='flag-5'>基礎知識</b>電源管理<b class='flag-5'>基礎知識</b>電源管理<b class='flag-5'>基礎知識</b>

    Linux設備驅動程序基礎知識了解

    了解Linux設備驅動程序的基礎知識,重點關注設備節點,內核框架,虛擬文件??系統和內核模塊。 提出了一個簡單的內核模塊實現。
    的頭像 發表于 11-26 06:51 ?3101次閱讀

    了解一下機器學習中的基礎知識

    機器學習中的基礎知識 demi 在 周四, 03/07/2019 - 09:16 提交 機器學習中涉及到了很多的概念,當然要想了解機器學習的話就需要對這些基礎知識有一個深入的了解才能夠
    的頭像 發表于 03-31 17:08 ?3791次閱讀

    知識圖譜是NLP的未來嗎?

    我的看法:知識圖譜不是NLP的未來,因為知識圖譜是另外一種與NLP有很多交集的技術。在目前所有已知的發展方向中,知識圖譜是最有可能長期和
    的頭像 發表于 04-15 14:36 ?3669次閱讀
    <b class='flag-5'>知識</b>圖譜是<b class='flag-5'>NLP</b>的未來嗎?

    熱設計基礎知識——可靠性設計重要組成部分

    熱設計基礎知識——可靠性設計重要組成部分
    的頭像 發表于 04-14 09:57 ?852次閱讀