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