百面機(jī)器學(xué)習(xí)|第七章優(yōu)化算法知識(shí)點(diǎn)(二)

前言

如果你能找到這里,真是我的幸運(yùn)~這里是藍(lán)白絳的學(xué)習(xí)筆記愤兵,本集合主要針對(duì)《百面機(jī)器學(xué)習(xí)——算法工程師帶你去面試》這本書赐俗。主要記錄我認(rèn)為重要的知識(shí)點(diǎn),希望對(duì)大家有幫助众眨。

第七章 優(yōu)化算法

6握牧、隨機(jī)梯度下降法的加速

  1. 隨機(jī)梯度下降是深度學(xué)習(xí)中最常用的優(yōu)化方法,但是偶爾也會(huì)失效娩梨,因?yàn)殡S機(jī)梯度下降好比蒙上眼睛只憑腳底踩石頭的感覺(jué)判斷下山路徑沿腰,每步接收到的信息量有限瞬内,因此對(duì)梯度的估計(jì)常常出現(xiàn)偏差摆昧,造成目標(biāo)函數(shù)曲線收斂很不穩(wěn)定,伴有劇烈波動(dòng)鳍咱,甚至出現(xiàn)不收斂的情況纽什。如下圖所示措嵌。
    7-6 隨機(jī)梯度下降參數(shù)優(yōu)化軌跡
  2. 隨機(jī)梯度下降與批量梯度下降:批量梯度下降法為了獲取準(zhǔn)確的梯度,每一步都把整個(gè)訓(xùn)練集載入進(jìn)來(lái)進(jìn)行計(jì)算芦缰,時(shí)間花費(fèi)和內(nèi)存開銷都非常大企巢,無(wú)法應(yīng)用于大數(shù)據(jù)集、大模型的場(chǎng)景让蕾。隨機(jī)梯度下降則放棄了對(duì)梯度準(zhǔn)確性的追求浪规,每步僅僅隨機(jī)采樣一個(gè)(或少量)樣本來(lái)估計(jì)當(dāng)前梯度,計(jì)算速度快涕俗,內(nèi)存開銷小。
  3. 對(duì)隨機(jī)梯度下降法來(lái)說(shuō)神帅,最可怕的不是局部最優(yōu)點(diǎn)再姑,而是山谷鞍點(diǎn)兩類。山谷點(diǎn)導(dǎo)致收斂不穩(wěn)定收斂速度慢找御;鞍點(diǎn)導(dǎo)致隨機(jī)梯度下降法無(wú)法準(zhǔn)確察覺(jué)出梯度的微小變化元镀,結(jié)果就停滯下來(lái)绍填。
  4. 隨機(jī)梯度下降法的優(yōu)化:隨機(jī)梯度下降本質(zhì)上是用迭代方式更新參數(shù),更新公式為:\theta_{t+1}=\theta_t+\eta g_t基于梯度下降有以下幾種優(yōu)化方法:
  • 動(dòng)量(Momentum)方法:我們希望當(dāng)沿山谷滾下時(shí)栖疑,不容易受到途中旁力的干擾讨永,使軌跡更穩(wěn)更直;當(dāng)來(lái)到鞍點(diǎn)中心處時(shí)遇革,在慣性的作用下繼續(xù)前行卿闹,從而有機(jī)會(huì)沖出平坦的陷阱。動(dòng)量方法模型參數(shù)的迭代公式為:v_t=\gamma v_{t-1}+\eta g_t \theta_{t+1}=\theta_t-v_t可以看到不加動(dòng)量的方法每次只利用當(dāng)前估計(jì)的梯度g_t萝快,而動(dòng)量方法利用了上一次的步伐v_{t-1}和當(dāng)前估計(jì)的梯度g_t锻霎。慣性就體現(xiàn)在對(duì)前一次步伐信息的重利用上。當(dāng)前梯度好比加速度揪漩,前一次步伐好比前一刻的速度旋恼,當(dāng)前步伐好比當(dāng)前時(shí)刻的速度。另外奄容,衰減系數(shù)\gamma扮演了阻力的作用冰更。
    相比隨機(jī)梯度下降,動(dòng)量方法收斂速度更快昂勒,收斂曲線更加穩(wěn)定蜀细。如下圖所示。
    7-6 動(dòng)量方法的效果
  • AdaGrad方法:除了可以從過(guò)去的步伐中獲得沖勁叁怪,還可以獲得對(duì)周圍環(huán)境的感知审葬,即使蒙上眼睛,依靠前幾次邁步的感覺(jué)奕谭,應(yīng)該也能判斷出一些信息涣觉。
    例如在文本處理中訓(xùn)練詞嵌入模型的參數(shù)時(shí),有的詞或詞組頻繁出現(xiàn)血柳,有的很少出現(xiàn)官册。數(shù)據(jù)的稀疏性導(dǎo)致相應(yīng)參數(shù)的梯度的稀疏性,不頻繁出現(xiàn)的詞或詞組的參數(shù)的梯度在大多數(shù)情況下為0难捌,因而這些參數(shù)被更新的頻率很低膝宁。
    我們希望更新頻率低的參數(shù)可以擁有較大的更新步幅,而更新頻率高的參數(shù)的步幅可以減小根吁。AdaGrad方法采用“歷史梯度平方和”來(lái)衡量不同參數(shù)的梯度的稀疏性员淫,取值越小表明越稀疏,更新公式表示為:\theta_{t+1,i}=\theta_{t.i}-\frac{\eta}{\sqrt{\sum_{k=0}^{t}g_{k,i}^2+\epsilon}}g_{t,i}其中\theta_{t+1,i}表示t+1時(shí)刻參數(shù)向量\theta_{t+1}的第i個(gè)參數(shù)击敌,g_{k,i}表示k時(shí)刻的梯度向量g_k的第i個(gè)維度介返。另外,分母中求和形式實(shí)現(xiàn)了退火過(guò)程,這是很多優(yōu)化技術(shù)中常見(jiàn)的策略圣蝎,意味著隨著時(shí)間推移刃宵,學(xué)習(xí)速率\frac{\eta}{\sqrt{\sum_{k=0}^{t}g_{k,i}^2+\epsilon}}越來(lái)越小,保證了算法的收斂徘公。
    注:簡(jiǎn)言之牲证,這里\theta_{t+1,i}是第i個(gè)分量,它的參數(shù)更新关面,與該分量從時(shí)刻0到時(shí)刻t的梯度的第i個(gè)分量的平方的和有關(guān)坦袍,也就是記錄了該分量t時(shí)刻及以前的所有更新。并將這個(gè)和做了分母缭裆,讓更新比較少的參數(shù)擁有更大的更新步幅键闺。為了避免分母為0,還加入了\epsilon澈驼。
  • Adam方法:Adam方法將慣性保持環(huán)境感知兩個(gè)優(yōu)點(diǎn)集于一身辛燥。一方面,Adam記錄梯度的一階矩(first moment)缝其,即過(guò)往梯度與當(dāng)前梯度的平均挎塌,這體現(xiàn)了慣性保持;另一方面内边,Adam還記錄梯度的二階矩(second moment)榴都,即過(guò)往梯度平方與當(dāng)前梯度平方的平均,這類似AdaGrad方法漠其,體現(xiàn)了環(huán)境感知能力嘴高,為不同參數(shù)產(chǎn)生自適應(yīng)的學(xué)習(xí)速率。一階矩和二階矩采用類似于滑動(dòng)窗口內(nèi)求平均的思想進(jìn)行融合和屎,即當(dāng)前梯度和近一段時(shí)間內(nèi)梯度的平均值拴驮,時(shí)間久遠(yuǎn)的梯度對(duì)當(dāng)前平均值的貢獻(xiàn)呈指數(shù)衰減。具體來(lái)說(shuō)柴信,一階矩和二階矩采用指數(shù)衰減平均(exponential decay average)技術(shù)套啤,計(jì)算公式為:m_t=\beta_1m_{t-1}+(1-\beta_1)g_t v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2其中\beta_1\beta_2為衰減系數(shù)随常,m_t是一階矩潜沦,v_t是二階矩。
    一階矩相當(dāng)于估計(jì)\mathbb{E}[g_t]绪氛,當(dāng)下梯度g_t是隨機(jī)采樣得到的估計(jì)結(jié)果唆鸡,我們更關(guān)注它的期望。二階矩相當(dāng)于估計(jì)\mathbb{E}[g_t^2]枣察,AdaGrad是加和争占,Adam是期望袄琳。他們的物理意義是:
    (1) ||m_t||大且v_t也大時(shí),梯度大且穩(wěn)定燃乍,表明遇到了明顯的大坡,前進(jìn)方向明確宛琅;
    (2) ||m_t||趨于0且v_t大時(shí)刻蟹,梯度不穩(wěn)定,表明可能遇到一個(gè)峽谷嘿辟,容易引起反彈震蕩舆瘪;
    (3) ||m_t||大且v_t趨于0時(shí),這種情況不可能出現(xiàn)红伦;
    (4) ||m_t||趨于0且v_t趨于0時(shí)英古,梯度趨于0,可能到達(dá)局部最低點(diǎn)昙读,也可能走到一片坡度極緩的平地召调,此時(shí)要避免陷入平原陷阱(鞍點(diǎn))。
    Adam方法還考慮了m_t蛮浑,v_t在零初始之情況下的偏置矯正唠叛。具體來(lái)說(shuō),Adam的更新公式為:\theta_{t+1}=\theta_t-\frac{\eta\cdot\hat{m}_t}{\sqrt{\hat{v}_t+\epsilon}}其中沮稚,\hat{m}_t=\frac{m_t}{1-\beta_1^t}艺沼,\hat{v}_t=\frac{v_t}{1-\beta_2^t}m_t=\beta_1m_{t-1}+(1-\beta_1)g_t v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2
  • Nesterov Accelerated Gradient方法:該方法擴(kuò)展了動(dòng)量方法蕴掏,順著慣性方法障般,計(jì)算未來(lái)可能位置處的梯度而非當(dāng)前位置的梯度,這個(gè)“提前量”的設(shè)計(jì)讓算法有了對(duì)前方環(huán)境預(yù)判的能力盛杰。
  • AdaDelta和RMSProp方法:兩個(gè)方法非常類似挽荡,是對(duì)AdaGrad方法的改進(jìn)。AdaGrad方法采用所有歷史梯度平方和的平方根做分母饶唤,分母隨時(shí)間單調(diào)遞增徐伐,產(chǎn)生自適應(yīng)學(xué)習(xí)速率隨時(shí)間衰減的速度過(guò)于激進(jìn)。AdaDelta和RMSProp采用指數(shù)衰減平均的方法募狂,用過(guò)往梯度的均值代替它們的求和办素。
  • AdaMax方法:該方法是Adam方法的變種,對(duì)梯度平方的處理由指數(shù)衰減平均改為指數(shù)衰退求最大值祸穷。
  • Nadam方法:該方法可以看成Nesterov Accelerated Gradient版的Adam性穿。

7、L1正則化與稀疏性

  1. 稀疏性:稀疏性是我們希望的雷滚。我們希望模型參數(shù)具有稀疏性需曾,也就是模型的很多參數(shù)是0(是0而不是很小很小的數(shù))。這相當(dāng)于對(duì)模型進(jìn)行了一次特征選擇,只留下一些比較重要的特征呆万,提高模型的泛化能力商源,降低過(guò)擬合的可能。在實(shí)際應(yīng)用中谋减,機(jī)器學(xué)習(xí)模型的輸入動(dòng)輒幾百上千萬(wàn)維牡彻,稀疏性就顯得非常重要。
  2. L1正則化產(chǎn)生稀疏解的原因:
  • 角度1:解空間形狀
    如下圖所示出爹,在二維的情況下庄吼,黃色的部分是L2和L1正則項(xiàng)約束后的解空間,綠色的等高線是凸優(yōu)化問(wèn)題中目標(biāo)函數(shù)的等高線严就。由圖可知L2正則項(xiàng)約束后的解空間是圓形总寻,而L1正則項(xiàng)約束的解空間是多邊形。顯然梢为,多邊形的解空間更容易在尖角處與等高線碰撞出稀疏解渐行。這個(gè)解釋是正確的,但是不夠精確铸董。
    7-7 L1L2正則化對(duì)應(yīng)解空間角度

    進(jìn)一步挖深殊轴,為什么加入正則項(xiàng)就是定義了一個(gè)解空間約束?為什么L1和L2的解空間是不同的袒炉?可以通過(guò)KKT條件給出一個(gè)解釋旁理。
    事實(shí)上,“帶正則項(xiàng)”和“帶約束條件”是等價(jià)的我磁。為了約束w的可能取值空間從而防止過(guò)擬合孽文,我們?yōu)樵搩?yōu)化問(wèn)題加上一個(gè)約束,就是w的L2范數(shù)的平方不能大于m
    \begin{cases} \min\sum_{i=1}^N(y_i-w^Tx_i)^2, \\ s.t. ||w_2^2\leq m||. \end{cases}
    為了求解帶約束條件的凸優(yōu)化問(wèn)題夺艰,其拉格朗日函數(shù)為:\sum_{i=1}^N(y_i-w^Tx_i)^2+\lambda(||w||_2^2-m)w^*\lambda^*分別是原始問(wèn)題和對(duì)偶問(wèn)題的最優(yōu)解芋哭,則根據(jù)KKT條件,它們應(yīng)該滿足:\begin{cases} 0=\nabla_w\lgroup\sum_{i=1}^N(y_i-w^{*T}x_i)^2+\lambda^*(||w^*||_2^2-m)\rgroup, \\ 0\leq\lambda^*. \end{cases}其中第一個(gè)式子就是w^*為帶L2正則項(xiàng)優(yōu)化問(wèn)題的最優(yōu)解的條件郁副,而\lambda就是L2正則項(xiàng)前面的正則參數(shù)减牺。所以L2正則項(xiàng)相當(dāng)于為參數(shù)定義了一個(gè)圓形的解空間(因?yàn)楸仨毐WCL2范數(shù)不能大于m),而L1正則化相當(dāng)于為參數(shù)定義了一個(gè)菱形的解空間存谎。
    如果原問(wèn)題目標(biāo)函數(shù)的最優(yōu)解不是恰好落在解空間內(nèi)拔疚,那么約束條件下的最優(yōu)解一定是在解空間的邊界上。而L1“棱角分明”的解空間顯然更容易與目標(biāo)函數(shù)等高線在角點(diǎn)碰撞既荚,從而產(chǎn)生稀疏解稚失。
  • 角度2:函數(shù)疊加
    這個(gè)角度更加直觀。僅考慮一維的情況恰聘,多維情況是類似的句各。假設(shè)棕線是原始目標(biāo)函數(shù)L(w)的曲線圖吸占,最小值點(diǎn)在藍(lán)點(diǎn)處,對(duì)應(yīng)的w^*非0凿宾。
    7-7 L1L2函數(shù)疊加角度

    首先考慮加上L2正則項(xiàng)矾屯,目標(biāo)函數(shù)變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=L(w)%2BCw%5E2" alt="L(w)+Cw^2" mathimg="1">,其函數(shù)曲線為黃色初厚,最小值點(diǎn)在黃點(diǎn)處问拘,對(duì)應(yīng)的w^*的絕對(duì)值減小了,但仍然非0惧所。
    考慮加上L1正則項(xiàng),目標(biāo)函數(shù)變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=L(w)%2BC%7Cw%7C" alt="L(w)+C|w|" mathimg="1">绪杏,其函數(shù)曲線為綠色下愈,此時(shí)最小值點(diǎn)在紅點(diǎn)處,對(duì)應(yīng)的w是0蕾久,產(chǎn)生了稀疏性势似。
    產(chǎn)生上述現(xiàn)象的原因也很直觀,加入L1正則項(xiàng)后僧著,對(duì)帶正則項(xiàng)的目標(biāo)函數(shù)求導(dǎo)履因,正則項(xiàng)部分產(chǎn)生的導(dǎo)數(shù)在原點(diǎn)左邊部分是-C,在原點(diǎn)右邊部分是C盹愚,因此只要原目標(biāo)函數(shù)導(dǎo)數(shù)的絕對(duì)值小于C栅迄,則帶正則項(xiàng)的目標(biāo)函數(shù)在原點(diǎn)左邊部分始終是遞減的,在原點(diǎn)右邊部分始終是遞增的皆怕,最小值點(diǎn)自然在原點(diǎn)處毅舆。
    相反,L2正則項(xiàng)在原點(diǎn)處的導(dǎo)數(shù)為0愈腾,只要原目標(biāo)函數(shù)在原點(diǎn)處的導(dǎo)數(shù)不為0憋活,那么最小值點(diǎn)就不會(huì)在原點(diǎn),所以L2只有減小w絕對(duì)值的作用虱黄,對(duì)解空間的稀疏性沒(méi)有貢獻(xiàn)悦即。
    在一些線梯度下降算法中,往往會(huì)采用截?cái)嗵荻确?/strong>來(lái)產(chǎn)生稀疏性橱乱,這和L1正則項(xiàng)產(chǎn)生的稀疏性原理是類似的辜梳。
  • 角度3:貝葉斯先驗(yàn)
    從貝葉斯的角度來(lái)理解L1、L2正則化泳叠,L1正則化相當(dāng)于對(duì)模型參數(shù)w引入了拉普拉斯先驗(yàn)冗美,L2正則化相當(dāng)于引入了高斯先驗(yàn),而拉普拉斯先驗(yàn)使參數(shù)為0的可能性更大析二。
    下圖為高斯分布曲線粉洼,它在極值點(diǎn)(0點(diǎn))處是平滑的节预,也就是高斯先驗(yàn)分布認(rèn)為w在極值點(diǎn)附近取不同值的可能性是接近的。這就是L2正則化只會(huì)讓w更接近0點(diǎn)属韧,而不會(huì)等于0的原因安拟。
    7-7 L1L2貝葉斯先驗(yàn)角度高斯分布曲線

    下圖為拉普拉斯分布曲線,它在極值點(diǎn)(0點(diǎn))處是一個(gè)尖峰宵喂,所以拉普拉斯先驗(yàn)分布中參數(shù)w的取值為0的可能性要更高糠赦。
    7-7 L1L2貝葉斯先驗(yàn)角度拉普拉斯分布曲線

小結(jié)

這是本章的第二部分,第一部分講了常見(jiàn)的損失函數(shù)锅棕、常見(jiàn)的優(yōu)化方法拙泽、批量梯度下降、隨機(jī)梯度下降裸燎、小批量梯度下降顾瞻。第二部分主要講梯度下降法的優(yōu)化,有動(dòng)量方法德绿、AdaGrad方法荷荤、Adam方法等等,還講了L1正則化產(chǎn)生稀疏解的原因移稳,從三個(gè)角度分別解釋蕴纳,理解還是比較難的。

結(jié)尾

如果您發(fā)現(xiàn)我的文章有任何錯(cuò)誤个粱,或?qū)ξ业奈恼掠惺裁春玫慕ㄗh古毛,請(qǐng)聯(lián)系我!如果您喜歡我的文章都许,請(qǐng)點(diǎn)喜歡~*我是藍(lán)白絳喇潘,感謝你的閱讀!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梭稚,一起剝皮案震驚了整個(gè)濱河市颖低,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弧烤,老刑警劉巖忱屑,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異暇昂,居然都是意外死亡莺戒,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門急波,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)从铲,“玉大人,你說(shuō)我怎么就攤上這事澄暮∶危” “怎么了阱扬?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)伸辟。 經(jīng)常有香客問(wèn)我麻惶,道長(zhǎng),這世上最難降的妖魔是什么信夫? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任窃蹋,我火速辦了婚禮,結(jié)果婚禮上静稻,老公的妹妹穿的比我還像新娘警没。我一直安慰自己,他們只是感情好振湾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布杀迹。 她就那樣靜靜地躺著,像睡著了一般恰梢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梗掰,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天嵌言,我揣著相機(jī)與錄音,去河邊找鬼及穗。 笑死摧茴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的埂陆。 我是一名探鬼主播苛白,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼焚虱!你這毒婦竟也來(lái)了购裙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鹃栽,失蹤者是張志新(化名)和其女友劉穎躏率,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體民鼓,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡薇芝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丰嘉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夯到。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖饮亏,靈堂內(nèi)的尸體忽然破棺而出耍贾,到底是詐尸還是另有隱情阅爽,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布逼争,位于F島的核電站优床,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏誓焦。R本人自食惡果不足惜胆敞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杂伟。 院中可真熱鬧移层,春花似錦、人聲如沸赫粥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)越平。三九已至频蛔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秦叛,已是汗流浹背晦溪。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挣跋,地道東北人三圆。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像避咆,于是被迫代替她去往敵國(guó)和親舟肉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容