1. 程式人生 > >機器學習面試題總結(轉)

機器學習面試題總結(轉)

原文連結: https://blog.csdn.net/sinat_35512245/article/details/78796328

1.請簡要介紹下SVM。

SVM,全稱是support vector machine,中文名叫支援向量機。SVM是一個面向資料的分類演算法,它的目標是為確定一個分類超平面,從而將不同的資料分隔開。

擴充套件:

支援向量機學習方法包括構建由簡至繁的模型:線性可分支援向量機、線性支援向量機及非線性支援向量機。當訓練資料線性可分時,通過硬間隔最大化,學習一個線性的分類器,即線性可分支援向量機,又稱為硬間隔支援向量機;當訓練資料近似線性可分時,通過軟間隔最大化,也學習一個線性的分類器,即線性支援向量機,又稱為軟間隔支援向量機;當訓練資料線性不可分時,通過使用核技巧及軟間隔最大化,學習非線性支援向量機。

支援向量機通俗導論(理解SVM的三層境界)

機器學習之深入理解SVM

2.請簡要介紹下Tensorflow的計算圖。

@寒小陽:Tensorflow是一個通過計算圖的形式來表述計算的程式設計系統,計算圖也叫資料流圖,可以把計算圖看做是一種有向圖,Tensorflow中的每一個計算都是計算圖上的一個節點,而節點之間的邊描述了計算之間的依賴關係。

3.請問GBDT和XGBoost的區別是什麼?

@Xijun LI:XGBoost類似於GBDT的優化版,不論是精度還是效率上都有了提升。與GBDT相比,具體的優點有:
1.損失函式是用泰勒展式二項逼近,而不是像GBDT裡的就是一階導數;
2.對樹的結構進行了正則化約束,防止模型過度複雜,降低了過擬合的可能性;
3.節點分裂的方式不同,GBDT是用的基尼係數,XGBoost是經過優化推導後的。

知識點連結:整合學習總結

4.在k-means或kNN,我們是用歐氏距離來計算最近的鄰居之間的距離。為什麼不用曼哈頓距離?

曼哈頓距離只計算水平或垂直距離,有維度的限制。另一方面,歐氏距離可用於任何空間的距離計算問題。因為,資料點可以存在於任何空間,歐氏距離是更可行的選擇。例如:想象一下國際象棋棋盤,象或車所做的移動是由曼哈頓距離計算的,因為它們是在各自的水平和垂直方向做的運動。

5.百度2015校招機器學習筆試題。

知識點連結:百度2015校招機器學習筆試題

6.簡單說說特徵工程。


7.關於LR。

@rickjin:把LR從頭到腳都給講一遍。建模,現場數學推導,每種解法的原理,正則化,LR和maxent模型啥關係,LR為啥比線性迴歸好。有不少會背答案的人,問邏輯細節就糊塗了。原理都會? 那就問工程,並行化怎麼做,有幾種並行化方式,讀過哪些開源的實現。還會,那就準備收了吧,順便逼問LR模型發展歷史。


宣告:由於原文中的連結已經失效,故而自己補充了一個新的連結

知識點連結:機器學習之Logistic迴歸(邏輯蒂斯迴歸)

8.overfitting怎麼解決?

dropout、regularization、batch normalizatin

9.LR和SVM的聯絡與區別?

@朝陽在望,聯絡:
1、LR和SVM都可以處理分類問題,且一般都用於處理線性二分類問題(在改進的情況下可以處理多分類問題)
2、兩個方法都可以增加不同的正則化項,如L1、L2等等。所以在很多實驗中,兩種演算法的結果是很接近的。
區別:
1、LR是引數模型,SVM是非引數模型。
2、從目標函式來看,區別在於邏輯迴歸採用的是Logistical Loss,SVM採用的是hinge loss.這兩個損失函式的目的都是增加對分類影響較大的資料點的權重,減少與分類關係較小的資料點的權重。
3、SVM的處理方法是隻考慮Support Vectors,也就是和分類最相關的少數點,去學習分類器。而邏輯迴歸通過非線性對映,大大減小了離分類平面較遠的點的權重,相對提升了與分類最相關的資料點的權重。
4、邏輯迴歸相對來說模型更簡單,好理解,特別是大規模線性分類時比較方便。而SVM的理解和優化相對來說複雜一些,SVM轉化為對偶問題後,分類只需要計算與少數幾個支援向量的距離,這個在進行復雜核函式計算時優勢很明顯,能夠大大簡化模型和計算。
5、Logic 能做的 SVM能做,但可能在準確率上有問題,SVM能做的Logic有的做不了。

答案來源:機器學習常見面試問題(一)

10.LR與線性迴歸的區別與聯絡?

@nishizhen
個人感覺邏輯迴歸和線性迴歸首先都是廣義的線性迴歸,
其次經典線性模型的優化目標函式是最小二乘,而邏輯迴歸則是似然函式,
另外線性迴歸在整個實數域範圍內進行預測,敏感度一致,而分類範圍,需要在[0,1]。邏輯迴歸就是一種減小預測範圍,將預測值限定為[0,1]間的一種迴歸模型,因而對於這類問題來說,邏輯迴歸的魯棒性比線性迴歸的要好。
@乖乖癩皮狗:邏輯迴歸的模型本質上是一個線性迴歸模型,邏輯迴歸都是以線性迴歸為理論支援的。但線性迴歸模型無法做到sigmoid的非線性形式,sigmoid可以輕鬆處理0/1分類問題。

11.為什麼XGBoost要用泰勒展開,優勢在哪裡?

@AntZ:XGBoost使用了一階和二階偏導, 二階導數有利於梯度下降的更快更準. 使用泰勒展開取得二階倒數形式, 可以在不選定損失函式具體形式的情況下用於演算法優化分析.本質上也就把損失函式的選取和模型演算法優化/引數選擇分開了. 這種去耦合增加了XGBoost的適用性。

12.XGBoost如何尋找最優特徵?是又放回還是無放回的呢?

@AntZ:XGBoost在訓練的過程中給出各個特徵的評分,從而表明每個特徵對模型訓練的重要性.。XGBoost利用梯度優化模型演算法, 樣本是不放回的(想象一個樣本連續重複抽出,梯度來回踏步會不會高興)。但XGBoost支援子取樣, 也就是每輪計算可以不使用全部樣本。

13.談談判別式模型和生成式模型?

判別方法:由資料直接學習決策函式 Y = f(X),或者由條件分佈概率 P(Y|X)作為預測模型,即判別模型。

生成方法:由資料學習聯合概率密度分佈函式 P(X,Y),然後求出條件概率分佈P(Y|X)作為預測的模型,即生成模型。

由生成模型可以得到判別模型,但由判別模型得不到生成模型。

常見的判別模型有:K近鄰、SVM、決策樹、感知機、線性判別分析(LDA)、線性迴歸、傳統的神經網路、邏輯斯蒂迴歸、boosting、條件隨機場

常見的生成模型有:樸素貝葉斯、隱馬爾可夫模型、高斯混合模型、文件主題生成模型(LDA)、限制玻爾茲曼機

14.L1和L2的區別。

L1範數(L1 norm)是指向量中各個元素絕對值之和,也有個美稱叫“稀疏規則運算元”(Lasso regularization)。
比如 向量A=[1,-1,3], 那麼A的L1範數為 |1|+|-1|+|3|.
簡單總結一下就是:
L1範數: 為x向量各個元素絕對值之和。
L2範數: 為x向量各個元素平方和的1/2次方,L2範數又稱Euclidean範數或Frobenius範數

Lp範數: 為x向量各個元素絕對值p次方和的1/p次方.
在支援向量機學習過程中,L1範數實際是一種對於成本函式求解最優的過程,因此,L1範數正則化通過向成本函式中新增L1範數,使得學習得到的結果滿足稀疏化,從而方便人類提取特徵。
L1範數可以使權值稀疏,方便特徵提取。
L2範數可以防止過擬合,提升模型的泛化能力。

15.L1和L2正則先驗分別服從什麼分佈 ?

@齊同學:面試中遇到的,L1和L2正則先驗分別服從什麼分佈,L1是拉普拉斯分佈,L2是高斯分佈。

16.CNN最成功的應用是在CV,那為什麼NLP和Speech的很多問題也可以用CNN解出來?為什麼AlphaGo裡也用了CNN?這幾個不相關的問題的相似性在哪裡?CNN通過什麼手段抓住了這個共性?

@許韓

知識點連結(答案解析):深度學習崗位面試問題整理筆記

17.說一下Adaboost,權值更新公式。當弱分類器是Gm時,每個樣本的的權重是w1,w2…,請寫出最終的決策公式。

答案解析

18.LSTM結構推導,為什麼比RNN好?

推導forget gate,input gate,cell state, hidden information等的變化;因為LSTM有進有出且當前的cell informaton是通過input gate控制之後疊加的,RNN是疊乘,因此LSTM可以防止梯度消失或者爆炸。

19.經常在網上搜索東西的朋友知道,當你不小心輸入一個不存在的單詞時,搜尋引擎會提示你是不是要輸入某一個正確的單詞,比如當你在Google中輸入“Julw”時,系統會猜測你的意圖:是不是要搜尋“July”,如下圖所示:


這叫做拼寫檢查。根據谷歌一員工寫的文章How to Write a Spelling Corrector顯示,Google的拼寫檢查基於貝葉斯方法。請說說的你的理解,具體Google是怎麼利用貝葉斯方法,實現”拼寫檢查”的功能。

使用者輸入一個單詞時,可能拼寫正確,也可能拼寫錯誤。如果把拼寫正確的情況記做c(代表correct),拼寫錯誤的情況記做w(代表wrong),那麼”拼寫檢查”要做的事情就是:在發生w的情況下,試圖推斷出c。換言之:已知w,然後在若干個備選方案中,找出可能性最大的那個c,也就是求P(c|w)P(c|w)的最大值。而根據貝葉斯定理,有:
P(c|w)=P(w|c)P(c)P(w)
P(c|w)=P(w|c)P(c)P(w)

由於對於所有備選的c來說,對應的都是同一個w,所以它們的P(w)是相同的,因此我們只要最大化P(w|c)P(c)P(w|c)P(c)即可。其中:
P(c)表示某個正確的詞的出現”概率”,它可以用”頻率”代替。如果我們有一個足夠大的文字庫,那麼這個文字庫中每個單詞的出現頻率,就相當於它的發生概率。某個詞的出現頻率越高,P(c)就越大。比如在你輸入一個錯誤的詞“Julw”時,系統更傾向於去猜測你可能想輸入的詞是“July”,而不是“Jult”,因為“July”更常見。

P(w|c)表示在試圖拼寫c的情況下,出現拼寫錯誤w的概率。為了簡化問題,假定兩個單詞在字形上越接近,就有越可能拼錯,P(w|c)就越大。舉例來說,相差一個字母的拼法,就比相差兩個字母的拼法,發生概率更高。你想拼寫單詞July,那麼錯誤拼成Julw(相差一個字母)的可能性,就比拼成Jullw高(相差兩個字母)。值得一提的是,一般把這種問題稱為“編輯距離”,參見程式設計師程式設計藝術第二十八~二十九章:最大連續乘積子串、字串編輯距離。

所以,我們比較所有拼寫相近的詞在文字庫中的出現頻率,再從中挑出出現頻率最高的一個,即是使用者最想輸入的那個詞。具體的計算過程及此方法的缺陷請參見How to Write a Spelling Corrector。

20.為什麼樸素貝葉斯如此“樸素”?

因為它假定所有的特徵在資料集中的作用是同樣重要和獨立的。正如我們所知,這個假設在現實世界中是很不真實的,因此,說樸素貝葉斯真的很“樸素”。

21.機器學習中,為何要經常對資料做歸一化?

@zhanlijun

本題解析來源:為什麼一些機器學習模型需要對資料進行歸一化?

22.談談深度學習中的歸一化問題。

詳情參見此視訊:深度學習中的歸一化

23.請簡要說說一個完整機器學習專案的流程。

1 抽象成數學問題
明確問題是進行機器學習的第一步。機器學習的訓練過程通常都是一件非常耗時的事情,胡亂嘗試時間成本是非常高的。
這裡的抽象成數學問題,指的我們明確我們可以獲得什麼樣的資料,目標是一個分類還是迴歸或者是聚類的問題,如果都不是的話,如果劃歸為其中的某類問題。
2 獲取資料
資料決定了機器學習結果的上限,而演算法只是儘可能逼近這個上限。
資料要有代表性,否則必然會過擬合。
而且對於分類問題,資料偏斜不能過於嚴重,不同類別的資料數量不要有數個數量級的差距。
而且還要對資料的量級有一個評估,多少個樣本,多少個特徵,可以估算出其對記憶體的消耗程度,判斷訓練過程中記憶體是否能夠放得下。如果放不下就得考慮改進演算法或者使用一些降維的技巧了。如果資料量實在太大,那就要考慮分散式了。
3 特徵預處理與特徵選擇
良好的資料要能夠提取出良好的特徵才能真正發揮效力。
特徵預處理、資料清洗是很關鍵的步驟,往往能夠使得演算法的效果和效能得到顯著提高。歸一化、離散化、因子化、缺失值處理、去除共線性等,資料探勘過程中很多時間就花在它們上面。這些工作簡單可複製,收益穩定可預期,是機器學習的基礎必備步驟。
篩選出顯著特徵、摒棄非顯著特徵,需要機器學習工程師反覆理解業務。這對很多結果有決定性的影響。特徵選擇好了,非常簡單的演算法也能得出良好、穩定的結果。這需要運用特徵有效性分析的相關技術,如相關係數、卡方檢驗、平均互資訊、條件熵、後驗概率、邏輯迴歸權重等方法。
4 訓練模型與調優
直到這一步才用到我們上面說的演算法進行訓練。現在很多演算法都能夠封裝成黑盒供人使用。但是真正考驗水平的是調整這些演算法的(超)引數,使得結果變得更加優良。這需要我們對演算法的原理有深入的理解。理解越深入,就越能發現問題的癥結,提出良好的調優方案。
5 模型診斷
如何確定模型調優的方向與思路呢?這就需要對模型進行診斷的技術。
過擬合、欠擬合 判斷是模型診斷中至關重要的一步。常見的方法如交叉驗證,繪製學習曲線等。過擬合的基本調優思路是增加資料量,降低模型複雜度。欠擬合的基本調優思路是提高特徵數量和質量,增加模型複雜度。
誤差分析 也是機器學習至關重要的步驟。通過觀察誤差樣本,全面分析誤差產生誤差的原因:是引數的問題還是演算法選擇的問題,是特徵的問題還是資料本身的問題……
診斷後的模型需要進行調優,調優後的新模型需要重新進行診斷,這是一個反覆迭代不斷逼近的過程,需要不斷地嘗試, 進而達到最優狀態。
6 模型融合
一般來說,模型融合後都能使得效果有一定提升。而且效果很好。
工程上,主要提升演算法準確度的方法是分別在模型的前端(特徵清洗和預處理,不同的取樣模式)與後端(模型融合)上下功夫。因為他們比較標準可複製,效果比較穩定。而直接調參的工作不會很多,畢竟大量資料訓練起來太慢了,而且效果難以保證。
7 上線執行
這一部分內容主要跟工程實現的相關性比較大。工程上是結果導向,模型在線上執行的效果直接決定模型的成敗。 不單純包括其準確程度、誤差等情況,還包括其執行的速度(時間複雜度)、資源消耗程度(空間複雜度)、穩定性是否可接受。
這些工作流程主要是工程實踐上總結出的一些經驗。並不是每個專案都包含完整的一個流程。這裡的部分只是一個指導性的說明,只有大家自己多實踐,多積累專案經驗,才會有自己更深刻的認識。
故,基於此,七月線上每一期ML演算法班都特此增加特徵工程、模型調優等相關課。比如,這裡有個公開課視訊《特徵處理與特徵選擇》。

24.new 和 malloc的區別?

知識點連結:new 和 malloc的區別

25.hash 衝突及解決辦法?

@Sommer_Xia

關鍵字值不同的元素可能會映象到雜湊表的同一地址上就會發生雜湊衝突。解決辦法:
1)開放定址法:當衝突發生時,使用某種探查(亦稱探測)技術在散列表中形成一個探查(測)序列。沿此序列逐個單元地查詢,直到找到給定 的關鍵字,或者碰到一個開放的地址(即該地址單元為空)為止(若要插入,在探查到開放的地址,則可將待插入的新結點存人該地址單元)。查詢時探查到開放的 地址則表明表中無待查的關鍵字,即查詢失敗。
2) 再雜湊法:同時構造多個不同的雜湊函式。
3)鏈地址法:將所有雜湊地址為i的元素構成一個稱為同義詞鏈的單鏈表,並將單鏈表的頭指標存在雜湊表的第i個單元中,因而查詢、插入和刪除主要在同義詞鏈中進行。鏈地址法適用於經常進行插入和刪除的情況。
4)建立公共溢位區:將雜湊表分為基本表和溢位表兩部分,凡是和基本表發生衝突的元素,一律填入溢位表。

26.如何解決梯度消失和梯度膨脹?

(1)梯度消失:
根據鏈式法則,如果每一層神經元對上一層的輸出的偏導乘上權重結果都小於1的話,那麼即使這個結果是0.99,在經過足夠多層傳播之後,誤差對輸入層的偏導會趨於0。
可以採用ReLU啟用函式有效的解決梯度消失的情況。
(2)梯度膨脹:
根據鏈式法則,如果每一層神經元對上一層的輸出的偏導乘上權重結果都大於1的話,在經過足夠多層傳播之後,誤差對輸入層的偏導會趨於無窮大。

可以通過啟用函式來解決。

27.下列哪個不屬於CRF模型對於HMM和MEMM模型的優勢( )

A. 特徵靈活
B. 速度快
C. 可容納較多上下文資訊
D. 全域性最優
解答:首先,CRF,HMM(隱馬模型),MEMM(最大熵隱馬模型)都常用來做序列標註的建模。
隱馬模型一個最大的缺點就是由於其輸出獨立性假設,導致其不能考慮上下文的特徵,限制了特徵的選擇。
最大熵隱馬模型則解決了隱馬的問題,可以任意選擇特徵,但由於其在每一節點都要進行歸一化,所以只能找到區域性的最優值,同時也帶來了標記偏見的問題,即凡是訓練語料中未出現的情況全都忽略掉。
條件隨機場則很好的解決了這一問題,他並不在每一個節點進行歸一化,而是所有特徵進行全域性歸一化,因此可以求得全域性的最優值。

答案為B。

28.簡單說下有監督學習和無監督學習的區別?

有監督學習:對具有標記的訓練樣本進行學習,以儘可能對訓練樣本集外的資料進行分類預測。(LR,SVM,BP,RF,GBDT)
無監督學習:對未標記的樣本進行訓練學習,比發現這些樣本中的結構知識。(KMeans,DL)

29.瞭解正則化麼?

正則化是針對過擬合而提出的,以為在求解模型最優的是一般優化最小的經驗風險,現在在該經驗風險上加入模型複雜度這一項(正則化項是模型引數向量的範數),並使用一個rate比率來權衡模型複雜度與以往經驗風險的權重,如果模型複雜度越高,結構化的經驗風險會越大,現在的目標就變為了結構經驗風險的最優化,可以防止模型訓練過度複雜,有效的降低過擬合的風險。
奧卡姆剃刀原理,能夠很好的解釋已知資料並且十分簡單才是最好的模型。

30.協方差和相關性有什麼區別?

相關性是協方差的標準化格式。協方差本身很難做比較。例如:如果我們計算工資($)和年齡(歲)的協方差,因為這兩個變數有不同的度量,所以我們會得到不能做比較的不同的協方差。為了解決這個問題,我們計算相關性來得到一個介於-1和1之間的值,就可以忽略它們各自不同的度量。

31.線性分類器與非線性分類器的區別以及優劣。

如果模型是引數的線性函式,並且存線上性分類面,那麼就是線性分類器,否則不是。
常見的線性分類器有:LR,貝葉斯分類,單層感知機、線性迴歸。
常見的非線性分類器:決策樹、RF、GBDT、多層感知機。
SVM兩種都有(看線性核還是高斯核)。
線性分類器速度快、程式設計方便,但是可能擬合效果不會很好。
非線性分類器程式設計複雜,但是效果擬合能力強。

32.資料的邏輯儲存結構(如陣列,佇列,樹等)對於軟體開發具有十分重要的影響,試對你所瞭解的各種儲存結構從執行速度、儲存效率和適用場合等方面進行簡要地分析。


33.什麼是分散式資料庫?

分散式資料庫系統是在集中式資料庫系統成熟技術的基礎上發展起來的,但不是簡單地把集中式資料庫分散地實現,它具有自己的性質和特徵。集中式資料庫系統的許多概念和技術,如資料獨立性、資料共享和減少冗餘度、併發控制、完整性、安全性和恢復等在分散式資料庫系統中都有了不同的、更加豐富的內容。

34.簡單說說貝葉斯定理。

在引出貝葉斯定理之前,先學習幾個定義:
條件概率(又稱後驗概率)就是事件A在另外一個事件B已經發生條件下的發生概率。條件概率表示為P(A|B),讀作“在B條件下A的概率”。
比如,在同一個樣本空間Ω中的事件或者子集A與B,如果隨機從Ω中選出的一個元素屬於B,那麼這個隨機選擇的元素還屬於A的概率就定義為在B的前提下A的條件概率,所以:P(A|B) = |A∩B|/|B|,接著分子、分母都除以|Ω|得到:
P(A|B)=P(A∩B)P(B)
P(A|B)=P(A∩B)P(B)

聯合概率表示兩個事件共同發生的概率。A與B的聯合概率表示為P(A∩B)P(A∩B)或者P(A,B)P(A,B)。
邊緣概率(又稱先驗概率)是某個事件發生的概率。邊緣概率是這樣得到的:在聯合概率中,把最終結果中那些不需要的事件通過合併成它們的全概率,而消去它們(對離散隨機變數用求和得全概率,對連續隨機變數用積分得全概率),這稱為邊緣化(marginalization),比如A的邊緣概率表示為P(A),B的邊緣概率表示為P(B)。
接著,考慮一個問題:P(A|B)是在B發生的情況下A發生的可能性。
1)首先,事件B發生之前,我們對事件A的發生有一個基本的概率判斷,稱為A的先驗概率,用P(A)表示;
2)其次,事件B發生之後,我們對事件A的發生概率重新評估,稱為A的後驗概率,用P(A|B)表示;
3)類似的,事件A發生之前,我們對事件B的發生有一個基本的概率判斷,稱為B的先驗概率,用P(B)表示;
4)同樣,事件A發生之後,我們對事件B的發生概率重新評估,稱為B的後驗概率,用P(B|A)表示。

貝葉斯定理的公式表示式:
P(A|B)=P(B|A)P(A)P(B)
P(A|B)=P(B|A)P(A)P(B)
35.#include <filename.h> 和#include“filename.h”有什麼區別?

知識點連結:#include<filename.h> 和 #include”filename.h”有什麼區別

36.某超市研究銷售紀錄資料後發現,買啤酒的人很大概率也會購買尿布,這種屬於資料探勘的哪類問題?(A)
A. 關聯規則發現 B. 聚類 C. 分類 D. 自然語言處理

37.將原始資料進行整合、變換、維度規約、數值規約是在以下哪個步驟的任務?(C)
A. 頻繁模式挖掘 B. 分類和預測 C. 資料預處理 D. 資料流挖掘

38.下面哪種不屬於資料預處理的方法? (D)
A變數代換 B離散化 C 聚集 D 估計遺漏值

39.什麼是KDD? (A)
A. 資料探勘與知識發現 B. 領域知識發現C. 文件知識發現 D. 動態知識發現

40.當不知道資料所帶標籤時,可以使用哪種技術促使帶同類標籤的資料與帶其他標籤的資料相分離?(B)
A. 分類 B. 聚類 C. 關聯分析 D. 隱馬爾可夫鏈

41.建立一個模型,通過這個模型根據已知的變數值來預測其他某個變數值屬於資料探勘的哪一類任務?(C)
A. 根據內容檢索 B. 建模描述
C. 預測建模 D. 尋找模式和規則

42.以下哪種方法不屬於特徵選擇的標準方法?(D)
A嵌入 B 過濾 C 包裝 D 抽樣

43.請用python編寫函式find_string,從文字中搜索並列印內容,要求支援萬用字元星號和問號。

find_string('hello\nworld\n','wor')
['wor']
find_string('hello\nworld\n','l*d')
['ld']
find_string('hello\nworld\n','o.')
['or']
答案
def find_string(str,pat):
import re
return re.findall(pat,str,re.I)
1
2
3
4
5
6
7
8
9
10
44.說下紅黑樹的五個性質。

教你初步瞭解紅黑樹

45.簡單說下sigmoid啟用函式。

常用的非線性啟用函式有sigmoid、tanh、relu等等,前兩者sigmoid/tanh比較常見於全連線層,後者relu常見於卷積層。這裡先簡要介紹下最基礎的sigmoid函式(btw,在本部落格中SVM那篇文章開頭有提過)。

Sigmoid的函式表示式如下:


也就是說,Sigmoid函式的功能是相當於把一個實數壓縮至0到1之間。當z是非常大的正數時,g(z)會趨近於1,而z是非常小的負數時,則g(z)會趨近於0。

壓縮至0到1有何用處呢?用處是這樣一來便可以把啟用函式看作一種“分類的概率”,比如啟用函式的輸出為0.9的話便可以解釋為90%的概率為正樣本。

舉個例子,如下圖(圖引自Stanford機器學習公開課):


46.什麼是卷積?

對影象(不同的資料視窗資料)和濾波矩陣(一組固定的權重:因為每個神經元的多個權重固定,所以又可以看做一個恆定的濾波器filter)做內積(逐個元素相乘再求和)的操作就是所謂的『卷積』操作,也是卷積神經網路的名字來源。
非嚴格意義上來講,下圖中紅框框起來的部分便可以理解為一個濾波器,即帶著一組固定權重的神經元。多個濾波器疊加便成了卷積層。


OK,舉個具體的例子。比如下圖中,圖中左邊部分是原始輸入資料,圖中中間部分是濾波器filter,圖中右邊是輸出的新的二維資料。


分解下上圖


47.什麼是CNN的池化pool層?

池化,簡言之,即取區域平均或最大,如下圖所示(圖引自cs231n):


上圖所展示的是取區域最大,即上圖左邊部分中 左上角2x2的矩陣中6最大,右上角2x2的矩陣中8最大,左下角2x2的矩陣中3最大,右下角2x2的矩陣中4最大,所以得到上圖右邊部分的結果:6 8 3 4。很簡單不是?

48.簡述下什麼是生成對抗網路。

GAN之所以是對抗的,是因為GAN的內部是競爭關係,一方叫generator,它的主要工作是生成圖片,並且儘量使得其看上去是來自於訓練樣本的。另一方是discriminator,其目標是判斷輸入圖片是否屬於真實訓練樣本。
更直白的講,將generator想象成假幣制造商,而discriminator是警察。generator目的是儘可能把假幣造的跟真的一樣,從而能夠騙過discriminator,即生成樣本並使它看上去好像來自於真實訓練樣本一樣。


如下圖中的左右兩個場景:


更多請參見此課程:生成對抗網路

49.學梵高作畫的原理是啥?

這裡有篇如何做梵高風格畫的實驗教程 教你從頭到尾利用DL學梵高作畫:GTX 1070 cuda 8.0 tensorflow gpu版,至於其原理請看這個視訊:NeuralStyle藝術化圖片(學梵高作畫背後的原理)。

50.現在有 a 到 z 26 個元素, 編寫程式列印 a 到 z 中任取 3 個元素的組合(比如 列印 a b c ,d y z等)。

一道百度機器學習工程師職位的面試題

51.哪些機器學習演算法不需要做歸一化處理?

概率模型不需要歸一化,因為它們不關心變數的值,而是關心變數的分佈和變數之間的條件概率,如決策樹、RF。而像Adaboost、GBDT、XGBoost、SVM、LR、KNN、KMeans之類的最優化問題就需要歸一化。

52.說說梯度下降法。

@LeftNotEasy

機器學習中的數學(1)-迴歸(regression)、梯度下降(gradient descent)

53.梯度下降法找到的一定是下降最快的方向麼?

梯度下降法並不是下降最快的方向,它只是目標函式在當前的點的切平面(當然高維問題不能叫平面)上下降最快的方向。在Practical Implementation中,牛頓方向(考慮海森矩陣)才一般被認為是下降最快的方向,可以達到Superlinear的收斂速度。梯度下降類的演算法的收斂速度一般是Linear甚至Sublinear的(在某些帶複雜約束的問題)。

知識點連結:一文清晰講解機器學習中梯度下降演算法(包括其變式演算法)

54.牛頓法和梯度下降法有什麼不同?

@wtq1993

知識點連結:機器學習中常見的最優化演算法

55.什麼是擬牛頓法(Quasi-Newton Methods)?

@wtq1993

機器學習中常見的最優化演算法

56.請說說隨機梯度下降法的問題和挑戰?

 


57.說說共軛梯度法?

@wtq1993

機器學習中常見的最優化演算法

58.對所有優化問題來說, 有沒有可能找到比現在已知演算法更好的演算法?

答案連結

59、什麼最小二乘法?

我們口頭中經常說:一般來說,平均來說。如平均來說,不吸菸的健康優於吸菸者,之所以要加“平均”二字,是因為凡事皆有例外,總存在某個特別的人他吸菸但由於經常鍛鍊所以他的健康狀況可能會優於他身邊不吸菸的朋友。而最小二乘法的一個最簡單的例子便是算術平均。

最小二乘法(又稱最小平方法)是一種數學優化技術。它通過最小化誤差的平方和尋找資料的最佳函式匹配。利用最小二乘法可以簡便地求得未知的資料,並使得這些求得的資料與實際資料之間誤差的平方和為最小。用函式表示為:


由於算術平均是一個歷經考驗的方法,而以上的推理說明,算術平均是最小二乘的一個特例,所以從另一個角度說明了最小二乘方法的優良性,使我們對最小二乘法更加有信心。

最小二乘法發表之後很快得到了大家的認可接受,並迅速的在資料分析實踐中被廣泛使用。不過歷史上又有人把最小二乘法的發明歸功於高斯,這又是怎麼一回事呢。高斯在1809年也發表了最小二乘法,並且聲稱自己已經使用這個方法多年。高斯發明了小行星定位的數學方法,並在資料分析中使用最小二乘方法進行計算,準確的預測了穀神星的位置。

對了,最小二乘法跟SVM有什麼聯絡呢?請參見支援向量機通俗導論(理解SVM的三層境界)。

60、看你T恤上印著:人生苦短,我用Python,你可否說說Python到底是什麼樣的語言?你可以比較其他技術或者語言來回答你的問題。

15個重要Python面試題 測測你適不適合做Python?

61.Python是如何進行記憶體管理的?

2017 Python最新面試題及答案16道題

62.請寫出一段Python程式碼實現刪除一個list裡面的重複元素。

1、使用set函式,set(list);
2、使用字典函式:

a=[1,2,4,2,4,5,6,5,7,8,9,0]
b={}
b=b.fromkeys(a)
c=list(b.keys())
c
1
2
3
4
5
63.程式設計用sort進行排序,然後從最後一個元素開始判斷。

a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]

a.sort()
last=a[-1]
for i inrange(len(a)-2,-1,-1):
if last==a[i]:
del a[i]
else:last=a[i]
print(a)
1
2
3
4
5
6
7
8
9
64.Python裡面如何生成隨機數?

@Tom_junsong

random模組

隨機整數:random.randint(a,b):返回隨機整數x,a<=x<=b
random.randrange(start,stop,[,step]):返回一個範圍在(start,stop,step)之間的隨機整數,不包括結束值。
隨機實數:random.random( ):返回0到1之間的浮點數
random.uniform(a,b):返回指定範圍內的浮點數。

65.說說常見的損失函式。

對於給定的輸入X,由f(X)給出相應的輸出Y,這個輸出的預測值f(X)與真實值Y可能一致也可能不一致(要知道,有時損失或誤差是不可避免的),用一個損失函式來度量預測錯誤的程度。損失函式記為L(Y, f(X))。
常用的損失函式有以下幾種(基本引用自《統計學習方法》):

 

66.簡單介紹下Logistics迴歸。

Logistic迴歸目的是從特徵學習出一個0/1分類模型,而這個模型是將特性的線性組合作為自變數,由於自變數的取值範圍是負無窮到正無窮。因此,使用logistic函式(或稱作sigmoid函式)將自變數對映到(0,1)上,對映後的值被認為是屬於y=1的概率。

假設函式:
hθ(x)=g(θTx)=11+e−θTx
hθ(x)=g(θTx)=11+e−θTx

其中x是n維特徵向量,函式g就是Logistic函式。而:g(z)=11+e−zg(z)=11+e−z的影象是:

可以看到,將無窮對映到了(0,1)。而假設函式就是特徵屬於y=1的概率。

P(y=1|x;θ)=hθ(x);P(y=0|x;θ)=1−hθ(x)
P(y=1|x;θ)=hθ(x);P(y=0|x;θ)=1−hθ(x)

67.看你是搞視覺的,熟悉哪些CV框架,順帶聊聊CV最近五年的發展史如何?

答案解析

68.深度學習在視覺領域有何前沿進展?

@元峰

本題解析來源:深度學習在計算機視覺領域的前沿進展

69.HashMap與HashTable區別?

HashMap與Hashtable的區別

70.在分類問題中,我們經常會遇到正負樣本資料量不等的情況,比如正樣本為10w條資料,負樣本只有1w條資料,以下最合適的處理方法是( )

A、將負樣本重複10次,生成10w樣本量,打亂順序參與分類
B、直接進行分類,可以最大限度利用資料
C、從10w正樣本中隨機抽取1w參與分類
D、將負樣本每個權重設定為10,正樣本權重為1,參與訓練過程

@管博士:準確的說,其實選項中的這些方法各有優缺點,需要具體問題具體分析,有篇文章對各種方法的優缺點進行了分析,講的不錯 感興趣的同學可以參考一下:

How to handle Imbalanced Classification Problems in machine learning?

71.深度學習是當前很熱門的機器學習演算法,在深度學習中,涉及到大量的矩陣相乘,現在需要計算三個稠密矩陣A,B,C的乘積ABC,假90設三個矩陣的尺寸分別為m∗n,n∗p,p∗q,且m <n <p <q,以下計算順序效率最高的是(A)

A.(AB)C
B.AC(B)
C.A(BC)
D.所以效率都相同

正確答案:A
@BlackEyes_SGC: m*n*p <m*n*q,m*p*q < n*p*q, 所以 (AB)C 最小

72.Nave Bayes是一種特殊的Bayes分類器,特徵變數是X,類別標籤是C,它的一個假定是:( C )

A.各類別的先驗概率P(C)是相等的
B.以0為均值,sqr(2)/2為標準差的正態分佈
C.特徵變數X的各個維度是類別條件獨立隨機變數
D.P(X|C)是高斯分佈

正確答案:C
@BlackEyes_SGC:樸素貝葉斯的條件就是每個變數相互獨立。

73.關於支援向量機SVM,下列說法錯誤的是(C)

A.L2正則項,作用是最大化分類間隔,使得分類器擁有更強的泛化能力
B.Hinge 損失函式,作用是最小化經驗分類錯誤
C.分類間隔為1||w||1||w||,||w||代表向量的模
D.當引數C越小時,分類間隔越大,分類錯誤越多,趨於欠學習

正確答案:C
@BlackEyes_SGC:
A正確。考慮加入正則化項的原因:想象一個完美的資料集,y>1是正類,y<-1是負類,決策面y=0,加入一個y=-30的正類噪聲樣本,那麼決策面將會變“歪”很多,分類間隔變小,泛化能力減小。加入正則項之後,對噪聲樣本的容錯能力增強,前面提到的例子裡面,決策面就會沒那麼“歪”了,使得分類間隔變大,提高了泛化能力。
B正確。
C錯誤。間隔應該是2||w||2||w||才對,後半句應該沒錯,向量的模通常指的就是其二範數。
D正確。考慮軟間隔的時候,C對優化問題的影響就在於把a的範圍從[0,+inf]限制到了[0,C]。C越小,那麼a就會越小,目標函式拉格朗日函式導數為0可以求出w=∑iai∗yi∗xiw=∑iai∗yi∗xi,a變小使得w變小,因此間隔2||w||2||w||變大

74.在HMM中,如果已知觀察序列和產生觀察序列的狀態序列,那麼可用以下哪種方法直接進行引數估計( D )

A.EM演算法
B.維特比演算法
C.前向後向演算法
D.極大似然估計

正確答案:D
@BlackEyes_SGC:
EM演算法: 只有觀測序列,無狀態序列時來學習模型引數,即Baum-Welch演算法
維特比演算法: 用動態規劃解決HMM的預測問題,不是引數估計
前向後向演算法:用來算概率
極大似然估計:即觀測序列和相應的狀態序列都存在時的監督學習演算法,用來估計引數
注意的是在給定觀測序列和對應的狀態序列估計模型引數,可以利用極大似然發估計。如果給定觀測序列,沒有對應的狀態序列,才用EM,將狀態序列看不不可測的隱資料。

75.假定某同學使用Naive Bayesian(NB)分類模型時,不小心將訓練資料的兩個維度搞重複了,那麼關於NB的說法中正確的是:(BD)

A.這個被重複的特徵在模型中的決定作用會被加強
B.模型效果相比無重複特徵的情況下精確度會降低
C.如果所有特徵都被重複一遍,得到的模型預測結果相對於不重複的情況下的模型預測結果一樣。
D.當兩列特徵高度相關時,無法用兩列特徵相同時所得到的結論來分析問題
E.NB可以用來做最小二乘迴歸
F.以上說法都不正確

正確答案:BD
@BlackEyes_SGC:NB的核心在於它假設向量的所有分量之間是獨立的。在貝葉斯理論系統中,都有一個重要的條件獨立性假設:假設所有特徵之間相互獨立,這樣才能將聯合概率拆分。

76.以下哪些方法不可以直接來對文字分類?(A)

A、Kmeans
B、決策樹
C、支援向量機
D、KNN

正確答案: A分類不同於聚類。
@BlackEyes_SGC:A:Kmeans是聚類方法,典型的無監督學習方法。分類是監督學習方法,BCD都是常見的分類方法。

77.已知一組資料的協方差矩陣P,下面關於主分量說法錯誤的是( C )

A、主分量分析的最佳準則是對一組資料進行按一組正交基分解, 在只取相同數量分量的條件下,以均方誤差計算截尾誤差最小
B、在經主分量分解後,協方差矩陣成為對角矩陣
C、主分量分析就是K-L變換
D、主分量是通過求協方差矩陣的特徵值得到

正確答案: C
@BlackEyes_SGC:K-L變換與PCA變換是不同的概念,PCA的變換矩陣是協方差矩陣,K-L變換的變換矩陣可以有很多種(二階矩陣、協方差矩陣、總類內離散度矩陣等等)。當K-L變換矩陣為協方差矩陣時,等同於PCA。

78.Kmeans的複雜度?

時間複雜度:O(tKmn),其中,t為迭代次數,K為簇的數目,m為記錄數,n為維數空間複雜度:O((m+K)n),其中,K為簇的數目,m為記錄數,n為維數。

具體參考:機器學習之深入理解K-means、與KNN演算法區別及其程式碼實現

79.關於Logit 迴歸和SVM 不正確的是(A)

A. Logit迴歸本質上是一種根據樣本對權值進行極大似然估計的方法,而後驗概率正比於先驗概率和似然函式的乘積。logit僅僅是最大化似然函式,並沒有最大化後驗概率,更談不上最小化後驗概率。A錯誤
B. Logit迴歸的輸出就是樣本屬於正類別的機率,可以計算出概率,正確
C. SVM的目標是找到使得訓練資料儘可能分開且分類間隔最大的超平面,應該屬於結構風險最小化。
D. SVM可以通過正則化係數控制模型的複雜度,避免過擬合。

@BlackEyes_SGC:Logit迴歸目標函式是最小化後驗概率,Logit迴歸可以用於預測事件發生概率的大小,SVM目標是結構風險最小化,SVM可以有效避免模型過擬合。

80.輸入圖片大小為200×200,依次經過一層卷積(kernel size 5×5,padding 1,stride 2),pooling(kernel size 3×3,padding 0,stride 1),又一層卷積(kernel size 3×3,padding 1,stride 1)之後,輸出特徵圖大小為:()

正確答案:97

@BlackEyes_SGC:計算尺寸不被整除只在GoogLeNet中遇到過。卷積向下取整,池化向上取整。

本題 (200-5+2*1)/2+1 為99.5,取99
(99-3)/1+1 為97
(97-3+2*1)/1+1 為97

研究過網路的話看到stride為1的時候,當kernel為 3 padding為1或者kernel為5 padding為2 一看就是卷積前後尺寸不變。計算GoogLeNet全過程的尺寸也一樣。

81.影響聚類演算法結果的主要因素有(BCD )
A.已知類別的樣本質量;
B.分類準則;
C.特徵選取;
D.模式相似性測度

82.模式識別中,馬式距離較之於歐式距離的優點是(CD)
A. 平移不變性;
B. 旋轉不變性;
C. 尺度不變性;
D. 考慮了模式的分佈

83.影響基本K-均值演算法的主要因素有(ABD)
A. 樣本輸入順序;
B. 模式相似性測度;
C. 聚類準則;
D. 初始類中心的選取

84.在統計模式分類問題中,當先驗概率未知時,可以使用(BD)
A. 最小損失準則;
B. 最小最大損失準則;
C. 最小誤判概率準則;
D. N-P判決

85.如果以特徵向量的相關係數作為模式相似性測度,則影響聚類演算法結果的主要因素有(BC)
A. 已知類別樣本質量;
B. 分類準則;
C. 特徵選取;
D. 量綱

86.歐式距離具有(AB );馬式距離具有(ABCD )。
A. 平移不變性;
B. 旋轉不變性;
C. 尺度縮放不變性;
D. 不受量綱影響的特性

87.你有哪些Deep Learning(RNN,CNN)調參的經驗?

答案解析,來自知乎

88.簡單說說RNN的原理。

我們升學到高三準備高考時,此時的知識是由高二及高二之前所學的知識加上高三所學的知識合成得來,即我們的知識是由前序鋪墊,是有記憶的,好比當電影字幕上出現:“我是”時,你會很自然的聯想到:“我是中國人”。


89.什麼是RNN?

@一隻鳥的天空,本題解析來源:

迴圈神經網路(RNN, Recurrent Neural Networks)介紹

90.RNN是怎麼從單層網路一步一步構造的的?

@何之源,本題解析來源:

完全圖解RNN、RNN變體、Seq2Seq、Attention機制

101.深度學習(CNN RNN Attention)解決大規模文字分類問題。

用深度學習(CNN RNN Attention)解決大規模文字分類問題 - 綜述和實踐

102.如何解決RNN梯度爆炸和彌散的問題的?

深度學習與自然語言處理(7)_斯坦福cs224d 語言模型,RNN,LSTM與GRU

103.如何提高深度學習的效能?

機器學習系列(10)_如何提高深度學習(和機器學習)的效能

104.RNN、LSTM、GRU區別?

@我愛大泡泡,本題解析來源:

面試筆試整理3:深度學習機器學習面試問題準備(必會)

105.當機器學習效能遭遇瓶頸時,你會如何優化的?

可以從這4個方面進行嘗試:基於資料、藉助演算法、用演算法調參、藉助模型融合。當然能談多細多深入就看你的經驗心得了。

這裡有一份參考清單:機器學習系列(20)_機器學習效能改善備忘單

106.做過什麼樣的機器學習專案?比如如何從零構建一個推薦系統?

推薦系統的公開課http://www.julyedu.com/video/play/18/148,另,再推薦一個課程:機器學習專案班 [10次純專案講解,100%純實戰](https://www.julyedu.com/course/getDetail/48)。

107.什麼樣的資料集不適合用深度學習?

@抽象猴,來源:

知乎解答

108.廣義線性模型是怎被應用在深度學習中?

@許韓,來源:

知乎解答

109.準備機器學習面試應該瞭解哪些理論知識?


知乎解答

110.標準化與歸一化的區別?

簡單來說,標準化是依照特徵矩陣的列處理資料,其通過求z-score的方法,將樣本的特徵值轉換到同一量綱下。歸一化是依照特徵矩陣的行處理資料,其目的在於樣本向量在點乘運算或其他核函式計算相似性時,擁有統一的標準,也就是說都轉化為“單位向量”。規則為L2的歸一化公式如下:

特徵向量的缺失值處理:

1.缺失值較多.直接將該特徵捨棄掉,否則可能反倒會帶入較大的noise,對結果造成不良影響。
2.缺失值較少,其餘的特徵缺失值都在10%以內,我們可以採取很多的方式來處理:

1) 把NaN直接作為一個特徵,假設用0表示;
2) 用均值填充;
3) 用隨機森林等演算法預測填充

111.隨機森林如何處理缺失值。

方法一(na.roughfix)簡單粗暴,對於訓練集,同一個class下的資料,如果是分類變數缺失,用眾數補上,如果是連續型變數缺失,用中位數補。
方法二(rfImpute)這個方法計算量大,至於比方法一好壞?不好判斷。先用na.roughfix補上缺失值,然後構建森林並計算proximity matrix,再回頭看缺失值,如果是分類變數,則用沒有陣進行加權平均的方法補缺失值。然後迭代4-6次,這個補缺失值的思想和KNN有些類似1缺失的觀測例項的proximity中的權重進行投票。如果是連續型變數,則用proximity矩2。

112.隨機森林如何評估特徵重要性。

衡量變數重要性的方法有兩種,Decrease GINI 和 Decrease Accuracy:
1) Decrease GINI: 對於迴歸問題,直接使用argmax(VarVarLeftVarRight)作為評判標準,即當前節點訓練集的方差Var減去左節點的方差VarLeft和右節點的方差VarRight。
2) Decrease Accuracy:對於一棵樹Tb(x),我們用OOB樣本可以得到測試誤差1;然後隨機改變OOB樣本的第j列:保持其他列不變,對第j列進行隨機的上下置換,得到誤差2。至此,我們可以用誤差1-誤差2來刻畫變數j的重要性。基本思想就是,如果一個變數j足夠重要,那麼改變它會極大的增加測試誤差;反之,如果改變它測試誤差沒有增大,則說明該變數不是那麼的重要。

113.優化Kmeans。

使用Kd樹或者Ball Tree
將所有的觀測例項構建成一顆kd樹,之前每個聚類中心都是需要和每個觀測點做依次距離計算,現在這些聚類中心根據kd樹只需要計算附近的一個區域性區域即可。

114.KMeans初始類簇中心點的選取。

K-means++演算法選擇初始seeds的基本思想就是:初始的聚類中心之間的相互距離要儘可能的遠。

1.從輸入的資料點集合中隨機選擇一個點作為第一個聚類中心
2.對於資料集中的每一個點x,計算它與最近聚類中心(指已選擇的聚類中心)的距離D(x)
3.選擇一個新的資料點作為新的聚類中心,選擇的原則是:D(x)較大的點,被選取作為聚類中心的概率較大
4.重複2和3直到k個聚類中心被選出來
5.利用這k個初始的聚類中心來執行標準的k-means演算法

115.解釋對偶的概念。

一個優化問題可以從兩個角度進行考察,一個是primal 問題,一個是dual 問題,就是對偶問題,一般情況下對偶問題給出主問題最優值的下界,在強對偶性成立的情況下由對偶問題可以得到主問題的最優下界,對偶問題是凸優化問題,可以進行較好的求解,SVM中就是將Primal問題轉換為dual問題進行求解,從而進一步引入核函式的思想。

116.如何進行特徵選擇?

特徵選擇是一個重要的資料預處理過程,主要有兩個原因:一是減少特徵數量、降維,使模型泛化能力更強,減少過擬合;二是增強對特徵和特徵值之間的理解。

常見的特徵選擇方式:
1.去除方差較小的特徵。
2.正則化。1正則化能夠生成稀疏的模型。L2正則化的表現更加穩定,由於有用的特徵往往對應係數非零。
3.隨機森林,對於分類問題,通常採用基尼不純度或者資訊增益,對於迴歸問題,通常採用的是方差或者最小二乘擬合。一般不需要feature engineering、調參等繁瑣的步驟。它的兩個主要問題,1是重要的特徵有可能得分很低(關聯特徵問題),2是這種方法對特徵變數類別多的特徵越有利(偏向問題)。
4.穩定性選擇。是一種基於二次抽樣和選擇演算法相結合較新的方法,選擇演算法可以是迴歸、SVM或其他類似的方法。它的主要思想是在不同的資料子集和特徵子集上執行特徵選擇演算法,不斷的重複,最終彙總特徵選擇結果,比如可以統計某個特徵被認為是重要特徵的頻率(被選為重要特徵的次數除以它所在的子集被測試的次數)。理想情況下,重要特徵的得分會接近100%。稍微弱一點的特徵得分會是非0的數,而最無用的特徵得分將會接近於0。

117.資料預處理。

1.缺失值,填充缺失值fillna:
i. 離散:None,
ii. 連續:均值。
iii. 缺失值太多,則直接去除該列
2.連續值:離散化。有的模型(如決策樹)需要離散值
3.對定量特徵二值化。核心在於設定一個閾值,大於閾值的賦值為1,小於等於閾值的賦值為0。如影象操作
4.皮爾遜相關係數,去除高度相關的列

118.簡單說說特徵工程。


119.你知道有哪些資料處理和特徵工程的處理?


120.請對比下Sigmoid、Tanh、ReLu這三個啟用函式?


121.Sigmoid、Tanh、ReLu這三個啟用函式有什麼缺點或不足,有沒改進的啟用函式?

@我愛大泡泡,來源:

面試筆試整理3:深度學習機器學習面試問題準備(必會)

122.怎麼理解決策樹、xgboost能處理缺失值?而有的模型(svm)對缺失值比較敏感?

知乎解答

123.為什麼引入非線性激勵函式?

@Begin Again,來源:

知乎解答

如果不用激勵函式(其實相當於激勵函式是f(x) = x),在這種情況下你每一層輸出都是上層輸入的線性函式,很容易驗證,無論你神經網路有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當,這種情況就是最原始的感知機(Perceptron)了。

正因為上面的原因,我們決定引入非線性函式作為激勵函式,這樣深層神經網路就有意義了(不再是輸入的線性組合,可以逼近任意函式)。最早的想法是Sigmoid函式或者Tanh函式,輸出有界,很容易充當下一層輸入(以及一些人的生物解釋)。

124.請問人工神經網路中為什麼ReLu要好過於Tanh和Sigmoid function?

@Begin Again,來源:

知乎解答

125.為什麼LSTM模型中既存在Sigmoid又存在Tanh兩種啟用函式?

本題解析來源:知乎解答

@beanfrog:二者目的不一樣:sigmoid 用在了各種gate上,產生0~1之間的值,這個一般只有sigmoid最直接了。tanh 用在了狀態和輸出上,是對資料的處理,這個用其他啟用函式或許也可以。

@hhhh:另可參見A Critical Review of Recurrent Neural Networks for Sequence Learning的section4.1,說了那兩個tanh都可以替換成別的。

126.衡量分類器的好壞。

@我愛大泡泡,來源:

答案解析

這裡首先要知道TP、FN(真的判成假的)、FP(假的判成真)、TN四種(可以畫一個表格)。

幾種常用的指標:

精度precision = TP/(TP+FP) = TP/~P (~p為預測為真的數量)
召回率 recall = TP/(TP+FN) = TP/ P
F1值: 2/F1 = 1/recall + 1/precision
ROC曲線:ROC空間是一個以偽陽性率(FPR,false positive rate)為X軸,真陽性率(TPR, true positive rate)為Y軸的二維座標系所代表的平面。其中真陽率TPR = TP / P = recall, 偽陽率FPR = FP / N

127.機器學習和統計裡面的auc的物理意義是什麼?

詳情參見機器學習和統計裡面的auc怎麼理解?

128.觀察增益gain, alpha和gamma越大,增益越小?

@AntZ:XGBoost尋找分割點的標準是最大化gain. 考慮傳統的列舉每個特徵的所有可能分割點的貪心法效率太低,XGBoost實現了一種近似的演算法。大致的思想是根據百分位法列舉幾個可能成為分割點的候選者,然後從候選者中計算Gain按最大值找出最佳的分割點。它的計算公式分為四項, 可以由正則化項引數調整(lamda為葉子權重平方和的係數, gama為葉子數量):


第一項是假設分割的左孩子的權重分數, 第二項為右孩子, 第三項為不分割總體分數, 最後一項為引入一個節點的複雜度損失。

由公式可知, gama越大gain越小, lamda越大, gain可能小也可能大。

原問題是alpha而不是lambda, 這裡paper上沒有提到, XGBoost實現上有這個引數. 上面是我從paper上理解的答案,下面是搜尋到的:

如何對XGBoost模型進行引數調優

129.什麼造成梯度消失問題? 推導一下。
  
@許韓,來源:

神經網路的訓練中,通過改變神經元的權重,使網路的輸出值儘可能逼近標籤以降低誤差值,訓練普遍使用BP演算法,核心思想是,計算出輸出與標籤間的損失函式值,然後計算其相對於每個神經元的梯度,進行權值的迭代。

梯度消失會造成權值更新緩慢,模型訓練難度增加。造成梯度消失的一個原因是,許多啟用函式將輸出值擠壓在很小的區間內,在啟用函式兩端較大範圍的定義域內梯度為0,造成學習停止。


130.什麼是梯度消失和梯度爆炸?

@寒小陽,反向傳播中鏈式法則帶來的連乘,如果有數很小趨於0,結果就會特別小(梯度消失);如果數都比較大,可能結果會很大(梯度爆炸)。

@單車

神經網路訓練中的梯度消失與梯度爆炸

131.如何解決梯度消失和梯度膨脹?

(1)梯度消失:
  根據鏈式法則,如果每一層神經元對上一層的輸出的偏導乘上權重結果都小於1的話,那麼即使這個結果是0.99,在經過足夠多層傳播之後,誤差對輸入層的偏導會趨於0,可以採用ReLU啟用函式有效的解決梯度消失的情況。
(2)梯度膨脹
  根據鏈式法則,如果每一層神經元對上一層的輸出的偏導乘上權重結果都大於1的話,在經過足夠多層傳播之後,誤差對輸入層的偏導會趨於無窮大,可以通過啟用函式來解決。

132.推導下反向傳播Backpropagation。

@我愛大泡泡,來源:

推導過程

133.SVD和PCA。

PCA的理念是使得資料投影后的方差最大,找到這樣一個投影向量,滿足方差最大的條件即可。而經過了去除均值的操作之後,就可以用SVD分解來求解這樣一個投影向量,選擇特徵值最大的方向。

134.資料不平衡問題。

這主要是由於資料分佈不平衡造成的。解決方法如下:

1)取樣,對小樣本加噪聲取樣,對大樣本進行下采樣
2)進行特殊的加權,如在Adaboost中或者SVM中
3)採用對不平衡資料集不敏感的演算法
4)改變評價標準:用AUC/ROC來進行評價
5)採用Bagging/Boosting/Ensemble等方法
6)考慮資料的先驗分佈

135.簡述神經網路的發展。

MP模型+sgn—->單層感知機(只能線性)+sgn— Minsky 低谷 —>多層感知機+BP+Sigmoid— (低谷) —>深度學習+Pretraining+ReLU/Sigmoid

136.深度學習常用方法。

@SmallisBig,來源:

機器學習崗位面試問題彙總 之 深度學習

137.神經網路模型(Neural Network)因受人類大腦的啟發而得名。神經網路由許多神經元(Neuron)組成,每個神經元接受一個輸入,對輸入進行處理後給出一個輸出。請問下列關於神經元的描述中,哪一項是正確的?(E)

A.每個神經元只有一個輸入和一個輸出
B.每個神經元有多個輸入和一個輸出
C.每個神經元有一個輸入和多個輸出
D.每個神經元有多個輸入和多個輸出
E.上述都正確

答案:(E)
每個神經元可以有一個或多個輸入,和一個或多個輸出

138.下圖是一個神經元的數學表示,


139.在一個神經網路中,知道每一個神經元的權重和偏差是最重要的一步。如果知道了神經元準確的權重和偏差,便可以近似任何函式,但怎麼獲知每個神經的權重和偏移呢?(C)

A. 搜尋每個可能的權重和偏差組合,直到得到最佳值
B. 賦予一個初始值,然後檢查跟最佳值的差值,不斷迭代調整權重
C. 隨機賦值,聽天由命
D. 以上都不正確的

答案:(C)
選項C是對梯度下降的描述。

140.梯度下降演算法的正確步驟是什麼?( D)

1.計算預測值和真實值之間的誤差
2.重複迭代,直至得到網路權重的最佳值
3.把輸入傳入網路,得到輸出值
4.用隨機值初始化權重和偏差
5.對每一個產生誤差的神經元,調整相應的(權重)值以減小誤差

A. 1, 2, 3, 4, 5
B. 5, 4, 3, 2, 1
C. 3, 2, 1, 5, 4
D. 4, 3, 1, 5, 2

答案:(D)

141.已知:
- 大腦是有很多個叫做神經元的東西構成,神經網路是對大腦的簡單的數學表達。
- 每一個神經元都有輸入、處理函式和輸出。
- 神經元組合起來形成了網路,可以擬合任何函式。
- 為了得到最佳的神經網路,我們用梯度下降方法不斷更新模型
給定上述關於神經網路的描述,什麼情況下神經網路模型被稱為深度學習模型?

A. 加入更多層,使神經網路的深度增加
B. 有維度更高的資料
C. 當這是一個圖形識別的問題時
D. 以上都不正確

答案:(A)
更多層意味著網路更深。沒有嚴格的定義多少層的模型才叫深度模型,目前如果有超過2層的隱層,那麼也可以及叫做深度模型。

142.卷積神經網路可以對一個輸入進行多種變換(旋轉、平移、縮放),這個表述正確嗎?

答案:錯誤
把資料傳入神經網路之前需要做一系列資料預處理(也就是旋轉、平移、縮放)工作,神經網路本身不能完成這些變換。

143.下面哪項操作能實現跟神經網路中Dropout的類似效果?(B)

A. Boosting
B. Bagging
C. Stacking
D. Mapping
  
答案:B
Dropout可以認為是一種極端的Bagging,每一個模型都在單獨的資料上訓練,同時,通過和其他模型對應引數的共享,從而實現模型引數的高度正則化。

144.下列哪一項在神經網路中引入了非線性?(B)

A. 隨機梯度下降
B. 修正線性單元(ReLU)
C. 卷積函式
D .以上都不正確

答案:(B)
修正線性單元是非線性的啟用函式。

145.在訓練神經網路時,損失函式(loss)在最初的幾個epochs時沒有下降,可能的原因是?(A)

A. 學習率(learning rate)太低
B. 正則引數太高
C. 陷入區域性最小值
D. 以上都有可能

答案:(A)

146.下列哪項關於模型能力(model capacity)的描述是正確的?(指神經網路模型能擬合複雜函式的能力)(A)

A. 隱藏層層數增加,模型能力增加
B. Dropout的比例增加,模型能力增加
C. 學習率增加,模型能力增加
D. 都不正確

答案:(A)

147.如果增加多層感知機(Multilayer Perceptron)的隱藏層層數,分類誤差便會減小。這種陳述正確還是錯誤?

答案:錯誤
並不總是正確。過擬合可能會導致錯誤增加。

148.構建一個神經網路,將前一層的輸出和它自身作為輸入。下列哪一種架構有反饋連線?(A)

A. 迴圈神經網路
B. 卷積神經網路
C. 限制玻爾茲曼機
D. 都不是

答案:(A)

149.下列哪一項在神經網路中引入了非線性?在感知機中(Perceptron)的任務順序是什麼?

1.隨機初始化感知機的權重
2.去到資料集的下一批(batch)
3.如果預測值和輸出不一致,則調整權重
4.對一個輸入樣本,計算輸出值

答案:1 - 4 - 3 - 2

150.假設你需要調整引數來最小化代價函式(cost function),可以使用下列哪項技術?(D)

A. 窮舉搜尋
B. 隨機搜尋
C. Bayesian優化
D. 以上任意一種

答案:(D)

151.在下面哪種情況下,一階梯度下降不一定正確工作(可能會卡住)?(B)


答案:(B)

這是鞍點(Saddle Point)的梯度下降的經典例子。另,本題來源於:題目來源

152.下圖顯示了訓練過的3層卷積神經網路準確度,與引數數量(特徵核的數量)的關係。


從圖中趨勢可見,如果增加神經網路的寬度,精確度會增加到一個特定閾值後,便開始降低。造成這一現象的可能原因是什麼?(C)

A. 即使增加捲積核的數量,只有少部分的核會被用作預測
B. 當卷積核數量增加時,神經網路的預測能力(Power)會降低
C. 當卷積核數量增加時,它們之間的相關性增加(correlate),導致過擬合
D. 以上都不正確

答案:(C)
如C選項指出的那樣,可能的原因是核之間的相關性。

153.假設我們有一個如下圖所示的隱藏層。隱藏層在這個網路中起到了一定的降維作用。假如現在我們用另