1. 程式人生 > >機器學習影象識別資料探勘面試中 不會的&答錯的&答得不好的 問題Mark1

機器學習影象識別資料探勘面試中 不會的&答錯的&答得不好的 問題Mark1

博主非CS傳統工科碩士一枚,碩士期間專案上和深度學習沾沾邊。目前投的崗位差不多都是影象識別或者機器學習或者資料探勘方向,幾個面試下來,差不多都是沒有下文了,怪不得被人只恨自己沒有準備充分,在這裡記錄一下面試中遇到的問題和麵完之後自己查閱相關資料後的解決辦法,以及引伸相似的可能會被問到的問題。希望大家都能找到心儀的實習和工作O(∩_∩)O

歡迎補充和指正!轉載請註明出處。

1Q: 如何判斷單鏈表是否有環?
神馬事有環的單鏈表。。。長這樣:
這裡寫圖片描述
A1:設定兩個指標p, q,其中p每次向前移動一步,q每次向前移動兩步。那麼如果單鏈表存在環,則p和q相遇;否則q將首先遇到null。
Why:只要兩個指標進入環後,快指標的總會成功把慢指標套圈。
證明:設環長為L,兩個指標都進入環後,快指標比慢指標逆時針位置提前N(N=慢指標已走長度%L)步,由於N小於L,在環中也可看成,慢指標位置上比快指標提前(L-N)步,由於快指標比慢指標速度快1,則(L-N)步後,兩指標必定會相遇。
ext_Q1: 求環的長度
從第一次相遇到第二次相遇,慢指標走過的路程長則為L
ext_Q2: 如何找到環的入口?
第一次相遇時,slow走的長度 S = LenA + x;
第一次相遇時,fast走的長度 2S = LenA + n*L + x;
所以可以知道,LenA + x = n*L;  LenA = n*L -x;
所以可以在第一相遇的點和頭結點出設兩個指標,同步出發,相遇的點即為環的入口。
ext_Q3: 求連結串列的長度?
起點到環入口長度加環長
ext_Q4: 如果判斷兩個單鏈表有交?第一個交點在哪裡?
把兩個連結串列尾相連可組成一個有環的連結串列,確定環的入後。

2Q: 什麼是SIFT演算法?如何比較兩幅影象的相似度
A2: Scale-invariant feature transform, 尺度不變特徵變換。它在不同尺度空間上尋找極值點,獲得其區域性性特徵,其特徵具有位置、尺度、旋轉不變性。
匹配方法:關鍵點描述子的歐式距離來作為兩幅影象的關鍵點的相似性度量。如果最近距離除以次近距離小於某個閾值,則判定為一對匹配點。

3Q: 隨機森林的隨機性體現在哪?
A3:利用多個決策樹取預測預測結果的眾數作為最後的分類結果。

  1. 資料的隨機性選取
    通過從原始的資料集中採取有放回抽樣,構造子資料集,子資料集的資料量是和原始資料集相同。不同子資料集的元素可以重複,同一個子資料集中的元素也可以重複。利用子資料集來構建子決策樹。
  2. 待選特徵的隨機選取。
    隨機森林中的子樹的每一個分裂過程並未用到所有的待選特徵,而是從所有的待選特徵中隨機選取一定的特徵,之後再在隨機選取的特徵中選取最優的分裂特徵分裂。

4Q:現有的流行的網路及其特點?
A4:對於這個問題我打算之後再做一個詳細的彙總

1.AlexNet 包括五層卷積層和三層全連線層,其中一個完整的卷積層可能包括一層convolution,一層Rectified Linear Units,一層max-pooling,一層normalization。
2. vgg 使用了更多的卷積層,嚴格使用3×3卷積,步長和padding都為1,還有2×2的步長為2的maxpooling層。
3. GoogLenet

大大加深了網路的層數,Inception Module採用不同尺度的卷積核。去掉了最後的full-connected layer,用globalpooling代替大大減小了引數。
4. Resnet 引入了殘差模組,解決了層次比較深的時候無法訓練的問題(由於網路太深會導致梯度彌散/爆炸無法收斂)。

5Q:Keras 中切換backen的方法,keras是怎麼做到支援theano和tensorflow?
A5:修改~/.keras/keras.json的backen。
6Q:Keras中fit_generator的用法和核心?
由於預設情況下使用fit函式通常會把資料一次性load到GPU,造成gpu的負荷過大或者視訊記憶體不足,所以使用fit_generator可實現分批load batch。而使用fit_generator則需要定義generator生成“批”,可使用python 裡帶的yelid函式斷點生成輸出。keras也支援隨機augmentation訓練的資料。

Reference

回答的參考連結如下:

A1: 連結串列問題

A2:SIFT演算法介紹

A3:隨機森林

A4:卷積神經網路模型

A6:GPU的合理使用