2020計算機視覺(cv)算法崗面試題目及答案彙總(一)

2019計算機視覺(cv)算法崗面試題目及答案彙總(一)

今日頭條:

  1. 輸入爲 LLcL*L*c,卷積核爲 kkk*k,還有步長 ss 和 填充 pp,求輸出尺寸?求操作的 FLOPs?

答:輸出尺寸爲 L=(Lk+2p)/s+1L^{'} = (L-k+2*p)/s + 1FLOPs=cLLckkFLOPs=c*L^{'}*L^{'}*c^{'}*k*k

  1. 過擬合要怎麼解決?

通常解決過擬合的方法有:Dropout(隨機失活)、Weight Decay(權重衰減)、減少模型參數、Early Stop、Regularization(正則化,包括L1,L2L_1,L_2正則化等)、Augmentation(數據增強)、合成數據、Batch Normalization(批次標準化)、Bagging 和 Boosting(模型融合)等;

  1. 幾個激活函數都有什麼優缺點(Sigmoid, Tanh, Relu)?

Sigmoid:

  1. 定義式:f(x)=11+exf(x)=\frac{1}{1+e^{-x}}
  2. 函數曲線:
    在這裏插入圖片描述
  3. 優點:
    3.1 輸出爲 0 到 1 之間的連續實值,此輸出範圍和概率範圍一致,因此可以用概率的方式解釋輸出;
    3.2 將線性函數轉變爲非線性函數;
  4. 缺點:
    4.1 冪運算相對來講比較耗時;
    4.2 輸出均值爲非 0;
    4.3 容易出現梯度消失的問題;

Tanh:

  1. 定義式:f(x)=sinh(x)cosh(x)f(x)=\frac{sinh(x)}{cosh(x)}
  2. 函數曲線:
    在這裏插入圖片描述
  3. 優點:
    3.1 Tanh 函數的導數比 Sigmoid 函數導數值更大、梯度變化更快,在訓練過程中收斂速度更快;
    3.2 使得輸出均值爲 0,可以提高訓練的效率;
    3.3 將線性函數轉變爲非線性函數;
  4. 缺點:
    4.1 冪運算相對來講比較耗時;
    4.2 容易出現梯度消失;

ReLU:

  1. 定義式:f(x)=max(0,x)f(x)=max(0,x)
  2. 函數曲線:
    在這裏插入圖片描述
  3. 優點:
    3.1 解決了梯度消失的問題;
    3.2 計算速度和收斂速度非常快;
  4. 缺點:
    4.1 低維特徵向高維轉換時會部分丟失;
    4.2 均值爲非零;
  1. 概率題:x,yx,y 服從 010-1 均勻分佈,求 x+y<1x+y<1 的概率?x,y,zx, y, z 服從 010-1 均勻分佈,求x+y+z<1x+y+z<1 的概率?

P(x+y<1)=1/2P(x+y<1)=1/2
P(x+y+z<1)=1/3P(x+y+z<1)=1/3

  1. Batch Normalization 的原理和作用?

將一個 batch 的數據變換到均值爲 0、方差爲 1 的正態分佈上,從而使數據分佈一致,每層的梯度不會隨着網絡結構的加深發生太大變化,從而避免發生梯度消失並且加快收斂,同時還有防止過擬合的效果;
這裏是引用

  1. 舉一個改進激活函數的例子?

h-swish 函數,是 MobileNet V3 提出的,用於改進 swish 函數在嵌入式設備計算效率低的問題;
這裏是引用
在這裏插入圖片描述

拼多多:

  1. L2正則化的特點和使用場景?

這裏是引用
L2L_2 正則化目的是限制參數過多或者過大,避免模型更加複雜,適用於數據充足的場景下防止過擬合;

  1. L1正則化損失函數如何求解?

參考這一篇:https://www.cnblogs.com/heguanyou/archive/2017/09/23/7582578.html

  1. LSTM 的結構及公式?

這裏是引用
這裏是引用

虹軟科技:

  1. Loss 優化的幾個方法?

主要有三大類:

  1. 基本梯度下降法,包括 GD,BGD,SGD;
  2. 動量優化法,包括 Momentum,NAG 等;
  3. 自適應學習率優化法,包括 Adam,AdaGrad,RMSProp 等

可以看我這一篇:各種優化器Optimizer原理:從SGD到AdamOptimizer

  1. 動量法的表達式?
  1. 標準動量優化方法(MomentumOptimizer):
    在這裏插入圖片描述
  2. 牛頓加速梯度動量優化方法(NAG, Nesterov accelerated gradient):
    在這裏插入圖片描述
  1. 隨機梯度下降相比全局梯度下降好處是什麼?
  1. 當處理大量數據時,比如SSD或者faster-rcnn等目標檢測模型,每個樣本都有大量候選框參與訓練,這時使用隨機梯度下降法能夠加快梯度的計算;
  2. 每次只隨機選擇一個樣本來更新模型參數,因此每次的學習是非常快速的,並且可以進行在線更新;
  1. 介紹 Inception-resnet v1?

並行結構、非對稱卷積、殘差; 這裏是引用

小紅書:

  1. 歸一化有哪些方式?
  1. min-max 標準化(Min-max normalization):
    1.1 公式:
    x(xmin)/(maxmin)x = (x - min)/(max - min)
    1.2 適用場景:
    適用於數據集中的場景,如果 max 和 min 不穩定,很容易使得歸一化結果不穩定;
  2. z-score 0均值標準化(zero-mean normalization):
    2.1 公式:
    x=(xu)/σx = (x - u)/σ
    2.2 適用場景:
    在分類、聚類算法中,需要使用距離來度量相似性的時候、或者使用PCA技術進行降維的時候,表現更好;

海康威視:

  1. L1、L2正則化在什麼任務上分別會優先考慮?

假設模型中有很多特徵,其中不乏相關性特徵,可以用L1消除共線性問題;
在訓練樣本足夠多的情況,然後嘗試使用L2來防止過擬合問題;

  1. 兩層神經網絡的權重都是0,bias有值,這個網絡能正常訓練嗎?

不能,因爲權重爲 0,每次傳入不同數據得到的結果相同;

網易:

  1. C++和python的區別?
  1. C++是靜態類型的,而python是動態類型的;
  2. python是一種腳本語言,是解釋執行的,不需要經過編譯;C++需要編譯後運行語言,在特定的機器上編譯後在特定的機上運行,運行效率高,安全穩定,但編譯後的程序一般是不跨平臺的;
  3. python是逐句解釋執行的,C++是先編譯成本地代碼,期間還有編譯期的類型檢查,不存在動態類型、動態檢查,並且可以進行編譯器優化;
  1. Python比C++好在哪裏?

自動能實現內存回收機制,開發效率高;

  1. python怎麼做內存回收?
  1. 當對象不再被引用指向的時候,垃圾收集器可以釋放該對象;
  2. 手動回收:gc.collect();

招銀網絡科技:

  1. 哪種激活函數能緩解梯度爆炸彌散 ?

relu、leakrelu、elu 等;

  1. Pooling是不是線性操作?

不是;

  1. Dropout介紹?

Dropout 是指在模型訓練時隨機讓網絡某些隱含層節點的權重不工作,不工作的那些節點可以暫時認爲不是網絡結構的一部分,但是它的權重得保留下來(只是暫時不更新而已),用於防止模型過擬合;

  1. 輸入是特徵向量的分類網絡,怎麼找比較重要的那些特徵?

使用 SE-Net 的 SE 模塊;

  1. yolo 介紹?

看我的這幾篇:
YOLO
YOLO9000
YOLOv3

  1. 檢測任務中解決正負樣本不均衡的方法?
  1. online hard example mining(OHEM);
  2. Focal Loss;
  3. class balanced cross-entropy;
  4. local rank,PISA,ISR;
  5. 過採樣;
  1. dropout爲什麼能解決過擬合 ?

簡單的回答是:防止參數過分依賴訓練數據,減少神經元之間複雜的共適應關係,增加參數對數據集的泛化能力;

  1. 卷積有哪些變種?

分組卷積(Group Convolution)、空洞(擴張)卷積(Dilated/Atrous Convolution)、深度可分離卷積(depthwise separable convolution)、可變形卷積網絡(Deformable Convolution)、反捲積(deconvolution)、圖卷積(Graph Convolution)和 X-卷積(PointCNN);

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