點(diǎn)擊上方 “小白學(xué)視覺(jué) ”,選擇加" 星標(biāo) "或“ 置頂 ”
重磅干貨,第一時(shí)間送達(dá)
來(lái)源:https://zhuanlan.zhihu.com/p/343564175
論文標(biāo)題:An overview of gradient descent optimization algorithms 原文鏈接:https://arxiv.org/pdf/1609.04747.pdf Github:NLP相關(guān)Paper筆記和代碼復(fù)現(xiàn)(https://github.com/DengBoCong/nlp-paper) 說(shuō)明:閱讀論文時(shí)進(jìn)行相關(guān)思想、結(jié)構(gòu)、優(yōu)缺點(diǎn),內(nèi)容進(jìn)行提煉和記錄,論文和相關(guān)引用會(huì)標(biāo)明出處,引用之處如有侵權(quán),煩請(qǐng)告知?jiǎng)h除。 不管是使用PyTorch還是TensorFlow,用多了Optimizer優(yōu)化器封裝好的函數(shù),對(duì)其內(nèi)部使用的優(yōu)化算法卻沒(méi)有仔細(xì)研究過(guò),也很難對(duì)其優(yōu)點(diǎn)和缺點(diǎn)進(jìn)行實(shí)用的解釋。所以打算以這一篇論文為主線并結(jié)合多篇優(yōu)秀博文,回顧和總結(jié)目前主流的優(yōu)化算法,對(duì)于沒(méi)有深入了解過(guò)的算法,正好借這個(gè)機(jī)會(huì)學(xué)習(xí)一下。 當(dāng)前使用的許多優(yōu)化算法,是對(duì)梯度下降法的衍生和優(yōu)化。在微積分中,對(duì)多元函數(shù)的參數(shù)求? ?偏導(dǎo)數(shù),把求得的各個(gè)參數(shù)的導(dǎo)數(shù)以向量的形式寫(xiě)出來(lái)就是梯度。梯度就是函數(shù)變化最快的地方。梯度下降是迭代法的一種,在求解機(jī)器學(xué)習(xí)算法的模型參數(shù)? ?時(shí),即無(wú)約束問(wèn)題時(shí),梯度下降是最常采用的方法之一。 這里定義一個(gè)通用的思路框架,方便我們后面理解各算法之間的關(guān)系和改進(jìn)。首先定義待優(yōu)化參數(shù)? ?,目標(biāo)函數(shù)? ?,學(xué)習(xí)率為? ?,然后我們進(jìn)行迭代優(yōu)化,假設(shè)當(dāng)前的epoch為? ?,則有: 計(jì)算目標(biāo)函數(shù)關(guān)于當(dāng)前參數(shù)的梯度:? 計(jì)算當(dāng)前時(shí)刻的下降梯度:? 其中,? ?為下一個(gè)時(shí)刻的參數(shù),? ?為當(dāng)前時(shí)刻? ?參數(shù),后面的描述我們都將結(jié)合這個(gè)框架來(lái)進(jìn)行。 鞍點(diǎn):一個(gè)光滑函數(shù)的鞍點(diǎn)鄰域的曲線,曲面,或超曲面,都位于這點(diǎn)的切線的不同邊。例如這個(gè)二維圖形,像個(gè)馬鞍:在x-軸方向往上曲,在y-軸方向往下曲,鞍點(diǎn)就是(0,0)。 指數(shù)加權(quán)平均、偏差修正:可參見(jiàn)這篇文章 什么是指數(shù)加權(quán)平均、偏差修正?- 郭耀華 - 博客園 https://www.cnblogs.com/guoyaohua/p/8544835.html 在GD中沒(méi)有動(dòng)量的概念,也就是說(shuō)在上述框架中:?; ?,則我們?cè)诋?dāng)前時(shí)刻需要下降的梯度就是? ?,則使用梯度下降法更新參數(shù)為(假設(shè)當(dāng)前樣本為? ?,每當(dāng)樣本輸入時(shí),參數(shù)即進(jìn)行更新): 梯度下降算法中,模型參數(shù)的更新調(diào)整,與代價(jià)函數(shù)關(guān)于模型參數(shù)的梯度有關(guān),即沿著梯度的方向不斷減小模型參數(shù),從而最小化代價(jià)函數(shù)。基本策略可以理解為”在有限視距內(nèi)尋找最快路徑下山“,因此每走一步,參考當(dāng)前位置最陡的方向(即梯度)進(jìn)而邁出下一步,更形象的如下圖: 標(biāo)準(zhǔn)的梯度下降主要有兩個(gè)缺點(diǎn): 訓(xùn)練速度慢:在應(yīng)用于大型數(shù)據(jù)集中,每輸入一個(gè)樣本都要更新一次參數(shù),且每次迭代都要遍歷所有的樣本,會(huì)使得訓(xùn)練過(guò)程及其緩慢,需要花費(fèi)很長(zhǎng)時(shí)間才能得到收斂解。 容易陷入局部最優(yōu)解:由于是在有限視距內(nèi)尋找下山的反向,當(dāng)陷入平坦的洼地,會(huì)誤以為到達(dá)了山地的最低點(diǎn),從而不會(huì)繼續(xù)往下走。所謂的局部最優(yōu)解就是鞍點(diǎn),落入鞍點(diǎn),梯度為0,使得模型參數(shù)不在繼續(xù)更新。
Batch Gradient Descent(BGD)
BGD相對(duì)于標(biāo)準(zhǔn)GD進(jìn)行了改進(jìn),改進(jìn)的地方通過(guò)它的名字應(yīng)該也能看出來(lái),也就是不再是想標(biāo)準(zhǔn)GD一樣,對(duì)每個(gè)樣本輸入都進(jìn)行參數(shù)更新,而是針對(duì)一個(gè)批量的數(shù)據(jù)輸入進(jìn)行參數(shù)更新。我們假設(shè)批量訓(xùn)練樣本總數(shù) 為? ?,樣本為? ?,則在第? ?對(duì)樣本? ?上損失函數(shù)關(guān)于參數(shù)的梯度為? ?, 則使用BGD更新參數(shù)為: 從上面的公式我們可以看到,BGD其實(shí)是在一個(gè)批量的樣本數(shù)據(jù)中,求取該批量樣本梯度的均值來(lái)更新參數(shù),即每次權(quán)值調(diào)整發(fā)生在批量樣本輸入之后,而不是每輸入一個(gè)樣本就更新一次模型參數(shù),這樣就會(huì)大大加快訓(xùn)練速度,但是還是不夠,我們接著往下看。
Stochastic Gradient Descent(SGD)
隨機(jī)梯度下降法,不像BGD每一次參數(shù)更新,需要計(jì)算整個(gè)數(shù)據(jù)樣本集的梯度,而是每次參數(shù)更新時(shí),僅僅選取一個(gè)樣本? ?計(jì)算其梯度,參數(shù)更新公式為: 公式看起來(lái)和上面標(biāo)準(zhǔn)GD一樣,但是注意了,這里的樣本是從批量中隨機(jī)選取一個(gè),而標(biāo)準(zhǔn)GD是所有的輸入樣本都進(jìn)行計(jì)算。可以看到BGD和SGD是兩個(gè)極端,SGD由于每次參數(shù)更新僅僅需要計(jì)算一個(gè)樣本的梯度,訓(xùn)練速度很快,即使在樣本量很大的情況下,可能只需要其中一部分樣本就能迭代到最優(yōu)解,由于每次迭代并不是都向著整體最優(yōu)化方向,導(dǎo)致梯度下降的波動(dòng)非常大(如下圖),更容易從一個(gè)局部最優(yōu)跳到另一個(gè)局部最優(yōu),準(zhǔn)確度下降。 論文中提到,當(dāng)緩慢降低學(xué)習(xí)率時(shí),SGD會(huì)顯示與BGD相同的收斂行為,幾乎一定會(huì)收斂到局部(非凸優(yōu)化)或全局最小值(凸優(yōu)化)。 雖然看起來(lái)SGD波動(dòng)非常大,會(huì)走很多彎路,但是對(duì)梯度的要求很低(計(jì)算梯度快),而且對(duì)于引入噪聲,大量的理論和實(shí)踐工作證明,只要噪聲不是特別大,SGD都能很好地收斂。 應(yīng)用大型數(shù)據(jù)集時(shí),訓(xùn)練速度很快。比如每次從百萬(wàn)數(shù)據(jù)樣本中,取幾百個(gè)數(shù)據(jù)點(diǎn),算一個(gè)SGD梯度,更新一下模型參數(shù)。相比于標(biāo)準(zhǔn)梯度下降法的遍歷全部樣本,每輸入一個(gè)樣本更新一次參數(shù),要快得多。 SGD在隨機(jī)選擇梯度的同時(shí)會(huì)引入噪聲,使得權(quán)值更新的方向不一定正確(次要)。 SGD也沒(méi)能單獨(dú)克服局部最優(yōu)解的問(wèn)題(主要)。
Mini-batch Gradient Descent(MBGD,也叫作SGD)
小批量梯度下降法就是結(jié)合BGD和SGD的折中,對(duì)于含有? ?個(gè)訓(xùn)練樣本的數(shù)據(jù)集,每次參數(shù)更新,選擇一個(gè)大小為 $m(m
小批量梯度下降法即保證了訓(xùn)練的速度,又能保證最后收斂的準(zhǔn)確率,目前的SGD默認(rèn)是小批量梯度下降算法。常用的小批量尺寸范圍在50到256之間,但可能因不同的應(yīng)用而異。 Mini-batch gradient descent 不能保證很好的收斂性,learning rate 如果選擇的太小,收斂速度會(huì)很慢,如果太大,loss function 就會(huì)在極小值處不停地震蕩甚至偏離(有一種措施是先設(shè)定大一點(diǎn)的學(xué)習(xí)率,當(dāng)兩次迭代之間的變化低于某個(gè)閾值后,就減小 learning rate,不過(guò)這個(gè)閾值的設(shè)定需要提前寫(xiě)好,這樣的話就不能夠適應(yīng)數(shù)據(jù)集的特點(diǎn))。對(duì)于非凸函數(shù),還要避免陷于局部極小值處,或者鞍點(diǎn)處,因?yàn)榘包c(diǎn)所有維度的梯度都接近于0,SGD 很容易被困在這里(會(huì)在鞍點(diǎn)或者局部最小點(diǎn)震蕩跳動(dòng),因?yàn)樵诖它c(diǎn)處,如果是BGD的訓(xùn)練集全集帶入,則優(yōu)化會(huì)停止不動(dòng),如果是mini-batch或者SGD,每次找到的梯度都是不同的,就會(huì)發(fā)生震蕩,來(lái)回跳動(dòng))。 SGD對(duì)所有參數(shù)更新時(shí)應(yīng)用同樣的 learning rate,如果我們的數(shù)據(jù)是稀疏的,我們更希望對(duì)出現(xiàn)頻率低的特征進(jìn)行大一點(diǎn)的更新, 且learning rate會(huì)隨著更新的次數(shù)逐漸變小。 momentum算法思想:參數(shù)更新時(shí)在一定程度上保留之前更新的方向,同時(shí)又利用當(dāng)前batch的梯度微調(diào)最終的更新方向,簡(jiǎn)言之就是通過(guò)積累之前的動(dòng)量來(lái)加速當(dāng)前的梯度。從這里開(kāi)始,我們引入一階動(dòng)量的概念(在mini-batch SGD的基礎(chǔ)之上),也就是說(shuō),在最開(kāi)始說(shuō)的框架中,? ?,而? ?不變,參數(shù)更新公式如下: 一階動(dòng)量是各個(gè)時(shí)刻梯度方向的指數(shù)移動(dòng)平均值,約等于最近? ?個(gè)時(shí)刻的梯度向量和的平均值(移動(dòng)平均是啥看最上面的文章)。也就是說(shuō),? ?時(shí)刻的下降方向,不僅由當(dāng)前點(diǎn)的梯度方向決定,而且由此前累積的下降方向決定。? ?的經(jīng)驗(yàn)值為0.9,這就意味著下降方向主要是此前累積的下降方向,并略微偏向當(dāng)前時(shí)刻的下降方向。在梯度方向改變時(shí),momentum能夠降低參數(shù)更新速度,從而減少震蕩,在梯度方向相同時(shí),momentum可以加速參數(shù)更新, 從而加速收斂,如下圖: 動(dòng)量主要解決SGD的兩個(gè)問(wèn)題: Hessian矩陣病態(tài)問(wèn)題(可以理解為SGD在收斂過(guò)程中和正確梯度相比來(lái)回?cái)[動(dòng)比較大的問(wèn)題)。
Nesterov Accelerated Gradient
NAG(Nesterov accelerated gradient)算法,是Momentum動(dòng)量算法的變種。momentum保留了上一時(shí)刻的梯度? ?,對(duì)其沒(méi)有進(jìn)行任何改變,NAG是momentum的改進(jìn),在梯度更新時(shí)做一個(gè)矯正,具體做法就是在當(dāng)前的梯度上添加上一時(shí)刻的動(dòng)量? ?,梯度改變?yōu)? ?,參數(shù)更新公式如下: 加上nesterov項(xiàng)后,梯度在大的跳躍后,進(jìn)行計(jì)算對(duì)當(dāng)前梯度進(jìn)行校正。下圖是momentum和nesterrov的對(duì)比表述圖如下: Nesterov動(dòng)量梯度的計(jì)算在模型參數(shù)施加當(dāng)前速度之后,因此可以理解為往標(biāo)準(zhǔn)動(dòng)量中添加了一個(gè)校正因子。在凸批量梯度的情況下,Nesterov動(dòng)量將額外誤差收斂率從? ?(k步后)改進(jìn)到? ?,然而,在隨機(jī)梯度情況下,Nesterov動(dòng)量對(duì)收斂率的作用卻不是很大。 Momentum和Nexterov都是為了使梯度更新更靈活。但是人工設(shè)計(jì)的學(xué)習(xí)率總是有些生硬,下面介紹幾種自適應(yīng)學(xué)習(xí)率的方法。 Adagrad其實(shí)是對(duì)學(xué)習(xí)率進(jìn)行了一個(gè)約束,對(duì)于經(jīng)常更新的參數(shù),我們已經(jīng)積累了大量關(guān)于它的知識(shí),不希望被單個(gè)樣本影響太大,希望學(xué)習(xí)速率慢一些;對(duì)于偶爾更新的參數(shù),我們了解的信息太少,希望能從每個(gè)偶然出現(xiàn)的樣本身上多學(xué)一些,即學(xué)習(xí)速率大一些。而該方法中開(kāi)始使用二階動(dòng)量,才意味著“自適應(yīng)學(xué)習(xí)率”優(yōu)化算法時(shí)代的到來(lái)。 我們前面都沒(méi)有好好的討論二階動(dòng)量,二階動(dòng)量是個(gè)啥?它是用來(lái)度量歷史更新頻率的,二階動(dòng)量是迄今為止所有梯度值的平方和,即? ?,在最上面的框架中? ?(在這里? ?), 也就是說(shuō),我們的學(xué)習(xí)率現(xiàn)在是? ?(一般為了避免分母為0,會(huì)在分母上加一個(gè)小的平滑項(xiàng)? ?),從這里我們就會(huì)發(fā)現(xiàn)? ?是恒大于0的,而且參數(shù)更新越頻繁,二階動(dòng)量越大,學(xué)習(xí)率就越小,這一方法在稀疏數(shù)據(jù)場(chǎng)景下表現(xiàn)非常好,參數(shù)更新公式如下: 細(xì)心的小伙伴應(yīng)該會(huì)發(fā)現(xiàn)Adagrad還是存在一個(gè)很明顯的缺點(diǎn): 仍需要手工設(shè)置一個(gè)全局學(xué)習(xí)率? ?, 如果? ?設(shè)置過(guò)大的話,會(huì)使regularizer過(guò)于敏感,對(duì)梯度的調(diào)節(jié)太大 中后期,分母上梯度累加的平方和會(huì)越來(lái)越大,使得參數(shù)更新量趨近于0,使得訓(xùn)練提前結(jié)束,無(wú)法學(xué)習(xí) 由于AdaGrad調(diào)整學(xué)習(xí)率變化過(guò)于激進(jìn),我們考慮一個(gè)改變二階動(dòng)量計(jì)算方法的策略:不累積全部歷史梯度,而只關(guān)注過(guò)去一段時(shí)間窗口的下降梯度,即Adadelta只累加固定大小的項(xiàng),并且也不直接存儲(chǔ)這些項(xiàng),僅僅是近似計(jì)算對(duì)應(yīng)的平均值(指數(shù)移動(dòng)平均值),這就避免了二階動(dòng)量持續(xù)累積、導(dǎo)致訓(xùn)練過(guò)程提前結(jié)束的問(wèn)題了,參數(shù)更新公式如下: 觀察上面的參數(shù)更新公式,我們發(fā)現(xiàn)還是依賴于全局學(xué)習(xí)率? ?,但是原作者在此基礎(chǔ)之上做出了一定的處理,上式經(jīng)過(guò)牛頓迭代法之后,得到Adadelta最終迭代公式如下式,其中? ?: 此時(shí)可以看出Adadelta已經(jīng)不依賴全局learning rate了 ,Adadelta有如下特點(diǎn):訓(xùn)練初中期,加速效果不錯(cuò),很快 訓(xùn)練后期,反復(fù)在局部最小值附近抖動(dòng) RMSProp算法修改了AdaGrad的梯度平方和累加為指數(shù)加權(quán)的移動(dòng)平均,使得其在非凸設(shè)定下效果更好。設(shè)定參數(shù):全局初始率? ?, 默認(rèn)設(shè)為0.001,decay rate? ?,默認(rèn)設(shè)置為0.9,一個(gè)極小的常量? ?,通常為10e-6,參數(shù)更新公式如下,其中? ?: 其實(shí)RMSprop依然依賴于全局學(xué)習(xí)率? RMSprop算是Adagrad的一種發(fā)展,和Adadelta的變體,效果趨于二者之間 適合處理非平穩(wěn)目標(biāo)(包括季節(jié)性和周期性)——對(duì)于RNN效果很好
Adaptive Moment Estimation(Adam)
其實(shí)有了前面的方法,Adam和Nadam的出現(xiàn)就很理所當(dāng)然的了,因?yàn)樗鼈兘Y(jié)合了前面方法的一階動(dòng)量和二階動(dòng)量。我們看到,SGD-M和NAG在SGD基礎(chǔ)上增加了一階動(dòng)量,AdaGrad和AdaDelta在SGD基礎(chǔ)上增加了二階動(dòng)量,參數(shù)更新公式如下(按照最開(kāi)始總結(jié)的計(jì)算框架): 通常情況下,默認(rèn)值為? ?、? ?和? ?,Adam通常被認(rèn)為對(duì)超參數(shù)的選擇相當(dāng)魯棒,特點(diǎn)如下: Adam梯度經(jīng)過(guò)偏置校正后,每一次迭代學(xué)習(xí)率都有一個(gè)固定范圍,使得參數(shù)比較平穩(wěn)。 結(jié)合了Adagrad善于處理稀疏梯度和RMSprop善于處理非平穩(wěn)目標(biāo)的優(yōu)點(diǎn) 為不同的參數(shù)計(jì)算不同的自適應(yīng)學(xué)習(xí)率 也適用于大多非凸優(yōu)化問(wèn)題——適用于大數(shù)據(jù)集和高維空間。 Adamax是Adam的一種變體,此方法對(duì)學(xué)習(xí)率的上限提供了一個(gè)更簡(jiǎn)單的范圍,即使用無(wú)窮范式,參數(shù)更新公式如下: 其實(shí)如果說(shuō)要集成所有方法的優(yōu)點(diǎn)于一身的話,Nadam應(yīng)該就是了,Adam遺漏了啥?沒(méi)錯(cuò),就是Nesterov項(xiàng),我們?cè)贏dam的基礎(chǔ)上,加上Nesterov項(xiàng)就是Nadam了,參數(shù)更新公式如下: 可以看出,Nadam對(duì)學(xué)習(xí)率有更強(qiáng)的約束,同時(shí)對(duì)梯度的更新也有更直接的影響。一般而言,在使用帶動(dòng)量的RMSprop或Adam的問(wèn)題上,使用Nadam可以取得更好的結(jié)果。 來(lái)張直觀的動(dòng)態(tài)圖展示上述優(yōu)化算法的效果: 下圖描述了在一個(gè)曲面上,6種優(yōu)化器的表現(xiàn):
下圖在一個(gè)存在鞍點(diǎn)的曲面,比較6中優(yōu)化器的性能表現(xiàn):
下圖圖比較了6種優(yōu)化器收斂到目標(biāo)點(diǎn)(五角星)的運(yùn)行過(guò)程
那種優(yōu)化器最好?該選擇哪種優(yōu)化算法?目前還沒(méi)能夠達(dá)達(dá)成共識(shí)。Schaul et al (2014)展示了許多優(yōu)化算法在大量學(xué)習(xí)任務(wù)上極具價(jià)值的比較。雖然結(jié)果表明,具有自適應(yīng)學(xué)習(xí)率的優(yōu)化器表現(xiàn)的很魯棒,不分伯仲,但是沒(méi)有哪種算法能夠脫穎而出。 目前,最流行并且使用很高的優(yōu)化器(算法)包括SGD、具有動(dòng)量的SGD、RMSprop、具有動(dòng)量的RMSProp、AdaDelta和Adam。在實(shí)際應(yīng)用中,選擇哪種優(yōu)化器應(yīng)結(jié)合具體問(wèn)題;同時(shí),也優(yōu)化器的選擇也取決于使用者對(duì)優(yōu)化器的熟悉程度(比如參數(shù)的調(diào)節(jié)等等)。 對(duì)于稀疏數(shù)據(jù),盡量使用學(xué)習(xí)率可自適應(yīng)的優(yōu)化方法,不用手動(dòng)調(diào)節(jié),而且最好采用默認(rèn)值 SGD通常訓(xùn)練時(shí)間更長(zhǎng),但是在好的初始化和學(xué)習(xí)率調(diào)度方案的情況下,結(jié)果更可靠 如果在意更快的收斂,并且需要訓(xùn)練較深較復(fù)雜的網(wǎng)絡(luò)時(shí),推薦使用學(xué)習(xí)率自適應(yīng)的優(yōu)化方法。 Adadelta,RMSprop,Adam是比較相近的算法,在相似的情況下表現(xiàn)差不多。 在想使用帶動(dòng)量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果 如果驗(yàn)證損失較長(zhǎng)時(shí)間沒(méi)有得到改善,可以停止訓(xùn)練。 添加梯度噪聲(高斯分布? ?)到參數(shù)更新,可使網(wǎng)絡(luò)對(duì)不良初始化更加健壯,并有助于訓(xùn)練特別深而復(fù)雜的網(wǎng)絡(luò)。 下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程 在「小白學(xué)視覺(jué) 」公眾號(hào)后臺(tái)回復(fù): 擴(kuò)展模塊中文教程 , 即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理 等二十多章內(nèi)容。下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目52講 在「小白學(xué)視覺(jué) 」 公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目 , 即可下載包括圖像分割、口罩檢測(cè)、車(chē)道線檢測(cè)、車(chē)輛計(jì)數(shù)、添加眼線、車(chē)牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別 等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。 下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講 在「小白學(xué)視覺(jué) 」 公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講 , 即可下載含有20 個(gè)基于OpenCV 實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目 ,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。 交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué) 、傳感器、自動(dòng)駕駛、 計(jì)算攝影 、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽 等微信群(以后會(huì)逐漸細(xì)分), 請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱(chēng)+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò) 。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿 在群內(nèi)發(fā)送廣告 ,否則會(huì)請(qǐng)出群,謝謝理解~