深度學習基本原理:梯度下降公式,將損失函數越來越小,最終預測值和實際值誤差比較小。
交叉熵:-p(x)logq(x),p(x)是one-hot形式。如果不使用softmax計算交叉熵,是不行的。損失函數可能會非常大,或者預測的概率是[-0.1,0.3,0.5],log不接收負值。pytorch默認給你加softmax。
如果softmax改成sigmoid也不行,如sigmoid過完以后,[0.9,0.99,0.99],計算以后0.99的影響會被忽略,得到的結果是不正確。
adam和sgd區別:adam會考慮之前的計算,自動調節學習率,在通過梯度平方控制學習率的調節,讓訓練可以比較平穩又可以加速。
transformer和rnn區別:長距離依賴問題,rnn越遠影響越弱。
調參經驗:batch_size,max_length,學習率增大batch_size應該怎么調整,加數據量,打亂數據順序。
訓練詞向量:將one-hot乘以一個矩陣進行訓練,cbow,skip-gram,共現矩陣,keans聚類。
語言模型:PPL評價語言模型,不能成句也可能PPL比較低,所以PPL評價不太好。
傳統方法和預訓練方法:
Transformer里的dk是hidden_size/ head_num,是實驗結果。
數據稀疏問題:標注更多數據,大模型生成更多數據,換模型,調整閾值,召回率換準確率。重新定義類別,減少類別,增加規則彌補。
文本匹配:表示型,直接計算,交互型,速度慢,更準確。文本向量化:文本和句子分別過一個模型,優化模型,使文本和句子相似,如果是句子和句子可以用相同模型,最后得到的參數作為向量數據庫。表示型:一個句子直接向量化,交互型:必須進入兩個句子算得分。
向量數據庫查找:KD樹。
序列標注:crf會用維特比解碼,bean search在大模型里使用,n * D *B,復雜度小很多
ner:加標點任務。
序列標注重復:多個模型,生成式任務,輸出兩個標記。
自回歸語言模型:下三角mask,預測下一個詞。
teacher-forcing,使用真實標簽預測,提高效率。
采樣策略:topk,topp,bean-size,temperature(大模型)。
bert變體:albert減少參數,roberta(動態mask,去掉nsp任務)
stf用于大模型問答,相當于encoder-decoder,bert是encoder,通過mask可以實現decoder自回歸語言模型(文本生成)。
旋轉位置編碼:解決詞嵌入位置編碼長度外推性,找到映射f,滿足
< f_q(x_m,m),? f_k(x_n,n)> = g(x_m, x_n, m - n)。初始條件m = 0, f(q,0) = q。
https://zhuanlan.zhihu.com/p/580739696
?qm(1),qm(2)是原來的Wq和xm相乘的局部結果,即xm.dot(Wq)
余弦值位置編碼中:固定i,則pos的改變會使位置編碼有周期性,固定pos修改i,則一開始周期較小,容易捕捉相鄰字的差別,隨著i變大,周期越來越長
moe專家模型(一個MLP層就是一個專家),deepseek使用共享專家。deepseek在qkv計算的過程中,q和k拆成兩部分,其中一部分注入rope位置信息,另一部分不處理。減少運算量。
bbpe:解決多語種,不用統計詞,既不是中文詞表也不是英文詞表,具有跨語種的優點。bpe是基于字符,bbpe是轉化為unicode編碼,然后合并,是基于字節的。
知識圖譜:方法一是基于模板+文本匹配,類似于faq庫問答,相似度可以用bm25,jaccard距離,或者余弦距離。方法二:拆解成多個分類或抽取問題處理。方法三:利用大語言LLM的生成能力
推薦系統:基于相似用戶、相似物品的推薦。