第一次接觸方向導數與梯度的概念,是在大學的高等數學課堂上,當時對於這部份內容是似懂非懂的。網絡
巧合的是,後來在參加碩士複試的時候,有位老師提問我對方向導數與梯度的理解,當時我只記得一句話:梯度是方向導數變化最大的方向。雖而後來這位老師成了個人導師,可是如今想來依然以爲慚愧,由於我對這兩個名詞徹底沒有理解。函數
後來學習到BP神經網絡,也手動推導過根據梯度降低法獲得的權值更新公式,但方向導數的定義一直是個人心結。今天終於花了時間將這個簡單的問題弄明白,特意記錄下來,以警示本身在未來的科研道路上要腳踏實地,不可浮於表面!學習
一個函數沿指定方向的變化率。spa
所以,構建方向導數須要有兩個元素:3d
1) 函數blog
2) 指定方向博客
固然,與普通函數的導數相似,方向導數也不是百分之百存在的,須要函數知足在某點處可微,才能計算出該函數在該點的方向導數。數學
至於其物理含義,這裏採用最經常使用的下山圖來表示。變量
簡單將上圖看做是一座山的模型,咱們處在山上的某一點處,須要走到山下。理論上來講,這座山的表面是能夠經過一個函數的描述的(雖然想要找到這個函數可能很難),而這個函數能夠在不一樣的方向上都肯定出一個方向導數,這就比如於若是咱們想下山,道路並非惟一的,而是能夠沿任何方向移動。區別在於有些方向可讓咱們下山速度更快,有些方向讓咱們下山速度更慢,有些方向甚至引導咱們往山頂走(也能夠理解爲下山速度時負的)。在這裏,速度的值就是方向導數的直觀理解。原理
一個函數對於其自變量分別求偏導數,這些偏導數所組成的向量就是函數的梯度。
在不少資料中能夠看到以下的梯度定義方法:
誠然,這種定義方法更加權威,可是卻不夠直觀,這也是爲何我在高等數學課堂上學習梯度概念時感受雲裏霧裏。這種定義方法只針對二元函數,因此公式中的i,j可分別表示爲函數在x和y方向上的單位向量,這樣的描述可讓咱們更好理解(由於人類大腦能夠比較輕鬆的理解三維世界的模型圖),可是一旦到了更高維度的世界,單純靠這個公式就不容易理解了。
函數在某點的梯度是這樣一個向量,它的方向與取得最大方向導數的方向一致,而它的模爲方向導數的最大值。
以上描述很是好理解,那如何證實呢?
說實話,我以爲以上證實過程很抽象,但這就是數學,而咱們要作的就是從這些抽象中來理解問題的實質。
依然採用下山的例子來解釋。咱們想要走到山下,道路有千萬條,但總有一條可讓咱們以最快的速度下山。固然,這裏的最快速度僅僅做用在當前的位置點上,也就是說在當前位置A咱們選擇一個方向往山下走,走了一步以後到達了另一個位置B,而後咱們在B位置計算梯度方向,並沿該方向到達位置處c,重複這個過程一直到終點。可是,若是咱們把走的每一步鏈接起來構成下山的完整路線,這條路線可能並非下山的最快最優路線。
緣由是什麼?能夠用一句古詩來解釋:「不識廬山真面目,只緣身在此山中。」由於咱們在山上的時候是不知道山的具體形狀的,所以沒法找到一條全局最優路線。那咱們只能關注腳下的路,將每一步走好,這就是梯度降低法的原理。