深度學習算法工程師面試,記錄一道較為基礎的筆試題:
輸入:目标向量Y(N*1),矩陣X(N*K);輸出:使用随機梯度下降求得的邏輯回歸系數W(K+1)。
分析:該問題需要先列出邏輯回歸的函數解析式,再選擇損失函數,最後算出損失函數關于更新參數的導數,即可開始随機梯度下降。
作者:Algernon
位址:https://www.zhihu.com/people/thisiszhou
01
邏輯回歸解析式
其中
02
Loss函數
由于邏輯回歸的輸出值在[0, 1]之間,并且邏輯回歸雖然名字為回歸,但實際是分類任務,是以損失函數使用交叉熵。其中交叉熵函數解析式為:
y為label,y‘為預測值,N為y的長度。
03
關于更新參數的導數
更新參數有
,b,Loss的解析式為:
為了便于求導,我們換一種寫法,其中sum函數相當于給後面的列向量乘一個都為1的行向量S:
其中
為矩陣乘法,CE和
都是逐元素函數,則:
其中
(其中
為逐元素乘法,在最後的計算中,逐元素乘法優先級比矩陣乘法優先級高)
04
參數更新(梯度下降)
其中
為學習率。
05
代碼實作
先封裝一下涉及到的函數:
初始化參數以及輸入:
前向函數:
反向求導:
grad_w數值:
使用tensorflow進行驗證:
grad數值:
可見我們自己計算的導數沒有問題。 使用随機梯度下降進行參數更新。随機梯度下降,一般會随機選擇batch,這裡為了簡便,直接将所有向量進行BP: 訓練過程:
輸出:
之後看看forward輸出:
y_label:
06
總結
BP過程相對基礎,但确實不是很簡單。例如,此題loss關于w的導數,是典型的标量關于向量求導。關于向量、矩陣的求導,推薦以下文章: https://zhuanlan.zhihu.com/p/24709748
本文目的在于學術交流,并不代表本公衆号贊同其觀點或對其内容真實性負責,版權歸原作者所有,如有侵權請告知删除。
直播預告
左劃檢視更多
曆史文章推薦
-
【CVPR 2020 Tutorial】如何寫好論文和評審(概述)
- 如何撰寫高水準的博士論文?超全論文指導!
- 北大讀博手記:怎樣完成自己的博士生涯?非常具有指導性!
-
太牛逼了!一位中國博士把整個CNN都給可視化了,每個細節看的清清楚楚!
-
Nature發表牛津博士建議:我希望在讀博士之初時就能知道的20件事
-
沈向洋、華剛:讀科研論文的三個層次、四個階段與十個問題
-
如何看待2021年秋招算法崗灰飛煙滅?
-
獨家解讀 | ExprGAN:基于強度可控的表情編輯
-
獨家解讀 | 矩陣視角下的BP算法
-
獨家解讀 | Capsule Network深度解讀
-
獨家解讀 | Fisher資訊度量下的對抗攻擊
-
論文解讀 | 知識圖譜最新研究綜述
-
你的畢業論文過了嗎?《如何撰寫畢業論文?》
-
卡爾曼濾波系列——經典卡爾曼濾波推導
分享、點贊、在看,給個三連擊呗!