全國(guó)網(wǎng)站建設(shè)公司排名無(wú)錫谷歌推廣
優(yōu)化和深度學(xué)習(xí)
對(duì)于深度學(xué)習(xí)問題,我們通常會(huì)先定義損失函數(shù)。一旦我們有了損失函數(shù),我們就可以使用優(yōu)化算法來(lái)嘗試最小化損失。在優(yōu)化中,損失函數(shù)通常被稱為優(yōu)化問題的目標(biāo)函數(shù)。按照傳統(tǒng)慣例,大多數(shù)優(yōu)化算法都關(guān)注的是最小化。如果我們需要最大化目標(biāo),那么有一個(gè)簡(jiǎn)單的解決方案:在目標(biāo)函數(shù)前加負(fù)號(hào)即可。
優(yōu)化的目標(biāo)
盡管優(yōu)化提供了一種最大限度地減少深度學(xué)習(xí)損失函數(shù)的方法,但本質(zhì)上,優(yōu)化和深度學(xué)習(xí)的目標(biāo)是根本不同的。前者主要關(guān)注的是最小化目標(biāo),后者則關(guān)注在給定有限數(shù)據(jù)量的情況下尋找合適的模型。例如,訓(xùn)練誤差和泛化誤差通常不同:由于優(yōu)化算法的目標(biāo)函數(shù)通常是基于訓(xùn)練數(shù)據(jù)集的損失函數(shù),因此優(yōu)化的目標(biāo)是減少訓(xùn)練誤差。但是,深度學(xué)習(xí)(或更廣義地說,統(tǒng)計(jì)推斷)的目標(biāo)是減少泛化誤差。為了實(shí)現(xiàn)后者,除了使用優(yōu)化算法來(lái)減少訓(xùn)練誤差之外,我們還需要注意過擬合。
%matplotlib inline
import numpy as np
import torch
from mpl_toolkits import mplot3d
from d2l import torch as d2l
下圖說明,訓(xùn)練數(shù)據(jù)集的最低經(jīng)驗(yàn)風(fēng)險(xiǎn)可能與最低風(fēng)險(xiǎn)(泛化誤差)不同。
def annotate(text, xy, xytext): #@saved2l.plt.gca().annotate(text, xy=xy, xytext=xytext,arrowprops=dict(arrowstyle='->'))x = torch.arange(0.5, 1.5, 0.01)
d2l.set_figsize((4.5, 2.5))
d2l.plot(x, [f(x), g(x)], 'x', 'risk')
annotate('min of\nempirical risk', (1.0, -1.2), (0.5, -1.1))
annotate('min of risk', (1.1, -1.05), (0.95, -0.5))
?
?