知识复习:nlp算法面试汇总
文章目錄
- 2.相似度
- 3.正則化
- 3.1 L1
- 3.2 過(guò)擬合和欠擬合
- 3.2.1 dropout
- 3.3 欠擬合
- 4. 激活函數(shù)
- 4.1 sigmoid
- 5.Bert
- 5.1 Bert原版
- 5.1.2 bert的訓(xùn)練
- 5.2改進(jìn)
- 5.2.1缺點(diǎn)改進(jìn)
- 5.2.2任務(wù)改進(jìn)
- 5.3 參數(shù)量
- 5.3 transformer
- 5.3.1 多頭注意力機(jī)制
- 6.搜索
- 6.1pagerank
- 6.2 文本匹配
- 7.神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
- 7.1Norm
- 7.2 LSTM
- 7.2.1結(jié)構(gòu)
- 7.2.2公式
- 7.2.3 計(jì)算參數(shù)
- 7.2.4 why解決了梯度消失/梯度消失
- 7.2.5初始化方法,免于梯度消失
- 7.3 歸一化
- 7.4 optim
- 1.1 隨機(jī)梯度下降
- 8.常見(jiàn)函數(shù)
- 8.1 softmax
- softmax
- 8.2損失函數(shù)
- 8.2.1交叉熵和平方損失
- 8.2.2交叉熵是怎么來(lái)的
- 8.2.3分類的損失函數(shù)
- 8.2.4 交叉熵的梯度
- 8.2.5 BP
- 8.2.6 KL散度
- 9.word2vec
- 10.訓(xùn)練
- 10.1如何調(diào)整學(xué)習(xí)率
- 11.python語(yǔ)言基礎(chǔ)
- 11.1 迭代器和生成器
- 11.2 垃圾回收機(jī)制
- 12 sql
- 12.1 阿里的留存量問(wèn)題
- 13. 評(píng)價(jià)指標(biāo)
- 13.1 F1,P,R,AUC
- 13.2 驗(yàn)證集recall和p都高,測(cè)試集recall和auc沒(méi)下降,prec下降很厲害
- 14 . 算法題:
- 14.1n*m的01矩陣,做q次翻轉(zhuǎn)(0->1,1->0),每次翻轉(zhuǎn)后輸出行內(nèi)最長(zhǎng)的1序列
- 14.2 .二叉樹(shù),每個(gè)節(jié)點(diǎn)為原點(diǎn)有一個(gè)左子樹(shù)集合,將每個(gè)集合的節(jié)點(diǎn)向前平移n格,輸出層次遍歷
- 15. 智力題
- 16 機(jī)器學(xué)習(xí)
- 16.1 決策樹(shù):
- 16.1.1 分類樹(shù)
- 16.1.1.1 ID3:信息增益劃分
- 16.1.1.2 C4.5:增益率
- 16.1.1.3 CART
- 16.1.2 回歸樹(shù)
- 16.1.2.1 提升樹(shù)
- GBDT:提升樹(shù)基礎(chǔ)上的改進(jìn)
- 16.2 線性回歸
- 16.3 word2vec
- 16.3.1 negative sampling
- 16.4 處理過(guò)擬合
- 17. 任務(wù)
- 17.1 ner序列標(biāo)注
- 17.1.1 邊界錯(cuò)誤
2.相似度
https://blog.csdn.net/ctwy291314/article/details/81667288
3.正則化
-
L1:
- 菱形
-
L2:
- 圓形
- 圓形
-
趨于0的概率大小:
-
L0>Lp(p~(0,1))>L1>L2
-
L0太理想了
-
在實(shí)際應(yīng)用中,由于L0范數(shù)本身不容易有一個(gè)好的數(shù)學(xué)表示形式,給出上面問(wèn)題的形式化表示是一個(gè)很難的問(wèn)題,故被人認(rèn)為是一個(gè)NP難問(wèn)題。所以在實(shí)際情況中,L0的最優(yōu)問(wèn)題會(huì)被放寬到L1或L2下的最優(yōu)化。
-
L1–>參數(shù)稀疏,特征選擇
- 原因一:有尖,最小值容易出現(xiàn)在坐標(biāo)軸上
- 原因2: L1是拉普拉斯分布,更尖銳,L2則是高斯分布,比L1平緩,所以L1更容易收斂到0的點(diǎn)*
- 原因3:L1是L0的凸優(yōu)化?之類的。
- 效果就是讓w往0靠,使網(wǎng)絡(luò)中的權(quán)重盡可能為0,也就相當(dāng)于減小了網(wǎng)絡(luò)復(fù)雜度,防止過(guò)擬合。
-
L2:平滑
- 經(jīng)變化后w前面系數(shù)為 1?ηλ/n ,由于η、λ、n都是正的。所以 1?ηλ/n小于1,它的效果是減小w,這也就是權(quán)重衰減(weight decay)的由來(lái)
3.1 L1
- L1不可導(dǎo)的時(shí)候該怎么辦
- 當(dāng)損失函數(shù)不可導(dǎo),梯度下降不再有效,可以使用坐標(biāo)軸下降法,
- 梯度下降是沿著當(dāng)前點(diǎn)的負(fù)梯度方向進(jìn)行參數(shù)更新,
- 坐標(biāo)軸下降法是沿著坐標(biāo)軸的方向,假設(shè)有m個(gè)特征個(gè)數(shù),坐標(biāo)軸下降法進(jìn)參數(shù)更新的時(shí)候,先固定m-1個(gè)值,然后再求另外一個(gè)的局部最優(yōu)解,從而避免損失函數(shù)不可導(dǎo)問(wèn)題。
- 使用Proximal Algorithm對(duì)L1進(jìn)行求解,此方法是去優(yōu)化損失函數(shù)上界結(jié)果。
3.2 過(guò)擬合和欠擬合
過(guò)擬合:隨著訓(xùn)練過(guò)程的進(jìn)行,模型復(fù)雜度,在training data上的error漸漸減小。可是在驗(yàn)證集上的error卻反而漸漸增大——由于訓(xùn)練出來(lái)的網(wǎng)絡(luò)過(guò)擬合了訓(xùn)練集,對(duì)訓(xùn)練集以外的數(shù)據(jù)卻不work。
1.正則化(Regularization)(L1和L2)
2.數(shù)據(jù)增強(qiáng)(Data augmentation),也就是增加訓(xùn)練數(shù)據(jù)樣本,清洗噪聲
將原始圖片旋轉(zhuǎn)一個(gè)小角度
加入隨機(jī)噪聲
一些有彈性的畸變(elastic distortions),論文《Best practices for convolutional neural networks applied to visual document analysis》對(duì)MNIST做了各種變種擴(kuò)增。
截取(crop)原始圖片的一部分
3.Dropout
在dropout部分, 我們已經(jīng)解釋過(guò), 之所以dropout可以抑制overfitting, 是因?yàn)樵谟?xùn)練階段, 我們引入了 隨機(jī)性(隨機(jī)cancel一些Neuron),減少網(wǎng)絡(luò)的匹配度, 在測(cè)試階段, 我們?nèi)コ綦S機(jī)性, 并通過(guò)期望的方式marginalize隨機(jī)影響。
在BatchNormalization中, 訓(xùn)練階段, 我們隨機(jī)選取了Batch進(jìn)行Normalization, 并計(jì)算running mean等, 在測(cè)試階段, 應(yīng)用running_mean這些訓(xùn)練參數(shù)來(lái)進(jìn)行整體Normalization, 本質(zhì)上是 在Marginalize訓(xùn)練階段的隨機(jī)性。 因此, BatchNormalization也提供了 Regularization的作用, 實(shí)際應(yīng)用中證明, NB在防止過(guò)擬合方面確實(shí)也有相當(dāng)好的表現(xiàn)。
4…early stopping
3.2.1 dropout
Dropout
在dropout部分, 我們已經(jīng)解釋過(guò), 之所以dropout可以抑制overfitting, 是因?yàn)樵谟?xùn)練階段, 我們引入了 隨機(jī)性(隨機(jī)cancel一些Neuron),減少網(wǎng)絡(luò)的匹配度, 在測(cè)試階段, 我們?nèi)コ綦S機(jī)性, 并通過(guò)期望的方式marginalize隨機(jī)影響。
在BatchNormalization中, 訓(xùn)練階段, 我們隨機(jī)選取了Batch進(jìn)行Normalization, 并計(jì)算running mean等, 在測(cè)試階段, 應(yīng)用running_mean這些訓(xùn)練參數(shù)來(lái)進(jìn)行整體Normalization, 本質(zhì)上是 在Marginalize訓(xùn)練階段的隨機(jī)性。 因此, BatchNormalization也提供了 Regularization的作用, 實(shí)際應(yīng)用中證明, NB在防止過(guò)擬合方面確實(shí)也有相當(dāng)好的表現(xiàn)。
3.3 欠擬合
1)添加其他特征項(xiàng),有時(shí)候我們模型出現(xiàn)欠擬合的時(shí)候是因?yàn)樘卣黜?xiàng)不夠?qū)е碌?#xff0c;可以添加其他特征項(xiàng)來(lái)很好地解決。例如,“組合”、“泛化”、“相關(guān)性”三類特征是特征添加的重要手段,無(wú)論在什么場(chǎng)景,都可以照葫蘆畫瓢,總會(huì)得到意想不到的效果。除上面的特征之外,“上下文特征”、“平臺(tái)特征”等等,都可以作為特征添加的首選項(xiàng)。
2)添加多項(xiàng)式特征,這個(gè)在機(jī)器學(xué)習(xí)算法里面用的很普遍,例如將線性模型通過(guò)添加二次項(xiàng)或者三次項(xiàng)使模型泛化能力更強(qiáng)。例如上面的圖片的例子。
3)減少正則化參數(shù),正則化的目的是用來(lái)防止過(guò)擬合的,但是現(xiàn)在模型出現(xiàn)了欠擬合,則需要減少正則化參數(shù)。
4. 激活函數(shù)
4.1 sigmoid
- sigmoid函數(shù)特性
- 二分類為什么用sigmoid:
- 二分類滿足伯努利假設(shè)
- sigmoid可由伯努利假設(shè)推出
5.Bert
- Bert
- 是個(gè)預(yù)訓(xùn)練語(yǔ)言模型,基本結(jié)構(gòu)取自transformer的編碼層,基本的bert疊加了12個(gè)transformer編碼層,但是與transformer不同的是,
- 在輸入層:不僅有token embedding,position embedding,還有segment embedding(因?yàn)閎ert允許輸入兩個(gè)句子,以sep間隔,以segment區(qū)分
- position encoding:transformer使用sin,cos;
- position encoding:
- 使 PE 能夠適應(yīng)比訓(xùn)練集里面所有句子更長(zhǎng)的句子,假設(shè)訓(xùn)練集里面最長(zhǎng)的句子是有 20 個(gè)單詞,突然來(lái)了一個(gè)長(zhǎng)度為 21 的句子,則使用公式計(jì)算的方法可以計(jì)算出第 21 位的 Embedding。
- 可以讓模型容易地計(jì)算出相對(duì)位置,對(duì)于固定長(zhǎng)度的間距 k,PE(pos+k) 可以用 PE(pos) 計(jì)算得到。因?yàn)?Sin(A+B) = Sin(A)Cos(B) + Cos(A)Sin(B), Cos(A+B) = Cos(A)Cos(B) - Sin(A)Sin(B)。
- 人為提升多樣性:頻率不同,
- position encoding:
- multi-head self-attention,K,Q,V=WX
- attention比lstm好在哪里:
- attention會(huì)記住重要的,不會(huì)因?yàn)榫嚯x太遠(yuǎn)而遺忘
- lstm會(huì)遺忘(有遺忘門)
- attention可并行
- attention比lstm好在哪里:
- add:殘差x+mh-self-attention(x)
- norm:layernorm:使得方差,均值相同(每層輸入)
- y=x?E[x]Var[x]+??γ+βy = \frac{x - \mathrm{E}[x]}{ \sqrt{\mathrm{Var}[x] + \epsilon}} * \gamma + \betay=Var[x]+??x?E[x]??γ+β
torch,matmul(
torch.softmax(
torch.matmul(q, k.permute(0, 1, 3, 2)) / sqrt(dk) ), v).permute(0, 2, 1, 3).reshape(batch, n, self.dim_v)
- y=x?E[x]Var[x]+??γ+βy = \frac{x - \mathrm{E}[x]}{ \sqrt{\mathrm{Var}[x] + \epsilon}} * \gamma + \betay=Var[x]+??x?E[x]??γ+β
5.1 Bert原版
-
XLNET
BERT在第一個(gè)預(yù)訓(xùn)練階段,假設(shè)句子中多個(gè)單詞被Mask掉,這些被Mask掉的單詞之間沒(méi)有任何關(guān)系,是條件獨(dú)立的,然而有時(shí)候這些單詞之間是有關(guān)系的,比如”New York is a city”,假設(shè)我們Mask住”New”和”York”兩個(gè)詞,那么給定”is a city”的條件下”New”和”York”并不獨(dú)立,因?yàn)椤盢ew York”是一個(gè)實(shí)體,看到”New”則后面出現(xiàn)”York”的概率要比看到”O(jiān)ld”后面出現(xiàn)”York”概率要大得多。
但是需要注意的是,這個(gè)問(wèn)題并不是什么大問(wèn)題,甚至可以說(shuō)對(duì)最后的結(jié)果并沒(méi)有多大的影響,因?yàn)楸旧鞡ERT預(yù)訓(xùn)練的語(yǔ)料就是海量的(動(dòng)輒幾十個(gè)G),所以如果訓(xùn)練數(shù)據(jù)足夠大,其實(shí)不靠當(dāng)前這個(gè)例子,靠其它例子,也能彌補(bǔ)被Mask單詞直接的相互關(guān)系問(wèn)題,因?yàn)榭傆衅渌幽軌驅(qū)W會(huì)這些單詞的相互依賴關(guān)系。
BERT的在預(yù)訓(xùn)練時(shí)會(huì)出現(xiàn)特殊的[MASK],但是它在下游的fine-tune中不會(huì)出現(xiàn),這就造成了預(yù)訓(xùn)練和微調(diào)之間的不匹配,微調(diào)不出現(xiàn)[MASK]這個(gè)標(biāo)記,模型好像就沒(méi)有了著力點(diǎn)、不知從哪入手。所以只將80%的替換為[mask],但這也只是緩解、不能解決。
相較于傳統(tǒng)語(yǔ)言模型,Bert的每批次訓(xùn)練數(shù)據(jù)中只有 15% 的標(biāo)記被預(yù)測(cè),這導(dǎo)致模型需要更多的訓(xùn)練步驟來(lái)收斂。
另外還有一個(gè)缺點(diǎn),是BERT在分詞后做[MASK]會(huì)產(chǎn)生的一個(gè)問(wèn)題,為了解決OOV的問(wèn)題,我們通常會(huì)把一個(gè)詞切分成更細(xì)粒度的WordPiece。BERT在Pretraining的時(shí)候是隨機(jī)Mask這些WordPiece的,這就可能出現(xiàn)只Mask一個(gè)詞的一部分的情況 -
中文上
bert僅僅基于attention,沒(méi)有考慮詞性、對(duì)上下文信息也僅僅用了embedding,僅僅用語(yǔ)義信息,會(huì)出現(xiàn)錯(cuò)判。Bert對(duì)各個(gè)詞的權(quán)重是一樣的,不能突出關(guān)鍵詞。bert對(duì)整句話只抽取一個(gè)主旨,像‘我做了頭發(fā),我還能買新衣服’這樣的句子,就判斷不出來(lái)了。
在訓(xùn)練中,融入詞性、句法信息、停用詞,抽取多個(gè)主旨,以改善這個(gè)現(xiàn)象
5.1.2 bert的訓(xùn)練
- mask掉一部分然后去預(yù)測(cè)這部分詞。
- 判斷兩個(gè)句子是否相連
5.2改進(jìn)
5.2.1缺點(diǎn)改進(jìn)
- 中文
- 百度ernie
- bert學(xué)不到實(shí)體或短語(yǔ)信息:mask實(shí)體
- 清華ernie
- 引入:詞匯、句法和知識(shí)信息
- entity embedding作為ERNIE模型的輸入(知識(shí)圖譜中的)
- mask實(shí)體并從知識(shí)圖譜中找實(shí)體對(duì)齊
- 百度ernie
- xlnet:https://blog.csdn.net/u012526436/article/details/93196139
- mask:finetune和訓(xùn)練時(shí)不一致
- mask之間的順序不考慮
- 排列組合所有順序
- albert:https://blog.csdn.net/chaojianmo/article/details/104061718/
- 因式分解embedding:EH1H2
- 跨層參數(shù)共享(fc/multihead)\
- NSP->SOP:同個(gè)文檔里負(fù)采樣,避免學(xué)習(xí)到主題
5.2.2任務(wù)改進(jìn)
- MASS:Masked Sequence to Sequence Pre-training for Language Generation
- encoder-att-decoder:mask encoder的部分詞,decoder出來(lái)這些詞
- UNILM:UNIfied pre-trained Language Model
- 3種mask
- mask后文
- mask seq2–學(xué)習(xí)生成
- 僅mask padding
- 3種mask
5.3 參數(shù)量
https://zhuanlan.zhihu.com/p/144582114
5.3 transformer
5.3.1 多頭注意力機(jī)制
q=torch.matmul(W_q, x) k=torch.matmul(W_k,x) v=torch.matmul(W_v,x) q=q.reshape(batch,n,head,dk).permute(0,2,1,3) k=k.reshape(batch,n,head,dk).permute(0,2,1,3) v=v.reshape(batch,n,head,dk).permute(0,2,1,3)# batch,head,n,dk torch.matmul( torch.softmax(torch.matmul(q, k.permute(0, 1, 3, 2)) / sqrt(dk) ), v).permute(0, 2, 1, 3).reshape(batch, n, self.dim_v)6.搜索
6.1pagerank
https://blog.csdn.net/csdn_lzw/article/details/79733962
核心思想:認(rèn)為萬(wàn)維網(wǎng)中一個(gè)頁(yè)面的重要性取決于指向它的其他頁(yè)面的數(shù)量和質(zhì)量。
- 問(wèn)題
- 終止點(diǎn)問(wèn)題:有些網(wǎng)站沒(méi)有出邊,迭代后,所有的pagerank->0
- 陷阱:有的節(jié)點(diǎn)存在指向自己的路徑,多次迭代后,他自己為1,其他為0
- 解決
- 遇見(jiàn)以上情況,關(guān)閉當(dāng)前,隨機(jī)調(diào)到其他網(wǎng)址上
- 遇見(jiàn)以上情況,關(guān)閉當(dāng)前,隨機(jī)調(diào)到其他網(wǎng)址上
6.2 文本匹配
https://blog.csdn.net/ling620/article/details/95468908
- 傳統(tǒng)文本匹配
- 詞匯相似度,詞匯層面
- 詞義局限,結(jié)構(gòu)局限,知識(shí)局限
- 主題模型–詞匯分布
- LSA:SVD
- PLSA:概率
- LDA:
- 詞:詞的分布代表主題,不同主題的詞的分布不同
- 文章的含義:同一主題在不同文章中,出現(xiàn)的概率不同
- 確定好主題與詞匯的分布、主題與文章的分布:
- 隨機(jī)生成文章的各個(gè)主題比例
- 再根據(jù)主題生成詞
- –這是LDA的文章生成過(guò)程。忽略了詞的順序,所以不用來(lái)生成
- 做主題分析
- 主題模型可做用戶畫像
- 深層語(yǔ)義
- 表現(xiàn)型:word embedding,之類的,得到向量
- 交互型:判定兩個(gè)句子的相似度
- 應(yīng)用
- 短-短:得到兩個(gè)文本的額向量;求相似度(余弦,歐式)
- 短-長(zhǎng):獲得長(zhǎng)的主題模型;求該主題模型生成短文本的概率為其相似度
- 長(zhǎng)-長(zhǎng):分別求兩者的主題模型;計(jì)算兩個(gè)多項(xiàng)式分布之間的距離作為其相似度(海林哥距離)
7.神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
7.1Norm
原因:
1.網(wǎng)絡(luò)的各層輸入數(shù)據(jù)的分布則會(huì)不斷變化。
2.會(huì)逐漸使得激活函數(shù)趨于飽和,導(dǎo)致梯度消失
https://zhuanlan.zhihu.com/p/74516930
https://www.cnblogs.com/shuimuqingyang/p/14007260.html
(bs,seq_len,embedding_size)
batchnorm:bs
layernorm:embedding_size(神經(jīng)元)
-
BatchNorm
- why:原始數(shù)據(jù)分布不一致;經(jīng)過(guò)每層計(jì)算后分布也不一致
- why不每層直接變?yōu)榫?,方差1的分布?學(xué)不到數(shù)據(jù)特征–所以之后再加上可訓(xùn)練參數(shù)變?yōu)榱硪粋€(gè)y(x->均值0方差1的x1->y)
- 訓(xùn)練階段
- 滑動(dòng)平均值、方差:x’ = (1-momentum)x + momentumx’’
- 測(cè)試階段
-
batchNorm是在batch上,對(duì)NHW做歸一化,對(duì)小batchsize效果不好;
- layerNorm在通道方向上,對(duì)CHW歸一化,主要對(duì)RNN作用明顯;
- instanceNorm在圖像像素上,對(duì)HW做歸一化,用在風(fēng)格化遷移; GroupNorm將channel分組,然后再做歸一化;
- SwitchableNorm是將BN、LN、IN結(jié)合,賦予權(quán)重,讓網(wǎng)絡(luò)自己去學(xué)習(xí)歸一化層應(yīng)該使用什么方法
7.2 LSTM
7.2.1結(jié)構(gòu)
- 結(jié)構(gòu)
7.2.2公式
- 公式
7.2.3 計(jì)算參數(shù)
- 計(jì)算參數(shù)
7.2.4 why解決了梯度消失/梯度消失
- 沒(méi)有解決 、
- 多條鏈路
- 梯度消失得原因:Sigmoid函數(shù)有一個(gè)缺點(diǎn):當(dāng)x較大或較小時(shí),導(dǎo)數(shù)接近0或者1;并且Sigmoid函數(shù)導(dǎo)數(shù)的最大值是0.25
- 鏈?zhǔn)椒▌t求導(dǎo)時(shí),多個(gè)導(dǎo)數(shù)同時(shí)大于或小于1
- 解決
- 好的參數(shù)初始化方式:HE
- 非飽和的激活函數(shù)relu,導(dǎo)數(shù)為1
- 殘差/多路:一條路掛了,其他仍可走
- BATCH NORMAL:梯度消失、內(nèi)部協(xié)方差位移,分布變化
- 梯度裁剪
- 更快的優(yōu)化器
- 正則化
7.2.5初始化方法,免于梯度消失
https://blog.csdn.net/xxy0118/article/details/84333635
https://zhuanlan.zhihu.com/p/40175178
Xavier:輸入和輸出可以保持方差相同的正態(tài)分布,適用于tanh
He:正向傳播時(shí),狀態(tài)值的方差保持不變;反向傳播時(shí),關(guān)于激活值的梯度的方差保持不變。
為什么weights初始化要非對(duì)稱?
如果對(duì)稱初始化,假設(shè)weights全是1,則對(duì)于每個(gè)神經(jīng)元的輸出結(jié)果相同;經(jīng)歷過(guò)BP反向傳播后,weights的各個(gè)位置得到的是相同的更新。
因此無(wú)論網(wǎng)絡(luò)訓(xùn)練多少輪,對(duì)于每一層中的各個(gè)神經(jīng)元,weights都是相同的,無(wú)法學(xué)習(xí)(提取)到不同的特征。
為什么weights初始化不能全為0?
原因同上。
為什么初始化值不能太大?
對(duì)于sigmoid、tanh激活函數(shù),初始化值太大,使得流入激活函數(shù)的值過(guò)大,造成飽和現(xiàn)象,當(dāng)反相傳播時(shí),會(huì)使得梯度極小,導(dǎo)致梯度彌散。(ReLU函數(shù)不受此影響)
為什么初始化值不能太小?
初始化太小時(shí),經(jīng)過(guò)多層網(wǎng)絡(luò),輸出值變得極小,在反向傳播時(shí)也會(huì)使得梯度極小,導(dǎo)致梯度彌散。(ReLU函數(shù)也受此影響!)
7.3 歸一化
什么不需要?dú)w一化:決策樹(shù)
歸一化的用處:
1.使不同量綱的特征處于同一數(shù)值量級(jí),減少方差大的特征的影響,使模型更準(zhǔn)確。
2.加快學(xué)習(xí)算法的收斂速度
歸一化:1)把數(shù)據(jù)變成(0,1)或者(1,1)之間的小數(shù)。主要是為了數(shù)據(jù)處理方便提出來(lái)的,把數(shù)據(jù)映射到0~1范圍之內(nèi)處理,更加便捷快速。2)把有量綱表達(dá)式變成無(wú)量綱表達(dá)式,便于不同單位或量級(jí)的指標(biāo)能夠進(jìn)行比較和加權(quán)。歸一化是一種簡(jiǎn)化計(jì)算的方式,即將有量綱的表達(dá)式,經(jīng)過(guò)變換,化為無(wú)量綱的表達(dá)式,成為純量。
??標(biāo)準(zhǔn)化:在機(jī)器學(xué)習(xí)中,我們可能要處理不同種類的資料,例如,音訊和圖片上的像素值,這些資料可能是高維度的,資料標(biāo)準(zhǔn)化后會(huì)使每個(gè)特征中的數(shù)值平均變?yōu)?(將每個(gè)特征的值都減掉原始資料中該特征的平均)、標(biāo)準(zhǔn)差變?yōu)?,這個(gè)方法被廣泛的使用在許多機(jī)器學(xué)習(xí)算法中(例如:支持向量機(jī)、邏輯回歸和類神經(jīng)網(wǎng)絡(luò))。
??中心化:平均值為0,對(duì)標(biāo)準(zhǔn)差無(wú)要求
作者:brucep3
鏈接:https://www.jianshu.com/p/95a8f035c86c
來(lái)源:簡(jiǎn)書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
7.4 optim
- SGD,Momentum,Adagard,Adam原理
-
SGD為隨機(jī)梯度下降,每一次迭代計(jì)算數(shù)據(jù)集的mini-batch、batch、單個(gè)的梯度,然后對(duì)參數(shù)進(jìn)行更新。隨機(jī)應(yīng)該是指單個(gè)數(shù)據(jù)的梯度
-
Momentum參考了物理中動(dòng)量的概念,前幾次的梯度也會(huì)參與到當(dāng)前的計(jì)算中,但是前幾輪的梯度疊加在當(dāng)前計(jì)算中會(huì)有一定的衰減。
-
Adagard在訓(xùn)練的過(guò)程中可以自動(dòng)變更學(xué)習(xí)的速率,設(shè)置一個(gè)全局的學(xué)習(xí)率,而實(shí)際的學(xué)習(xí)率與以往的參數(shù)模和的開(kāi)方成反比。
-
Adam利用梯度的一階矩估計(jì)和二階矩估計(jì)動(dòng)態(tài)調(diào)整每個(gè)參數(shù)的學(xué)習(xí)率,在經(jīng)過(guò)偏置的校正后,每一次迭代后的學(xué)習(xí)率都有個(gè)確定的范圍,使得參數(shù)較為平穩(wěn)。
-
1.1 隨機(jī)梯度下降
- x=x-lr*g
- 隨機(jī):每次算一個(gè)數(shù)據(jù)的梯度
- mini-batch:每次算一批數(shù)據(jù)的梯度(平均、求和)
optim
- 這里調(diào)整的是梯度–但tf是調(diào)整的學(xué)習(xí)率
- 不會(huì)因?yàn)樘荻群艽蠖鴮?dǎo)致學(xué)習(xí)率(步長(zhǎng))也變得很大,參數(shù)的值相對(duì)比較穩(wěn)定。
8.常見(jiàn)函數(shù)
8.1 softmax
- word2vec里因?yàn)榉帜干婕罢麄€(gè)詞典,因此使用negative sample和層次softmax
softmax
8.2損失函數(shù)
8.2.1交叉熵和平方損失
- 交叉熵
- 平方損失:線性回歸
- 邏輯回歸:極大似然估計(jì)
- 交叉熵:分類
- 分類why不用平方損失
-
平方差的函數(shù)是凸函數(shù),分類器用了sigmoid,不是凸函數(shù),不利于優(yōu)化
-
直觀上,對(duì)特定的分類問(wèn)題,平方差的損失有上限(所有標(biāo)簽都錯(cuò),損失值是一個(gè)有效值),但交叉熵則可以用整個(gè)非負(fù)域來(lái)反映優(yōu)化程度的程度。
-
但也可以用。
-
從本質(zhì)上看,平方差的意義和交叉熵的意義不一樣
- 概率理解上,平方損失函數(shù)意味著模型的輸出是以預(yù)測(cè)值為均值的高斯分布,損失函數(shù)是在這個(gè)預(yù)測(cè)分布下真實(shí)值的似然度,softmax損失意味著真實(shí)標(biāo)簽的似然度。
- 在分類問(wèn)題下大部分時(shí)候誤差并不服從高斯分布。
- 分類問(wèn)題中的標(biāo)簽,是沒(méi)有連續(xù)的概念的。1-hot作為標(biāo)簽的一種表達(dá)方式,每個(gè)標(biāo)簽之間的距離也是沒(méi)有實(shí)際意義的,所以預(yù)測(cè)值和標(biāo)簽兩個(gè)向量之間的平方差這個(gè)值不能反應(yīng)分類這個(gè)問(wèn)題的優(yōu)化程度。
- 還有個(gè)原因應(yīng)該是softmax帶來(lái)的vanishing gradient吧。預(yù)測(cè)值離標(biāo)簽越遠(yuǎn),有可能的梯度越小。李龍說(shuō)的non-convex問(wèn)題,應(yīng)該是一種體現(xiàn)形式
-
作者:北野寺僧人
鏈接:https://www.zhihu.com/question/319865092/answer/717476767
來(lái)源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
- 下面這個(gè)解釋有個(gè)問(wèn)題:y*f會(huì)大于1嗎?
8.2.2交叉熵是怎么來(lái)的
-
滿足伯努利分布,所以用sigmoid
- 可從伯努利分布推導(dǎo)出來(lái):https://zhuanlan.zhihu.com/p/360717173
-
來(lái)自KL散度https://blog.csdn.net/tsyccnh/article/details/79163834
-
KL散度用以描述兩個(gè)分布的差異(真實(shí)分布和預(yù)測(cè)分布)
-
KL=H§+交叉熵
-
DKL(p∣∣q)=∑i=1np(xi)log(p(xi))?∑i=1np(xi)log(q(xi))=?H(p(x))?∑i=1np(xi)log(q(xi))D_{KL}(p||q) \\ = \sum_{i=1}^np(x_i)log(p(x_i))-\sum_{i=1}^np(x_i)log(q(x_i))\\ = -H(p(x))-\sum_{i=1}^np(x_i)log(q(x_i))DKL?(p∣∣q)=i=1∑n?p(xi?)log(p(xi?))?i=1∑n?p(xi?)log(q(xi?))=?H(p(x))?i=1∑n?p(xi?)log(q(xi?))
8.2.3分類的損失函數(shù)
hinge損失
交叉熵?fù)p失
0-1損失
感知器損失
8.2.4 交叉熵的梯度
https://blog.csdn.net/qian99/article/details/78046329
=ai-yi在這里插入圖片描述
8.2.5 BP
https://blog.csdn.net/u010916338/article/details/83310442
8.2.6 KL散度
9.word2vec
- cbow.,skip-gram
- 層次softmax:哈希曼樹(shù),頻率高的路徑短
- 負(fù)采樣:
- 這里還有一種解決問(wèn)題的思路,我們最后的softmax分出來(lái)的類是整個(gè)詞袋的大小,那么是不是可以把詞袋大小減小,因?yàn)橛行┏霈F(xiàn)概率低的詞我們根本可以不考慮。這就是負(fù)采樣的核心思想。
那么怎么選取頻率較高的詞,構(gòu)成最后softmax要分的類呢
只計(jì)算正例和負(fù)例的loss
負(fù)例的選擇
https://www.cnblogs.com/pinard/p/7249903.html
作者:吳祺育的筆記
鏈接:https://www.jianshu.com/p/d8bfaae28fa9
來(lái)源:簡(jiǎn)書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
https://www.jianshu.com/p/d8bfaae28fa9
10.訓(xùn)練
10.1如何調(diào)整學(xué)習(xí)率
11.python語(yǔ)言基礎(chǔ)
11.1 迭代器和生成器
- 迭代器一次性取出全部
- 生成器:yield ,一次取一部分,然后暫停,遇見(jiàn)send和next再繼續(xù),一次只取一部分,對(duì)內(nèi)存友好。
11.2 垃圾回收機(jī)制
https://blog.csdn.net/xiongchengluo1129/article/details/80462651
- 計(jì)數(shù)
- 當(dāng)指向該對(duì)象的內(nèi)存的引用計(jì)數(shù)器為0的時(shí)候,該內(nèi)存將會(huì)被Python虛擬機(jī)銷毀
- 缺點(diǎn):
- 無(wú)法解決循環(huán)引用的問(wèn)題。A和B相互引用而再?zèng)]有外部引用A與B中的任何一個(gè),它們的引用計(jì)數(shù)都為1,但顯然應(yīng)該被回收。
- 標(biāo)記-清除
- 第一階段是標(biāo)記階段,GC會(huì)把所有的『活動(dòng)對(duì)象』打上標(biāo)記,第二階段是把那些沒(méi)有標(biāo)記的對(duì)象『非活動(dòng)對(duì)象』進(jìn)行回收。
- 如何判斷:
- 對(duì)象之間通過(guò)引用(指針)連在一起,構(gòu)成一個(gè)有向圖,對(duì)象構(gòu)成這個(gè)有向圖的節(jié)點(diǎn),而引用關(guān)系構(gòu)成這個(gè)有向圖的邊。從根對(duì)象(root object)出發(fā),沿著有向邊遍歷對(duì)象,可達(dá)的(reachable)對(duì)象標(biāo)記為活動(dòng)對(duì)象,不可達(dá)的對(duì)象就是要被清除的非活動(dòng)對(duì)象(4,5)。根對(duì)象就是全局變量、調(diào)用棧、寄存器。
- 對(duì)象之間通過(guò)引用(指針)連在一起,構(gòu)成一個(gè)有向圖,對(duì)象構(gòu)成這個(gè)有向圖的節(jié)點(diǎn),而引用關(guān)系構(gòu)成這個(gè)有向圖的邊。從根對(duì)象(root object)出發(fā),沿著有向邊遍歷對(duì)象,可達(dá)的(reachable)對(duì)象標(biāo)記為活動(dòng)對(duì)象,不可達(dá)的對(duì)象就是要被清除的非活動(dòng)對(duì)象(4,5)。根對(duì)象就是全局變量、調(diào)用棧、寄存器。
- GC
- 對(duì)于程序,存在一定比例的內(nèi)存塊的生存周期比較短;而剩下的內(nèi)存塊,生存周期會(huì)比較長(zhǎng),甚至?xí)某绦蜷_(kāi)始一直持續(xù)到程序結(jié)束。生存期較短對(duì)象的比例通常在 80%~90% 之間,這種思想簡(jiǎn)單點(diǎn)說(shuō)就是:對(duì)象存在時(shí)間越長(zhǎng),越可能不是垃圾,應(yīng)該越少去收集。這樣在執(zhí)行標(biāo)記-清除算法時(shí)可以有效減小遍歷的對(duì)象數(shù),從而提高垃圾回收的速度。
12 sql
12.1 阿里的留存量問(wèn)題
電話,講了下思路
- table A: userid | dt
- userid:用戶id
- dt:上次登錄時(shí)間,登錄覆蓋,2021-04-13
- 留存率:
- 昨天登錄100人
- 今天這100人里只有70人登錄
- 留存率:70%
- 解決方法
- 備份昨日的表–臨時(shí)表
- 每日計(jì)算留存率
https://zhuanlan.zhihu.com/p/123292172
13. 評(píng)價(jià)指標(biāo)
13.1 F1,P,R,AUC
-
https://zhuanlan.zhihu.com/p/69771204
-
acc=(TP+TN)/(P+N)
-
錯(cuò)誤率=(FP+FN)/(P+N)
-
precision=TP/(TP+FP)=TP/len(predict)
-
recall=TP/(TP+FN)=TP/len(gold)=sensitivity
-
真正例率:TPR是 TP/P=TP/(len(gold))=TP/(TP+FN)=recall
-
假正例率:FPR=FP/N=FP/(FP+TN)
-
AUC=ROC的面積,面積大,模型泛化能力強(qiáng)
-
ROC
-
如何畫roc
- 調(diào)整閾值畫的
13.2 驗(yàn)證集recall和p都高,測(cè)試集recall和auc沒(méi)下降,prec下降很厲害
- 原因可能是閾值太低了
- 但序列標(biāo)注那種有閾值嗎?argmax的?
- 可能最高的那個(gè)概率也很低,所以矮子里拔高個(gè)
- 可以讓設(shè)置如果最大值很小的話,就不要了
- 閾值低:p高,r低
- 閾值高:p低,r高
- 還有可能是沒(méi)學(xué)好負(fù)例。
14 . 算法題:
14.1n*m的01矩陣,做q次翻轉(zhuǎn)(0->1,1->0),每次翻轉(zhuǎn)后輸出行內(nèi)最長(zhǎng)的1序列
???感覺(jué)題目理解有點(diǎn)問(wèn)題
輸入:
n=5 m=4 q=5
矩陣:
0 1 1 0
1 0 0 1
0 1 1 0
1 0 0 1
0 0 0 0
1 1
1 4
3 1
4 2
4 3
14.2 .二叉樹(shù),每個(gè)節(jié)點(diǎn)為原點(diǎn)有一個(gè)左子樹(shù)集合,將每個(gè)集合的節(jié)點(diǎn)向前平移n格,輸出層次遍歷
輸入:
2
7 1
7 2
輸出:
2 4 6 1 5 3 7
4 1 3 2 5 6 7
.二叉樹(shù),每個(gè)節(jié)點(diǎn)為原點(diǎn)有一個(gè)左子樹(shù)集合,將每個(gè)集合的節(jié)點(diǎn)向前平移n格,輸出層次遍歷
他怎么說(shuō)怎么加,或者做數(shù)學(xué)題……,數(shù)學(xué)題應(yīng)該O(n),但邊界怎么處理?邊界還是要算一遍?
15. 智力題
https://www.nowcoder.com/discuss/tiny/694863?channel=666&source_id=feed_index_nctrack&fromIframe=true
16 機(jī)器學(xué)習(xí)
16.1 決策樹(shù):
https://blog.csdn.net/qq_22194315/article/details/83752321
16.1.1 分類樹(shù)
loss:信息增益、增益率、gini_index
16.1.1.1 ID3:信息增益劃分
D:數(shù)據(jù)集,pk:數(shù)據(jù)集中第k類占比
信息增益=劃分前的熵-劃分后
劃分后熵越低,純度越高,劃分前一定,信息增益越大越好
缺點(diǎn):它傾向于選取取值數(shù)目多的屬性,因?yàn)檫@樣的屬性計(jì)算出來(lái)的信息增益最大,但往往會(huì)導(dǎo)致泛化能力變?nèi)酢1热鐦颖炯?00個(gè)樣本,然后樣本有一個(gè)屬性“編號(hào)”,100個(gè)樣本的編號(hào)各不相同,如果按編號(hào)屬性劃分則對(duì)新樣本的預(yù)測(cè)很不友好,因?yàn)榫幪?hào)對(duì)label的影響太小了。
基于此,下面就有C4.5的最優(yōu)屬性選取方式就減輕了信息增益的傾向帶來(lái)的不足。
16.1.1.2 C4.5:增益率
V(a)稱為屬性a的固有值,如果屬性a的取值數(shù)目過(guò)多,那么IV(a)會(huì)變得很大,那么增益率就會(huì)變得很小。但是C4.5并不是單純地選取增益率最大的屬性作為最優(yōu)屬性,而是先比較信息增益,也就是說(shuō)我們?cè)谛畔⒃鲆娓哂谄骄降膶傩约现性龠x取增益率最大的屬性。
16.1.1.3 CART
16.1.2 回歸樹(shù)
16.1.2.1 提升樹(shù)
- 損失函數(shù)(這里是MSE)
- CART回歸樹(shù):
- 每次找使得loss最小的屬性j和劃分s,得到回歸樹(shù)
- 計(jì)算殘差,得到新的數(shù)據(jù)集(x, r)(r = yi- predict_i)
- 首先遍歷數(shù)據(jù)集的屬性集,對(duì)于每一個(gè)屬性j,我們優(yōu)化上述目標(biāo)。由于屬性j有很多取值,那么從這些取值中先計(jì)算劃分點(diǎn),一般是相鄰兩個(gè)值的中間數(shù)作為劃分點(diǎn),這樣我們的到劃分點(diǎn)s的集合。舉個(gè)例子,假如j有10個(gè)取值,那么先從小到大排序,然后可以計(jì)算10個(gè)取值中的劃分點(diǎn),相鄰兩個(gè)取值的平均值作為一個(gè)劃分點(diǎn),我們就可以得到9個(gè)劃分點(diǎn)。
- 上述優(yōu)化目標(biāo)也就是,遍歷每一個(gè)可能的j和s,尋找使得上述目標(biāo)最小的j,s來(lái)劃分當(dāng)前結(jié)點(diǎn)。其中c1、c2是各分支的預(yù)測(cè)label(一般取分支結(jié)點(diǎn)的數(shù)據(jù)集的均值),R1、R2是各分支的樣本子集。注意這里是用CART回歸樹(shù)舉例,對(duì)于結(jié)點(diǎn)的劃分只能產(chǎn)生兩個(gè)分支。劃分之后,遞歸地對(duì)子結(jié)點(diǎn)利用上述優(yōu)化目標(biāo)進(jìn)行劃分,直至到達(dá)遞歸邊界(一般是限定葉子個(gè)數(shù),最大深度等)。
- 得到這樣的回歸樹(shù)之后,我們利用步驟?更新提升樹(shù)的模型fm,并再次計(jì)算殘差,又得到新的數(shù)據(jù)集(x,r),繼續(xù)擬合生成新的回歸樹(shù)直至迭代到M。
GBDT:提升樹(shù)基礎(chǔ)上的改進(jìn)
- 初始化
- 殘差
- x與負(fù)梯度組合成新的數(shù)據(jù)集,用回歸樹(shù)去擬合,然后更新提升樹(shù)的模型,這就是GBDT。
16.2 線性回歸
16.3 word2vec
skip-gram ,cbow
16.3.1 negative sampling
https://zhuanlan.zhihu.com/p/56106590
1.把常見(jiàn)的詞組作為一個(gè)單詞。
2.少采樣常見(jiàn)的詞 (比如:A the)
詞出現(xiàn)的越多越容易不容易被采樣到
3.修改優(yōu)化目標(biāo)函數(shù),這個(gè)策略稱之為“Negative Sampling(負(fù)采樣)“,使得每個(gè)訓(xùn)練樣本只去更新模型中一小部分的weights。
出現(xiàn)越多的詞越容易被更新
https://www.cnblogs.com/pinard/p/7243513.html
層次softmax
沿著霍夫曼樹(shù)走
16.4 處理過(guò)擬合
https://www.jianshu.com/p/97aafe479fa1
- 數(shù)據(jù)增強(qiáng)
- Early stopping
- 增加噪聲
- 簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu)
- Dropout
- 貝葉斯方法:正則化:L1,L2
- BN:
batch normalization
這句話什么意思呢?意思就是同樣一個(gè)樣本的輸出不再僅僅取決于樣本本身,也取決于跟這個(gè)樣本屬于同一個(gè)mini-batch的其它樣本。同一個(gè)樣本跟不同的樣本組成一個(gè)mini-batch,它們的輸出是不同的(僅限于訓(xùn)練階段,在inference階段是沒(méi)有這種情況的)。我把這個(gè)理解成一種數(shù)據(jù)增強(qiáng):同樣一個(gè)樣本在超平面上被拉扯,每次拉扯的方向的大小均有不同。不同于數(shù)據(jù)增強(qiáng)的是,這種拉扯是貫穿數(shù)據(jù)流過(guò)神經(jīng)網(wǎng)絡(luò)的整個(gè)過(guò)程的,意味著神經(jīng)網(wǎng)絡(luò)每一層的輸入都被數(shù)據(jù)增強(qiáng)處理了。
相比于Dropout、L1、L2正則化來(lái)說(shuō),BN算法防止過(guò)擬合效果沒(méi)那末明顯。
17. 任務(wù)
17.1 ner序列標(biāo)注
17.1.1 邊界錯(cuò)誤
增大邊界錯(cuò)誤的loss,便捷預(yù)測(cè)錯(cuò)給更大的懲罰
總結(jié)
以上是生活随笔為你收集整理的知识复习:nlp算法面试汇总的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HTML5崛起之时,Java桌面时代就已
- 下一篇: suitecrm配置(nginx设置)