當前位置:首頁 » 操作系統 » 誤差反向傳播演算法

誤差反向傳播演算法

發布時間: 2024-04-10 18:49:03

❶ 一文搞懂反向傳播演算法

這是一場以誤差(Error)為主導的反向傳播(Back Propagation)運動,旨在得到最優的全局參數矩陣,進而將多層神經網路應用到分類或者回歸任務中去。

前向傳遞輸入信號直至輸出產生誤差,反向傳播誤差信息更新權重矩陣。這兩句話很好的形容了信息的流動方向,權重得以在信息雙向流動中得到優化,這讓我想到了北京城的夜景,車輛川流不息,車水馬龍,你來我往(* ॑꒳ ॑* )⋆*。

至於為什麼會提出反向傳播演算法,我直接應用梯度下降(Gradient Descent)不行嗎?想必大家肯定有過這樣的疑問。答案肯定是不行的,縱然梯度下降神通廣大,但卻不是萬能的。梯度下降可以應對帶有明確求導函數的情況,或者說可以應對那些可以求出誤差的情況,比如邏輯回歸(Logistic Regression),我們可以把它看做沒有隱層的網路;但對於多隱層的神經網路,輸出層可以直接求出誤差來更新參數,但其中隱層的誤差是不存在的,因此不能對它直接應用梯度下降,而是先將誤差反向傳播至隱層,然後再應用梯度下降,其中將誤差從末層往前傳遞的過程需要鏈式法則(Chain Rule)的幫助,因此反向傳播演算法可以說是梯度下降在鏈式法則中的應用。

為了幫助較好的理解反向傳播概念,對它有一個直觀的理解,接下來就拿猜數字游戲舉個栗子。

這一過程類比沒有隱層的神經網路,比如邏輯回歸,其中小黃帽代表輸出層節點,左側接受輸入信號,右側產生輸出結果,小藍貓則代表了誤差,指導參數往更優的方向調整。由於小藍貓可以直接將誤差反饋給小黃帽,同時只有一個參數矩陣和小黃帽直接相連,所以可以直接通過誤差進行參數優化(實縱線),迭代幾輪,誤差會降低到最小。

這一過程類比帶有一個隱層的三層神經網路,其中小女孩代表隱藏層節點,小黃帽依然代表輸出層節點,小女孩左側接受輸入信號,經過隱層節點產生輸出結果,小藍貓代表了誤差,指導參數往更優的方向調整。由於小藍貓可以直接將誤差反饋給小黃帽,所以與小黃帽直接相連的左側參數矩陣可以直接通過誤差進行參數優化(實縱線);而與小女孩直接相連的左側參數矩陣由於不能得到小藍貓的直接反饋而不能直接被優化(虛棕線)。但由於反向傳播演算法使得小藍貓的反饋可以被傳遞到小女孩那進而產生間接誤差,所以與小女孩直接相連的左側權重矩陣可以通過間接誤差得到權重更新,迭代幾輪,誤差會降低到最小。

上邊的栗子從直觀角度了解了反向傳播,接下來就詳細的介紹其中兩個流程前向傳播與反向傳播,在介紹之前先統一一下標記。

如何將輸入層的信號傳輸至隱藏層呢,以隱藏層節點c為例,站在節點c上往後看(輸入層的方向),可以看到有兩個箭頭指向節點c,因此a,b節點的信息將傳遞給c,同時每個箭頭有一定的權重,因此對於c節點來說,輸入信號為:

同理,節點d的輸入信號為:

由於計算機善於做帶有循環的任務,因此我們可以用矩陣相乘來表示:

所以,隱藏層節點經過非線性變換後的輸出表示如下:

同理,輸出層的輸入信號表示為權重矩陣乘以上一層的輸出:

同樣,輸出層節點經過非線性映射後的最終輸出表示為:

輸入信號在權重矩陣們的幫助下,得到每一層的輸出,最終到達輸出層。可見,權重矩陣在前向傳播信號的過程中扮演著運輸兵的作用,起到承上啟下的功能。

既然梯度下降需要每一層都有明確的誤差才能更新參數,所以接下來的重點是如何將輸出層的誤差反向傳播給隱藏層。

其中輸出層、隱藏層節點的誤差如圖所示,輸出層誤差已知,接下來對隱藏層第一個節點c作誤差分析。還是站在節點c上,不同的是這次是往前看(輸出層的方向),可以看到指向c節點的兩個藍色粗箭頭是從節點e和節點f開始的,因此對於節點c的誤差肯定是和輸出層的節點e和f有關。

不難發現,輸出層的節點e有箭頭分別指向了隱藏層的節點c和d,因此對於隱藏節點e的誤差不能被隱藏節點c霸為己有,而是要服從按勞分配的原則(按權重分配),同理節點f的誤差也需服從這樣的原則,因此對於隱藏層節點c的誤差為:

同理,對於隱藏層節點d的誤差為:

為了減少工作量,我們還是樂意寫成矩陣相乘的形式:

你會發現這個矩陣比較繁瑣,如果能夠簡化到前向傳播那樣的形式就更好了。實際上我們可以這么來做,只要不破壞它們的比例就好,因此我們可以忽略掉分母部分,所以重新成矩陣形式為:

仔細觀察,你會發現這個權重矩陣,其實是前向傳播時權重矩陣w的轉置,因此簡寫形式如下:

不難發現,輸出層誤差在轉置權重矩陣的幫助下,傳遞到了隱藏層,這樣我們就可以利用間接誤差來更新與隱藏層相連的權重矩陣。可見,權重矩陣在反向傳播的過程中同樣扮演著運輸兵的作用,只不過這次是搬運的輸出誤差,而不是輸入信號(我們不生產誤差,只是誤差的搬運工(っ̯ -。))。

第三部分大致介紹了輸入信息的前向傳播與輸出誤差的後向傳播,接下來就根據求得的誤差來更新參數。

首先對隱藏層的w11進行參數更新,更新之前讓我們從後往前推導,直到預見w11為止:

因此誤差對w11求偏導如下:

求導得如下公式(所有值已知):

同理,誤差對於w12的偏導如下:

同樣,求導得w12的求值公式:

同理,誤差對於偏置求偏導如下:

帶入上述公式為:

接著對輸入層的w11進行參數更新,更新之前我們依然從後往前推導,直到預見第一層的w11為止(只不過這次需要往前推的更久一些):

因此誤差對輸入層的w11求偏導如下:

同理,輸入層的其他三個參數按照同樣的方法即可求出各自的偏導,在這不再贅述。

在每個參數偏導數明確的情況下,帶入梯度下降公式即可(不在重點介紹):

至此,利用鏈式法則來對每層參數進行更新的任務已經完成。

利用鏈式法則來更新權重你會發現其實這個方法簡單,但過於冗長。由於更新的過程可以看做是從網路的輸入層到輸出層從前往後更新,每次更新的時候都需要重新計算節點的誤差,因此會存在一些不必要的重復計算。其實對於已經計算完畢的節點我們完全可以直接拿來用,因此我們可以重新看待這個問題,從後往前更新。先更新後邊的權重,之後再在此基礎上利用更新後邊的權重產生的中間值來更新較靠前的參數。這個中間變數就是下文要介紹的delta變數,一來簡化公式,二來減少計算量,有點動態規劃的趕腳。

接下來用事實說話,大家仔細觀察一下在第四部分鏈式求導部分誤差對於輸出層的w11以及隱藏層的w11求偏導以及偏置的求偏導的過程,你會發現,三個公式存在相同的部分,同時隱藏層參數求偏導的過程會用到輸出層參數求偏導的部分公式,這正是引入了中間變數delta的原因(其實紅框的公式就是delta的定義)。

大家看一下經典書籍《神經網路與深度學習》中對於delta的描述為在第l層第j個神經元上的誤差,定義為誤差對於當前帶權輸入求偏導,數學公式如下:

因此輸出層的誤差可以表示為(上圖紅色框公式):

隱藏層的誤差可以表示為(上圖藍色框公式):

同時對於權重更新的表示為(上圖綠色框公式):

其實對於偏置的更新表示為(上圖紅色框):

上述4個公式其實就是《神經網路與深度學習》書中傳說的反向傳播4大公式(詳細推導證明可移步此書):

仔細觀察,你會發現BP1與BP2相結合就能發揮出最大功效,可以計算出任意層的誤差,只要首先利用BP1公式計算出輸出層誤差,然後利用BP2層層傳遞,就無敵了,這也正是誤差反向傳播演算法的緣由吧。同時對於權重w以及偏置b我們就可以通過BP3和BP4公式來計算了。

至此,我們介紹了反向傳播的相關知識,一開始看反向傳播資料的時候總覺得相對獨立,這個教材這么講,另一篇博客又換一個講法,始終不能很好的理解其中的含義,到目前為止,思路相對清晰。我們先從大致流程上介紹了反向傳播的來龍去脈,接著用鏈式求導法則來計算權重以及偏置的偏導,進而我們推出了跟經典著作一樣樣兒的結論,因此本人覺得較為詳細,應該對初學者有一定的借鑒意義,希望對大家有所幫助。

Nielsen M A. Neural networks and deep learning[M]. 2015.
Rashid T. Make your own neural network[M]. CreateSpace IndependentPublishing Platform, 2016.

❷ 解讀反向傳播演算法(BackPropagation)

冒泡~周末愉快鴨!

舉個例子:
如下圖所示,這是 帶有一個隱層的三層神經網路
-小女孩→隱藏層節點
-小黃帽→輸出層節點
-哆啦A夢→誤差
小女孩左側接受輸入信號,經過隱層節點產生輸出結果,哆啦A夢則指導參數往更優的方向調整。 由於哆啦A夢可以直接將誤差反饋給小黃帽,所以與小黃帽直接相連的左側參數矩陣可以直接通過誤差進行參數優化(實縱線);而與小女孩直接相連的左側參數矩陣由於不能得到哆啦A夢的直接反饋而不能直接被優化(虛棕線)。但由於反向傳播演算法使得哆啦A夢的反饋可以被傳遞到小女孩那進而產生間接誤差,所以與小女孩直接相連的左側權重矩陣可以通過間接誤差得到權重更新,迭代幾輪,誤差會降低到最小。( 也就是說小男孩得到的是直接誤差,小女孩是間接誤差

接下來將用例子演示整個過程
假設有下圖這樣一個帶權值的網路層,第一層是輸入層,包含兩個神經元i1,i2,和截距項b1;第二層是隱含層,包含兩個神經元h1,h2和截距項b2,第三層是輸出o1,o2,每條線上標的wi是層與層之間連接的權重,激活函數我們默認為sigmoid函數。

通過前向傳播我們得到輸出值為[0.75136079 , 0.772928465],與實際值[0.01 , 0.99]相差還很遠,接下來我們對誤差進行反向傳播,更新權值,重新計算輸出。

3.輸入層---->隱含層的權值更新:
在上文計算總誤差對w5的偏導時,是從out(o1)---->net(o1)---->w5,但是在隱含層之間的權值更新時,是out(h1)---->net(h1)---->w1,而out(h1)會接受E(o1)和E(o2)兩個地方傳來的誤差,所以這個地方兩個都要計算。

根據BP演算法的過程演示,可以得到BP演算法的一般過程:
1. 正向傳播FP(求損失)
此過程中,我們根據輸入的樣本、給定的初始化權重值W和偏置項的值b, 計算最終輸出值以及輸出值與實際值之間的損失值。( 注意:如果損失值不在給定的范圍內則進行接下來反向傳播的過程, 否則停止W,b的更新。
2.反向傳播BP(回傳誤差)
將輸出以某種形式通過隱層向輸入層逐層反傳,並將誤差分攤給各層的所有單元,從而獲得各層單元的誤差信號,此誤差信號即作為修正各單元權值的依據。( 主要為: ①隱層到輸出層的參數W的更新 ②從輸入層到隱層的參數W的更新。

Ending~理解計算和公式還是很重要的鴨!

❸ 神經網路——BP演算法

對於初學者來說,了解了一個演算法的重要意義,往往會引起他對演算法本身的重視。BP(Back Propagation,後向傳播)演算法,具有非凡的歷史意義和重大的現實意義。

1969年,作為人工神經網路創始人的明斯基(Marrin M insky)和佩珀特(Seymour Papert)合作出版了《感知器》一書,論證了簡單的線性感知器功能有限,不能解決如「異或」(XOR )這樣的基本問題,而且對多層網路也持悲觀態度。這些論點給神經網路研究以沉重的打擊,很多科學家紛紛離開這一領域,神經網路的研究走向長達10年的低潮時期。[1]

1974年哈佛大學的Paul Werbos發明BP演算法時,正值神經外網路低潮期,並未受到應有的重視。[2]

1983年,加州理工學院的物理學家John Hopfield利用神經網路,在旅行商這個NP完全問題的求解上獲得當時最好成績,引起了轟動[2]。然而,Hopfield的研究成果仍未能指出明斯基等人論點的錯誤所在,要推動神經網路研究的全面開展必須直接解除對感知器——多層網路演算法的疑慮。[1]

真正打破明斯基冰封魔咒的是,David Rumelhart等學者出版的《平行分布處理:認知的微觀結構探索》一書。書中完整地提出了BP演算法,系統地解決了多層網路中隱單元連接權的學習問題,並在數學上給出了完整的推導。這是神經網路發展史上的里程碑,BP演算法迅速走紅,掀起了神經網路的第二次高潮。[1,2]

因此,BP演算法的歷史意義:明確地否定了明斯基等人的錯誤觀點,對神經網路第二次高潮具有決定性意義。

這一點是說BP演算法在神經網路領域中的地位和意義。

BP演算法是迄今最成功的神經網路學習演算法,現實任務中使用神經網路時,大多是在使用BP演算法進行訓練[2],包括最近炙手可熱的深度學習概念下的卷積神經網路(CNNs)。

BP神經網路是這樣一種神經網路模型,它是由一個輸入層、一個輸出層和一個或多個隱層構成,它的激活函數採用sigmoid函數,採用BP演算法訓練的多層前饋神經網路。

BP演算法全稱叫作誤差反向傳播(error Back Propagation,或者也叫作誤差逆傳播)演算法。其演算法基本思想為:在2.1所述的前饋網路中,輸入信號經輸入層輸入,通過隱層計算由輸出層輸出,輸出值與標記值比較,若有誤差,將誤差反向由輸出層向輸入層傳播,在這個過程中,利用梯度下降演算法對神經元權值進行調整。

BP演算法中核心的數學工具就是微積分的 鏈式求導法則 。

BP演算法的缺點,首當其沖就是局部極小值問題。

BP演算法本質上是梯度下降,而它所要優化的目標函數又非常復雜,這使得BP演算法效率低下。

[1]、《BP演算法的哲學思考》,成素梅、郝中華著

[2]、《機器學習》,周志華著

[3]、 Deep Learning論文筆記之(四)CNN卷積神經網路推導和實現

2016-05-13 第一次發布

2016-06-04 較大幅度修改,完善推導過程,修改文章名

2016-07-23 修改了公式推導中的一個錯誤,修改了一個表述錯誤

❹ 讀懂反向傳播演算法(bp演算法)

反向傳播演算法可以說是神經網路最基礎也是最重要的知識點。基本上所以的優化演算法都是在反向傳播算出梯度之後進行改進的。同時,也因為反向傳播演算法是一個遞歸的形式,一層一層的向後傳播誤差即可,很容易實現(這部分聽不懂沒關系,下面介紹)。不要被反向傳播嚇到,掌握其核心思想就很容易自己手推出來。

我們知道神經網路都是有一個loss函數的。這個函數根據不同的任務有不同的定義方式,但是這個loss函數的目的就是計算出當前神經網路建模出來輸出的數據和理想數據之間的距離。計算出loss之後,根據反向傳播演算法就可以更新網路中的各種參數以此使loss不斷下降,即可使輸出的數據更加理想。
所以,現在的任務是,已知一個網路的loss之後,如何根據loss來更新參數呢?具體點即如何更新網路節點中的權重w和偏差b的值呢?

這里我們採用的是全連接神經網路進行說明。
要想把這個過程說清楚,首先需要將神經網路中各個參數用文字表達清楚。定義的就是w和b在網路中的准確位置。

對於 表示的是神經網路中第 層第k個節點到神經網路中第 層第j個節點之間的權重。注意w的下標是首位表示的是節點後層節點的位置,末尾表示是前層節點的位置。理解這樣的表達方式在後面的計算中會很好理解。
同理,對於b的表示:

b的表示相比於w要簡單一些,符號 表示第l層網路在第j個節點的偏置。無論w還是b的表示,上標都是表示層數。並且 和 表示都是第l層網路第j個節點的參數。所以該節點的輸出可以表示為:

神經網路輸出之後會經過一個激活函數,這用激活函數用 表示,則經過激活函數輸出為:

至此,根據上面符號 、 、 、 。我們可以對於神經網路裡面每一個數據准確的表示了。

給定一個損失函數之後,用 表示,說白了反向傳播就是求∂C/∂w和∂C/∂b,然後將這個值乘以和對應的w,b進行相減就可以實現一次的參數更新了。為什麼這樣的操作就可以優化網路,減小loss值呢?

來源於導數的概念和速度相關。∂C/∂w和∂C/∂b相當於loss值C相對於w和v變化的速度。如果∂C/∂w是正的,則增大w,C也會增大,如果希望C減小的話,應該減小w;並且∂C/∂w的絕對值越大,表示w對C的值影響越大,w稍微有一點變化,C就會有大幅變化。如果要優化C變小,w應該對應的減少多少呢?也沒有一個確定的答案。這里通過變化的速度和學習率相乘作為一個減小的值。通過多輪迭代。最終是希望c達到最小點。而當函數落入最小值的時候,無論是局部最小還是全局最小,其周圍一定是平滑的。所以此時∂C/∂w和∂C/∂b將會變得很小甚至為0,即參數不在更新了。當函數在局部最小點處參數不在更新出現梯度消失的問題時,目前也有各種trick進行解決。不是這里的重點。

為了好說明,這里定義一個很簡單的損失函數C:

接下來就是有意思的階段了。這里還是利用上一節中∂C/∂w和∂C/∂b的解釋。如果我們想要求出∂C/∂w和∂C/∂b的值,即具體的 、 對C影響速率的值,我們找一個中間變數∂C/∂ 。因為我們知道:

我們定義:

當我們知道了 值之後,我們根據 式子可以很容易求出 。
利用導數的鏈式法則:

很容易推出來不是?同理可以求出:

可以看出通過媒介 很容易求出∂C/∂w和∂C/∂b。那麼我們現在來理解一下 到底是什麼意思,以及如何求出來每一個l層j節點的 值。

根據定義:

可以看出來 就是 對於C的影響大小(聯系之前說的導數和速率的關系)。而 是第 層第 個神經元未進過激活函數之前的輸出。所以我們可以理解 為網路中第 層第 個神經元對loss的影響。所以很直觀的看法就是我們先求出單個神經元對loss值得影響,然後再計算該神經元內部參數對於loss的影響。

ok,如果我們已經理解了為什麼要引入 變數以及如何利用該變數計算具體參數的梯度後,接下來我們就可以看看如何獲得 值。反向傳播的名字我想也就是通過計算 的方式而來的。是一層一層遞歸而來的。

既然說是遞歸的方式,我們來思考一下 和 之間有什麼關系,如果找到這個關系之後,我們就可以默認我們如果知道最後一層網路節點的 值,我們就可以獲得倒數第二層網路節點的 值,倒數第三層,倒數第四層,……以此推類即可獲得整個網路的每個節點的 值。至此我們的反向傳播也基本完成了。
所以最重要的有兩點:

先看問題1,直接根據求導的鏈式法則就可以找出兩個的關系,具體公式如下,可以多看看手寫一下,思路上也很簡單。

覺得這樣的鏈式公式還是很直觀的,如果不好理解,可以自己畫一個神經網路圖,連上節點與節點之間的線,標上參數,然後推一下應該就能理解了。
這里的 都表示的未經過激活函數的神經元的輸出。 表示激活函數。因為:

所以:

帶入上式就可以得出:

至此就找出了 和 之間的關系了。
(還能簡化,根據最開始我們定義的 )。

理解起來就是網路中前面一層某一個神經元對於loss的影響與該層的後一層所有的神經元對loss的影響、該神經元的輸出大小、該神經元與後一層神經元連接的權重有關系的,並且是一個累加的效應。這樣的理解也是非常直觀合乎常理的。

現在萬事具備,只差問題2了。即假設最後一層網路是L,最後一層 如何計算得出。最後一層的 值就像一個導火索,一旦有了開始,就可以利用我們之前推出來的: 公式進行反向傳播了(反向傳播還是很形象的不是?)。現在解決這個問題。這個問題就是和損失函數具體怎麼定義有關系了。不過我們先不考慮C的具體形式,根據通用的鏈式法則我們可以得到:

這里需要注意的是最後一層激活函數使用的是哪種。最後一層激活函數在計算某一個神經元的輸出時可能會結合其他節點的輸出來計算。比如softmax激活函數,其輸出的是一個概率值【0,1】。輸出大小就是結合輸出所有的值。

現在我們來考慮兩個具體的損失函數,並且採用之前定義的均方誤差損失函數 :

求導為:
因為sigmoid輸出的值僅僅和輸入的x值有關 。所以 當 時值為0.所以:

根據上面,BP推導有三部曲,先求出 ,再根據 分別求出 、 。總結公式如下:

啟動上面反傳的導火索是最後一層的 值,計算公式為:

根據最後一層不同類型的激活函數不同對待。

❺ bp演算法是什麼

誤差反向傳播演算法:

BP演算法的基本思想是,學習過程包括兩個過程:信號前向傳播和誤差後向傳播。

(1)前向傳播:輸入樣本->輸入層->各隱層(處理)->輸出層。

(2)錯誤反向傳播:輸出錯誤(某種形式)->隱藏層(逐層)->輸入層。

BP演算法基本介紹:

多層隱含層前饋網路可以極大地提高神經網路的分類能力,但長期以來一直沒有提出解決權值調整問題的博弈演算法。

1986年,Rumelhart和McCelland領導的科學家團隊出版了《並行分布式處理》一書,詳細分析了具有非線性連續傳遞函數的多層前饋網路的誤差反向比例(BP)演算法,實現了Minsky關於多層網路的思想。由於誤差的反向傳播演算法常用於多層前饋網路的訓練,人們常直接稱多層前饋網路為BP網路。

❻ 反向傳播演算法的演算法簡介

反向傳播演算法(backpropagation)是目前用來訓練人工神經網路(artificial
neural
network,ann)的最常用且最有效的演算法。其主要思想是:
(1)將訓練集數據輸入到ann的輸入層,經過隱藏層,最後達到輸出層並輸出結果,這是ann的前向傳播過程;
(2)由於ann的輸出結果與實際結果有誤差,則計算估計值與實際值之間的誤差,並將該誤差從輸出層向隱藏層反向傳播,直至傳播到輸入層;
(3)在反向傳播的過程中,根據誤差調整各種參數的值;不斷迭代上述過程,直至收斂。
反向傳播演算法的思想比較容易理解,但具體的公式則要一步步推導,因此本文著重介紹公式的推導過程。
1.
變數定義
上圖是一個三層人工神經網路,layer1至layer3分別是輸入層、隱藏層和輸出層。如圖,先定義一些變數:
表示第層的第個神經元連接到第層的第個神經元的權重;
表示第層的第個神經元的偏置;
表示第層的第個神經元的輸入,即:
表示第層的第個神經元的輸出,即:
其中表示激活函數。
2.
代價函數
代價函數被用來計算ann輸出值與實際值之間的誤差。常用的代價函數是二次代價函數(quadratic
cost
function):
其中,表示輸入的樣本,表示實際的分類,表示預測的輸出,表示神經網路的最大層數。
3.
公式及其推導
本節將介紹反向傳播演算法用到的4個公式,並進行推導。如果不想了解公式推導過程,請直接看第4節的演算法步驟。
首先,將第層第個神經元中產生的錯誤(即實際值與預測值之間的誤差)定義為:
本文將以一個輸入樣本為例進行說明,此時代價函數表示為:
公式1(計算最後一層神經網路產生的錯誤):
其中,表示hadamard乘積,用於矩陣或向量之間點對點的乘法運算。公式1的推導過程如下:
公式2(由後往前,計算每一層神經網路產生的錯誤):
推導過程:
公式3(計算權重的梯度):
推導過程:
公式4(計算偏置的梯度):
推導過程:
4.
反向傳播演算法偽代碼
輸入訓練集
對於訓練集中的每個樣本x,設置輸入層(input
layer)對應的激活值:
前向傳播:

計算輸出層產生的錯誤:

熱點內容
安卓如何給設備加鎖 發布:2024-11-27 19:36:21 瀏覽:771
搭建一個20人游戲伺服器 發布:2024-11-27 19:31:10 瀏覽:229
vs2010mfc編程入門 發布:2024-11-27 19:31:00 瀏覽:359
和編碼編程 發布:2024-11-27 19:24:04 瀏覽:608
智慧城市資料庫 發布:2024-11-27 19:23:56 瀏覽:193
e絡通的密碼格式是什麼 發布:2024-11-27 19:07:36 瀏覽:189
微博能看到訪問記錄嗎 發布:2024-11-27 19:05:37 瀏覽:657
安卓主屏幕固定在哪裡 發布:2024-11-27 19:02:50 瀏覽:297
安卓手機軟體怎麼用數據線連接 發布:2024-11-27 18:48:11 瀏覽:253
刀劍亂舞掛機腳本 發布:2024-11-27 18:37:56 瀏覽:505