20131013百度北京深度學習算法研發工程師筆試題

閒話少敘,直接上乾貨。

百度筆試試卷的一貫結構,三道簡答題10‘*3=30’,三道算法與程序設計題15‘*3=45’,兩道程序設計題二選一25‘。

一、簡答題

1、目前深度神經網絡有哪些成功的應用,簡述其適用原因。

2、不同進程之間進行通信的方式有哪些?(至少列出三種)

管道(pipe)、命名管道(named pipe)、信號(signal)、信號量(semaphore)、套接字(socket)、消息隊列(message queue)、共享內存和內存映射(mapped memeory)。

3、有N個樣本,每個樣本都是D維的,使用KNN分類算法,採用歐式距離,(1)其時間複雜度爲多少?(2)當N很大時,可以使用什麼方法進行優化?(3)K的值對預測的方差和偏差的影響是什麼?

現在看來N應該是訓練集的樣本數,時間複雜度是指的分類一個樣本需要的時間。

(1)KNN分類的的思想是,計算待分類樣本與訓練集中所有樣本的距離,找出距離最小的k個,計算那個標籤出現的次數最多,將出現最多的標籤作爲樣本的標籤。計算距離的複雜度是O(M*D),排序最快得是O(M*log(M)),找出現最多的標籤的複雜度是K。因此總的時間複雜度是O(N*D+N*log(N)+K))。

(2)KNN比較費時的步驟在於要計算與訓練集中每一個樣本的距離,爲了減少計算量,可以每次從訓練集中隨機地選取一部分樣本進行,作爲分類的依據。假設每次取T個點,則時間複雜度變爲O((T*D+T*log(T)+K))。當N很大時,選取的T可以遠遠小於N。

(3)記樣本的真實標籤爲Y,分類結果記爲X,X是隨機變量,可以取訓練集中所有出現的類標籤。

如果K=N,則任意Y,X|Y=訓練集中包含樣本數最多的類的標籤。

如果K=1,則分類結果是離待分類樣本最近的訓練集中的樣本的類的標籤。

現在,仍然沒有梳理出這裏的方差和偏差指的是什麼?

二、算法與程序設計題

1、給定數組A={a0,a1,a2,...,an}(n可變),請輸出所有的組合。

思路是,首先將從小到大排序,記包含k個元素組合的集合爲G(k)。

如果知道G(k-1),則採用以下方式生成G(k):{s in G(k)} U{t,t in A且t 大於s中的最大值}。

2、數組A中相鄰兩個數的差的絕對值爲1,如{1,2,3,4,3,2,3,4,5,4,5,6,7},給定某一個數字t,求其在數組中的位置。

思路是,用一指針p遍歷數組,首先計算當前位置與t的絕對值s,然後移動到p+s處,比較p+s指的元素與t是否相等,若相等,輸出當前下標,若不相等,重複計算絕對值、移動,比較步驟。

3、布豐投針問題。平面上有一組距離爲d的平行線,向其上任意地投一根長爲l(l<d)的針,求該針與平行線相交的概率。

答案爲2*l/(pi*d).

三、系統設計題

1、神經網絡模型,要求計算1、2、3層的兩個偏導數。

2、KNN聚類算法,

(1)請寫出目標優化函數。

sum_{i=1到K} sum_{x in C_i} dist(x,c_i)

其中C_i表示屬於第i簇的點的集合,c_i表示C_i的質心。

(2)常用的終止條件有哪些?

質心不再發生變化,或者只有1%的點屬於的簇發生了變化。

(3)結合KNN,描述EM算法的基本原理和步驟。

(4)使用MPI 或MapReduce,如何進行並行。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章