###### tags: `研替` # NLP 面試相關問題(by顯詠) #### 基礎 1. overfitting / underfitting ![](https://i.imgur.com/ZVgN3Bo.png) overfit : 資料不夠 training/testing set分布不一致 data中有一些noise 導致忽略真實我們希望model學習的部分 ex. 標點符號 training epoch過多 解決 : 1. simpler model structure 調小模型複雜度,使其適合自己訓練集的數量級(縮小寬度和減小深度) 正規化:第1個,就是減少特徵,把他的權重變成0,這叫L1正規化。 第2個,就是減少特徵權重差異,讓某些特徵的權重不要太突出,這叫L2正規化。 2. data augmentation 訓練集越多,過擬合的概率越小。在計算機視覺領域中,增廣的方式是對圖像旋轉,縮放,剪切,添加噪聲等。 3. regularization 參數太多,會導致我們的模型複雜度上升,容易過擬合,也就是我們的訓練誤差會很小。 正則化是指通過引入額外新信息來解決機器學習中過擬合問題的一種方法。這種額外信息通常的形式是模型複雜性帶來的懲罰度。 正則化可以保持模型簡單,另外,規則項的使用還可以約束我們的模型的特性。 4. dropout ![](https://i.imgur.com/9mPa34W.png) https://www.itread01.com/content/1547209261.html 5. early stop 既然模型會漸漸開始 Overfitting,那為什麼不在驗證資料集的 Loss 開始上升時就停止訓練呢? 6. ensemble 很多觀念: https://disp.cc/b/163-epZY 將Ensemble learning的運作比喻成盲人摸象是最貼切不過了,一群盲人每人摸到的部位不同而有不同的答案,但最終將所有盲人集合一起討論後,就會得出一個最終正確的答案 6-1. Max Voting:最多票數的作為最佳決定 6-2: Weighted Average 7. 資料清洗 8. curse of dimensionality 資料增加的速度遠跟不上維度 降維 空間的體積提高太快,因而可用數據變得很稀疏。稀疏性對於任何要求有統計學意義的方法而言都是一個問題 3. BatchNorm / LayerNorm https://github.com/DA-southampton/NLP_ability/blob/master/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/Transformer/NLP%E4%BB%BB%E5%8A%A1%E4%B8%AD-layer-norm%E6%AF%94BatchNorm%E5%A5%BD%E5%9C%A8%E5%93%AA%E9%87%8C.md NLP中 通常使用LayerNorm而不是BatchNorm BN應用到NLP任務中,對應的是是對每一個單詞 也就是假設 今天天氣很好都會對應都同一個特徵 而LayerNorm則是對每一個樣本作特徵縮放 這樣也引伸到了BN在CNN通常效果很好 因為對於圖像是對一部份PIXEL進行縮放 5. activation function(激勵函數) https://cvfiasd.pixnet.net/blog/post/275774124-%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92%E6%BF%80%E5%8B%B5%E5%87%BD%E6%95%B8%E4%BB%8B%E7%B4%B9 ![](https://i.imgur.com/QjAIXaI.png) 1. sigmoid/softmax 2. tanh 3. relu 1. 梯度消失問題 (vanishing gradient problem) ReLU的分段線性性質能有效的克服梯度消失的問題。 對使用反向傳播訓練的類神經網絡來說,梯度的問題是最重要的,使用 sigmoid 和 tanh 函數容易發生梯度消失問題,是類神經網絡加深時主要的訓練障礙。 具體的原因是這兩者函數在接近飽和區 (如sigmoid函數在 [-4, +4] 之外),求導後趨近於0,也就是所謂梯度消失,造成更新的訊息無法藉由反向傳播傳遞。 2. 類神經網路的稀疏性(奧卡姆剃刀原則) Relu會使部分神經元的輸出為0,可以讓神經網路變得稀疏,緩解過度擬合的問題。 但衍生出另一個問題是,如果把一個神經元停止後,就難以再次開啟(Dead ReLU Problem),因此又有 Leaky ReLU 類 (x<0時取一個微小值而非0), maxout (增加激勵函數專用隱藏層,有點暴力) 等方法,或使用 adagrad 等可以調節學習率的演算法。 5. dropout 目的為防止network的overfitting 丟棄network中的某些neuron 7. Optimizer 1.Adam https://medium.com/%E9%9B%9E%E9%9B%9E%E8%88%87%E5%85%94%E5%85%94%E7%9A%84%E5%B7%A5%E7%A8%8B%E4%B8%96%E7%95%8C/%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92ml-note-sgd-momentum-adagrad-adam-optimizer-f20568c968db Adam Optimizer 其實可以說就是把前面介紹的Momentum 跟 AdaGrad 8. Momentum 在同方向的維度上學習速度會變快,方向改變的時候學習速度會變慢。 參數的更新較為平穩。 9. L1跟L2 regularization差在哪 https://ithelp.ithome.com.tw/articles/10219648 #### ML 10. **Bagging/Boosting**(ensemble model) bagging : (random forest) 從training data中隨機抽取 取後放回 訓練多個classifier 在做投票 每一tree取樣機率一樣 boosting : ada boosting 多個弱分類器 有權重之分 12. 預測連續目標 regression / 離散目標 classification 15. Entropy(尚未) 我們可以看到充滿越多不確定性的事件,也就是越多資訊量的事件,會擁有越高的 Entropy 我們預測值與實際值差越多,也就是代表內涵的資訊量愈大,也就是不確定越多,也就是 Cross-entropy 會越高 15. Regularization 降低不重要維度的權重 ![](https://i.imgur.com/ttpBuBg.png) #### Deep Learning 14. CNN ![](https://i.imgur.com/lMeEGjn.png) 15. Seq2seq 16. Encoder-Decoder Encoder就是把輸入轉換成向量 Decoder再把向量轉回輸出(ex. 文字) encoder——把輸入的文字轉換成機器理解的context vector,但任務還沒完成,人不是機器,我們需要機器把context vector轉換成我們能理解的文字,而這就是decoder的功能。 18. Atttention 以句子為例就是 一句話裡面的每個token對於其他token的關注程度 20. Transformer transformer透過attention機制 為整句話提供上下文關注度 賦予句子中每個token含意 取代LSTM(RNN) 21. CNN、RNN、MLP三者相比各有何優劣 MLP hidden state RNN:離輸出近的訊息量較大,離出越遠的訊息量會越來越小 有無法處理輸入是長序列的問題 LSTM:抓重點 GRU 為 LSTM 的優化版 https://kknews.cc/zh-tw/code/pblprmz.html #### NLP 19. one-hot ![](https://i.imgur.com/zUvHAjF.png) 20. TF-IDF 詞頻指的是某一個給定的詞語在該文件中出現的頻率 逆向文件頻率則是用來處理常用字的問題。假設詞彙 t 總共在 d_t 篇文章中出現過 21. Word2vec 1. CBOW CBOW 則是利用上下文來預測中心詞 2. Skipgram Skip-gram 是利用中心詞來預測上下文 22. FastText 23. BERT Bidirectional Encoder Representations from Transformers BART: Bidirectional Encoder(bert)+Autoregressive decoder(gpt) 24. forward & backward https://chih-sheng-huang821.medium.com/%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E7%A5%9E%E7%B6%93%E7%B6%B2%E8%B7%AF-%E5%A4%9A%E5%B1%A4%E6%84%9F%E7%9F%A5%E6%A9%9F-multilayer-perceptron-mlp-%E5%90%AB%E8%A9%B3%E7%B4%B0%E6%8E%A8%E5%B0%8E-ee4f3d5d1b41 25. Feed forward layer 每一層計算完成的輸出,只會單方向往前傳遞給下一層的輸入,也就是說輸入與輸出是獨立沒有關係的。 #### others 26. 如何降維:PCA LDA PCA(principle):其目的就是找到高維數據中的主成分,並利用“主成分”數據,來表徵原始數據,從而達到降維的目的,使得降維後的數據的方差達到最大。 LDA:設法將樣例投影到一條直線上,使得同類樣例的投影點盡可能的接近、異類樣例的投影點盡可能地遠離;在對新樣本分類時,將其投影點同樣的投影到這條直線上,再根據投影點的位置來確定新樣例的位置。 1.bias / variance? 偏差(bias)描述的是通過學習擬合出來的結果之期望,與真實規律之間的差距。 方差(variance)即是統計學中的定義,描述的是通過學習擬合出來的結果自身的不穩定性。 ![](https://i.imgur.com/F0mzJrQ.png) #### Database **關聯式模型 Relation Model** 表格即為一個relation 欄位為attribute 列為一筆紀錄tuple **超鍵 Super Key** 由relation中一個或多個attribute組成具有唯一識別性之屬性集合 {學號}、{身分證字號}、{學號,姓名}、{學號,姓名,身分證字號}.... {姓名}、{系別}不為super key 無法唯一識別 (同名同系) **候選鍵 Candidate Key ** 能唯一識別表格不同record的最少屬性集合 **主鍵 Primary Key** 候選鍵中擇一適合實務上使用的key Integrity Constraint Primary key不能為NULL不能重複出現 / 外來鍵參考的Primary key必須存在 Domain Constraint value必須在值域、atomic ##### SQL 優勢:以完善的關聯代數理論作為基礎,有嚴格的標準,支援交易ACID(atomic, consistency, isolation, durability)四特性,借助索引機制可以實現高效的查詢,技術成熟,有專業公司的技術支援 劣勢:可擴展性較差(尤其是橫向擴展性),無法較好地支援海量資料儲存,資料模型過於死板、無法較好地支援Web2.0應用,交易機制影響了系統的整體性能等 ##### NoSQL 優勢:可以支援超大規模資料儲存,靈活的資料模型可以很好地支援Web2.0應用,具有強大的橫向擴展能力等 劣勢:缺乏數學理論基礎,複雜查詢性能不高,大都不能實現交易強一致性,很難實現資料完整性,企業關鍵任務不能採用。技術尚不成熟,缺乏專業團隊的技術支援,維護較困難等 CAP (Consistency, Availability, Tolerance of Network Partition) 三者只能同時滿足兩者、BASE (Basically Available → Soft-state → Eventually consistency)、最終一致性 MongoDB 文件資料庫,一個XML文件/HTML文件/json文件記錄包含資料型態和內容進行自我描述。文件記錄所有有關的內容,沒有外部文件的引用參考,為自我包含的,這使得紀錄很容易移動至其他伺服器,不需要考慮foreign key等因素,只有該文件需要操作,提升讀寫速度。 看重CP 電信、銀行等需要交易一致的領域適合關聯式資料庫 互聯網企業、傳統企業的大量資料等場合適合NoSQL 混和架構可以應付不同情境