72 優(yōu)化算法【動手學深度學習v2】

優(yōu)化算法
- 對于深度學習問題,通常會先定義損失函數(shù),在有了損失函數(shù)之后,就可以使用優(yōu)化算法來嘗試最小化損失
- 在優(yōu)化中,損失函數(shù)通常被稱為優(yōu)化問題的目標函數(shù)
- 大多數(shù)優(yōu)化算法都關注的是最小化,如果需要最大化目標,只需要在目標函數(shù)前加負號就可以了
優(yōu)化和深度學習
1、盡管優(yōu)化提供了一種最大限度減少深度學習損失函數(shù)的方法,但本質(zhì)上優(yōu)化和深度學習的目標是根本不同的
- 優(yōu)化主要關注的是最小化目標
- 深度學習關注的是在給定有限數(shù)據(jù)量的情況下尋找合適的模型
2、具體的區(qū)別例如訓練誤差和泛化誤差
- 優(yōu)化算法的目標函數(shù)通常是基于訓練數(shù)據(jù)集的損失函數(shù),因此優(yōu)化的目標是減少訓練誤差
- 深度學習的目標是減少泛化誤差,為了達到減小泛化誤差的目的,除了使用優(yōu)化算法來減少訓練誤差外,還需要注意過擬合
3、經(jīng)驗風險和風險
- 經(jīng)驗風險:訓練數(shù)據(jù)集的平均損失
- 風險:整個數(shù)據(jù)群的預期損失
- 訓練數(shù)據(jù)集的最低經(jīng)驗風險可能和最低風險(泛化誤差)不同
4、優(yōu)化問題的一般形式:

- 在深度學習中,f(x) 是損失函數(shù)(給定一個輸入,預測和真實標號之間的差距);x 是所有的超參數(shù),不管矩陣還是張量 ,最終都會轉換成一個向量
- 限制集合 C 在優(yōu)化中比較常見,在具體的優(yōu)化中有很多的假設,但是在深度學習中,盡量使得 C 不受限制,不受限制的話相對來講優(yōu)化起來會快一點
深度學習中的挑戰(zhàn)
- 在深度學習中,大多數(shù)目標函數(shù)都很復雜,沒有解析解
局部最小 vs 全局最小
1、全局最小

- x* 對應的目標函數(shù)的值不大于求解區(qū)間中所有的 x 對應的目標函數(shù)值
- 如果 f(x) 在 x 處的值是整個域中目標函數(shù)的最小值,那么 f(x) 是全局最小值
2、局部最小

- 存在一個 ε ,使得任何 x 和解 x* 的距離小于半徑 ε 的時候,在這個范圍內(nèi)的 x 對應的目標函數(shù)值都不小于 f(x*)
- 對于任何目標函數(shù) f(x),如果在 x* 處對應的目標函數(shù)的值小于在 x* 附近任意其他點的 f(x) 的值,那么 f(x) 可能是局部最小值
3、例
在 x*cos(??*x) 中
- local minimum 表示局部最小值:在該點附近的局部區(qū)域內(nèi),其他 x 對應的目標函數(shù)值都不小于 f(x*)
- global minimum 表示全局最小值:在整個函數(shù)中,定義域內(nèi)的其他 x 對應的目標函數(shù)的值都不小于 f(x*)

4、求解
一般使用迭代算法來求解,
- 機器學習也好,深度學習也好,目標問題都不能求出顯式解,所以使用迭代算法
- 一般來說,迭代算法只能保證找到局部最小值
局部最小值處的梯度是零
- 因為使用的是梯度下降,到了局部最小的地方,梯度就變成零了,此時不管學習率取多大都不會再動了,所以說只能保證找到局部最小值
5、深度學習模型的目標函數(shù)通常有許多局部最優(yōu)解
- 當優(yōu)化問題的數(shù)值解接近局部最優(yōu)值時,隨著目標函數(shù)解的梯度接近或變?yōu)榱?,通過最終迭代獲得的數(shù)值解可能僅使目標函數(shù)局部最優(yōu),而不是全局最優(yōu)
- 只有一定程度的噪聲可能會使參數(shù)跳出局部最小值(小批量隨機梯度下降的有利特性之一,小批量上梯度的自然變化能夠?qū)?shù)從局部極小值中跳出)
鞍點(saddle point)
- 除局部最小值之外,鞍點是梯度消失的另外一個原因
1、定義:鞍點指的是函數(shù)的所有梯度都消失但既不是全局最小值也不是局部最小值的任何位置

2、假設函數(shù)的輸入是 k 維向量,它的輸出是標量,因此其 Hessian 矩陣(也稱黑塞矩陣)將有 k 個特征值
函數(shù)的解可能是局部最小值、局部最大值或函數(shù)梯度為零位置處的鞍點:
- 當函數(shù)在零梯度位置處的 Hessian 矩陣的特征值全部為正值時,該函數(shù)存在局部最小值
- 當函數(shù)在零梯度位置處的 Hessian 矩陣的特征值全部為負值時,該函數(shù)存在局部最大值
- 當函數(shù)在零梯度位置處的 Hessian 矩陣的特征值為正值和負值時,該函數(shù)存在鞍點(對于高維度問題,至少部分特征值為負的可能性相當高,因此鞍點比局部最小值更有可能出現(xiàn))
3、凸函數(shù)是 Hessian 函數(shù)的特征值永遠不為負值的函數(shù)
- 大多數(shù)深度學習問題并不屬于這一類,但是它仍是研究優(yōu)化算法的一個很好的工具
梯度消失
1、在某一個時刻開始,函數(shù) f(x) 的梯度接近零,這會導致優(yōu)化會停止很長一段時間
- 比如 f(x) = tanh(x) 從 x = 4 開始,f(x) 的梯度接近 0

2、引入 ReLU 激活函數(shù)能夠很好地緩解這個問題
3、對于深度學習,其實沒有必要找到最優(yōu)解,局部最優(yōu)解或者其近似解仍然非常有用
小結
1、最小化訓練誤差并不能保證能夠找到最佳的參數(shù)集來最小化泛化誤差
2、優(yōu)化問題可能有許多局部最小值
3、實際問題中可能會出現(xiàn)多個鞍點,因為問題通常不是凸的
4、梯度消失可能會導致優(yōu)化停滯,重參數(shù)化通常會有所幫助,對參數(shù)進行良好的初始化也可能是有益的
凸性(convexity)
1、凸性在優(yōu)化算法的設計中起到至關重要的作用,主要是由于在這種情況下對算法進行分析和測試要容易
- 如果算法在凸性條件設定下的效果很差,則通常很難在其他條件下看到好的結果
2、即使深度學習中的優(yōu)化問題通常是非凸的,它們經(jīng)常也在局部極小值附近表現(xiàn)出一些凸性
凸集
- 凸集是凸性的基礎
1、如果對于任何 a , b ∈ X ,連接 a 和 b 的線段也位于 X 中,則向量空間中的一個集合 X 是凸(convex)的
- 在一個區(qū)域中找任意兩個點連成一條線,這條線上所有的點都在這個區(qū)域當中

- 上圖中左邊一列表示的是凸集,右邊一列不是凸集
2、假設 X 和 Y 是凸集,那么 X ∩ Y 也是凸集

- 相反,凸集的并集并不一定是凸的,也可能是非凸 (nonconvex) 的

3、定義:
- 深度學習中的問題通常是在凸集上定義的

凸函數(shù)(convex function)
- 對于某函數(shù)上的任意兩點所連成的線,這兩點之間所有的 x 對應的函數(shù) y 的曲線都在這條線的下方

1、定義:


- 除去兩點連線的兩個端點,函數(shù)的曲線都在連線的下方(沒有交點)
2、性質(zhì)
- 凸函數(shù)的局部極小值也是全局極小值(并不意味著不能有多個全局最小值(f(x) = max(|x-1|,0) 在 [-1,1] 區(qū)間上都是最小值),或者可能不存在一個全局最小值(f(x) = exp(x) 在 R 上沒有最小值,無限趨近于 0 但不等于 0))
凸函數(shù)優(yōu)化
- 如果代價函數(shù) f 是凸的,且限制集合 C 是凸的,那么就是凸優(yōu)化問題,那么局部最小一定是全局最?。ㄒ簿褪钦f優(yōu)化算法找到的局部最小點一定是全局最優(yōu)解)
- 嚴格凸優(yōu)化問題有唯一的全局最小

- 上圖左側的函數(shù)不是嚴格的凸函數(shù),不滿足嚴格凸函數(shù)的定義,函數(shù)上存在兩點的連線(除端點外)與函數(shù)存在交點
- 上圖右側的函數(shù)是一個嚴格的凸函數(shù),所以它只有唯一的最小值
凸和非凸例子
1、機器學習絕大部分都不是凸優(yōu)化
2、目前為止只有兩個是凸的:
- 線性回歸:

- softmax 回歸:softmax 也是線性的
3、剩下的都是非凸的
- MLP:有一個隱藏層的 MLP,因為激活函數(shù)不是線性的,導致它是非線性的(非線性的是非凸的)
- CNN:卷積本身是線性的,但是卷積加了激活函數(shù)之后就不是線性的了
- RNN
- attetion
- ...
4、所有的模型都是非凸的
- 凸函數(shù)的表達能力是非常有限的
- 對于深度學習來講,實用性是排在第一位的,理論是靠后的,如果是研究理論的話,需要從統(tǒng)計的角度來看待問題,從統(tǒng)計的角度來講會考慮很多的凸優(yōu)化問題
- 從深度學習來講,是從計算機的角度考慮效果,而不是過于考慮理論,所導致基本上做的都是非凸的
- 優(yōu)化的很多理論基本上是凸優(yōu)化,最近也有研究非凸的,但是整體來講大塊是針對凸函數(shù)的優(yōu)化,對于非凸的模型很難說有特別大的指導意義
小結
1、凸集的交點是凸的,并集不是
2、一個二次可微函數(shù)是凸函數(shù),當且僅當其 Hessian (二階導數(shù)據(jù)矩陣)是半正定的
梯度下降(gradient descent)
- 梯度下降很少直接用于深度學習
- 由于學習率過大,優(yōu)化問題可能會發(fā)散,這種現(xiàn)象早已在梯度下降中出現(xiàn)
1、梯度下降算法是最簡單的迭代求解算法

- 選取開始點 x0
- 對 t = 1,2,...,T

- η 叫做學習率
- 上圖中藍色的曲線是目標函數(shù)的等高線
- 圓圈中心表示最小值,離圓心越遠的地方值越大
- 梯度下降會從圓圈外一直到圓圈中心值最小的地方
2、學習率(learning rate)
學習率決定目標函數(shù)能否收斂到局部最小值,以及何時收斂到最小值,通常用 η 表示
- 如果使用的學習率太小,將導致 x 的更新非常緩慢,需要更多的迭代
- 如果學習率過高可能會導致 x 振蕩甚至可能逐漸發(fā)散
小結
1、學習率的大小很重要:學習率太大會使模型發(fā)散,學習率太小會沒有進展
2、梯度下降可能陷入局部極小值,而得不到全局最小值
3、在高維模型中,調(diào)整學習率是比較復雜的
隨機梯度下降(stochastic gradient descent)
- 在深度學習中,目標函數(shù)通常是訓練數(shù)據(jù)集中每個樣本的損失函數(shù)的平均值
1、通常使用的都是隨機梯度下降而不用梯度下降,因為當有 n 個樣本的時候,f(x) 表示所有樣本上損失的平均值,當樣本特別多、計算一個樣本比較貴的時候,求 f(x) 的導數(shù)是比較貴的

- 梯度下降是在整個完整的樣本上求導,比較貴,所以通常使用的都是隨機梯度下降
2、隨機梯度下降在時間 t 隨機選擇一個樣本 ti 上的梯度來近似 f(x) 的梯度
- 這么做是因為求導是線性可加的


- 因為樣本 ti 是隨機選擇的,所以導數(shù)的期望就是所有樣本的梯度的均值,而所有樣本的梯度的均值和 f(x) 梯度的期望是差不多的,雖然有噪音,但是均值是近似相等的,也就是說大的方向是一致的
- 這樣做的好處是每次只用算一個樣本的梯度就可以了,而不用計算全部樣本的梯度(可能會導致重復性的計算)
3、對比梯度下降(上)和隨機梯度下降(下)

- 隨機梯度下降整個過程不像梯度下降那么平滑,特別是在最后階段比較曲折,但是整個大的方向和梯度下降是一致的(均值沒有發(fā)生變化)
- 因為每一次計算只需要計算一個樣本的梯度,所以雖然可能會走一點彎路,但是整體來看還是比較劃算的
4、隨機梯度下降在機器學習中的應用是在 2003 的時候提出來的,之前都是使用的梯度下降
- 隨機梯度下降成為了整個深度學習的基礎
- 其他的機器學習模型不一定會使用隨機梯度下降
小結
1、對于凸問題,對于廣泛的學習率選擇,隨機梯度下降將收斂到最優(yōu)解。但是對于深度學習而言,情況通常并非如此。但是對凸問題的分析能夠深入了解如何進行優(yōu)化,即逐步降低學習率,盡管不是太快
2、如果學習率太小或太大都會出現(xiàn)問題,實際上,通常只有經(jīng)過多次實驗之后才能找到合適的學習率
3、當訓練數(shù)據(jù)集中有更多樣本時,計算梯度下降的每次迭代的代價更高,因此在這些情況下,首選隨機梯度下降
4、隨機梯度下降的最優(yōu)性保證在非凸情況下一般不可用,因為需要檢查的局部最小值的數(shù)量可能是指數(shù)級的
小批量隨機梯度下降(minibatch gradient descent)
- 梯度下降使用完整的數(shù)據(jù)集來計算梯度并更新參數(shù);隨機梯度下降中一次處理一個訓練樣本來取得進展
- 每當數(shù)據(jù)非常相似時,梯度下降并不是非常“數(shù)據(jù)高效”
- 由于 CPU 和 GPU 無法充分利用向量化,隨機梯度下降并不是特別“計算高效”
- 使用小批量的決策的核心是計算效率
1、在實際應用中,真正使用的是小批量隨機梯度下降
- 之所以用小批量隨機梯度下降,不是統(tǒng)計的原因,而是計算的原因,因為隨機梯度下降對單樣本計算梯度,這樣的話很難完全利用硬件資源(CPU 和 GPU 都是多線程的,假設只是對單樣本進行梯度計算的話,計算量可能不足以能夠占滿整個硬件資源)
- 所以假設可以用多個樣本計算的話,每個樣本的計算是可以并行的,能夠提高計算的并行度,所以在實際使用中通常使用的是小批量隨機梯度下降
2、定義:

- It:隨機采樣一個樣本的子集
- b:批量大小
- 在計算梯度的時候,對 It 中采樣的 b 個樣本都求梯度,然后除以 b 求平均值,以此來近似整個目標函數(shù)的梯度
3、同理,因為是隨機采樣,最后又除以了隨機采樣的樣本數(shù)量,所以它的期望是沒變的,是一個無偏的近似,和隨機梯度一樣,大的方向是一致的,但是它的好處在于這樣計算降低了方差(因為是 b 個樣本的平均,所以整體在方向上的抖動相對來講會小一些,噪音會少一點,更加平滑)
4、下圖中,y 軸表示損失,x 軸表示時間(已經(jīng)做了對數(shù)處理)

- gd:梯度下降,梯度下降在一開始的時候就能達到很好的效果
- sgd:隨機梯度下降,隨機梯度下降比梯度下降要慢,因為每次只計算一個樣本的梯度,所以無法完全利用硬件資源進行并行計算,所以如果單純從物理時間來看的話,這樣做是不劃算的
- 所以需要在隨機梯度下降中加入比較大的批量
- 一般來說,批量小的時候收斂比較快,但是計算比較慢;批量很大的時候,每次計算的代價比較大,所以批量大小在一個比較合適的數(shù)量是比較好的,不能太小也不能太大
小結
- 隨機梯度下降的“統(tǒng)計效率”與大批量一次處理數(shù)據(jù)的“計算效率”之間存在權衡,小批量隨機梯度下降提供了兩全其美的答案:計算和統(tǒng)計效率
- 在小批量隨機梯度下降中,處理通過訓練數(shù)據(jù)的隨機排列獲得的批量數(shù)據(jù)(每個觀測值只處理一次,但按隨機順序)
- 在訓練期間降低學習率有助于訓練
- 一般來說,小批量隨機梯度下降比隨機梯度下降和梯度下降的速度快,收斂風險較小
沖量法(momentum)
- 對于嘈雜的梯度,在選擇學習率需要格外謹慎,如果衰減速度太快,收斂就會停滯;相反,如果太寬松,就肯惡搞無法收斂到最優(yōu)解
1、沖量法也是在實際應用中使用比較多的算法
2、沖量法使用平滑過的梯度對權重更新

- 在小批量隨機梯度下降的時候,梯度還是會有比較大的抖動,特別是當整個目標函數(shù)比較復雜的時候
- 真實數(shù)據(jù)的損失函數(shù)是不平滑的,在一個不那么平滑的平面上做優(yōu)化的時候,梯度的變化趨勢就有點類似于隨機運動,噪音可能會帶來一些不必要的抖動
- 沖量法中,它維護了一個慣性,使得梯度變化的方向不要變化太快,方向還是要改變的,這是變化起來比較平滑
- vt 實際上是等于當前時刻的梯度+ β*上一個時刻的梯度 + β*β*上上個時刻的梯度...
- β 是一個小于 1 的值,所以 vt 中歷史時刻的梯度項隨著時間的下降存在指數(shù)級的減少,時間越早的梯度項,最后的值就越小
- 通過這樣的設計使得對整個權重更新的方向并不是完全取決于 gt ,還要參考過去時間的梯度,如果當前時刻的 gt 和上一時刻的 g(t-1) 完全不同的話,使得 g(t-1) 能夠通過 β 對 gt 變化的方向進行一定程度的抵消,使得更新不那么劇烈
3、β 常見的取值:0.5、0.9、0.95、0.99
- 假設 β 取 0.5 的話,vt 中歷史時刻的梯度項會衰減得特別快(大概是計算過去兩三個時刻的梯度取平均)
- 假設 β 取 0.99 的話,vt 中歷史時刻的梯度項會衰減得比較慢,可以認為 gt 的變化會參考過去幾十個時刻梯度的方向(大概是計算過去五十個時刻的梯度取平均,超過 50 個以外的那些梯度項就變得很小了,幾乎可以忽略不計)
- 如果說樣本數(shù)量比較大,β 取 0.99 也很正常
4、對比隨機梯度下降(上)和沖量法(下)

- 隨機梯度下降上下振動的幅度比較大
- 沖量法是幾個相互沖突的方向在慢慢相互抵消,使得梯度的變化盡量朝著正確的方向
5、通過框架中的 moment 這個超參數(shù)來設定沖量法
- 最簡單的 sgd 都有 moment 的選項,只需要將 moment 設置成自己想要的值就可以了
小結
1、沖量法用過去梯度的平均值來替換梯度,大大加快了收斂速度
2、對于無噪聲梯度下降和嘈雜隨機梯度下降,沖量法都是可取的
3、沖量法可以防止在隨機梯度下降的優(yōu)化過程停滯的問題
4、由于對過去的數(shù)據(jù)進行了指數(shù)降權,有效梯度為 1/(1-β)
Adam
- 隨機梯度下降在解決優(yōu)化問題時比梯度下降更有效
- 在一個小批量中使用更大的觀測值集,可以通過向量化提供額外效率,這也是高效的多機、多 GPU 和整體并行處理的關鍵
1、Adam 是在實際應用中使用得最多的
2、之所以用 Adam 并不是因為它比 sgd ,Adam 最大的優(yōu)點在于它對學習率不是很敏感,在里面做了非常多的平滑,可以認為是一個非常平滑的 sgd
- sgd+moment 實際上效果已經(jīng)非常好了,實際上可以不用 Adam 也可以,Adam 優(yōu)化的效果不一定優(yōu)于 sgd+moment
- 平滑的好處在于對學習率不敏感,如果說沒有太多的時間去調(diào)參的話,Adam 是一個不錯的選擇;如果會調(diào)參的話,使用 sgd+moment 或者是別的一些優(yōu)化算法,可能效果會比 Adam 還要好一點
- 因為 Adam 比較簡單,所以使用的還是比較多的
3、定義:

- 和沖量法的不同之處在于 β1 是不需要調(diào)的,通常取 0.9

- 這里使用的是調(diào)和平均

- 因為 v0 = 0 ,所以在一開始的時候會偏小,所以當 t 比較小的時候這里做了一個修正(修正偏向 0 的趨勢)
- 對于 t 比較大的時候,由于 β1 是一個小于 1 的數(shù),1 - β1^t 會趨近于零,因此不會對 vt 產(chǎn)生影響,因此這里所做的修正主要是針對 t 比較小的時候

- st 和 vt 有點類似,唯一的區(qū)別是 st 中的 gt 多了一個平方(gt 是一個向量,gt 的平方計算是對 gt 中的每個元素進行平方),也就是說這里對向量 gt 中的每個元素的平方做了平滑處理
- 0.999 是一個比較大的窗口的平滑

- vt hat 可以認為是整個梯度的平滑版本,過去的所有時間的梯度的加權和‘
- 這里的除法也是按照元素進行計算
- 有時候每一個維度的值可能是不一樣的,有些值可能比較大,有些值可能比較小(NLP 中出現(xiàn)的比較多,有些詞出現(xiàn)的比較頻繁,有些詞出現(xiàn)的比較少,所以那些頻繁出現(xiàn)的詞的梯度就會比較大,而出現(xiàn)比較少的詞的梯度就會比較?。谧鎏卣魈崛〉臅r候,如果沒有做好歸一化,有些特征的值會比較大,有些特征的值會比較小就會出現(xiàn)特征值比較大的梯度就比較大,特征值比較小的梯度就會比較小,所以就會導致在取學習率的時候會比較麻煩:如果學習率取得比較大的話,在乘上比較大的梯度的時候,就會導致更新比較大,從而導致梯度爆炸:如果想要將學習率取得比較小來避免梯度爆炸,但是對于那些值比較小的梯度乘上學習率之后更新的不夠,就會導致收斂比較慢
- 所以這里對于梯度的調(diào)整就有點類似于對梯度做歸一化,將值比較大或者比較小的梯度拉到一個合適的范圍之中(進行維度上的調(diào)整)
- 分母中的 ε 的作用是保證分母不等于零

- 因為在 Adam 中做了很多的平滑,所以最終得出的 gt 的值都是比較均勻的
總結
1、深度學習模型大多是非凸的
- 所以關于凸優(yōu)化的很多理論無法使用
2、小批量隨機梯度下降是最常用的優(yōu)化算法
3、沖量對梯度做平滑
- 沖量法是一個簡單的穩(wěn)定優(yōu)化的算法
4、Adam 對梯度做平滑,且對梯度各個維度值做重新調(diào)整
- 通過實踐發(fā)現(xiàn),Adam 不一定比沖量法準確率高或者是收斂快,但是整體來講 Adam 是比較穩(wěn)定的,Adam 對學習率不那么敏感,使得調(diào)參相對來講會更加容易一點
- 對于新的模型,如果沒有很好的調(diào)參,可以直接使用 Adam
Q&A
- 1、我做的時候發(fā)現(xiàn)可以先把圖像切下來再用 classification 來做,請問在實際中這種方法和直接做 object detection 有什么區(qū)別?在實際任務中,從設計角度能不能提前預測用哪種 CV 設計思路更好?是不是 object detection 的做法在目標差異特別大的時候表現(xiàn)會比 classification 好?
- ?QA P2 - 00:01?
- 2、老師,像 Faster R-CNN 或者 YOLO 是不是自己實現(xiàn)一遍比較好?還是直接用開源的能用就好?
- ?QA P2 - 00:55?
- 3、感覺每張訓練集圖片上的標注都畫得不太一樣,有些邊緣的框子離目標比較近(外切),有些就有很大的邊緣。這種標注會影響 object detection 的效果嗎?實際中,對標注有沒有什么要求,比如怎么標注會比較好?
- ?QA P2 - 02:02?
- 4、老師,有 AIOps 或者 MLOps 相關的學習建議和資源推薦嗎?
- ?QA P2 - 03:22?
- 5、batch_size 取整個訓練集的大小,批量梯度下降是不是就變成了梯度下降?
- ?QA P2 - 03:28?
- 6、沖量法 vt = β * v(t-1) + g 中為什么 g 的系數(shù)是 1 ,而不是 1-β ?
- ?QA P2 - 03:38?
- 7、做牛仔檢測時, Faster R-CNN 配合Adam 相比 SGD ,嘗試了很多學習率,效果都很差,是有什么原因嗎?
- ?QA P2 - 03:58?
- 8、老師您好,我快讀研究生了,老師覺得遷移學習理論這個研究方向怎么樣?
- ?QA P2 - 04:18?
- 9、為什么梯度下降,x 的收斂點總是是 0 ;并且公式一定是 x = x 減去梯度
- ?QA P2 - 04:44?
- 10、工業(yè)界,現(xiàn)在模型的邊際收益是不是在逐漸降低?
- ?QA P2 - 05:09?
- 11、如果是優(yōu)化的問題是一個稀疏性問題,例如低秩矩陣分解(每個樣本只會更新一小部分的參數(shù)),batch_size 是大一點好還是小一點好?
- ?QA P2 - 05:15?
- 12、老師,請問用大數(shù)據(jù)集訓練出來的模型的魯棒性一定比小數(shù)據(jù)集訓練出來的魯棒性強嗎?
- ?QA P2 - 05:56?
- 13、請問后續(xù)還會開展哪些課程呢?老師提到的斯坦福的課程可以線上看嗎?
- ?QA P2 - 06:46?
- 14、有沒有什么完整一點的圖像算法工程師的知識路線圖什么的,感覺這里學一點那里學一點,啥也沒學到?
- ?QA P2 - 06:52?
- 15、如果有幾百上千個特征,既有離散值又有連續(xù)值,需要做不同的預處理,如何判斷這么多的特征是否為離散或者連續(xù)?只能用眼觀察嗎?
- ?QA P2 - 07:15?
- 16、我們采集了 2 萬張圖片,攝像頭是朝下 45 度采集的,現(xiàn)在另外一個項目攝像頭需要平行于地面向前看,請問我之前的 2 萬張圖片還能用嗎?有什么方法可以用呢?
- ?QA P2 - 07:37?
- 17、老師,學習了很久的深度學習,問個基本功問題吧。寫代碼自己寫不出來,看別人的能懂,提升 C++ 能力方向路線講講老師的經(jīng)驗
- ?QA P2 - 08:10?
- 18、老師,請問用不同的訓練集訓練出來相同結構的兩個網(wǎng)絡,如何比較這兩個網(wǎng)絡的差異?比如從他們的精度或者參數(shù)差別來比,老師有什么好的想法嗎?
- ?QA P2 - 08:34?
- 19、老師能推薦幾個 NLP 入門的比賽嗎?
- ?QA P2 - 08:57?
----end----
其他參考
1、《動手學深度學習》,課程 PPT ,https://courses.d2l.ai/zh-v2/assets/pdfs/part-4_2.pdf
2、《動手學深度學習》,教程,https://zh-v2.d2l.ai/chapter_optimization/optimization-intro.html
3、《動手學深度學習》,教程,https://zh-v2.d2l.ai/chapter_optimization/convexity.html
4、《動手學深度學習》,教程,https://zh-v2.d2l.ai/chapter_optimization/gd.html
5、《動手學深度學習》,教程,https://zh-v2.d2l.ai/chapter_optimization/sgd.html
6、《動手學深度學習》,教程,https://zh-v2.d2l.ai/chapter_optimization/minibatch-sgd.html
7、《動手學深度學習》,教程,https://zh-v2.d2l.ai/chapter_optimization/momentum.html
8、《動手學深度學習》,教程,https://zh-v2.d2l.ai/chapter_optimization/adam.html