天天看點

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

深度學習算法工程師面試,記錄一道較為基礎的筆試題:

輸入:目标向量Y(N*1),矩陣X(N*K);輸出:使用随機梯度下降求得的邏輯回歸系數W(K+1)。

分析:該問題需要先列出邏輯回歸的函數解析式,再選擇損失函數,最後算出損失函數關于更新參數的導數,即可開始随機梯度下降。

作者:Algernon

位址:https://www.zhihu.com/people/thisiszhou

01

邏輯回歸解析式

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

其中

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

02

Loss函數

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

由于邏輯回歸的輸出值在[0, 1]之間,并且邏輯回歸雖然名字為回歸,但實際是分類任務,是以損失函數使用交叉熵。其中交叉熵函數解析式為:

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

y為label,y‘為預測值,N為y的長度。

03

關于更新參數的導數

更新參數有 

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

 ,b,Loss的解析式為:

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

為了便于求導,我們換一種寫法,其中sum函數相當于給後面的列向量乘一個都為1的行向量S:

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

其中 

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

 為矩陣乘法,CE和 

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

 都是逐元素函數,則:

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...
圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

其中

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

(其中 

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

 為逐元素乘法,在最後的計算中,逐元素乘法優先級比矩陣乘法優先級高)

04

參數更新(梯度下降)

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

其中 

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

 為學習率。

05

代碼實作

先封裝一下涉及到的函數:

初始化參數以及輸入:

前向函數:

反向求導:

grad_w數值:

使用tensorflow進行驗證:

grad數值:

可見我們自己計算的導數沒有問題。 使用随機梯度下降進行參數更新。随機梯度下降,一般會随機選擇batch,這裡為了簡便,直接将所有向量進行BP: 訓練過程:

輸出:

之後看看forward輸出:

y_label:

06

總結

BP過程相對基礎,但确實不是很簡單。例如,此題loss關于w的導數,是典型的标量關于向量求導。關于向量、矩陣的求導,推薦以下文章: https://zhuanlan.zhihu.com/p/24709748

本文目的在于學術交流,并不代表本公衆号贊同其觀點或對其内容真實性負責,版權歸原作者所有,如有侵權請告知删除。

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

直播預告

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

左劃檢視更多

圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...
圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...
圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...
圖像水準梯度和豎直梯度代碼_【強基固本】基礎算法:使用numpy實作邏輯回歸随機梯度下降(附代碼)...

曆史文章推薦

  • 【CVPR 2020 Tutorial】如何寫好論文和評審(概述)

  • 如何撰寫高水準的博士論文?超全論文指導!
  • 北大讀博手記:怎樣完成自己的博士生涯?非常具有指導性!
  • 太牛逼了!一位中國博士把整個CNN都給可視化了,每個細節看的清清楚楚!

  • Nature發表牛津博士建議:我希望在讀博士之初時就能知道的20件事

  • 沈向洋、華剛:讀科研論文的三個層次、四個階段與十個問題

  • 如何看待2021年秋招算法崗灰飛煙滅?

  • 獨家解讀 | ExprGAN:基于強度可控的表情編輯

  • 獨家解讀 | 矩陣視角下的BP算法

  • 獨家解讀 | Capsule Network深度解讀

  • 獨家解讀 | Fisher資訊度量下的對抗攻擊

  • 論文解讀 | 知識圖譜最新研究綜述

  • 你的畢業論文過了嗎?《如何撰寫畢業論文?》

  • 卡爾曼濾波系列——經典卡爾曼濾波推導

分享、點贊、在看,給個三連擊呗!