精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

神經(jīng)網(wǎng)絡(luò)中 BP 算法的原理與 Python 實現(xiàn)源碼解析

人工智能 深度學習 移動開發(fā) 算法
網(wǎng)絡(luò)實質(zhì)上實現(xiàn)了一個從輸入到輸出的映射功能,而數(shù)學理論已證明它具有實現(xiàn)任何復雜非線性映射的功能。這使得它特別適合于求解內(nèi)部機制復雜的問題。

 最近這段時間系統(tǒng)性的學習了 BP 算法后寫下了這篇學習筆記,因為能力有限,若有明顯錯誤,還請指正。

  什么是梯度下降和鏈式求導法則

假設(shè)我們有一個函數(shù) J(w),如下圖所示。

梯度下降示意圖

現(xiàn)在,我們要求當 w 等于什么的時候,J(w) 能夠取到最小值。從圖中我們知道最小值在初始位置的左邊,也就意味著如果想要使 J(w) 最小,w的值需要減小。而初始位置的切線的斜率a > 0(也即該位置對應(yīng)的導數(shù)大于0),w = w – a 就能夠讓 w 的值減小,循環(huán)求導更新w直到 J(w) 取得最小值。如果函數(shù)J(w)包含多個變量,那么就要分別對不同變量求偏導來更新不同變量的值。

所謂的鏈式求導法則,就是求復合函數(shù)的導數(shù):

鏈式求導法則

放個例題,會更加明白一點:

鏈式求導的例子

  神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)

神經(jīng)網(wǎng)絡(luò)由三部分組成,分別是最左邊的輸入層,隱藏層(實際應(yīng)用中遠遠不止一層)和最右邊的輸出層。層與層之間用線連接在一起,每條連接線都有一個對應(yīng)的權(quán)重值 w,除了輸入層,一般來說每個神經(jīng)元還有對應(yīng)的偏置 b。

神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖

除了輸入層的神經(jīng)元,每個神經(jīng)元都會有加權(quán)求和得到的輸入值 z 和將 z 通過 Sigmoid 函數(shù)(也即是激活函數(shù))非線性轉(zhuǎn)化后的輸出值 a,他們之間的計算公式如下

神經(jīng)元輸出值 a 的計算公式

其中,公式里面的變量l和j表示的是第 l 層的第 j 個神經(jīng)元,ij 則表示從第 i 個神經(jīng)元到第 j 個神經(jīng)元之間的連線,w 表示的是權(quán)重,b 表示的是偏置,后面這些符號的含義大體上與這里描述的相似,所以不會再說明。下面的 Gif 動圖可以更加清楚每個神經(jīng)元輸入輸出值的計算方式(注意,這里的動圖并沒有加上偏置,但使用中都會加上)

動圖顯示計算神經(jīng)元輸出值

使用激活函數(shù)的原因是因為線性模型(無法處理線性不可分的情況)的表達能力不夠,所以這里通常需要加入 Sigmoid 函數(shù)來加入非線性因素得到神經(jīng)元的輸出值。

關(guān)于為什么線性函數(shù)模型表達能力不夠,可以點擊這里查看知乎上面的討論。

sigmoid 函數(shù)

可以看到 Sigmoid 函數(shù)的值域為 (0,1) ,若對于多分類任務(wù),輸出層的每個神經(jīng)元可以表示是該分類的概率。當然還存在其他的激活函數(shù),他們的用途和優(yōu)缺點也都各異。

  BP 算法執(zhí)行的流程(前向傳遞和逆向更新)

在手工設(shè)定了神經(jīng)網(wǎng)絡(luò)的層數(shù),每層的神經(jīng)元的個數(shù),學習率 η(下面會提到)后,BP 算法會先隨機初始化每條連接線權(quán)重和偏置,然后對于訓練集中的每個輸入 x 和輸出 y,BP 算法都會先執(zhí)行前向傳輸?shù)玫筋A測值,然后根據(jù)真實值與預測值之間的誤差執(zhí)行逆向反饋更新神經(jīng)網(wǎng)絡(luò)中每條連接線的權(quán)重和每層的偏好。在沒有到達停止條件的情況下重復上述過程。

其中,停止條件可以是下面這三條

● 權(quán)重的更新低于某個閾值的時候

● 預測的錯誤率低于某個閾值

● 達到預設(shè)一定的迭代次數(shù)

譬如說,手寫數(shù)字識別中,一張手寫數(shù)字1的圖片儲存了28*28 = 784個像素點,每個像素點儲存著灰度值(值域為[0,255]),那么就意味著有784個神經(jīng)元作為輸入層,而輸出層有10個神經(jīng)元代表數(shù)字0~9,每個神經(jīng)元取值為0~1,代表著這張圖片是這個數(shù)字的概率。

每輸入一張圖片(也就是實例),神經(jīng)網(wǎng)絡(luò)會執(zhí)行前向傳輸一層一層的計算到輸出層神經(jīng)元的值,根據(jù)哪個輸出神經(jīng)元的值最大來預測輸入圖片所代表的手寫數(shù)字。

然后根據(jù)輸出神經(jīng)元的值,計算出預測值與真實值之間的誤差,再逆向反饋更新神經(jīng)網(wǎng)絡(luò)中每條連接線的權(quán)重和每個神經(jīng)元的偏好。

前向傳輸(Feed-Forward)

從輸入層=>隱藏層=>輸出層,一層一層的計算所有神經(jīng)元輸出值的過程。

逆向反饋(Back Propagation)

因為輸出層的值與真實的值會存在誤差,我們可以用均方誤差來衡量預測值和真實值之間的誤差。

均方誤差

逆向反饋的目標就是讓E函數(shù)的值盡可能的小,而每個神經(jīng)元的輸出值是由該點的連接線對應(yīng)的權(quán)重值和該層對應(yīng)的偏好所決定的,因此,要讓誤差函數(shù)達到最小,我們就要調(diào)整w和b值, 使得誤差函數(shù)的值最小。

權(quán)重和偏置的更新公式

對目標函數(shù) E 求 w 和 b 的偏導可以得到 w 和 b 的更新量,下面拿求 w 偏導來做推導。

其中 η 為學習率,取值通常為 0.1 ~ 0.3,可以理解為每次梯度所邁的步伐。注意到 w_hj 的值先影響到第 j 個輸出層神經(jīng)元的輸入值a,再影響到輸出值y,根據(jù)鏈式求導法則有:

使用鏈式法則展開對權(quán)重求偏導

根據(jù)神經(jīng)元輸出值 a 的定義有:

對函數(shù) z 求 w 的偏導

Sigmoid 求導數(shù)的式子如下,從式子中可以發(fā)現(xiàn)其在計算機中實現(xiàn)也是非常的方便:

Sigmoid 函數(shù)求導

所以

則權(quán)重 w 的更新量為:

類似可得 b 的更新量為:

但這兩個公式只能夠更新輸出層與前一層連接線的權(quán)重和輸出層的偏置,原因是因為 δ 值依賴了真實值y這個變量,但是我們只知道輸出層的真實值而不知道每層隱藏層的真實值,導致無法計算每層隱藏層的 δ 值,所以我們希望能夠利用 l+1 層的 δ 值來計算 l 層的 δ 值,而恰恰通過一些列數(shù)學轉(zhuǎn)換后可以做到,這也就是逆向反饋名字的由來,公式如下:

從式子中我們可以看到,我們只需要知道下一層的權(quán)重和神經(jīng)元輸出層的值就可以計算出上一層的 δ 值,我們只要通過不斷的利用上面這個式子就可以更新隱藏層的全部權(quán)重和偏置了。

在推導之前請先觀察下面這張圖:

l 和 l+1 層的神經(jīng)元

首先我們看到 l 層的第 i 個神經(jīng)元與 l+1 層的所有神經(jīng)元都有連接,那么我們可以將 δ 展開成如下的式子:

也即是說我們可以將 E 看做是 l+1 層所有神經(jīng)元輸入值的 z 函數(shù),而上面式子的 n 表示的是 l+1 層神經(jīng)元的數(shù)量,再進行化簡后就可以得到上面所說的式子。

在這里的推導過程只解釋了關(guān)鍵的部分,如果要查看更加詳細的推導內(nèi)容,可以點擊此處下載我在學習過程中參考的一篇 pdf 文檔,里面的推導過程非常詳細。另外也參考了周志華所寫的機器學習中的神經(jīng)網(wǎng)絡(luò)部分的內(nèi)容和 neural networks and deep learning 的內(nèi)容。

  Python 源碼解析

源碼來自于 Michael Nielsen 大神的深度學習在線教程,但他的內(nèi)容都是英文的,我結(jié)合了自己的理解和上面的理論知識對源碼進行了注釋。>>點擊此處查看整理的代碼和數(shù)字識別實例<<

使用 Python 實現(xiàn)的神經(jīng)網(wǎng)絡(luò)的代碼行數(shù)并不多,僅包含一個 Network 類,首先來看看該類的構(gòu)造方法。

  1. def __init__(self, sizes): 
  2.         """ 
  3.         :param sizes: list類型,儲存每層神經(jīng)網(wǎng)絡(luò)的神經(jīng)元數(shù)目 
  4.                       譬如說:sizes = [2, 3, 2] 表示輸入層有兩個神經(jīng)元、 
  5.                       隱藏層有3個神經(jīng)元以及輸出層有2個神經(jīng)元 
  6.         """ 
  7.         # 有幾層神經(jīng)網(wǎng)絡(luò)  
  8.         self.num_layers = len(sizes) 
  9.         self.sizes = sizes 
  10.         # 除去輸入層,隨機產(chǎn)生每層中 y 個神經(jīng)元的 biase 值(0 - 1) 
  11.         self.biases = [np.random.randn(y, 1for y in sizes[1:]] 
  12.         # 隨機產(chǎn)生每條連接線的 weight 值(0 - 1) 
  13.         self.weights = [np.random.randn(y, x) 
  14.                         for x, y in zip(sizes[:-1], sizes[1:])] 

向前傳輸(FreedForward)的代碼。

  1. def feedforward(self, a): 
  2.     """ 
  3.     前向傳輸計算每個神經(jīng)元的值 
  4.     :param a: 輸入值 
  5.     :return: 計算后每個神經(jīng)元的值 
  6.     """ 
  7.     for b, w in zip(self.biases, self.weights): 
  8.         # 加權(quán)求和以及加上 biase 
  9.         a = sigmoid(np.dot(w, a)+b) 
  10.     return a 

源碼里使用的是隨機梯度下降(Stochastic Gradient Descent,簡稱 SGD),原理與梯度下降相似,不同的是隨機梯度下降算法每次迭代只取數(shù)據(jù)集中一部分的樣本來更新 w 和 b 的值,速度比梯度下降快,但是,它不一定會收斂到局部極小值,可能會在局部極小值附近徘徊。

  1. def SGD(self, training_data, epochs, mini_batch_size, eta, 
  2.         test_data=None): 
  3.     """ 
  4.     隨機梯度下降 
  5.     :param training_data: 輸入的訓練集 
  6.     :param epochs: 迭代次數(shù) 
  7.     :param mini_batch_size: 小樣本數(shù)量 
  8.     :param eta: 學習率  
  9.     :param test_data: 測試數(shù)據(jù)集 
  10.     """ 
  11.     if test_data: n_test = len(test_data) 
  12.     n = len(training_data) 
  13.     for j in xrange(epochs): 
  14.         # 攪亂訓練集,讓其排序順序發(fā)生變化 
  15.         random.shuffle(training_data) 
  16.         # 按照小樣本數(shù)量劃分訓練集 
  17.         mini_batches = [ 
  18.             training_data[k:k+mini_batch_size] 
  19.             for k in xrange(0, n, mini_batch_size)] 
  20.         for mini_batch in mini_batches: 
  21.             # 根據(jù)每個小樣本來更新 w 和 b,代碼在下一段 
  22.             self.update_mini_batch(mini_batch, eta) 
  23.         # 輸出測試每輪結(jié)束后,神經(jīng)網(wǎng)絡(luò)的準確度 
  24.         if test_data: 
  25.             print "Epoch {0}: {1} / {2}".format( 
  26.                 j, self.evaluate(test_data), n_test) 
  27.         else
  28.             print "Epoch {0} complete".format(j) 

根據(jù) backprop 方法得到的偏導數(shù)更新 w 和 b 的值。

  1. def update_mini_batch(self, mini_batch, eta): 
  2.     """ 
  3.     更新 w 和 b 的值 
  4.     :param mini_batch: 一部分的樣本 
  5.     :param eta: 學習率 
  6.     """ 
  7.     # 根據(jù) biases 和 weights 的行列數(shù)創(chuàng)建對應(yīng)的全部元素值為 0 的空矩陣 
  8.     nabla_b = [np.zeros(b.shape) for b in self.biases] 
  9.     nabla_w = [np.zeros(w.shape) for w in self.weights] 
  10.     for x, y in mini_batch: 
  11.         # 根據(jù)樣本中的每一個輸入 x 的其輸出 y,計算 w 和 b 的偏導數(shù) 
  12.         delta_nabla_b, delta_nabla_w = self.backprop(x, y) 
  13.         # 累加儲存偏導值 delta_nabla_b 和 delta_nabla_w  
  14.         nabla_b = [nb+dnb for nb, dnb in zip(nabla_b, delta_nabla_b)] 
  15.         nabla_w = [nw+dnw for nw, dnw in zip(nabla_w, delta_nabla_w)] 
  16.     # 更新根據(jù)累加的偏導值更新 w 和 b,這里因為用了小樣本, 
  17.     # 所以 eta 要除于小樣本的長度 
  18.     self.weights = [w-(eta/len(mini_batch))*nw 
  19.                     for w, nw in zip(self.weights, nabla_w)] 
  20.     self.biases = [b-(eta/len(mini_batch))*nb 
  21.                    for b, nb in zip(self.biases, nabla_b)] 

下面這塊代碼是源碼最核心的部分,也即 BP 算法的實現(xiàn),包含了前向傳輸和逆向反饋,前向傳輸在 Network 里有單獨一個方法(上面提到的 feedforward 方法),那個方法是用于驗證訓練好的神經(jīng)網(wǎng)絡(luò)的精確度的,在下面有提到該方法。

  1. def backprop(self, x, y): 
  2.     """ 
  3.     :param x: 
  4.     :param y: 
  5.     :return: 
  6.     """ 
  7.     nabla_b = [np.zeros(b.shape) for b in self.biases] 
  8.     nabla_w = [np.zeros(w.shape) for w in self.weights] 
  9.     # 前向傳輸 
  10.     activation = x 
  11.     # 儲存每層的神經(jīng)元的值的矩陣,下面循環(huán)會 append 每層的神經(jīng)元的值 
  12.     activations = [x]  
  13.     # 儲存每個未經(jīng)過 sigmoid 計算的神經(jīng)元的值 
  14.     zs = []  
  15.     for b, w in zip(self.biases, self.weights): 
  16.         z = np.dot(w, activation)+b 
  17.         zs.append(z) 
  18.         activation = sigmoid(z) 
  19.         activations.append(activation) 
  20.     # 求 δ 的值 
  21.     delta = self.cost_derivative(activations[-1], y) * \ 
  22.         sigmoid_prime(zs[-1]) 
  23.     nabla_b[-1] = delta 
  24.     # 乘于前一層的輸出值 
  25.     nabla_w[-1] = np.dot(delta, activations[-2].transpose()) 
  26.     for l in xrange(2self.num_layers): 
  27.         # 從倒數(shù)第 **l** 層開始更新,**-l** 是 python 中特有的語法表示從倒數(shù)第 l 層開始計算 
  28.         # 下面這里利用 **l+1** 層的 δ 值來計算 **l** 的 δ 值 
  29.         z = zs[-l] 
  30.         sp = sigmoid_prime(z) 
  31.         delta = np.dot(self.weights[-l+1].transpose(), delta) * sp 
  32.         nabla_b[-l] = delta 
  33.         nabla_w[-l] = np.dot(delta, activations[-l-1].transpose()) 
  34.     return (nabla_b, nabla_w) 

接下來則是 evaluate 的實現(xiàn),調(diào)用 feedforward 方法計算訓練好的神經(jīng)網(wǎng)絡(luò)的輸出層神經(jīng)元值(也即預測值),然后比對正確值和預測值得到精確率。

  1. def evaluate(self, test_data): 
  2.     # 獲得預測結(jié)果 
  3.     test_results = [(np.argmax(self.feedforward(x)), y) 
  4.                     for (x, y) in test_data] 
  5.     # 返回正確識別的個數(shù) 
  6.     return sum(int(x == y) for (x, y) in test_results) 

最后,我們可以利用這個源碼來訓練一個手寫數(shù)字識別的神經(jīng)網(wǎng)絡(luò),并輸出評估的結(jié)果,代碼如下:

  1. import mnist_loader 
  2. import network 
  3.  
  4. training_data, validation_data, test_data = mnist_loader.load_data_wrapper() 
  5. net = network.Network([7843010]) 
  6. net.SGD(training_data, 30103.0, test_data = test_data) 
  7. # 輸出結(jié)果 
  8. # Epoch 0: 9038 / 10000 
  9. # Epoch 1: 9178 / 10000 
  10. # Epoch 2: 9231 / 10000 
  11. # ... 
  12. # Epoch 27: 9483 / 10000 
  13. # Epoch 28: 9485 / 10000 
  14. # Epoch 29: 9477 / 10000 

可以看到,在經(jīng)過 30 輪的迭代后,識別手寫神經(jīng)網(wǎng)絡(luò)的精確度在 95% 左右,當然,設(shè)置不同的迭代次數(shù),學習率以取樣數(shù)對精度都會有影響,如何調(diào)參也是一門技術(shù)活,這個坑就后期再填吧。

  總結(jié)

神經(jīng)網(wǎng)絡(luò)的優(yōu)點:

網(wǎng)絡(luò)實質(zhì)上實現(xiàn)了一個從輸入到輸出的映射功能,而數(shù)學理論已證明它具有實現(xiàn)任何復雜非線性映射的功能。這使得它特別適合于求解內(nèi)部機制復雜的問題。

網(wǎng)絡(luò)能通過學習帶正確答案的實例集自動提取“合理的”求解規(guī)則,即具有自學習能力。

網(wǎng)絡(luò)具有一定的推廣、概括能力。

神經(jīng)網(wǎng)絡(luò)的缺點:

對初始權(quán)重非常敏感,極易收斂于局部極小。

容易 Over Fitting 和 Over Training。

如何選擇隱藏層數(shù)和神經(jīng)元個數(shù)沒有一個科學的指導流程,有時候感覺就是靠猜。

應(yīng)用領(lǐng)域:

常見的有圖像分類,自動駕駛,自然語言處理等。

  TODO

但其實想要訓練好一個神經(jīng)網(wǎng)絡(luò)還面臨著很多的坑(譬如下面四條):

1. 如何選擇超參數(shù)的值,譬如說神經(jīng)網(wǎng)絡(luò)的層數(shù)和每層的神經(jīng)元數(shù)量以及學習率;

2. 既然對初始化權(quán)重敏感,那該如何避免和修正;

3. Sigmoid 激活函數(shù)在深度神經(jīng)網(wǎng)絡(luò)中會面臨梯度消失問題該如何解決;

4. 避免 Overfitting 的 L1 和 L2正則化是什么。

  參考

[1] 周志華 機器學習

[2] 斯坦福大學機器學習在線課程

[3] Parallel Distributed Processing (1986, by David E. Rumelhart, James L. McClelland), Chapter 8 Learning Internal Representations by Error Propagation

[4] How the backpropagation algorithm works

[5] Backpropagation Algorithm

[6] 鏈式求導法則,臺灣中華科技大學數(shù)位課程,Youtube 視頻,需要翻墻,順便安利一下他們的數(shù)學相關(guān)的視頻,因為做的都非常淺顯易懂

責任編輯:林師授 來源: 簡書
相關(guān)推薦

2020-08-20 07:00:00

深度學習人工智能技術(shù)

2017-07-06 17:03:45

BP算法Python神經(jīng)網(wǎng)絡(luò)

2025-03-03 08:10:00

神經(jīng)網(wǎng)絡(luò)深度學習人工智能

2017-11-30 18:05:18

2022-02-15 23:38:22

Python機器學習算法

2023-11-14 16:29:14

深度學習

2015-09-11 09:27:21

神經(jīng)網(wǎng)絡(luò)發(fā)明

2024-04-30 14:54:10

2025-02-25 14:13:31

2019-01-05 08:40:17

VGG神經(jīng)網(wǎng)絡(luò)

2020-09-09 10:20:48

GraphSAGE神經(jīng)網(wǎng)絡(luò)人工智能

2023-06-18 23:00:39

神經(jīng)網(wǎng)絡(luò)損失函數(shù)隨機變量

2023-07-19 08:55:00

神經(jīng)網(wǎng)絡(luò)推薦系統(tǒng)

2022-06-16 10:29:33

神經(jīng)網(wǎng)絡(luò)圖像分類算法

2020-12-25 10:08:53

Python機器學習神經(jīng)網(wǎng)絡(luò)算法

2018-10-18 10:27:15

機器學習神經(jīng)網(wǎng)絡(luò)python

2017-09-10 07:07:32

神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)集可視化

2020-03-25 09:48:10

AI芯片神經(jīng)網(wǎng)絡(luò)

2023-09-03 14:17:56

深度學習人工智能

2024-10-17 13:05:35

神經(jīng)網(wǎng)絡(luò)算法機器學習深度學習
點贊
收藏

51CTO技術(shù)棧公眾號

久久久精品成人| 国产极品美女高潮无套久久久| 一级片视频网站| 91精品国偷自产在线电影| 日韩欧美国产电影| 成人一对一视频| av播放在线| 国产一区二区三区久久悠悠色av| 国模gogo一区二区大胆私拍 | 加勒比海盗1在线观看免费国语版| 性中国xxx极品hd| 可以看av的网站久久看| 欧美日韩xxx| аⅴ天堂中文在线网| 亚洲小说春色综合另类电影| 色av成人天堂桃色av| 国产精品无码电影在线观看 | 久久躁狠狠躁夜夜爽| 天堂www中文在线资源| 日本精品裸体写真集在线观看| 亚洲精品国产一区二区三区四区在线| 裸体丰满少妇做受久久99精品| 国产精品日韩无码| 久久婷婷丁香| 97色在线观看| 欧美国产在线看| 波多野结衣一区| 日韩精品视频免费在线观看| 亚洲天堂小视频| 欧美日韩大片| 亚洲成人av中文| 老司机午夜网站| 黄网页在线观看| 国产精品无人区| 欧美日韩一区在线播放| 五月激情丁香婷婷| 成人三级在线视频| 91沈先生播放一区二区| 中文精品久久久久人妻不卡| 美女网站久久| 午夜精品在线视频| 国产午夜精品一区二区理论影院| 五月激情久久久| 日韩在线播放一区| 久久午夜精品视频| 成人看的羞羞网站| 中国china体内裑精亚洲片| 久久人人爽人人爽人人片| 538任你躁精品视频网免费| 欧美日韩视频在线一区二区| 欧美黑人又粗又大又爽免费| 外国成人直播| 日韩欧美a级成人黄色| 中文字幕无码精品亚洲35| 不卡一本毛片| 亚洲最色的网站| 精品视频在线观看一区二区| 久草在线视频网站| 亚洲一区自拍偷拍| 欧美精品自拍视频| 黄色漫画在线免费看| 五月婷婷激情综合| 国产免费黄色av| 偷拍中文亚洲欧美动漫| 欧美亚一区二区| 精品综合久久久久| 免费欧美网站| 亚洲第一色在线| 亚洲av无码一区二区三区网址| 牛牛影视一区二区三区免费看| 亚洲成人中文字幕| 精品人妻少妇嫩草av无码| 妖精视频一区二区三区免费观看| 亚洲精品一区二区三区婷婷月| 性少妇bbw张开| 欧美日韩国产传媒| 久久久精品在线| 精品久久免费视频| 爽好多水快深点欧美视频| 日本精品视频在线观看| 少妇一级淫片日本| 国产精品一区二区久久不卡| 国产日韩欧美一区二区三区四区| 欧美日韩影视| 一区精品在线播放| 久久亚洲中文字幕无码| 二吊插入一穴一区二区| 欧美一级久久久久久久大片| 国产精品成人99一区无码 | 亚洲视频电影| 日本不卡影院| 色又黄又爽网站www久久| 色一情一区二区三区| 超碰97久久| 亚洲一级一级97网| 在线观看成人毛片| 久久aⅴ国产紧身牛仔裤| 成人午夜在线观看| 免费在线视频你懂得| 亚洲精品伦理在线| 50路60路老熟妇啪啪| 日韩一区二区三区在线看| 精品视频久久久| 一区视频免费观看 | 一级 黄 色 片一| 久久夜色电影| 久久国产精品久久国产精品| 五月天激情国产综合婷婷婷| 精东粉嫩av免费一区二区三区| 国模精品娜娜一二三区| 黄网站视频在线观看| 在线日韩av片| 黄色激情在线观看| 仙踪林久久久久久久999| 欧美中文字幕在线播放| 亚洲免费国产视频| 欧美激情中文字幕| 男女激情无遮挡| 国产一精品一av一免费爽爽| 国产亚洲欧美日韩美女| 中文字幕亚洲高清| 国产乱码精品1区2区3区| 视频一区亚洲| 中文在线最新版地址| 亚洲精品一区二区三区香蕉 | 午夜精品福利视频网站| 波多野结衣在线免费观看| 青草国产精品| 国产成人激情小视频| 日韩精品123| 天天色综合天天| 国产性猛交96| 欧美黄在线观看| 91精品啪在线观看麻豆免费| 91九色在线porn| 色94色欧美sute亚洲线路一ni| 国产人妻黑人一区二区三区| 亚洲成人原创| 国产精品免费一区二区三区四区| 在线中文字幕-区二区三区四区| 欧美日韩一区二区欧美激情| 在线观看免费小视频| 久久久久久黄| 日本一区二区三区精品视频| 成人影院入口| 国产一区二区三区久久精品 | 日韩欧美一卡二卡| 国产一区二区视频在线观看免费| 国产综合色精品一区二区三区| 亚洲在线视频一区二区| 欧美videos粗暴| 日韩性生活视频| 亚洲中文字幕一区二区| 国产精品久久久久婷婷| 九九热精品国产| 亚洲国产老妈| 成人欧美一区二区| av漫画网站在线观看| 亚洲精品国产精品国自产在线| 99免费在线观看| 91亚洲午夜精品久久久久久| 久久久久久久久久久免费视频| 羞羞答答一区二区| 国产精品劲爆视频| 麻豆最新免费在线视频| 91精品国产高清一区二区三区蜜臀| 视频这里只有精品| 高清不卡在线观看| 欧美在线观看www| 欧美色就是色| 99超碰麻豆| 欧产日产国产精品视频| 一区二区三区四区精品| 国产精品毛片久久久久久久av| 亚洲免费观看高清完整| 国产人妻黑人一区二区三区| 日韩精品免费视频人成| 中文字幕中文字幕在线中一区高清| 日韩精品视频一区二区三区| 8050国产精品久久久久久| 九九在线视频| 欧美一区二区三区公司| 久久一区二区三区视频| 国产精品久久久久久久蜜臀| 性猛交╳xxx乱大交| 久久午夜精品| 国产精品一区在线免费观看| 色婷婷av一区二区三区丝袜美腿| 国产精品综合网站| 97天天综合网| www.xxxx欧美| 无码精品在线观看| 91精品婷婷国产综合久久性色 | 日韩成人av影视| 大地资源网在线观看免费官网| 一区二区三区日本久久久| 91精品久久久久久久久久入口| 51漫画成人app入口| 国产亚洲精品日韩| 丰满人妻一区二区三区免费| 欧美性色黄大片| 日韩欧美亚洲一区二区三区| 国产精品久久99| 波多野结衣影院| 国内成人精品2018免费看| 黄色片久久久久| 午夜国产一区| 亚洲免费不卡| 亚洲人和日本人hd| 国产精品国模大尺度私拍| 久久久国产精品网站| 97碰在线观看| 色呦呦视频在线观看| www.xxxx精品| av福利精品| 亚洲欧美日韩国产成人| 国模无码一区二区三区| 欧美电影在线免费观看| 欧美性受xxx黑人xyx性爽| 亚洲国产成人精品视频| 欧美日韩午夜视频| 日本一区二区久久| 国产熟妇搡bbbb搡bbbb| 波多野结衣在线一区| 一级黄色免费毛片| 精东粉嫩av免费一区二区三区| 亚洲精品怡红院| 久久精品三级| 成人免费aaa| 亚洲精品一二| 性欧美大战久久久久久久| 欧美一区二区三区另类| 国产精品av免费| 欧美mv日韩| 亚洲巨乳在线观看| 成人免费在线观看av| 性欧美大战久久久久久久免费观看| 亚洲va久久久噜噜噜久久| 好看的日韩精品| www.久久东京| 国产精品久久亚洲| 国产极品模特精品一二| 懂色中文一区二区三区在线视频| 日本少妇精品亚洲第一区| 91理论片午午论夜理片久久| 99视频这里有精品| 川上优av一区二区线观看| 国产欧美日韩电影| 999国内精品视频在线| 日韩视频在线直播| 99理论电影网| 精品视频高潮| 欧美人与物videos另类| 久久av电影| 亚洲一区二区精品在线观看| 91精品国产自产在线观看永久∴ | 久久久久久久极品内射| 亚洲国产三级在线| 五月天综合激情网| 在线日韩av片| 国产毛片一区二区三区va在线 | 欧美高清成人| 国产亚洲美女久久| 二区在线播放| 久久久天堂国产精品女人| 国产在线观看www| 日韩免费av片在线观看| 欧美在线一级| 99国产超薄肉色丝袜交足的后果| 国产成人澳门| 五码日韩精品一区二区三区视频| 天天综合网网欲色| 国产美女在线一区| 日韩精品视频网| 久久久国产精品久久久| 不卡视频在线看| 精品无码在线观看| 一区二区三区在线不卡| 国产成人亚洲精品自产在线| 欧美在线free| 亚洲第一页综合| 伊人男人综合视频网| 任你弄在线视频免费观看| 日本午夜人人精品| 欧美激情精品| 日韩在线电影一区| 国内精品99| 天天干天天玩天天操| av在线综合网| 国产一区在线观看免费| 午夜精品久久久久久久久久久| 国产成人精品一区二区色戒| 日韩区在线观看| 都市激情一区| 97在线观看视频| 91麻豆精品国产综合久久久 | 亚洲欧洲一区二区天堂久久| 美女网站免费观看视频| 国产精品91xxx| 少妇精品无码一区二区免费视频 | 波多野结衣激情视频| 日韩美女视频在线| 成年人视频在线看| 97人人爽人人喊人人模波多| 国色天香久久精品国产一区| 欧美日韩一区二| 亚洲午夜av| 国产永久免费网站| 久久久久久久久久久久久久久99| a级黄色片免费看| 欧美日韩激情在线| 噜噜噜在线观看播放视频| 欧美美最猛性xxxxxx| 日韩另类视频| 欧美性色黄大片人与善| 在线日韩视频| 色哟哟免费视频| 中文字幕亚洲一区二区av在线 | 欧美激情图片小说| 在线精品视频一区二区三四| 亚洲av毛片成人精品| 欧美大片网站在线观看| 99综合99| 一道本在线观看视频| 免费成人性网站| 精品成人无码一区二区三区| 欧美日韩中文字幕日韩欧美| 亚洲国产精品国自产拍久久| 久久久精品国产网站| 国产精品蜜月aⅴ在线| 日韩在线电影一区| 日韩高清不卡一区| 国产免费无遮挡吸奶头视频| 精品成人av一区| 四虎在线视频免费观看| 久久久亚洲网站| 1313精品午夜理伦电影| 国产情侣第一页| 成人精品一区二区三区四区 | 粉嫩精品一区二区三区在线观看| 久久久久久久久国产一区| 欧美在线aaa| 国产精品免费视频一区| 中文字幕在线网址| www.精品av.com| 欧美影院在线| 成人在线视频一区二区三区| 成人激情av网| 日韩特黄一级片| 国产午夜精品久久久| 伊人久久精品一区二区三区| 日本一区二区三区精品视频| 日韩成人一级片| 糖心vlog免费在线观看| 欧美一区二区国产| 不卡av免费观看| 欧美12av| 蜜桃免费网站一区二区三区| 91精品少妇一区二区三区蜜桃臀| 欧美另类一区二区三区| 香蕉久久aⅴ一区二区三区| 成人片在线免费看| 国产乱码精品| 日韩不卡av在线| 91麻豆精品国产91久久久久久久久| av在线free| 国产伦精品一区二区三毛| 免费视频久久| 亚洲精品自拍视频在线观看| 91麻豆精品国产91久久久更新时间 | 国产日本亚洲| 欧美啪啪免费视频| 国产片一区二区三区| 国产免费久久久| 国自产精品手机在线观看视频| 你微笑时很美电视剧整集高清不卡| 国产一级特黄a大片免费| 亚洲激情五月婷婷| 青青青草网站免费视频在线观看| 国产精品久久久999| 欧美在线首页| 欧美性xxxx图片| 在线播放亚洲一区| h片在线观看视频免费免费| 秋霞毛片久久久久久久久| 国产一区视频导航| 国产一级精品视频| 色婷婷av一区二区三区在线观看 | 亚洲欧美国产va在线影院| 久久久久黄色| 成年人网站免费视频| 国产精品电影一区二区| 狠狠综合久久av一区二区| 国产精品va在线| 在线观看视频免费一区二区三区| 人人妻人人澡人人爽| 亚洲国产91精品在线观看| 麻豆久久久久| 国产亚洲欧美在线视频| 亚洲人吸女人奶水|