每當我們想要預(yù)測一個數(shù)值時,就會出現(xiàn)回歸問題。常見的例子包括預(yù)測價格(房屋、股票等)、預(yù)測住院時間(對于住院患者)、預(yù)測需求(對于零售銷售)等等。并非每個預(yù)測問題都是經(jīng)典的回歸問題。稍后,我們將介紹分類問題,其目標是預(yù)測一組類別中的成員資格。
作為一個運行示例,假設(shè)我們希望根據(jù)房屋的面積(以平方英尺為單位)和年齡(以年為單位)來估算房屋的價格(以美元為單位)。要開發(fā)預(yù)測房價的模型,我們需要掌握由銷售額組成的數(shù)據(jù),包括每個房屋的銷售價格、面積和年齡。在機器學習的術(shù)語中,數(shù)據(jù)集稱為訓練數(shù)據(jù)集或訓練集,每一行(包含與一次銷售對應(yīng)的數(shù)據(jù))稱為示例( 或數(shù)據(jù)點、實例、樣本)。我們試圖預(yù)測的東西(價格)稱為標簽(或目標). 預(yù)測所依據(jù)的變量(年齡和面積)稱為特征(或 協(xié)變量)。
%matplotlib inline import math import time import numpy as np import torch from d2l import torch as d2l
%matplotlib inline import math import time from mxnet import np from d2l import mxnet as d2l
%matplotlib inline import math import time from jax import numpy as jnp from d2l import jax as d2l
No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)
%matplotlib inline import math import time import numpy as np import tensorflow as tf from d2l import tensorflow as d2l
3.1.1. 基本
線性回歸可能是解決回歸問題的標準工具中最簡單和最受歡迎的。追溯到 19 世紀初(高斯,1809 年,勒讓德,1805 年),線性回歸源于一些簡單的假設(shè)。首先,我們假設(shè)特征之間的關(guān)系x和目標 y近似線性,即條件均值 E[Y∣X=x]可以表示為特征的加權(quán)和x. 由于觀察噪聲,此設(shè)置允許目標值仍可能偏離其預(yù)期值。接下來,我們可以假設(shè)任何此類噪聲都表現(xiàn)良好,服從高斯分布。通常,我們會使用n來表示我們數(shù)據(jù)集中的示例數(shù)量。我們使用上標來枚舉樣本和目標,并使用下標來索引坐標。更具體地說,x(i)表示i-th 樣品和 xj(i)表示其j-th 坐標。
3.1.1.1. 模型
每個解決方案的核心都是一個模型,該模型描述了如何將特征轉(zhuǎn)換為對目標的估計。線性假設(shè)意味著目標(價格)的期望值可以表示為特征(面積和年齡)的加權(quán)和:
(3.1.1)price=warea?area+wage?age+b.
這里warea和wage稱為 權(quán)重,并且b稱為偏差(或偏移量或 截距)。權(quán)重決定了每個特征對我們預(yù)測的影響。當所有特征都為零時,偏差決定了估計值。即使我們永遠不會看到任何面積恰好為零的新建房屋,我們?nèi)匀恍枰睿驗樗试S我們表達特征的所有線性函數(shù)(而不是將我們限制在通過原點的直線上)。嚴格來說, (3.1.1)是輸入特征的仿射變換,其特點是通過加權(quán)求和對特征進行線性變換,結(jié)合平移通過增加偏差。給定一個數(shù)據(jù)集,我們的目標是選擇權(quán)重 w和偏見b平均而言,使我們的模型預(yù)測盡可能接近數(shù)據(jù)中觀察到的真實價格。
在通常關(guān)注僅具有少量特征的數(shù)據(jù)集的學科中,明確表達模型的長格式,如 (3.1.1)中,是常見的。在機器學習中,我們通常使用高維數(shù)據(jù)集,在這種情況下使用緊湊的線性代數(shù)符號會更方便。當我們的輸入包括 d特征,我們可以為每個特征分配一個索引(介于1和 d) 并表達我們的預(yù)測y^(通常,“帽子”符號表示估計值)作為
(3.1.2)y^=w1x1+...+wdxd+b.
將所有特征收集到一個向量中 x∈Rd并將所有權(quán)重放入向量中 w∈Rd,我們可以通過點積來簡潔地表達我們的模型w和x:
(3.1.3)y^=w?x+b.
在(3.1.3)中,向量x對應(yīng)于單個示例的特征。我們經(jīng)常會發(fā)現(xiàn)引用整個數(shù)據(jù)集的特征很方便n通過 設(shè)計矩陣的例子 X∈Rn×d. 這里, X每個示例包含一行,每個特征包含一列。對于功能集合X, 預(yù)測y^∈Rn可以通過矩陣向量積表示:
(3.1.4)y^=Xw+b,
在求和期間應(yīng)用廣播(第 2.1.4 節(jié))。給定訓練數(shù)據(jù)集的特征X 和相應(yīng)的(已知)標簽y,線性回歸的目標是找到權(quán)重向量w和偏置項b給定從相同分布采樣的新數(shù)據(jù)示例的特征X,新示例的標簽將(在預(yù)期中)以最低的錯誤率進行預(yù)測。
即使我們相信最好的預(yù)測模型y給予 x是線性的,我們不希望找到一個真實世界的數(shù)據(jù)集n例子在哪里y(i)正好等于 w?x(i)+b對全部 1≤i≤n. 例如,無論我們使用什么儀器來觀察特征X和標簽y 可能會出現(xiàn)少量測量誤差。因此,即使我們確信潛在關(guān)系是線性的,我們也會加入噪聲項來解釋此類錯誤。
在我們開始尋找最佳參數(shù)(或模型參數(shù))之前w和b,我們還需要兩件事:(i)一些給定模型的質(zhì)量度量;(ii) 更新模型以提高其質(zhì)量的程序。
3.1.1.2。損失函數(shù)
自然地,將我們的模型擬合到數(shù)據(jù)需要我們就某種適合度(或等價的不適合度)的度量達成一致。損失函數(shù)量化 目標的真實值和預(yù)測值之間的距離。損失通常是一個非負數(shù),其中值越小越好,完美的預(yù)測會導(dǎo)致?lián)p失為 0。對于回歸問題,最常見的損失函數(shù)是平方誤差。當我們預(yù)測一個例子i是 y^(i)對應(yīng)的真實標簽是 y(i),平方誤差由下式給出:
(3.1.5)l(i)(w,b)=12(y^(i)?y(i))2.
常量12沒有真正的區(qū)別,但證明在符號上很方便,因為當我們對損失求導(dǎo)時它會抵消。因為訓練數(shù)據(jù)集是給我們的,因此不受我們的控制,經(jīng)驗誤差只是模型參數(shù)的函數(shù)。下面,我們可視化線性回歸模型在一維輸入問題中的擬合(圖 3.1.1)。
圖 3.1.1將線性回歸模型擬合到一維數(shù)據(jù)。
請注意,估計之間的巨大差異y^(i)和目標y(i)由于損失的二次形式,導(dǎo)致對損失的貢獻更大(這可能是一把雙刃劍。雖然它鼓勵模型避免大的錯誤,但它也可能導(dǎo)致對異常數(shù)據(jù)過度敏感)。衡量模型在整個數(shù)據(jù)集上的質(zhì)量n例如,我們簡單地平均(或等價地,求和)訓練集上的損失:
(3.1.6)L(w,b)=1n∑i=1nl(i)(w,b)=1n∑i=1n12(w?x(i)+b?y(i))2.
在訓練模型時,我們想找到參數(shù)(w?,b?) 最小化所有訓練示例的總損失:
(3.1.7)w?,b?=argminw,bL(w,b).
3.1.1.3. 解析解
與我們將介紹的大多數(shù)模型不同,線性回歸向我們展示了一個非常簡單的優(yōu)化問題。特別是,我們可以通過應(yīng)用如下簡單公式分析地找到最佳參數(shù)(根據(jù)訓練數(shù)據(jù)評估)。首先,我們可以歸入偏差b進入?yún)?shù)w通過將一列附加到由所有元素組成的設(shè)計矩陣。那么我們的預(yù)測問題就是最小化 ‖y?Xw‖2. 只要設(shè)計矩陣X具有滿秩(沒有特征與其他特征線性相關(guān)),那么損失面上將只有一個臨界點,它對應(yīng)于整個域的損失的最小值。對損失求導(dǎo)數(shù) w并將其設(shè)置為零會產(chǎn)生:
(3.1.8)?w‖y?Xw‖2=2X?(Xw?y)=0and henceX?y=X?Xw.
求解w為我們提供了優(yōu)化問題的最優(yōu)解。請注意,此解決方案
(3.1.9)w?=(X?X)?1X?y
只有當矩陣X?X是可逆的,即當設(shè)計矩陣的列線性獨立時(Golub 和 Van Loan,1996 年)。
雖然像線性回歸這樣的簡單問題可能有解析解,但您不應(yīng)該習慣這樣的好運。盡管解析解可以進行很好的數(shù)學分析,但解析解的要求非常嚴格,以至于幾乎排除了深度學習的所有令人興奮的方面。
3.1.1.4。小批量隨機梯度下降
幸運的是,即使在我們無法解析地解決模型的情況下,我們?nèi)匀豢梢栽趯嵺`中經(jīng)常有效地訓練模型。此外,對于許多任務(wù),那些難以優(yōu)化的模型結(jié)果證明要好得多,以至于弄清楚如何訓練它們最終是值得的。
優(yōu)化幾乎所有深度學習模型的關(guān)鍵技術(shù),以及我們將在整本書中提到的技術(shù),包括通過在逐漸降低損失函數(shù)的方向上更新參數(shù)來迭代減少誤差。該算法稱為 梯度下降。
梯度下降最簡單的應(yīng)用包括對損失函數(shù)求導(dǎo),它是對數(shù)據(jù)集中每個樣本計算的損失的平均值。實際上,這可能非常慢:我們必須在進行單個更新之前傳遞整個數(shù)據(jù)集,即使更新步驟可能非常強大 (Liu 和 Nocedal,1989)。更糟糕的是,如果訓練數(shù)據(jù)中存在大量冗余,則完全更新的好處會更低。
另一個極端是一次只考慮一個例子,并一次根據(jù)一個觀察采取更新步驟。由此產(chǎn)生的算法,隨機梯度下降(SGD) 可能是一種有效的策略(Bottou,2010 年),即使對于大型數(shù)據(jù)集。不幸的是,SGD 在計算和統(tǒng)計方面都有缺點。一個問題是處理器對數(shù)字進行乘法和加法運算的速度比將數(shù)據(jù)從主內(nèi)存移動到處理器緩存的速度快得多。執(zhí)行矩陣-向量乘法的效率比相應(yīng)數(shù)量的向量-向量運算高一個數(shù)量級。這意味著與整批樣品相比,一次處理一個樣品可能需要更長的時間。第二個問題是某些層,例如批量歸一化(將在第 8.5 節(jié)中描述),只有在我們一次訪問多個觀察值時才能正常工作。
這兩個問題的解決方案是選擇一個中間策略:我們不是一次獲取完整的批次或只獲取一個樣本,而是獲取一個小批量的觀察結(jié)果(Li等人,2014 年)。所述minibatch大小的具體選擇取決于許多因素,例如內(nèi)存量、加速器數(shù)量、層的選擇和總數(shù)據(jù)集大小。盡管如此,一個介于 32 和 256 之間的數(shù)字,最好是 2, 是一個好的開始。這將我們引向小批量隨機梯度下降。
在其最基本的形式中,在每次迭代中t,我們首先隨機抽取一個小批量Bt由固定數(shù)組成 |B|的訓練例子。然后我們計算小批量平均損失相對于模型參數(shù)的導(dǎo)數(shù)(梯度)。最后,我們將梯度乘以一個預(yù)定的小正值η,稱為學習率,并從當前參數(shù)值中減去結(jié)果項。我們可以這樣表達更新:
(3.1.10)(w,b)←(w,b)?η|B|∑i∈Bt?(w,b)l(i)(w,b).
總之,minibatch SGD 進行如下:(i)初始化模型參數(shù)的值,通常是隨機的;(ii) 迭代地從數(shù)據(jù)中抽樣隨機小批量,在負梯度方向上更新參數(shù)。對于二次損失和仿射變換,這有一個封閉形式的展開:
(3.1.11)w←w?η|B|∑i∈Bt?wl(i)(w,b)=w?η|B|∑i∈Btx(i)(w?x(i)+b?y(i))b←b?η|B|∑i∈Bt?bl(i)(w,b)=b?η|B|∑i∈Bt(w?x(i)+b?y(i)).
因為我們選擇了一個小批量B我們需要按它的大小歸一化|B|. 小批量大小和學習率通常是用戶定義的。這種在訓練循環(huán)中不更新的可調(diào)參數(shù)稱為超參數(shù)。它們可以通過多種技術(shù)自動調(diào)整,例如貝葉斯優(yōu)化 ( Frazier, 2018 )。最后,解決方案的質(zhì)量通常在單獨的驗證數(shù)據(jù)集(或驗證集)上進行評估。
在訓練了一些預(yù)定的迭代次數(shù)后(或直到滿足其他一些停止標準),我們記錄估計的模型參數(shù),表示為w^,b^. 請注意,即使我們的函數(shù)是真正線性且無噪聲的,這些參數(shù)也不會是損失的精確最小值,甚至不是確定性的。盡管該算法向最小化器收斂的速度很慢,但它通常無法在有限的步數(shù)內(nèi)準確地實現(xiàn)收斂。此外,小批量B用于更新的參數(shù)是隨機選擇的。這打破了決定論。
線性回歸恰好是一個具有全局最小值的學習問題(每當X是滿秩的,或者等效地,每當 X?X是可逆的)。然而,深度網(wǎng)絡(luò)的損失面包含許多鞍點和最小值。幸運的是,我們通常不關(guān)心找到一組精確的參數(shù),而只關(guān)心任何導(dǎo)致準確預(yù)測(從而降低損失)的參數(shù)集。在實踐中,深度學習從業(yè)者很少努力尋找能夠最大限度地減少 訓練集損失的參數(shù) (Frankle 和 Carbin,2018 年,Izmailov等人,2018 年)。更艱巨的任務(wù)是找到能夠?qū)σ郧翱床灰姷臄?shù)據(jù)進行準確預(yù)測的參數(shù),這一挑戰(zhàn)稱為 泛化。我們將在整本書中回到這些主題。
3.1.1.5。預(yù)測
給定模型w^?x+b^,我們現(xiàn)在可以對新示例進行預(yù)測,例如,根據(jù)面積預(yù)測以前未見過的房屋的銷售價格x1和年齡 x2. 深度學習從業(yè)者已開始將預(yù)測階段稱為推理,但這有點用詞不當——推理泛指根據(jù)證據(jù)得出的任何結(jié)論,包括參數(shù)值和未見實例的可能標簽。如果有的話,在統(tǒng)計學文獻中,推斷更多地表示參數(shù)推斷,當深度學習從業(yè)者與統(tǒng)計學家交談時,這種術(shù)語的超載會造成不必要的混淆。在下文中,我們將盡可能堅持預(yù)測。
3.1.2. 速度矢量化
在訓練我們的模型時,我們通常希望同時處理整個小批量示例。有效地做到這一點需要我們矢量化計算并利用快速線性代數(shù)庫,而不是在 Python 中編寫昂貴的 for 循環(huán)。
為了說明為什么這如此重要,我們可以考慮兩種添加向量的方法。首先,我們實例化兩個包含全 1 的 10,000 維向量。在一種方法中,我們使用 Python for 循環(huán)遍歷向量。在另一種方法中,我們依賴于對+.
n = 10000 a = torch.ones(n) b = torch.ones(n)
n = 10000 a = np.ones(n) b = np.ones(n)
n = 10000 a = jnp.ones(n) b = jnp.ones(n)
n = 10000 a = tf.ones(n) b = tf.ones(n)
現(xiàn)在我們可以對工作負載進行基準測試。首先,我們使用 for 循環(huán)添加它們,一次添加一個坐標。
c = torch.zeros(n) t = time.time() for i in range(n): c[i] = a[i] + b[i] f'{time.time() - t:.5f} sec'
'0.18086 sec'
c = np.zeros(n) t = time.time() for i in range(n): c[i] = a[i] + b[i] f'{time.time() - t:.5f} sec'
'5.17106 sec'
# JAX arrays are immutable, meaning that once created their contents # cannot be changed. For updating individual elements, JAX provides # an indexed update syntax that returns an updated copy c = jnp.zeros(n) t = time.time() for i in range(n): c = c.at[i].set(a[i] + b[i]) f'{time.time() - t:.5f} sec'
'19.67977 sec'
c = tf.Variable(tf.zeros(n)) t = time.time() for i in range(n): c[i].assign(a[i] + b[i]) f'{time.time() - t:.5f} sec'
'12.77678 sec'
或者,我們依靠重新加載的+運算符來計算元素總和。
t = time.time() d = a + b f'{time.time() - t:.5f} sec'
'0.00015 sec'
t = time.time() d = a + b f'{time.time() - t:.5f} sec'
'0.00053 sec'
t = time.time() d = a + b f'{time.time() - t:.5f} sec'
'0.02348 sec'
t = time.time() d = a + b f'{time.time() - t:.5f} sec'
'0.00055 sec'
第二種方法比第一種方法快得多。矢量化代碼通常會產(chǎn)生數(shù)量級的加速。此外,我們將更多的數(shù)學推向庫,而無需自己編寫那么多的計算,從而減少了出錯的可能性并提高了代碼的可移植性。
3.1.3. 正態(tài)分布和平方損失
到目前為止,我們已經(jīng)給出了平方損失目標的一個相當實用的動機:最優(yōu)參數(shù)返回條件期望 E[Y∣X]只要基礎(chǔ)模式真正是線性的,損失就會對異常值分配過大的懲罰。我們還可以通過對噪聲分布進行概率假設(shè),為平方損失目標提供更正式的動機。
線性回歸是在 19 世紀初發(fā)明的。雖然長期以來一直爭論高斯或勒讓德首先想到這個想法,但高斯也發(fā)現(xiàn)了正態(tài)分布(也稱為高斯分布)。事實證明,正態(tài)分布和具有平方損失的線性回歸比共同的親子關(guān)系更深。
首先,回想一下具有均值的正態(tài)分布μ和方差σ2(標準偏差σ) 給出為
(3.1.12)p(x)=12πσ2exp?(?12σ2(x?μ)2).
下面我們定義一個函數(shù)來計算正態(tài)分布。
def normal(x, mu, sigma): p = 1 / math.sqrt(2 * math.pi * sigma**2) return p * np.exp(-0.5 * (x - mu)**2 / sigma**2)
def normal(x, mu, sigma): p = 1 / math.sqrt(2 * math.pi * sigma**2) return p * np.exp(-0.5 * (x - mu)**2 / sigma**2)
def normal(x, mu, sigma): p = 1 / math.sqrt(2 * math.pi * sigma**2) return p * jnp.exp(-0.5 * (x - mu)**2 / sigma**2)
def normal(x, mu, sigma): p = 1 / math.sqrt(2 * math.pi * sigma**2) return p * np.exp(-0.5 * (x - mu)**2 / sigma**2)
我們現(xiàn)在可以可視化正態(tài)分布。
# Use NumPy again for visualization x = np.arange(-7, 7, 0.01) # Mean and standard deviation pairs params = [(0, 1), (0, 2), (3, 1)] d2l.plot(x, [normal(x, mu, sigma) for mu, sigma in params], xlabel='x', ylabel='p(x)', figsize=(4.5, 2.5), legend=[f'mean {mu}, std {sigma}' for mu, sigma in params])
# Use NumPy again for visualization x = np.arange(-7, 7, 0.01) # Mean and standard deviation pairs params = [(0, 1), (0, 2), (3, 1)] d2l.plot(x.asnumpy(), [normal(x, mu, sigma).asnumpy() for mu, sigma in params], xlabel='x', ylabel='p(x)', figsize=(4.5, 2.5), legend=[f'mean {mu}, std {sigma}' for mu, sigma in params])
# Use JAX NumPy for visualization x = jnp.arange(-7, 7, 0.01) # Mean and standard deviation pairs params = [(0, 1), (0, 2), (3, 1)] d2l.plot(x, [normal(x, mu, sigma) for mu, sigma in params], xlabel='x', ylabel='p(x)', figsize=(4.5, 2.5), legend=[f'mean {mu}, std {sigma}' for mu, sigma in params])
# Use NumPy again for visualization x = np.arange(-7, 7, 0.01) # Mean and standard deviation pairs params = [(0, 1), (0, 2), (3, 1)] d2l.plot(x, [normal(x, mu, sigma) for mu, sigma in params], xlabel='x', ylabel='p(x)', figsize=(4.5, 2.5), legend=[f'mean {mu}, std {sigma}' for mu, sigma in params])
請注意,改變均值對應(yīng)于沿 x-軸,增加方差會分散分布,降低其峰值。
使用平方損失激勵線性回歸的一種方法是假設(shè)觀測值來自噪聲測量,其中噪聲正態(tài)分布如下:
(3.1.13)y=w?x+b+?where?~N(0,σ2).
因此,我們現(xiàn)在可以寫出看到特定的 可能性y對于給定的x通過
(3.1.14)P(y∣x)=12πσ2exp?(?12σ2(y?w?x?b)2).
因此,可能性因式分解。根據(jù)最大似然原理,參數(shù)的最佳取值w 和b是那些最大化整個數(shù)據(jù)集的可能性的那些:
(3.1.15)P(y∣X)=∏i=1np(y(i)∣x(i)).
等式如下,因為所有對(x(i),y(i)) 彼此獨立繪制。根據(jù)最大似然原理選擇的估計量稱為最大似然估計量。雖然最大化許多指數(shù)函數(shù)的乘積可能看起來很困難,但我們可以在不改變目標的情況下通過最大化似然的對數(shù)來顯著簡化事情。由于歷史原因,優(yōu)化通常表示為最小化而不是最大化。所以,在不改變?nèi)魏螙|西的情況下,我們可以最小化負對數(shù)似然,我們可以表示如下:
(3.1.16)?log?P(y∣X)=∑i=1n12log?(2πσ2)+12σ2(y(i)?w?x(i)?b)2.
如果我們假設(shè)σ是固定的,我們可以忽略第一項,因為它不依賴于w或者b. 第二項與前面介紹的平方誤差損失相同,除了乘法常數(shù)1σ2. 幸運的是,該解決方案不依賴于σ任何一個。由此可見,最小化均方誤差等同于在加性高斯噪聲假設(shè)下線性模型的最大似然估計。
3.1.4. 作為神經(jīng)網(wǎng)絡(luò)的線性回歸
雖然線性模型不足以表達我們將在本書中介紹的許多復(fù)雜的神經(jīng)網(wǎng)絡(luò),但神經(jīng)網(wǎng)絡(luò)足夠豐富,可以將線性模型包含為神經(jīng)網(wǎng)絡(luò),其中每個特征都由一個輸入神經(jīng)元表示,所有這些神經(jīng)元都連接在一起直接輸出。
圖 3.1.2將線性回歸描述為神經(jīng)網(wǎng)絡(luò)。該圖突出顯示了連接模式,例如每個輸入如何連接到輸出,但沒有突出顯示權(quán)重或偏差所采用的特定值。
圖 3.1.2線性回歸是單層神經(jīng)網(wǎng)絡(luò)。
輸入是x1,…,xd. 我們指的是d作為 輸入層中輸入的數(shù)量或特征維度。網(wǎng)絡(luò)的輸出是o1. 因為我們只是試圖預(yù)測單個數(shù)值,所以我們只有一個輸出神經(jīng)元。請注意,輸入值都是給定的。只有一個計算 神經(jīng)元。綜上所述,我們可以將線性回歸視為單層全連接神經(jīng)網(wǎng)絡(luò)。在以后的章節(jié)中,我們將遇到層數(shù)更多的網(wǎng)絡(luò)。
3.1.4.1. 生物學
因為線性回歸早于計算神經(jīng)科學,所以用神經(jīng)網(wǎng)絡(luò)來描述線性回歸似乎不合時宜。盡管如此,當控制論學家和神經(jīng)生理學家 Warren McCulloch 和 Walter Pitts 開始開發(fā)人工神經(jīng)元模型時,它們自然而然地成為了起點。考慮圖 3.1.3中生物神經(jīng)元的卡通圖片,它由 樹突(輸入終端)、細胞核(CPU)、軸突(輸出線)和軸突終端(輸出終端)組成,能夠連接到其他神經(jīng)元通過突觸。
圖 3.1.3真實的神經(jīng)元。
信息xi來自其他神經(jīng)元(或環(huán)境傳感器)的信號被樹突接收。特別是,該信息由突觸權(quán)重加權(quán) wi,確定輸入的影響,例如,通過產(chǎn)品激活或抑制 xiwi. 來自多個來源的加權(quán)輸入在核中聚合為加權(quán)和 y=∑ixiwi+b,可能通過一些非線性后處理σ(y). 然后該信息通過軸突發(fā)送到軸突末端,在那里它到達目的地(例如,諸如肌肉的致動器)或通過其樹突被饋送到另一個神經(jīng)元。
當然,許多這樣的單元可以與正確的連接和正確的學習算法相結(jié)合,產(chǎn)生比任何一個神經(jīng)元單獨表達的更有趣和復(fù)雜的行為的高級想法歸功于我們對真實生物神經(jīng)系統(tǒng)的研究。與此同時,當今深度學習的大多數(shù)研究都從更廣泛的來源中汲取靈感。我們援引Russell 和 Norvig ( 2016 )的觀點,他們指出雖然飛機可能受到鳥類的啟發(fā),但幾個世紀以來鳥類學并不是航空創(chuàng)新的主要驅(qū)動力。同樣,如今深度學習的靈感同樣或更多地來自數(shù)學、語言學、心理學、統(tǒng)計學、計算機科學和許多其他領(lǐng)域。
3.1.5. 概括
在本節(jié)中,我們介紹了傳統(tǒng)的線性回歸,其中選擇線性函數(shù)的參數(shù)以最小化訓練集上的平方損失。我們還通過一些實際考慮以及通過將線??性回歸解釋為線性和高斯噪聲假設(shè)下的最大似然估計來激發(fā)這種目標選擇。在討論了計算注意事項和與統(tǒng)計的聯(lián)系之后,我們展示了如何將此類線性模型表示為簡單的神經(jīng)網(wǎng)絡(luò),其中輸入直接連接到輸出。雖然我們很快將完全超越線性模型,但它們足以介紹我們所有模型所需的大部分組件:參數(shù)形式、可微分目標、通過小批量隨機梯度下降進行優(yōu)化,以及最終,
3.1.6. 練習
假設(shè)我們有一些數(shù)據(jù) x1,…,xn∈R. 我們的目標是找到一個常數(shù)b這樣∑i(xi?b)2被最小化。
找到最優(yōu)值的解析解b.
這個問題及其解決方案與正態(tài)分布有何關(guān)系?
如果我們將損失從∑i(xi?b)2到 ∑i|xi?b|?你能找到最優(yōu)解嗎 b?
證明仿射函數(shù)可以表示為 x?w+b相當于線性函數(shù)(x,1).
假設(shè)你想找到的二次函數(shù) x, IE, f(x)=b+∑iwixi+∑j≤iwijxixj. 你會如何在一個深度網(wǎng)絡(luò)中表達這個?
回想一下,線性回歸問題可解的條件之一是設(shè)計矩陣 X?X有滿級。
如果不是這種情況會怎樣?
你怎么能修好它?如果向所有條目添加少量坐標獨立的高斯噪聲會發(fā)生什么 X?
設(shè)計矩陣的期望值是多少 X?X在這種情況下?
當隨機梯度下降時會發(fā)生什么 X?X沒有滿級?
假設(shè)控制加性噪聲的噪聲模型 ?是指數(shù)分布。那是, p(?)=12exp?(?|?|).
寫出模型下數(shù)據(jù)的負對數(shù)似然 ?log?P(y∣X).
你能找到一個封閉形式的解決方案嗎?
建議一個小批量隨機梯度下降算法來解決這個問題。可能會出現(xiàn)什么問題(提示:當我們不斷更新參數(shù)時,駐點附近會發(fā)生什么)?你能修這個嗎?
假設(shè)我們要通過組合兩個線性層來設(shè)計一個具有兩層的神經(jīng)網(wǎng)絡(luò)。也就是說,第一層的輸出成為第二層的輸入。為什么這樣天真的構(gòu)圖不起作用?
如果您想使用回歸來估算房屋或股票價格的實際價格會怎樣?
表明加性高斯噪聲假設(shè)是不合適的。提示:我們可以有負價格嗎?波動呢?
為什么回歸到價格的對數(shù)會好得多,即y=log?price?
在處理 pennystock(即價格非常低的股票)時,您需要擔心什么?提示:你能以所有可能的價格進行交易嗎?為什么這對廉價股票來說是一個更大的問題?
有關(guān)更多信息,請查看著名的期權(quán)定價 Black-Scholes 模型(Black 和 Scholes,1973 年)。
假設(shè)我們想使用回歸來估計雜貨店出售的蘋果數(shù)量。
高斯加性噪聲模型有什么問題?提示:你賣的是蘋果,不是油。
泊松分布 捕獲計數(shù)分布。它由 p(k∣λ)=λke?λ/k!. 這里 λ是率函數(shù)和k是您看到的事件數(shù)。證明λ是計數(shù)的期望值k.
設(shè)計與泊松分布相關(guān)的損失函數(shù)。
設(shè)計用于估計的損失函數(shù)log?λ 反而。
-
線性回歸
+關(guān)注
關(guān)注
0文章
41瀏覽量
4432 -
pytorch
+關(guān)注
關(guān)注
2文章
809瀏覽量
13901
發(fā)布評論請先 登錄
TensorFlow實現(xiàn)簡單線性回歸
TensorFlow實現(xiàn)多元線性回歸(超詳細)
PyTorch教程2.3之線性代數(shù)

PyTorch教程3.3之綜合回歸數(shù)據(jù)

PyTorch教程3.4之從頭開始執(zhí)行線性回歸

PyTorch教程3.5之線性回歸的簡潔實現(xiàn)

PyTorch教程4.1之Softmax回歸

PyTorch教程4.4之從頭開始實現(xiàn)Softmax回歸

評論