<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          從零實(shí)現(xiàn)深度學(xué)習(xí)框架(十)線性回歸簡(jiǎn)介

          共 3233字,需瀏覽 7分鐘

           ·

          2022-01-11 12:34


          更多精彩推薦,請(qǐng)關(guān)注我們


          引言

          本著“凡我不能創(chuàng)造的,我就不能理解”的思想,本系列文章會(huì)基于純Python以及NumPy從零創(chuàng)建自己的深度學(xué)習(xí)框架,該框架類似PyTorch能實(shí)現(xiàn)自動(dòng)求導(dǎo)。

          要深入理解深度學(xué)習(xí),從零開始創(chuàng)建的經(jīng)驗(yàn)非常重要,從自己可以理解的角度出發(fā),盡量不適用外部完備的框架前提下,實(shí)現(xiàn)我們想要的模型。本系列文章的宗旨就是通過這樣的過程,讓大家切實(shí)掌握深度學(xué)習(xí)底層實(shí)現(xiàn),而不是僅做一個(gè)調(diào)包俠。

          我們自動(dòng)求導(dǎo)工具第一階段的實(shí)現(xiàn)已經(jīng)完成了,本文最簡(jiǎn)單的模型——線性回歸模型進(jìn)行簡(jiǎn)單的介紹。

          線性回歸

          給定輸入,可能有多個(gè)維度(特征),和輸出。線性回歸(linear regression)假設(shè)輸入和輸出之間的關(guān)系是線性的。即可以表示為中元素的加權(quán)和,這里通常允許包含觀測(cè)值的一些噪聲,我們假設(shè)任何噪聲都比較正常,比如噪聲遵循高斯分布。

          我們舉一個(gè)例子:我們希望根據(jù)房屋的面積(㎡)和房齡(年)來估計(jì)房屋的售價(jià)(萬/㎡)。以某賣房軟件上深圳南山區(qū)近地鐵口售價(jià)的真實(shí)數(shù)據(jù)為例。我們收集了房屋的售價(jià)、面積和房齡。在機(jī)器學(xué)習(xí)中,該數(shù)據(jù)集稱為訓(xùn)練集(training data set)。每行數(shù)據(jù)(一次房屋交易相對(duì)應(yīng)的數(shù)據(jù))稱為樣本(sample),也稱為數(shù)據(jù)點(diǎn)(data point)。我們把試圖預(yù)測(cè)的目標(biāo)(比如房屋價(jià)格)稱為標(biāo)簽(label)或目標(biāo)(target)。預(yù)測(cè)所依據(jù)的自變量(面積或房齡)稱為特征(feature)。

          我們使用來表示數(shù)據(jù)集中的樣本數(shù),對(duì)索引為的樣本,其輸入表示為,其對(duì)應(yīng)的標(biāo)簽是。

          我們收集到的數(shù)據(jù)集如下:

          X?=?[
          ????[64.4,?31],?#?[面積,?房齡]
          ????[68,?21],
          ????[74.1,?19],
          ????[74.8,?24],
          ????[76.9,?17],
          ????[78.1,?16],
          ????[78.6,?17]
          ]
          y?=?[6.1,?6.25,?7.8,?6.66,?7.82,?7.14,?8.02]

          線性回歸假設(shè)目標(biāo)(房屋價(jià)格)可以表示為特征(面積和房齡)的加權(quán)和,如下:


          其中稱為權(quán)重(weight),權(quán)重代表每個(gè)特征對(duì)預(yù)測(cè)值的影響(權(quán)重越大表面影響越大)。稱為偏置(bias)或截距(intercept)。嚴(yán)格來說,上式是輸入特征的一個(gè)仿射變換(affine transformation)。仿射變換是通過加權(quán)和對(duì)特征進(jìn)行線性變換(linear transformation),并通過偏置項(xiàng)來進(jìn)行平移(translation)。

          有了數(shù)據(jù)集以后,我們的目標(biāo)是尋找線性回歸模型的權(quán)重和偏置,以對(duì)新的樣本進(jìn)行預(yù)測(cè)。

          在機(jī)器學(xué)習(xí)領(lǐng)域,我們使用的一般是高維數(shù)據(jù)集,建模時(shí)采用線性代數(shù)表示法會(huì)比較方便。假設(shè)我們的輸入包含個(gè)特征時(shí),我們將預(yù)測(cè)結(jié)果表示為:

          比如在我們房?jī)r(jià)預(yù)測(cè)的例子中總共有2個(gè)特征,分別是房屋面積和房齡。所以可以寫成:

          假設(shè)表示面積;表示房齡。

          如果將所有的特征都放到向量中,并將所有權(quán)重放到向量中,我們可以用點(diǎn)積形式來簡(jiǎn)介地表達(dá)模型:

          向量表示包含所有特征的單個(gè)樣本數(shù)據(jù)。那么用符號(hào)可以表示我們整個(gè)數(shù)據(jù)集中的個(gè)樣本,其中,的每一行是一個(gè)樣本,每一列是一種特征。

          那么預(yù)測(cè)值就可以通過矩陣-向量乘法表示:

          有時(shí)候也可以把加到權(quán)重中去,也進(jìn)行相應(yīng)的變化得到增廣矩陣。上面的式子展開如下:

          這里的會(huì)進(jìn)行廣播。我們?nèi)绻?span style="cursor:pointer;">加到權(quán)重中去,就變成了:

          上式最后用表示增廣后的矩陣和向量。

          我們已經(jīng)有了數(shù)據(jù)集和模型,那么如何得到模型參數(shù)呢?答案就是學(xué)習(xí)過程。

          學(xué)習(xí)過程

          學(xué)習(xí)過程說的是:基于初始的模型參數(shù),我們可以得到一個(gè)預(yù)測(cè)輸出,然后我們計(jì)算該輸出和真實(shí)輸出之間的距離。通過最小化損失函數(shù)和優(yōu)化方法就可以來優(yōu)化模型參數(shù)。

          損失函數(shù):衡量實(shí)際值與預(yù)測(cè)值之間的差距。數(shù)值越小代表損失越小,完美預(yù)測(cè)時(shí)損失為0。

          優(yōu)化:改變模型參數(shù)以獲得更少的損失

          損失函數(shù)

          一維情況下的回歸問題

          我們?yōu)橐痪S情況下的回歸問題繪制圖像,如上圖所示。一維情況即樣本只有一個(gè)特征。比如橫坐標(biāo)代表身高,縱坐標(biāo)代表體重。

          假設(shè)某人的真實(shí)身高是180cm,你預(yù)測(cè)的身高是156cm。那么衡量距離,你首先想到的應(yīng)該是它們之間的差值。為了避免負(fù)數(shù),也應(yīng)該加一個(gè)絕對(duì)值。所以定義為,但是絕對(duì)值是不可求導(dǎo)的,我們可以把絕對(duì)值改成平方,并加上系數(shù)好進(jìn)行求導(dǎo)。這就是平方誤差損失函數(shù):


          是度量單個(gè)樣本的損失,為了度量整個(gè)數(shù)據(jù)集的損失,我們需要計(jì)算訓(xùn)練集個(gè)樣本上的損失均值:


          此時(shí)叫作均方誤差損失函數(shù)。

          我們要找的就是能使所有訓(xùn)練樣本上的損失均值最小的參數(shù):

          梯度下降

          對(duì)于線性回歸來說,有一種方法叫作解析解。但是它應(yīng)用有限,無法進(jìn)行推廣。因此這里不做分析。

          本節(jié)介紹的方法即使我們無法得到解析解的情況下,仍然可以有效地訓(xùn)練模型。

          那就是梯度下降(gradient descent)的方法,這種方法幾乎可以優(yōu)化所有的深度學(xué)習(xí)模型。它通過不斷地在損失函數(shù)遞減的方向上更新參數(shù)來降低誤差。

          梯度下降最簡(jiǎn)單的用法是計(jì)算損失函數(shù)關(guān)于模型參數(shù)的導(dǎo)數(shù)(或者說是梯度)。通常是遍歷完整個(gè)數(shù)據(jù)集再進(jìn)行參數(shù)更新,但實(shí)際上可能非常慢。因此我們遍歷的時(shí)候只遍歷部分批量數(shù)據(jù),遍歷完該批量數(shù)據(jù)即進(jìn)行參數(shù)更新。

          我們剛剛看到的方法叫作小批量隨機(jī)梯度下降法,隨機(jī)指的是每批數(shù)據(jù)都是隨機(jī)抽取的。

          用下面的數(shù)學(xué)公式來表示這一更新過程:

          其中表示偏導(dǎo)數(shù);代表小批量數(shù)據(jù);表示這一小批量數(shù)據(jù)的數(shù)量;是學(xué)習(xí)率。

          算法的步驟如下:

          • 初始化模型參數(shù),通常采用隨機(jī)初始化
          • 從數(shù)據(jù)集中隨機(jī)抽取小批量樣本,且在梯度的反方向上更新參數(shù),不斷迭代這一步驟。

          批量大小和學(xué)習(xí)率的值通常需要預(yù)先指定,而不是通過學(xué)習(xí)得到的,這種參數(shù)叫作超參數(shù)(hyperparameter)。

          在訓(xùn)練了預(yù)先確定的若干次迭代次數(shù)后(或滿足某些停止條件),我們保存此時(shí)模型參數(shù)的估計(jì)值,記為

          優(yōu)化方法

          線性回歸恰好只有一個(gè)最小值,但是對(duì)于深度神經(jīng)網(wǎng)絡(luò)這種復(fù)雜的模型來說,可能有多個(gè)局部極小值點(diǎn)。

          局部極小值與全局最小值

          此時(shí)可能需要用到隨機(jī)梯度下降法的一些變體,比如Adagrad、RMSProp等。這些變體被稱為優(yōu)化方法或優(yōu)化器。

          關(guān)于這些變體后面的文章會(huì)討論。

          從最大似然來看均方誤差

          本節(jié)來看一下為什么采用均分誤差作為損失函數(shù)。

          我們上面說過,假設(shè)噪聲(誤差)遵循高斯分布(正態(tài)分布)。為什么要這么假設(shè)呢,一種解釋是,根據(jù)中心極限定理:許多獨(dú)立隨機(jī)變量的和趨向于正態(tài)分布。因?yàn)橛绊懺肼暤囊蛩赜泻芏?,而這些因素都是獨(dú)立且隨機(jī)分布的,所以這么假設(shè)。

          若隨機(jī)變量具有均值和方差,其正態(tài)分布概率密度函數(shù)如下:

          高斯分布圖形

          改變均值會(huì)產(chǎn)生沿軸的偏移,增加方差會(huì)降低分布的峰值。

          均方誤差損失函數(shù)(簡(jiǎn)稱均方誤差)可以用于線性回歸的一個(gè)原因是:我們假設(shè)了觀測(cè)中包含噪聲,其中噪聲服從正態(tài)分布。則預(yù)測(cè)函數(shù)可以寫為:

          其中,有

          根據(jù),也可寫成。

          因此,我們可以寫出給定觀測(cè)到特定的似然:

          參數(shù)的最優(yōu)值是使整個(gè)數(shù)據(jù)集的似然最大的值:

          由于取對(duì)數(shù)不改變單調(diào)性,同時(shí)優(yōu)化一般是指最小化,我們?cè)偌由县?fù)號(hào),變成最小化負(fù)對(duì)數(shù)似然,由此可得:

          代入得:

          上面式子的解并不依賴于,因此,在高斯噪聲的假設(shè)下,最小化均方誤差等價(jià)于對(duì)線性模型的極大似然估計(jì)。

          參考

          1. 動(dòng)手學(xué)習(xí)深度學(xué)習(xí)

          最后一句:BUG,走你!

          Markdown筆記神器Typora配置Gitee圖床
          不會(huì)真有人覺得聊天機(jī)器人難吧(一)
          Spring Cloud學(xué)習(xí)筆記(一)
          沒有人比我更懂Spring Boot(一)
          入門人工智能必備的線性代數(shù)基礎(chǔ)

          1.看到這里了就點(diǎn)個(gè)在看支持下吧,你的在看是我創(chuàng)作的動(dòng)力。
          2.關(guān)注公眾號(hào),每天為您分享原創(chuàng)或精選文章
          3.特殊階段,帶好口罩,做好個(gè)人防護(hù)。

          瀏覽 32
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费18禁网站 | 国产免费看黄色 | 欧美大鸡巴 | 亚洲无码在线一区 | 成人天堂网 |