1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        簡單的梯度下降算法,你真的懂了嗎?

        共 1135字,需瀏覽 3分鐘

         ·

        2022-01-24 06:02

        點擊上方小白學視覺”,選擇加"星標"或“置頂

        重磅干貨,第一時間送達


        梯度下降算法的公式非常簡單,”沿著梯度的反方向(坡度最陡)“是我們?nèi)粘=?jīng)驗得到的,其本質(zhì)的原因到底是什么呢?為什么局部下降最快的方向就是梯度的負方向呢?也許很多朋友還不太清楚。沒關(guān)系,接下來我將以通俗的語言來詳細解釋梯度下降算法公式的數(shù)學推導過程。


        下山問題

        假設(shè)我們位于黃山的某個山腰處,山勢連綿不絕,不知道怎么下山。于是決定走一步算一步,也就是每次沿著當前位置最陡峭最易下山的方向前進一小步,然后繼續(xù)沿下一個位置最陡方向前進一小步。這樣一步一步走下去,一直走到覺得我們已經(jīng)到了山腳。這里的下山最陡的方向就是梯度的負方向



        首先理解什么是梯度?通俗來說,梯度就是表示某一函數(shù)在該點處的方向?qū)?shù)沿著該方向取得最大值,即函數(shù)在當前位置的導數(shù)。



        上式中,θ?是自變量,f(θ)?是關(guān)于?θ?的函數(shù),θ?表示梯度。


        如果函數(shù)?f(θ)?凸函數(shù),那么就可以使用梯度下降算法進行優(yōu)化。梯度下降算法的公式我們已經(jīng)很熟悉了:



        其中,θo?是自變量參數(shù),即下山位置坐標,η?學習因子,即下山每次前進的一小步(步進長度),θ?是更新后的?θo,即下山移動一小步之后的位置。


        一階泰勒展開式


        這里需要一點數(shù)學基礎(chǔ),對泰勒展開式有些了解。簡單地來說,一階泰勒展開式利用的就是函數(shù)的局部線性近似這個概念。我們以一階泰勒展開式為例:



        不懂上面的公式?沒有關(guān)系。我用下面這張圖來解釋。



        凸函數(shù)?f(θ)?的某一小段 [θo,θ] 由上圖黑色曲線表示,可以利用線性近似的思想求出?f(θ)?的值,如上圖紅色直線。該直線的斜率等于?f(θ)?在?θo?處的導數(shù)。則根據(jù)直線方程,很容易得到?f(θ)?的近似表達式為:



        這就是一階泰勒展開式的推導過程,主要利用的數(shù)學思想就是曲線函數(shù)的線性擬合近似。


        梯度下降數(shù)學原理


        知道了一階泰勒展開式之后,接下來就是重點了!我們來看一下梯度下降算法是如何推導的。


        先寫出一階泰勒展開式的表達式:



        其中,θ?θo?是微小矢量,它的大小就是我們之前講的步進長度?η,類比于下山過程中每次前進的一小步,η?為標量,而?θ?θo?的單位向量用?v?表示。則?θ?θo?可表示為:



        特別需要注意的是,θ?θo?不能太大,因為太大的話,線性近似就不夠準確,一階泰勒近似也不成立了。替換之后,f(θ)?的表達式為:



        重點來了,局部下降的目的是希望每次?θ?更新,都能讓函數(shù)值?f(θ)?變小。也就是說,上式中,我們希望?f(θ)。則有:



        因為?η?為標量,且一般設(shè)定為正值,所以可以忽略,不等式變成了:



        上面這個不等式非常重要!v?和??f(θo)?都是向量,?f(θo)?是當前位置的梯度方向,v?表示下一步前進的單位向量,是需要我們求解的,有了它,就能根據(jù)?vθ?θo=ηv?確定?θ?值了。


        想要兩個向量的乘積小于零,我們先來看一下兩個向量乘積包含哪幾種情況:



        A?和?B?均為向量,α?為兩個向量之間的夾角。A?和?B?的乘積為:



        ||A|| 和 ||B|| 均為標量,在 ||A|| 和 ||B|| 確定的情況下,只要 cos(α)=?1,即?A?和?B?完全反向,就能讓?A?和?B?的向量乘積最?。ㄘ撟畲笾担?/span>


        顧名思義,當?v?與??f(θo)?互為反向,即?v?為當前梯度方向的負方向的時候,能讓?v??f(θo)?最大程度地小,也就保證了?v?的方向是局部下降最快的方向。


        知道 v 是??f(θo)?的反方向后,可直接得到:



        之所以要除以??f(θo)?的模 ||?f(θo)||,是因為?v?是單位向量。


        求出最優(yōu)解?v?之后,帶入到?θ?θo=ηv?中,得:



        一般地,因為 ||?f(θo)|| 是標量,可以并入到步進因子?η?中,即簡化為:



        這樣,我們就推導得到了梯度下降算法中?θ?的更新表達式。


        總結(jié)


        我們通過一階泰勒展開式,利用線性近似和向量相乘最小化的思想搞懂了梯度下降算法的數(shù)學原理。也許你之前很熟悉梯度下降算法,但也許對它的推導過程并不清楚??戳吮疚?,你是否有所收獲呢?


        下載1:OpenCV-Contrib擴展模塊中文版教程
        在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實戰(zhàn)項目52講
        小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

        下載3:OpenCV實戰(zhàn)項目20講
        小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

        交流群


        歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~



        瀏覽 45
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

          <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩精品一二三区 | 亚洲视频在线免费看 | 另类图片另类小说 | 成年人免费视频在线 | 天天插天天看天透 | 体内射精一区二区三区在线视频 | 天天操天天射天天好逼网 | 欧美黄色性爱视频 | 人妖av| www.黄色av |