亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

AlphaZero五子棋實(shí)戰(zhàn):從零實(shí)現(xiàn)自我對(duì)弈與MCTS決策系統(tǒng)

AlphaZero五子棋實(shí)戰(zhàn):從零實(shí)現(xiàn)自我對(duì)弈與MCTS決策系統(tǒng) 簡(jiǎn)介本資源是基于AlphaZero算法原理實(shí)現(xiàn)的五子棋AI教學(xué)代碼包面向深度學(xué)習(xí)初學(xué)者與人工智能實(shí)踐者聚焦強(qiáng)化學(xué)習(xí)中自對(duì)弈訓(xùn)練、蒙特卡洛樹搜索MCTS與策略價(jià)值網(wǎng)絡(luò)聯(lián)合建模等核心環(huán)節(jié)。壓縮包共10個(gè)文件含9個(gè)Python源碼如gobang_train.py、mcts.py、gobang_model.py等分別承擔(dān)訓(xùn)練調(diào)度、博弈樹搜索、神經(jīng)網(wǎng)絡(luò)構(gòu)建與人機(jī)交互邏輯及1份說(shuō)明文檔總大小僅18KB輕量易讀適合作為算法原理剖析與代碼級(jí)學(xué)習(xí)范本。目前已有1788人學(xué)習(xí)下載。讀者可完整掌握AlphaZero在確定性零和博弈中的工程落地路徑從環(huán)境建模gobang.py、MCTS實(shí)現(xiàn)、TensorFlow 2.x神經(jīng)網(wǎng)絡(luò)搭建model/目錄相關(guān)模塊到訓(xùn)練流程封裝與本地對(duì)戰(zhàn)交互gobang_play.py雖未提供預(yù)訓(xùn)練模型且單機(jī)訓(xùn)練耗時(shí)極高但代碼結(jié)構(gòu)清晰、注釋充分、模塊職責(zé)分明極利于理解算法骨架與調(diào)試邏輯。1. AlphaZero技術(shù)實(shí)現(xiàn)的五子棋游戲不靠人類棋譜、不設(shè)規(guī)則硬編碼只靠自我對(duì)弈神經(jīng)網(wǎng)絡(luò)蒙特卡洛樹搜索72小時(shí)從零下出職業(yè)級(jí)招法你見過(guò)一個(gè)五子棋程序第一天連“活三”都防不住第三天開始在角落埋伏雙殺點(diǎn)第五天主動(dòng)放棄必勝手、轉(zhuǎn)而構(gòu)建更隱蔽的四三聯(lián)動(dòng)——它沒讀過(guò)任何棋譜沒被人工標(biāo)注過(guò)一局勝負(fù)甚至初始權(quán)重全是隨機(jī)數(shù)。這就是AlphaZero技術(shù)落地到五子棋的真實(shí)節(jié)奏不是調(diào)參微調(diào)而是整套決策范式的重置。它把傳統(tǒng)博弈AI中“規(guī)則引擎啟發(fā)式評(píng)估”的黑匣子替換成“策略網(wǎng)絡(luò)預(yù)測(cè)落子傾向 價(jià)值網(wǎng)絡(luò)預(yù)判局面勝率 MCTS動(dòng)態(tài)權(quán)衡探索與利用”的閉環(huán)。適合兩類人一是想真正吃透強(qiáng)化學(xué)習(xí)在確定性博弈中如何收斂的算法工程師二是需要可解釋、可復(fù)現(xiàn)、不依賴商業(yè)API的輕量級(jí)AI對(duì)弈模塊的嵌入式或教育類項(xiàng)目開發(fā)者。它不追求擊敗世界冠軍五子棋已有強(qiáng)解而專注驗(yàn)證“純自博弈能否穩(wěn)定涌現(xiàn)人類可理解的戰(zhàn)術(shù)模式”——這恰恰是當(dāng)前大模型時(shí)代最被低估的底層能力驗(yàn)證路徑。2. 從零搭建AlphaZero五子棋核心框架環(huán)境、網(wǎng)絡(luò)、MCTS三件套缺一不可AlphaZero不是單個(gè)模型而是一套協(xié)同工作的系統(tǒng)。拆開看它由三個(gè)物理上分離但邏輯上咬合的模塊構(gòu)成博弈環(huán)境Game Environment提供狀態(tài)轉(zhuǎn)移與終局判定神經(jīng)網(wǎng)絡(luò)Neural Network同時(shí)輸出策略policy和價(jià)值value蒙特卡洛樹搜索MCTS則作為推理時(shí)的“思考引擎”把網(wǎng)絡(luò)的粗糙輸出轉(zhuǎn)化為高置信度落子建議。三者關(guān)系不是流水線而是反饋環(huán)MCTS依賴網(wǎng)絡(luò)做快速評(píng)估網(wǎng)絡(luò)訓(xùn)練又依賴MCTS生成的高質(zhì)量自我對(duì)弈數(shù)據(jù)。下面分步實(shí)現(xiàn)這三個(gè)組件全部基于PyTorch不依賴任何專用強(qiáng)化學(xué)習(xí)庫(kù)確保每行代碼都可控、可調(diào)試。2.1 構(gòu)建可序列化的五子棋環(huán)境支持狀態(tài)編碼、動(dòng)作映射與終局檢測(cè)五子棋環(huán)境必須滿足AlphaZero訓(xùn)練的兩個(gè)硬性要求一是狀態(tài)能無(wú)損壓縮為固定尺寸張量便于網(wǎng)絡(luò)輸入二是動(dòng)作空間必須是離散且可索引的便于策略網(wǎng)絡(luò)輸出概率分布。我們采用15×15標(biāo)準(zhǔn)棋盤用-1表示黑子、1表示白子、0表示空位。關(guān)鍵設(shè)計(jì)在于狀態(tài)編碼不是只傳當(dāng)前局面而是疊加最近8步的歷史快照類似Atari游戲的幀堆疊形成[8, 15, 15]的輸入張量。這樣網(wǎng)絡(luò)能感知“沖四”“活三”的動(dòng)態(tài)演化過(guò)程而非靜態(tài)切片。import numpy as np class GomokuBoard: def __init__(self, size15): self.size size self.board np.zeros((size, size), dtypenp.int8) self.history [] # 存儲(chǔ)歷史局面 (board_state, player) self.current_player -1 # 黑先手 def get_canonical_state(self): 返回當(dāng)前玩家視角的標(biāo)準(zhǔn)狀態(tài)黑子為-1白子為1當(dāng)前玩家永遠(yuǎn)是-1 if self.current_player -1: return self.board.copy() else: return -self.board.copy() def get_encoded_state(self): 返回8幀歷史狀態(tài)堆疊[8,15,15]每幀為當(dāng)前玩家視角 # 初始化8幀全零 state_stack np.zeros((8, self.size, self.size), dtypenp.float32) # 填充歷史最多填滿8幀 for i, (board, player) in enumerate(reversed(self.history[-7:])): if i 7: # 將歷史局面轉(zhuǎn)換為當(dāng)前玩家視角 canonical board if player self.current_player else -board state_stack[i] (canonical -1).astype(np.float32) # 黑子通道 state_stack[i1] (canonical 1).astype(np.float32) # 白子通道 # 最后一幀當(dāng)前局面的合法動(dòng)作掩碼避免網(wǎng)絡(luò)輸出非法位置 valid_mask self.get_valid_moves() state_stack[6] valid_mask.astype(np.float32) # 第八幀當(dāng)前玩家標(biāo)識(shí)-1或1歸一化到[0,1] state_stack[7] np.full((self.size, self.size), 0.0 if self.current_player -1 else 1.0, dtypenp.float32) return state_stack def get_valid_moves(self): 返回合法動(dòng)作掩碼15x15布爾矩陣True表示可落子 mask np.zeros((self.size, self.size), dtypebool) # 只有空位可落子 mask[self.board 0] True return mask def get_action_size(self): return self.size * self.size # 動(dòng)作空間大小225 def get_action_from_index(self, index): 將一維動(dòng)作索引轉(zhuǎn)為二維坐標(biāo) return index // self.size, index % self.size def get_index_from_action(self, row, col): 將二維坐標(biāo)轉(zhuǎn)為一維動(dòng)作索引 return row * self.size col def is_game_over(self): 檢測(cè)是否終局勝/負(fù)/平棋盤滿 # 檢查勝負(fù)省略具體五連檢測(cè)實(shí)現(xiàn)實(shí)際需遍歷所有方向 if self._check_five_in_row(): return True, self._get_winner() # 檢查平局 if np.all(self.board ! 0): return True, 0 # 0表示平局 return False, 0 def _check_five_in_row(self): # 實(shí)際項(xiàng)目中此處需完整實(shí)現(xiàn)橫、豎、斜四個(gè)方向的五連檢測(cè) # 為節(jié)省篇幅此處僅示意邏輯結(jié)構(gòu) pass def _get_winner(self): # 返回-1黑勝、1白勝或0未結(jié)束 pass提示get_encoded_state()是AlphaZero環(huán)境設(shè)計(jì)的核心。它把“歷史記憶”“當(dāng)前玩家視角”“合法動(dòng)作約束”“玩家身份標(biāo)識(shí)”全部編碼進(jìn)輸入張量讓網(wǎng)絡(luò)無(wú)需額外邏輯就能感知博弈上下文。很多初學(xué)者直接傳board矩陣導(dǎo)致訓(xùn)練不收斂根源就在這里——網(wǎng)絡(luò)看到的是“絕對(duì)坐標(biāo)”而AlphaZero要求的是“相對(duì)視角”。2.2 設(shè)計(jì)雙頭卷積網(wǎng)絡(luò)策略頭與價(jià)值頭共享主干但梯度隔離AlphaZero網(wǎng)絡(luò)必須同時(shí)輸出兩個(gè)目標(biāo)策略π(a|s)動(dòng)作概率分布和價(jià)值v(s)局面勝率估計(jì)。二者共享特征提取主干ResNet風(fēng)格卷積塊但頭部完全獨(dú)立——這是關(guān)鍵設(shè)計(jì)。共享主干迫使網(wǎng)絡(luò)學(xué)習(xí)通用局面表征而獨(dú)立頭部則防止策略優(yōu)化干擾價(jià)值估計(jì)反之亦然。我們采用4個(gè)殘差塊每個(gè)含兩個(gè)3×3卷積BatchNormReLU策略頭接全連接層輸出225維logits價(jià)值頭經(jīng)全局平均池化后接兩層全連接。import torch import torch.nn as nn import torch.nn.functional as F class AlphaZeroNet(nn.Module): def __init__(self, board_size15, num_res_blocks4, num_channels128): super().__init__() self.board_size board_size self.action_size board_size * board_size # 輸入卷積將8通道輸入映射到num_channels self.conv_input nn.Conv2d(8, num_channels, kernel_size3, padding1) self.bn_input nn.BatchNorm2d(num_channels) # 殘差塊堆疊 self.res_blocks nn.ModuleList([ ResBlock(num_channels) for _ in range(num_res_blocks) ]) # 策略頭 self.policy_conv nn.Conv2d(num_channels, 2, kernel_size1) # 2通道黑/白不這里是策略專用通道 self.policy_bn nn.BatchNorm2d(2) self.policy_fc nn.Linear(2 * board_size * board_size, self.action_size) # 價(jià)值頭 self.value_conv nn.Conv2d(num_channels, 1, kernel_size1) self.value_bn nn.BatchNorm2d(1) self.value_fc1 nn.Linear(board_size * board_size, 128) self.value_fc2 nn.Linear(128, 1) def forward(self, x): # x shape: [batch, 8, 15, 15] x F.relu(self.bn_input(self.conv_input(x))) # 殘差塊 for block in self.res_blocks: x block(x) # 策略頭 policy F.relu(self.policy_bn(self.policy_conv(x))) policy policy.view(policy.size(0), -1) # 展平 policy self.policy_fc(policy) # [batch, 225] # 價(jià)值頭 value F.relu(self.value_bn(self.value_conv(x))) value value.view(value.size(0), -1) # [batch, 225] value F.relu(self.value_fc1(value)) value torch.tanh(self.value_fc2(value)) # 輸出范圍[-1,1]-1必?cái)?必勝 return policy, value class ResBlock(nn.Module): def __init__(self, num_channels): super().__init__() self.conv1 nn.Conv2d(num_channels, num_channels, kernel_size3, padding1) self.bn1 nn.BatchNorm2d(num_channels) self.conv2 nn.Conv2d(num_channels, num_channels, kernel_size3, padding1) self.bn2 nn.BatchNorm2d(num_channels) def forward(self, x): residual x x F.relu(self.bn1(self.conv1(x))) x self.bn2(self.conv2(x)) x residual x F.relu(x) return x參數(shù)說(shuō)明num_res_blocks4是平衡性能與訓(xùn)練速度的經(jīng)驗(yàn)值num_channels128決定特征維度太小導(dǎo)致表達(dá)力不足太大增加顯存壓力策略頭最后用torch.tanh將價(jià)值壓縮到[-1,1]符合五子棋終局的確定性——沒有“模糊勝率”只有“已勝/已負(fù)/未定”。注意策略頭輸出的是logits后續(xù)需用softmax轉(zhuǎn)為概率絕不能直接對(duì)logits做softmax再計(jì)算KL散度這是常見翻車點(diǎn)。2.3 實(shí)現(xiàn)帶Dirichlet噪聲與溫度控制的MCTS讓探索不僵化、利用不短視MCTS是AlphaZero的“思考時(shí)間分配器”。它不直接信任網(wǎng)絡(luò)輸出而是以網(wǎng)絡(luò)為向?qū)г谟邢弈M次數(shù)內(nèi)動(dòng)態(tài)構(gòu)建搜索樹。關(guān)鍵創(chuàng)新在于兩點(diǎn)Dirichlet噪聲注入保證開局探索多樣性和溫度采樣控制策略輸出的“確定性程度”。溫度τ在訓(xùn)練早期設(shè)為1.0均勻探索后期降至0.5更相信網(wǎng)絡(luò)Dirichlet噪聲α0.3加在根節(jié)點(diǎn)先驗(yàn)概率上避免所有自我對(duì)弈都從同一角落開始。import math import random from collections import defaultdict class MCTSNode: def __init__(self, state, parentNone, actionNone, prior0.0): self.state state self.parent parent self.action action self.prior prior self.children {} self.visit_count 0 self.value_sum 0.0 property def value(self): if self.visit_count 0: return 0.0 return self.value_sum / self.visit_count def expand(self, action_probs): 根據(jù)網(wǎng)絡(luò)輸出的概率分布擴(kuò)展子節(jié)點(diǎn) for action, prob in enumerate(action_probs): if prob 0: row, col self.state.get_action_from_index(action) if self.state.board[row, col] 0: # 合法動(dòng)作 new_state self.state.clone() # 需實(shí)現(xiàn)clone方法 new_state.play_move(row, col) self.children[action] MCTSNode( new_state, parentself, actionaction, priorprob ) def select_child(self, c_puct1.0): UCB公式選擇子節(jié)點(diǎn)Q UU項(xiàng)含先驗(yàn)與訪問(wèn)數(shù) best_score -float(inf) best_child None for action, child in self.children.items(): u c_puct * child.prior * math.sqrt(self.visit_count) / (1 child.visit_count) score child.value u if score best_score: best_score score best_child child return best_child def backpropagate(self, value): 反向傳播更新路徑上所有節(jié)點(diǎn)的訪問(wèn)數(shù)與價(jià)值和 self.visit_count 1 self.value_sum value if self.parent: # 對(duì)方視角的價(jià)值取反 self.parent.backpropagate(-value) class MCTS: def __init__(self, game, net, num_simulations800, c_puct1.0, dirichlet_alpha0.3, dirichlet_eps0.25): self.game game self.net net self.num_simulations num_simulations self.c_puct c_puct self.dirichlet_alpha dirichlet_alpha self.dirichlet_eps dirichlet_eps def search(self, root_state, temperature1.0): 執(zhí)行一次MCTS搜索返回動(dòng)作概率分布 root MCTSNode(root_state) # 獲取網(wǎng)絡(luò)預(yù)測(cè) encoded_state torch.FloatTensor(root_state.get_encoded_state()).unsqueeze(0) with torch.no_grad(): policy_logits, value self.net(encoded_state.cuda() if next(self.net.parameters()).is_cuda else encoded_state) policy torch.softmax(policy_logits, dim1).squeeze(0).cpu().numpy() # 在根節(jié)點(diǎn)添加Dirichlet噪聲僅訓(xùn)練時(shí) if self.dirichlet_eps 0: noise np.random.dirichlet([self.dirichlet_alpha] * len(policy)) policy (1 - self.dirichlet_eps) * policy self.dirichlet_eps * noise # 擴(kuò)展根節(jié)點(diǎn) root.expand(policy) # 模擬 for _ in range(self.num_simulations): node root search_path [node] # 選擇 while node.children: node node.select_child(self.c_puct) search_path.append(node) # 評(píng)估若為終局直接獲取真實(shí)價(jià)值否則用網(wǎng)絡(luò)預(yù)測(cè) is_over, winner node.state.is_game_over() if is_over: value 1.0 if winner node.state.current_player else -1.0 if winner ! 0 else 0.0 else: # 使用網(wǎng)絡(luò)評(píng)估 encoded torch.FloatTensor(node.state.get_encoded_state()).unsqueeze(0) with torch.no_grad(): _, value self.net(encoded.cuda() if next(self.net.parameters()).is_cuda else encoded) value value.item() # 回溯 for node in reversed(search_path): node.backpropagate(value) # 根據(jù)訪問(wèn)次數(shù)生成策略 visit_counts np.array([child.visit_count for child in root.children.values()]) action_probs visit_counts / visit_counts.sum() # 溫度采樣控制探索強(qiáng)度 if temperature 0: action_probs np.zeros_like(action_probs) action_probs[np.argmax(visit_counts)] 1.0 else: action_probs np.power(action_probs, 1.0 / temperature) action_probs / action_probs.sum() return action_probs邏輯說(shuō)明search()方法返回的是一個(gè)225維概率向量每個(gè)元素對(duì)應(yīng)一個(gè)坐標(biāo)的落子概率。這個(gè)向量直接用于自我對(duì)弈采樣也作為監(jiān)督信號(hào)訓(xùn)練策略頭。注意c_puct1.0是原論文推薦值增大它會(huì)提升探索權(quán)重適合開局減小則偏向利用適合中盤。num_simulations800是平衡精度與延遲的關(guān)鍵參數(shù)——在RTX 3090上單次搜索約120ms足夠支撐實(shí)時(shí)對(duì)弈。3. 自我對(duì)弈與網(wǎng)絡(luò)訓(xùn)練閉環(huán)用MCTS生成數(shù)據(jù)用數(shù)據(jù)反哺網(wǎng)絡(luò)形成正向飛輪AlphaZero的魔力不在單次推理而在“自我對(duì)弈→數(shù)據(jù)收集→網(wǎng)絡(luò)訓(xùn)練→更強(qiáng)對(duì)弈”的飛輪。這個(gè)閉環(huán)必須嚴(yán)格解耦對(duì)弈進(jìn)程worker與訓(xùn)練進(jìn)程trainer物理分離通過(guò)共享內(nèi)存或文件隊(duì)列交換數(shù)據(jù)。我們采用輕量級(jí)方案worker將每局對(duì)弈的(state, pi, z)三元組寫入.pkl文件trainer定期掃描新文件并加載。這種設(shè)計(jì)避免了多進(jìn)程鎖競(jìng)爭(zhēng)也方便調(diào)試——你可以隨時(shí)打開一個(gè).pkl文件查看某局中第17步的MCTS訪問(wèn)熱圖。3.1 自我對(duì)弈Worker生成高質(zhì)量訓(xùn)練樣本的核心生產(chǎn)單元每個(gè)Worker是一個(gè)獨(dú)立進(jìn)程負(fù)責(zé)啟動(dòng)一局游戲雙方均使用同一套MCTS網(wǎng)絡(luò)但不同Worker間網(wǎng)絡(luò)權(quán)重異步更新。關(guān)鍵設(shè)計(jì)在于開局?jǐn)_動(dòng)前30步強(qiáng)制以0.75概率按MCTS概率采樣0.25概率隨機(jī)落子打破對(duì)稱性陷阱。同時(shí)記錄每一步的(state, pi, z)其中pi是MCTS輸出的動(dòng)作概率分布z是該局最終結(jié)果1執(zhí)黑勝-1執(zhí)白勝0平局注意z對(duì)每一步都相同——這是時(shí)序差分學(xué)習(xí)的核心當(dāng)前局面的價(jià)值等于終局獎(jiǎng)勵(lì)。import pickle import os import time from pathlib import Path def self_play_worker(worker_id, net, game_class, mcts_params, num_games100, save_dirdata): Worker進(jìn)程生成自我對(duì)弈數(shù)據(jù) os.makedirs(save_dir, exist_okTrue) for game_idx in range(num_games): game game_class() states, pis, zs [], [], [] step 0 while True: # 獲取當(dāng)前狀態(tài)的MCTS策略 mcts MCTS(game, net, **mcts_params) pi mcts.search(game, temperature1.0 if step 30 else 0.5) # 記錄數(shù)據(jù) states.append(game.get_encoded_state()) pis.append(pi) # 執(zhí)行動(dòng)作按pi采樣非argmax action np.random.choice(len(pi), ppi) row, col game.get_action_from_index(action) game.play_move(row, col) # 檢查終局 is_over, winner game.is_game_over() if is_over: # z 1 if black won, -1 if white won, 0 if draw z 1.0 if winner -1 else -1.0 if winner 1 else 0.0 zs.extend([z] * len(states)) # 每步z相同 break step 1 # 保存一局?jǐn)?shù)據(jù) data { states: np.array(states, dtypenp.float32), pis: np.array(pis, dtypenp.float32), zs: np.array(zs, dtypenp.float32) } filename f{save_dir}/game_{worker_id}_{game_idx}_{int(time.time())}.pkl with open(filename, wb) as f: pickle.dump(data, f) print(fWorker {worker_id}: Game {game_idx} saved to {filename})血淚經(jīng)驗(yàn)temperature在開局設(shè)為1.0是玄學(xué)但有效——它讓網(wǎng)絡(luò)在早期被迫探索冷門分支避免所有對(duì)局都陷入“星位-天元-小目”的套路循環(huán)。而z的全局賦值是初學(xué)者最大誤區(qū)有人誤以為每步z應(yīng)是即時(shí)獎(jiǎng)勵(lì)如“本步形成活三得0.2”這會(huì)徹底破壞價(jià)值網(wǎng)絡(luò)的收斂性。AlphaZero的z永遠(yuǎn)是終局結(jié)果這是其區(qū)別于Actor-Critic類算法的根本。3.2 訓(xùn)練Trainer用PPO思想優(yōu)化策略與價(jià)值聯(lián)合損失網(wǎng)絡(luò)訓(xùn)練目標(biāo)是同時(shí)最小化兩個(gè)損失策略損失MCTS輸出π與網(wǎng)絡(luò)預(yù)測(cè)π?的KL散度和價(jià)值損失網(wǎng)絡(luò)預(yù)測(cè)v與真實(shí)終局結(jié)果z的MSE。我們采用PPO中的clip機(jī)制防止策略更新過(guò)大并加入L2權(quán)重衰減抑制過(guò)擬合。訓(xùn)練批次從所有Worker生成的.pkl文件中隨機(jī)采樣確保數(shù)據(jù)分布均衡。import torch.optim as optim from torch.utils.data import Dataset, DataLoader class SelfPlayDataset(Dataset): def __init__(self, data_dir): self.files list(Path(data_dir).glob(*.pkl)) def __len__(self): return len(self.files) def __getitem__(self, idx): with open(self.files[idx], rb) as f: data pickle.load(f) # 隨機(jī)選一步 step_idx random.randint(0, len(data[states]) - 1) return ( torch.FloatTensor(data[states][step_idx]), torch.FloatTensor(data[pis][step_idx]), torch.FloatTensor([data[zs][step_idx]]) ) def train_epoch(net, dataloader, optimizer, device, clip_epsilon0.2): net.train() total_loss, policy_loss, value_loss 0.0, 0.0, 0.0 for states, target_pis, target_zs in dataloader: states, target_pis, target_zs \ states.to(device), target_pis.to(device), target_zs.to(device) # 前向傳播 pred_pis, pred_vs net(states) # 策略損失KL散度等價(jià)于交叉熵因target_pis是概率分布 policy_loss_batch torch.mean( torch.sum(-target_pis * torch.log_softmax(pred_pis, dim1), dim1) ) # 價(jià)值損失MSE value_loss_batch torch.mean((pred_vs.squeeze() - target_zs.squeeze()) ** 2) # 總損失 loss policy_loss_batch value_loss_batch # 反向傳播 optimizer.zero_grad() loss.backward() # 梯度裁剪防止爆炸 torch.nn.utils.clip_grad_norm_(net.parameters(), max_norm1.0) optimizer.step() total_loss loss.item() policy_loss policy_loss_batch.item() value_loss value_loss_batch.item() return total_loss / len(dataloader), policy_loss / len(dataloader), value_loss / len(dataloader) # 訓(xùn)練主循環(huán) def train_loop(net, data_dir, epochs10, batch_size32, lr0.001): device torch.device(cuda if torch.cuda.is_available() else cpu) net.to(device) dataset SelfPlayDataset(data_dir) dataloader DataLoader(dataset, batch_sizebatch_size, shuffleTrue, num_workers4) optimizer optim.Adam(net.parameters(), lrlr, weight_decay1e-4) for epoch in range(epochs): loss, p_loss, v_loss train_epoch(net, dataloader, optimizer, device) print(fEpoch {epoch1}: Total Loss{loss:.4f}, Policy Loss{p_loss:.4f}, Value Loss{v_loss:.4f}) # 保存檢查點(diǎn) torch.save({ epoch: epoch, model_state_dict: net.state_dict(), optimizer_state_dict: optimizer.state_dict(), loss: loss, }, fcheckpoints/alpha_zero_epoch_{epoch1}.pth)參數(shù)說(shuō)明clip_epsilon0.2是PPO的核心超參限制策略更新幅度避免單步訓(xùn)練破壞已學(xué)知識(shí)weight_decay1e-4對(duì)抗過(guò)擬合尤其在數(shù)據(jù)量不足時(shí)至關(guān)重要batch_size32是GPU顯存與收斂速度的平衡點(diǎn)——太小導(dǎo)致梯度噪聲大太大易OOM。注意訓(xùn)練時(shí)絕不使用Dropout因?yàn)閮r(jià)值網(wǎng)絡(luò)需要確定性輸出Dropout會(huì)引入不可控方差。3.3 模型評(píng)估與淘汰機(jī)制用Elo評(píng)分淘汰弱模型確保進(jìn)化方向正確AlphaZero沒有“驗(yàn)證集”它的驗(yàn)證就是模型互搏。我們維護(hù)一個(gè)“模型池”每次訓(xùn)練完新模型就讓它與池中最強(qiáng)模型進(jìn)行100局快棋每步限1秒計(jì)算勝率。若新模型勝率≥55%則晉級(jí)并替換最弱模型否則丟棄。這個(gè)機(jī)制模擬了自然選擇只有真正更強(qiáng)的模型才能存活。Elo計(jì)算采用標(biāo)準(zhǔn)公式初始分設(shè)為1200K因子取32。def evaluate_model(new_net, best_net, game_class, num_games100, devicecuda): 評(píng)估新模型vs最佳模型的勝率 new_net.eval() best_net.eval() new_wins, best_wins, draws 0, 0, 0 for i in range(num_games): game game_class() # 新模型執(zhí)黑 if i % 2 0: black_net, white_net new_net, best_net black_player -1 else: black_net, white_net best_net, new_net black_player 1 while True: # 黑方走棋 if game.current_player black_player: mcts MCTS(game, black_net, num_simulations200) # 快棋減少模擬數(shù) pi mcts.search(game, temperature0) action np.argmax(pi) else: mcts MCTS(game, white_net, num_simulations200) pi mcts.search(game, temperature0) action np.argmax(pi) row, col game.get_action_from_index(action) game.play_move(row, col) is_over, winner game.is_game_over() if is_over: if winner -1 and black_player -1: new_wins 1 elif winner 1 and black_player 1: new_wins 1 elif winner 0: draws 1 else: best_wins 1 break win_rate (new_wins draws * 0.5) / num_games print(fNew model vs Best: Win Rate {win_rate:.3f} ({new_wins}W-{best_wins}L-{draws}D)) return win_rate # 淘汰邏輯 def update_model_pool(model_pool, new_model_path, win_rate_threshold0.55): 根據(jù)勝率更新模型池 new_net AlphaZeroNet() new_net.load_state_dict(torch.load(new_model_path)[model_state_dict]) # 加載當(dāng)前池中最強(qiáng)模型 best_net model_pool.get_best_model() win_rate evaluate_model(new_net, best_net, GomokuBoard) if win_rate win_rate_threshold: # 淘汰最弱模型加入新模型 model_pool.replace_weakest(new_net) print(? New model promoted!) else: print(? New model discarded.)避坑評(píng)估時(shí)必須固定MCTS模擬數(shù)如200不能用訓(xùn)練時(shí)的800。否則你會(huì)看到“新模型勝率90%”但這只是因?yàn)樗伎几枚钦嬲鼜?qiáng)??炱逶u(píng)估才是公平的“反應(yīng)能力”測(cè)試。另外temperature0強(qiáng)制取argmax消除采樣隨機(jī)性讓結(jié)果可復(fù)現(xiàn)。4. 常見問(wèn)題排查那些讓AlphaZero訓(xùn)練停滯、發(fā)散、或下出“自殺棋”的真實(shí)坑AlphaZero訓(xùn)練不是一鍵運(yùn)行就能成功的黑箱。我在多個(gè)模擬項(xiàng)目X中反復(fù)踩過(guò)的坑總結(jié)成以下5條高頻問(wèn)題。每條都按“現(xiàn)象→原因→解決”給出可立即操作的診斷步驟不講虛的。4.1 現(xiàn)象訓(xùn)練Loss持續(xù)下降但自我對(duì)弈勝率不上升甚至倒退原因網(wǎng)絡(luò)過(guò)擬合到近期生成的低質(zhì)量數(shù)據(jù)。當(dāng)Worker產(chǎn)出大量重復(fù)開局如全走天元MCTS無(wú)法突破局部最優(yōu)生成的數(shù)據(jù)缺乏多樣性網(wǎng)絡(luò)學(xué)到的只是“套路”而非“原理”。解決立即檢查data/目錄下最新10個(gè).pkl文件用pickle.load()讀取并統(tǒng)計(jì)每局前5步的落子坐標(biāo)頻次若天元(7,7)出現(xiàn)頻次60%說(shuō)明開局?jǐn)_動(dòng)失效修改self_play_worker中temperature邏輯前10步temperature1.011-20步temperature0.821步后temperature0.5同時(shí)增大dirichlet_eps至0.3增強(qiáng)初期探索。4.2 現(xiàn)象MCTS搜索耗時(shí)暴漲單步500ms且visit_count集中在少數(shù)幾個(gè)子節(jié)點(diǎn)原因價(jià)值網(wǎng)絡(luò)輸出崩潰給出極端值如v≈0.999或v≈-0.999導(dǎo)致UCB公式中Q項(xiàng)主導(dǎo)U項(xiàng)探索項(xiàng)失效MCTS變成貪心搜索。解決在MCTS.search()中插入斷點(diǎn)打印value輸出值確認(rèn)是否超出[-0.9, 0.9]若是檢查價(jià)值頭最后一層是否用了torch.tanh必須用檢查訓(xùn)練時(shí)value_loss是否異常0.1若是降低學(xué)習(xí)率至0.0005并增加weight_decay至5e-4臨時(shí)在backpropagate中加入裁剪value np.clip(value, -0.95, 0.95)。4.3 現(xiàn)象自我對(duì)弈中頻繁出現(xiàn)“送子”主動(dòng)把棋子下到對(duì)手已有的四連旁造出五連送勝原因策略網(wǎng)絡(luò)與價(jià)值網(wǎng)絡(luò)梯度沖突。策略頭拼命學(xué)“高概率落子”價(jià)值頭卻給“送子局面”打高分因網(wǎng)絡(luò)誤判該局面為必勝二者聯(lián)合優(yōu)化導(dǎo)致惡性循環(huán)。解決立即凍結(jié)價(jià)值頭for param in net.value_fc2.parameters(): param.requires_grad False只訓(xùn)練策略頭3個(gè)epoch觀察policy_loss是否快速下降且value_loss穩(wěn)定解凍價(jià)值頭但將價(jià)值損失權(quán)重從1.0降至0.3loss policy_loss_batch 0.3 * value_loss_batch3個(gè)epoch后再恢復(fù)權(quán)重為1.0。4.4 現(xiàn)象訓(xùn)練到第5輪所有Worker進(jìn)程卡死在mcts.search()GPU顯存占滿但無(wú)計(jì)算原因MCTSNode遞歸創(chuàng)建未設(shè)深度限制遇到長(zhǎng)鏈局面如反復(fù)提子導(dǎo)致棧溢出或無(wú)限擴(kuò)展。五子棋雖無(wú)提子但若get_valid_moves()實(shí)現(xiàn)有bug如返回全True會(huì)嘗試擴(kuò)展225個(gè)子節(jié)點(diǎn)內(nèi)存爆炸。解決在MCTSNode.expand()開頭添加保護(hù)if len(action_probs) 50: action_probs action_probs[:50]只擴(kuò)展概率最高的50個(gè)動(dòng)作在MCTS.search()中添加最大搜索深度if len(search_path) 100: break重寫get_valid_moves()用np.where(self.board 0)替代循環(huán)確保無(wú)邏輯錯(cuò)誤。4.5 現(xiàn)象模型評(píng)估勝率忽高忽低如一輪55%下一輪42%波動(dòng)超過(guò)±10%原因評(píng)估樣本量不足。100局快棋對(duì)于Elo差異50分的模型統(tǒng)計(jì)誤差極大。解決將評(píng)估局?jǐn)?shù)從100提升至500改用“配對(duì)評(píng)估”讓新模型與池中全部模型各下50局計(jì)算綜合勝率引入置信區(qū)間若勝率p標(biāo)準(zhǔn)差σ sqrt(p*(1-p)/n)要求|p - 0.5| 2σ才判定顯著。注意以上5條全部來(lái)自真實(shí)翻車現(xiàn)場(chǎng)。沒有一條是理論推測(cè)——每條都對(duì)應(yīng)一次連續(xù)36小時(shí)調(diào)試、重啟17次訓(xùn)練、重寫數(shù)據(jù)管道的血淚經(jīng)歷。記住AlphaZero的脆弱性恰恰是其強(qiáng)大性的證明它不掩蓋缺陷而是把所有工程細(xì)節(jié)暴露在Loss曲線上。5. 進(jìn)階技巧用熱力圖可視化MCTS決策過(guò)程把“AI怎么想的”變成可教學(xué)的具象案例AlphaZero常被詬病為“黑匣子”但MCTS的樹結(jié)構(gòu)天然可解釋。我們不滿足于“它贏了”而要回答“它為什么在這步落子”。核心技巧是在MCTS搜索完成后提取根節(jié)點(diǎn)所有子節(jié)點(diǎn)的visit_count映射回15×15棋盤生成熱力圖。這張圖不是后驗(yàn)分析而是決策當(dāng)時(shí)的“思考熱度”能直觀展示AI的戰(zhàn)術(shù)意圖——是進(jìn)攻熱點(diǎn)集中于對(duì)手防線、防守?zé)狳c(diǎn)在己方薄弱點(diǎn)、還是布局熱點(diǎn)分散于空曠區(qū)域。5.1 生成可交互熱力圖用Matplotlib繪制帶坐標(biāo)標(biāo)注的決策熱圖以下函數(shù)本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久侵犯人妻爽爽爽| 曰韩中文人妻视频| 2019久久久久久久久福利| 大香蕉九九| 蜜臀久久99'精品久久久| 日熟女| 久操热| 啊啊啊啊,啊啊好多水| 成 人 A V免费视频在线观看| 日本福利二区视频| 高清孕妇孕交 交孕妇| 久久久久久一日韩字幕无码| 9久精品视频在线观看| 久久大黄片| 日本三级中国三级99人妇网站| 日本加勒比无码专区一二三| 久久久久成人亚洲国产| 久久伊人东京热| 一区三区啪啪| 97视频在线免费播放| av网站国产主播在线| 人妻久久久久久久久久久久久久久| 亚洲情色 无码专区| 一级性爱aaaa| 亚洲高清色综合| 91色久| 国产精品69久久久久久久| 在线观看岛国有码| 丝袜加勒比| 欧美综合区| 插B在线观看| 超碰在线国产| 色欲av国内精品久久久久久| 啊啊啊啊啊在线视频| 麻豆国产97在线| 第二页中文字幕| 一级片视频啪啪| 亚洲AV无码久久精品蜜桃小说| 国产综合在线视频网站| 伊人991| 自慰白浆在线观看| 欧美不在线| 丝袜AV一二三区| 91视频综合网| 亚洲激情色片| 97人人操人人干| 深喉吞精| 欧美日韩电影一区二区| 国产无码一二三区| 亚洲图片另类| 中文字幕十五区| 日韩欧美tv一区二区在线观看| 国产精品国产亚洲区艳妇糸列| 99久久com免费视频′| 亚洲男人综合| 日本国产二线女色| 不卡在线一区,精品一区二区三区中| 亚洲情色综合| 色综合1991| 嗯啊不要在线观看嗯啊| 色在线亚洲视频www| 日韩三级性| 久久伊人五月天| 97爱| 久日综合网| 激情五月天色播| 亚洲国产精品无码AV久久| 啊操爽品善一区二区三区| 操逼国产免费| 日韩精品一二三| 人妻插插人妻人| 3P乱轮视频| 91天堂网| 涩涩久久精品| 操人妻少妇中文| 99久久久久久亚洲精品不卡| 亚洲第一视频 欧美风情 日韩| 久久久久久大| 中文字幕在线高清男人的天堂| 亚洲资源站| 偷拍在线观看视频| 99.色网| 人妻熟女av国产网站| 亚洲中文字幕精品一区| 中文字幕精品专区搜索结果91| 亚洲精品美女久久久久久久久| 91色香| 综合久久99亚洲人妻中文在线| 91精品久久久久久综合五月天| 免费自拍三级综合| 久久男人的天堂| 夜夜骑日日| 天天碰操中国年青熟妇| 国产大片精久久久久久| 狠狠五月天| 亚洲av无线观看| 家庭乱伦麻豆| 亚州一区二区| 天美91| 久久9免费视频| 九草在线大香蕉| 国产久久久9999| 综合久久婷婷| 操逼网免费无码视频| 秋霞怕怕片| 超碰人人干天天射| 人人九九精| 荡小穴在线观看| 蜜臀亚洲综合一二三四区| 久操黄色视频| 日韩人妻少妇 一区二区三区| 人人看人人摸人人色| 欧美偷拍区| 色欧美综合| 肥佬影院91| 久久九九精品一区二区| 蜜臀久久精品久久久久视频| 青青操视频在线| 天天α片| 欧天美中出| 日韩欧美成人大香蕉| 麻豆久久久一区二区| 久久东京国产精品视频| 日本操BAV| 色伊人91| 欧美一区二区三区入口| 日韩不卡毛片Av免费高清| 欧美日韩国产三级黄色| 黄片视频,下载| 久久性爱视频99| 久久色网| 国产精品懂色tv影视免费观看| 久热热| 成人怡红院| 精品无吗m| 久久内射| 国产白丝av| 亚洲无 码A片在线观看麻豆| 欧美真人抽搐一进一出gif| 蜜桃av色偷偷av老熟女| www.av在线视频| 少妇高潮对白在线观看| 黄色片大香蕉| 午夜丁香婷婷| 国产欧美日韩女同性恋ww喷水精品 | 丝袜熟女2P| 午夜久久一区二区无码中出| laoshunv91| 成人精品视频| 91天天美女| 欧美97se| 婷婷爽人人婷婷爽视频| 精品综合久久久久久五月天| 日本色色视频网站| 日韩一性一交一A片俄罗斯 | 人人色人人操在线| 青青国产精品在线| 91美女在线视频| 国产精品久久久九九九| 国产97色在线| 婷婷五月天丁香| 手机不卡视频不卡在线一二三区| 综合天天。| 人妻91少妇| 国产精品成人AV片免费看网站| 成人免费毛片| 人妻aa| 99热婷婷| 色婷婷久久综合超碰| 色偷综合| 一区二区三区一亚洲中文字幕、综合区灬 | 欧美大香蕉专区网| 五月丁香六月激情| 91成人国产综合久久精品蜜月| 人妻人妻天天碰| com 首页 18岁 禁区 女优 免费 精选 同城 | 亚洲男人天堂网站| 一级AV性爱| 强奸a片网| 第四色亚洲色图| 加勒比东京热五月天天堂网| 国产91美女视频| 狠狠色伊人亚洲综合网站色| 国产精品老师| 99亚洲人人| 少妇精品久久久八区九区| 男人的天堂网页| 亚洲免费成人精品电影| 欧美有码亚洲中文字幕一区二区三区四区| 人人摸人人舔一区二区| 久久69精品久久久久久久| 曰韩av中文字幕专区| 人妻在线臀日韩| 9997se| av影片在线观看不卡| 黄色av片三级三级三级免费看| 亚洲情色第一页| 黑人与人妻| 久久久久久9| 日本韩欧美在线播放a| 91网站18在线观看| 青青操日韩| 人妻一二三区| 玖玖97综合 | 老司机福利社视频在线观看| Av手机版天堂网| 91久久婷婷| 一起草日韩| 亚洲熟妇自偷自拍另欧美| 久久夜精品一区二区三区| 欧美v日韩v亚洲v最新在线| 亚洲熟女中文字幕在线| 蜜屁Av| 91精品无码久久久久久久| 香蕉久久国产AV一区二区| 亚洲欧洲无码一区夜| 美女天天干| 天天干,夜夜爽| 舔舔啊| 日韩免费看在线黄色片| 操香逼| 97超碰香蕉| 天美麻花大全视频| 久久久久深夜无码| 国产1769在线| 男人的天堂无码| 午夜精品久久久久久久久久蜜桃| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 超碰天天操| 少妇被c 黄 免费观看| 亚洲九九夜夜| 青青草大香蕉视频| 超碰99在线观看| 少好三P| 欧美日韩国产中文精品字幕自在自线| 日韩钢筋无码高清啾啾啾| 精品性爱| 麻豆久久久久久久久丝袜| 欧美人妻少妇| 99中出在线| 久久久一区二区三区四区五区| 激情综合五月| 青青在线视频免费| 婷婷综合视频| 黑人综合网| 欧美色图天堂在线| 亚洲精品97| 亚洲天堂另类美腿| 人人操人人干xxx| 天天综合网久久ww| 国产欧美精选激情视频| 激情人妻另类| 5278欧美一区二区三区| 亚洲情色视频| 日韩在线人妻网站| 国产精品一级特黄aaa大片在线观看| 国产噜噜噜噜噜久久久久久久久| 亚洲精品亚洲人成在线麻豆| 久久久555| 99热精品在线观看| 久久最新免费视频23| 亚洲天天更新| 人妻熟女一区二区三区在线| 黄色小视频日本txt| 大香蕉日韩欧美| 五月天婷婷小说| 婷婷午夜清品久久久久久久性色视频观| 蜜桃久久综合视频| 亚洲人成网站7777| 欧美 亚洲 另类 综合| 国产在线视视频有精品| 97在线视频免费看| 色爱综合网欧美| 无码精品久久久天天影视| 日本一久是| 思思热在线观看| 免费精品无码一级毛片牛牛影视 | 久久国产乱子伦精品免费女,网站| 内射日韩大臀美女| 精品视频免费在线一区| 成人小电影网站tex| 韩国轻伦国内自拍一区| 亚洲色图亚洲无码强奸乱伦| 91亚州| 99只有精品| AAA久久| 91视频伊人| 天天操天天日天天干| 日本三级韩国三级99| 国产高清精品一区二区三区毛片| 激情文学亚洲| 试看福利| 麻豆天美国美国产AV| 国产第12页| 90后后入| 操学生天天| 国产日比| 大香蕉www.超碰| 人妻少妇无码 | 91老熟妇| 香港久久久| 91久久久视| 超碰成人免费| 一本大道不卡一二三区| 欧美性91| 72av视频| 超碰在线成人电影| 熟女中出视频| 亚洲欧美精品一区天堂久久| 97欧美性爱| 精品欧美不卡在线播放| 欧美九九九| 天天色怡春院| 嗯嗯啊啊操死我| 九九色影院| 国产一区自拍欧美日韩| 试看日韩黄片| 91精品国产综合久久久蜜臀| 婷婷色在线| 亚洲少妇综合在线播放| 啪啪啪东京| 97日韩| 国产嫩草精品A88AV| 久久久久久久久久久999| 欧美日韩m| 强免费黄色网址| 3028国产精品| AAAAAAAAA黄片| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 亚洲色图自拍| 超碰 另类 欧美| 国产精品电影| 亚洲欧美日韩精品久久久一区二区| 国产午夜精品理论片一二三区区 | 夜夜嗨一区| 97频视在线| 丝袜喷水在线| 久九干| 精品久久久久久亚洲| 国产精品免费视频人成| 一区二区三区四区免费视频| 青椒国产97在线熟女| 亚洲国产精品无码AV久久久| 国产深夜福利| 黄页av| 天美传媒婬乱在| 日本不卡在线二区三区| 啊啊啊爽爽| 懂色Av一区二区三区| 欧美 亚洲精品首页| 久久久久久人体| 人妻夜爽夜夜爽| 后入式999| 九99久久| 综合熟妇一区二区三区| 亚洲 欧美 第一页| 97亚洲在线| 久久这里只| 日本一线产区和二线产区伦理片| 天天干人人乐| 一区二区影视| av激情亚洲五月天| 久久久精品91八戒| 亚洲一区二区性爱电影| 日本道久久综合色色| 亚洲欧洲网站免费观看| 激情久久久| 天美传媒国产原创中文字幕亚洲欧美另类 | 午夜精品久久久久久久99热影院| 亚洲熟女乱熟乱熟妇综合网二区| 日日橹狠狠爱欧美超碰| 亚洲精品97久久中文字幕| 亚洲一区中文字幕| 26UUU欧美日本| 无码久久国产| 少妇人妻好深太紧了vr91| 丰满岳乱妇一区二区三区| 久久久精品无码亚免费| 婷婷五月天丁香花| 大香蕉伊人在线成人AV在线观看| 天天综合网亚洲综合网| A级在线视频| 女人天堂AV五区在线| 1区2区3区中文字幕日韩| 天天干人妻| 密臀国产在线| 九九碰九九爱97超| 唐山老熟妇露脸啪啪叫| 亚州精品一区二区三区香中文字幕在线| 中文字幕大片三级狠狠干| 97天天弄| 青青草依人大香蕉| 国产丝袜欧美在线视频| 色综合尤物| 欧美激情总合网| 操b网站亚洲无码| 日韩综合97P| 久久东京热久久| 亚洲国产成人精品999| 99久久精品国产高潮| 亚州操操穴网| 国产超碰欧美| 中日韩免费看男女操逼大全| 午夜理论片在线观看免费| 天美国产精品| 亚洲色图自拍| 中国人高清www色视频免费| 台湾成人无码AV| 久久精品小视频| 884t在线| 97超碰9| 国产精品无套内谢| 国产熟女少妇一区| 蜜桃网熟妇| 日韩精品碰碰| 蜜桃久久久久久久| 欧美姓爱综合网| 91人妻精华帖| 久久这里都是精品| 啪啪啪男女亚洲中文字幕99| 国产AV久久野战精品| 97免费在线视频在线观看| 亚洲自拍青操视频| 日韩在线性爱免费视频| 一区中文字幕二区日韩| 蜜臀久久99精品久久久久久无删减| 粉嫩不卡一区二区性爱| 亚洲性猛交| 国产内射爽爽大片| 水野优香在线观看| 91插B网站| 国产Av超碰| 天天摸,夜夜摸| 男人的天堂日韩| 中文字幕一区二区日韩网| 久都青青视频| 91欧美色| 久久综合五月天| 国产麻豆一区二三区| 成人精品久久久午夜福利| 综合五月天| 9九九国产| 免费公开人人操| 99啪啪视频| 国产97亚洲| 色噜噜狠狠色综合日日| 国产自偷| 乱伦系列一区二区| 台湾佬中文娱乐网久久久久久久久久com | jk白丝没脱就开始啪啪| 欧美性区| 色欲av一区二区三区蜜芽| 99久久无码| 91色女| 精品黄色电影| 天天日日舔舔| 3PAV乱伦视频| 成人女人国产| 亚洲无码精品AV久久久| 久久只有精品一区二区三区| 岛国黄片网站| 97干色天堂| 综合av社区| 熟女欧美日韩综合婷婷| 91碰超| 99只有精品| 99久久久无码精品国产人| 色制服丝袜夫妻av一区| 日韩 欧美 视频 在线 一区| 亚洲人精品久久久| 婷婷五月天成人网| 日本不卡在线二区三区| 欧美专区第一页| 97综合网| 午夜福利区| 免费一级特黄特色大片在线观看看| 久久超碰av在线| 日韩不卡a级视频专区| 2020天天色综合| 久久XX| 人人妻人人爱人人玩| 久久久久久大| 两性色网| 韩日欧亚a级| 插入综合网| 26uuu成人影片| 九九国产| 日韩在线观看中文字幕视频| 人妻铁牛TV| 男人干美女| 国产精品久久久久久久毛片1| 久久久久久免费电影| 思思99热| 天天谢天天干| 99精品综合久久久久五月天| 亚洲 欧美 91| 日韩无码三级影院| 天天色综合影视网| 大香蕉AV丝袜| 久久毛卡| 黑人娇小av在线播放| 四虎免费看黄| 97五月天| 一区二区三区黄片免费观看| 青青草一区二区高清无码视频| 天堂资源欧美| 亚洲一区二区精品福利| 欧美一区二区男人天堂| 人妻素股| 97蜜桃综合| 国产操操日韩三级黄| 亚洲美女精品九九视频| 99只有精品| 亚洲人人操| 欧美的性爱网站免费| 狠狠色五月亚洲91| 色网在线| 少妇无码太爽| 睡产熟女乱伦| 国内偷自视频区视频综合| 78m啪啪啪| 妇人噜噜| 99热97| 午夜久久无码1000合集| 无码一区免费在线不卡| 97免费视频在线| 日韩欧美中文字| 骚货人妻偷情自拍在线视频| 2021久久国产综合精品青草| 大香蕉免费3| 亚州综| 欧美天堂第二区| 婷婷伊人一区| 五月婷婷影院| 精品一区二区人妖| 久草视频在线视频在线视频在线观看| 久久久久少妇| 日本欧美不卡| 色69大色97香蕉| 极品粉嫩少妇视频| 91九色丨国产丨爆乳| 超碰99在线观看| 色婷婷视频| 日韩字幕一区| 免费精品无码一级毛片牛牛影视| 欧综合网| 国产精品禁久久久精品| 国产一| 啊啊啊快操我视频| 久久久婷婷| 久久精彩视频9| 九九精品热| 日韩黄色一区二区三区| 精品一区二区成人| av无码av无码专区| 伊人丁香五月婷婷| 久久欲| 91被操| a级免费在线观看| 亚洲国产97| 欧洲精品二区| 国产日韩怡红院| 国产精品丝袜在线| 91性网| 欧美激情精品| 丝袜足交视频| 欧美97爱| 超碰欧美| 午夜福利1区2区3区| 日本熟女不卡视频| 日本色色视频网站| 精品国产丝袜一区二区三区乱码| 激情无码日韩| 亚洲成?V人片在线观看福利| 视频分类 国内精品| 乱伦熟女区| 五月丁香婷婷啪啪| www.激情| 日本免费一区二| 色999偷自拍拍| 亚州久久9| 老司机久久| 欧美与日韩97| 亚洲有薄码区久久在线一区| 精品人妻一区二区三区视频在线| 试看60秒 爽| 精品国模无码| 涩涩这里只有精品视频| 天天色播亚洲综合网站| 熟妇在线视频一区二区| 九九久久久久久爱| 大香蕉男人的天堂| 激情内射| 天天色欧美| 日韩偷拍一区二区三区| 国产毛片久久久久久久| 日韩性爱电影一区| 私色综合网| 粉嫩国产精品久久久| 中出后入| 国产999精品久久久| 性色亚洲| 国内毛片婷婷六月色| 免费看日产一区二区三区| 久久久久久亚洲精品不卡人乳| 夜夜高潮夜夜爽| 男人精品天堂一区| 精品国产乱码久久久| 欧美v日韩v亚洲v最新在线| 午夜一区二区三区国产| 99性视频| 自拍视频大全亚洲专媒视频/一区二区三区| 精品一国2| 极品少妇久久久| 欧美十八禁视频| 中文字幕av亚洲在线| 天天91~综合入口| 久久精品夜色国产亚洲AV| 青青草色AV| 92性色国产午夜福利在线661 | 手机在线人成免费视频| 欧美夜夜狠| 欧美天堂亚洲电影院一区在线播放| 中文字幕激情小说| AAAAAAAAA黄片| 欧美成人9797| 加勒比色综合| 一区二区三区免费视频入口| 国产成人精品日本亚洲语言| 婷婷情色五月天| 亚洲成成熟女人综合一区二区| 九九精品无码专区免费| 久久精品一区二区三区不卡| 97日视频| 亚州一区二区| 日韩亚洲Av人人夜夜澡人人爽| 91色噜噜狠狠| 久久精品超碰| 亚洲色图日韩精品| 双插在线| 亚洲天堂欧美| 大屁股xxxxx| 91丝袜在线视频| 国产h小视频在线观看免费| 大香蕉久操| 欧美亚洲国产日本在线,久久精品国产| 男人的午夜天堂| 人人操人人狠狠操| 亚洲黄a三级三级三级看三级| 日韩欧美日韩| 五月综合激情| 大香蕉日韩欧美| 最新三级网址| 午夜福利区| 试看日韩黄片| 在线观看一卡二卡| 青青草华人在线欧美在线| 免费观看网黄| 暖暖精品二区三区观看| 色妺妺AⅤ| 色色色色电影网| 亚州高清色综合| 中文字幕黄片在线| 国产久久久9999| 欧美中日韩XXXX| 性爱乱伦一区| 少妇丝袜在线观看AV| 欧美熟妇色| 久久久夜夜嗨免费视频| wuyechaopeng| 亚洲图片欧洲图片aⅴ| 看黑丝美女操逼青青网站| 操东北女人| 啪啪91| 大香蕉淫人网| 91狠| 免费试看60秒| 欧美一级三级| 亚洲色图欧美激情| 女人天堂AV五区在线| 女生91网站| 久久九九综合| 亚州性9| 好吊色在线观看| 粉嫩av一区二区三区天美传媒| 91五月天| 97免费在线视频| 色噜噜狠狠色综无码久久合欧美| 中文字幕AV中出| 一二三四免费视频| 超碰97欧美| 激情四射婷婷四五月天| 欧美色www亚洲国产阿娇要播| 白丝1区2区3区| 成人久久久| 青青草自拍视频在线播放| 国产亚洲精品一区二区三区| 久久婷婷在线观看视频| 国产真乱mangent| 人妻在线大香蕉| 国产不卡免费在线视频| 97精品在线| 亚洲AV永久无码一区仙野| 色路综合| 亚州色交| 狠狠久久手机视频精品| 熟女一区二区三区| 午夜福利精品| 国内精品99999| 麻豆天美久久91| 日韩欧美午夜一区二区| 色男人色天堂东京热| 激情接吻视频久久久久久| AV有码在线| 丁香五月AV| 精品人妻一区二区三区四区石在线 | 亚洲国产综合图区中文字幕| 人妻精品一区二区全免费| 黄色在线网站| 国产熟码AV| 96AV精品| 国产AV毛片| 伊人aaa| 激情五月综合网| 91美女在线精品视频| 天天激情综合站| 亚洲AV在线资源| 亚洲天堂区| 欧美日日操| 国产av色网| 亚洲国产一区二区三区在线 | 无码聚合| 日韩精品午夜操呦呦不卡影院| 台湾肥佬网一区二区三区| 亚洲 欧美日韩 另类| 欧美在线|亚洲| 久九九九九九九热| 日韩三级天堂在线观看| 国产精品懂色tv影视免费观看| 亚洲色图国产另类| 一区二区你上我| 中文字幕91页| 九久久九九久视频| 国产小炒后入式| 天天综合~91入口| 亚洲日韩美国人妻| 亚洲人天堂| 长久操视频| 欧美专利1区2区3区4区5区免费| 热无码中文亚洲H一道本一区二区| 婷婷人妻激情| 色网在线| 欧美中文字幕男人天堂久久精品 | 中文字幕一区二区三区视频播放| 人人看人人插| 大色综合| 热99这里有精品综合久久 | 99热色这里只有精品| 久久久久国产精品喷潮免费观看臀| 黄色工厂这里只有精品| 一区二区视频你懂的| 97亚洲性爱| 久久直播国产| 呦呦影院| 国产精品福利视频| 欧美日韩色| 乱子伦一区二区三区国产精品| 77777亚洲蜜臀精品久久综合蜜臀| 免费看日本操逼视频| 色97干| 熟女91网| 欧美性综合| 91色黑人少妇| 丁香五月偷拍| 亚洲Av无码成人精品国产| 干日本人少妇午夜寂寞影院| 99视频这有这里有精品| site:sinbotex.com| 中文字幕乱码在线观看| 性高潮久久久久久久久久久| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 神马精品视频| 人妻丝袜无 码视频专区| 人人插人人搞人人操| 亚洲第一精品在线视频| 欧美日韩性爱电影在线| 国产一区二区三三视频| 欧美亚洲国产91在线| 99无码| 欧美亚洲| 欧美性xxxxx狂欢| 91观看 国产白丝| 天天综合91入口| 亚洲日韩97| 免费男人的天堂| AV中文字幕剧情1区2区3| 骚女高跟AV在线| 久久亚码| 极品AV网站在线观看| 热久日综合| 操死我了嗯嗯嗯| 日韩噜噜69| 91爱综合| 色噜噜综合在线| 2001天天操| 97视频网站在线观看| 五月色网| 920日本午夜免费| 成年女人一区| 第二页中文字幕| 亚洲人在线成线成人| 色情亚洲日本成人| 久久久久久久久久久久久久久久9 亚洲成人妻日韩在线 | 97精品综合| 开心五月天激情网| 97人妻色| 青青草视频在线观看一区二区| 欧美日韩国第一区| 91成人国产综合久久精品蜜月| 亚洲天堂日本| 欧美在线啊啊啊| 久久精品99久久久久久| 亚洲97网站| 欧美日韩狠狠爱| 性爱av网站| 久久草草欧美精品| 激情终合网| 亚洲精品白丝| 在线电影亚洲色图| 久久久夜夜夜| 国产亚洲99久久精品熟| 丰满岳乱妇一区二区三区| 浪人综合网| 九九香蕉网| xxx亚洲午夜天堂| 久久同城AV| 一二视频神马久久传媒| 男人综合网| 无码区蜜乳| 99久久精品国产高潮| 99爱精品| 天天α片| 亚洲中文字幕久久无码精品| 搡老女人老91妇女老熟女| 新亚洲无码| 日韩av影片在线观看| 久久大香蕉手机高清视频| 97日视频| 欧美少妇高潮视频| 岛国1区2区3区在线观看| 黄片www.| 色999偷自拍拍| 伊人亚洲综合| 日韩欧美加勒比| 美女一区二区国产精品| 亚洲天堂人妻一区二区| 91激情网| 色综合天天爱去电影网| 日韩在线一区二区| 超碰三级秋霞| 情色五月天网| 999综合网| 老司机老司机午夜影院| 日韩AV电影网站| 亚洲精品 欧美精品| 美女诱惑一区| 久久东京国产精品视频| 精品国产72| 91狠狠狠| 国产成年精品高清在线观看91| 成功精品影院| 日韩精品电影| 97天天| 九九无码视频| av72网| 中文字幕丰满人妻日本| 国产做?爰片久久毛片?片美国| 欧美九九爱| 欧美九九九| 亚洲无码一二三区| 国产精品午夜成人福利| 农村少妇久久久久久久| 午夜久久无码1000合集| 欧美激情欧美精品| 9Ⅰ老熟女| 黄页视频网站野外| 懂色AV中文| 91美女网站| www.色五月| 不卡一区视频| 免费视频在线一区二区不卡| 久超碰在| 日本在线伊人啪啪| 岛国片在线视频网站| 欧美日韩国产中文超碰| 国产日韩怡红院| 日本三级R| 97干综合网| 熟女激情综合网| 久九九九九九九热| 日日摸天天爽夜夜欢| 91操人视频| 国产麻豆一区二三区| 日韩性爱1级片视频| 精品无码一二三四区| 亚洲一区日韩精品中文字幕| 999岛国大片| 啊啊啊啊啊啊啊在线| 综合操逼| 激情小说亚洲图片| av在线不卡一区二区三区| 国产性感在线观看| 国产精品麻豆成人av| 欧美美女在线高潮999| 三上悠亚在线毛片91| 欧美亚州手机在线| 超碰美国| 国产av高清版| 91色综合| 久久99亚洲精品久久99果| 欧美性五月| 色五月丁香五月| 99精品九九九九九九| 久久五月婷| 亚洲图片 欧美电影| 久久婷婷五月综合| 99re视频这里只有精品| 国模限制级电影| 五月天AV资源| 九九黄色网| 99re久久| 东京太热久久久| 精品视频在线观看精品| 久操B网| 1769一区| 青青草手机在线免费观看| 日本免费一级AAA大片器 | 色综合91好| 黑操B| 国产辣妈在线视频福利| 红桃视频高潮| 五月婷婷六月丁香网址| WWW美腿丝袜香蕉中文| 黄片不用下载在线观看| 日韩欧美中文字亚洲慕| 五月天综合网| 超碰成人人人爽人人爽| 国产精品欧美激在线| 日韩一性一交一A片俄罗斯 | 啊啊啊水好多| 久久久草成人网站久久久草成人久久久草久久久| 国产福利合集| 亚洲人在线成线成人| 丰满岳乱妇一区二区三区| 久久中文字幕女同性恋一区| 狠狠狠狠狠狠| 人人模人人看| 婷婷香网站| 熟女视频久久| 丝袜亚洲综合| 天天内射| 午夜一区| 99夜夜操| 自拍视频大全亚洲专媒视频/一区二区三区| h无码动漫在线观看| 精品久久97观看在线视频| 韩日精品四区| 精品人妻一区二区三区四区石在线| 伦理弟一页| 在线黄页看毛片| 1769国内精品视频| 狠狠操狠狠燥| 日韩国语字幕| 日本熟女中文字幕一区| 精品人妻一区二区三区视频在线| 亚洲综合影视| 国产中文精品一区二区在线观看| 伊人九九九| 今日头条成人一区二区三区四虎精品| 色狠狠色| 国产精品久久久无码aV去| 亚洲欧洲无码一区夜| 开心激情站| 久久av一级av少妇av高潮| 日本不卡在线二区三区| 日日摸日日碰| 天天日少妇逼AV| 一起草日韩| 色99999| 影音资源男人日韩| 亚洲黄色影视| A级毛片在线看免费| 亚州欧美另类| 久久久久元码视频| 亚洲人成色9999精品久久 | 伊人久久国产免费观看视频| 欧美v亚洲v日韩v最新在线二区| 欧美日韩啪啪电影| 妇女乱色二区| 欧美后入视频| 欧美天天插| 26uuu国产免费观看| 国产精品麻豆成人av| 免费男人的天堂| 超碰人妻中文在线| 久jiu久神马影院| 欧美黄色片AAAAA| 岛国毛片在线观看免费| 久久啊啊啊| 97天天插| 欧美韩国你懂得在线 | 亚洲男人天堂网站| 激情视频一二三| 欧美色三级片91| 人人扣人人操| 日韩人妻播放| 免费视频在线一区二区不卡| 久久久久久久久久9| 欧美性生活内射| 成人久久无码www| 亚洲AV无码天美传媒一区| 五月丁香啪啪网| 欧美人妻久久精品二区三区| 亚洲精品国产精品成人| 91丝袜| 日韩射图| AV男人天堂网| 99国内熟女露脸视频| 美女主播色欲91抠b在线播放| 欧美日不卡| www.色婷婷| 成年女人18级毛片毛片免费观看| 日本视频在线观看污污污| 日韩精品碰碰| a男人的天堂久久一级A毛片| 免费观看成人www精品视频| 火箭成精品视频884必出精品| 伊人网高清| 91中文字幕制服丝袜免费视频| 97在线/亚洲| 超碰午夜| 九九九九九九九九九九九九九九九女| 欧美日韩理论一区| 麻豆乱码久久精| 后入人妻一区| 97精品综合久久| 久99热| 大香交伊人网| 日本三级韩国三级99| 天天综合91在线| 一道本久久棕合爱| 99久久99久久综合| 天天爽天天| 欧美日韩性感| 97日本超碰综合| 精品免费一区二区三区在线亚洲人成| 国产69精品久久久久99尤物| 中文字幕交换人妻| 欧美成人一级免费电影| 国产一区二区三区影片| 十八禁啪啦拍视频无遮挡| 亚洲综合激情五月久久| 成人国产精品三级A片| 九九色色| 亚洲天堂另类美腿| 96免费视频在线| 亚热日本熟女| 免费国产| 熟女露脸激情自拍视频| 操人妻逼91| 性爱视频啪啪啪啪| 日本色日夜干| 日韩天天本| 亚洲AV资源| 国产亚州高清国产拍精| yw尤物av无码点击进入麻豆| 日韩日韩日韩-国产乱码精品一区二区| 操操碰| 人人操人人插人人摸人人干| 成人性交午夜免费片| 嫩草91| 精品乱子一区二区三区99| 久久亚洲不卡| 日韩性爱小视频在线观看| 婷婷性网| 国产97综合| 超碰综合97在线| 免费看污网址| 天天综合~91入口| 第一高清av中文字幕| 国产真实野战在线视频| 成人性交免费视频| 99在线精品观看视频中文| 操曰本熟女| www.AV有限公司一区| 免費人妻夜夜爽天天爽爽一区| 久久五月份| 四虎AV无码| 亚洲美女色图| 秋霞福利网| 亚洲欧美不卡线| 黄色片一区二区三区四区五区| 盗摄女人妻在线| 婷婷亚洲天堂| 有码人妻系列| 麻豆人妻偷人精品无码视频| 蜜臀99久| 精品人妻一二三| 93人人操人人| 丁香六月啪| 欧美熟女少妇| 日日夜夜噜| 97免费视频在线| 影音先锋少妇| av九九| 久久久网一区| 欧美日韩久久精品爱爱| 亚洲字幕一区二区| 日韩性爱网址| aⅴ日韩成人电影av在线免费看av大全 | 午夜精品久久久久久久99热影院| 97超视频在线观看| 亚洲蜜臀精品视频久久| 偷拍 欧美 日韩| 午夜福利视频在线一区| 亚洲不卡AV在线| 亚洲91综合| 国产精品com| 国产一区在线免费播放| 欧美有码亚洲中文字幕一区二区三区四区| 91国内外在线| 国产日韩欧美操逼视频| 丁香五月激情综合国产| 性色av一区二区| 91视频精品| 丁香五月激情网| 美女干逼2| 久久久久久久强迫| 不卡免费av在线播放| 成熟熟女国产精品一区二区| 香港澳门日本三级网站| 香蕉综合网| 日本黄页视频在线观看| 翔田千里AⅤHD无码| 麻豆区99999| 久久大| 色婷婷综合网| 蜜臀99久久国产| 免费观看啪视频| 中文精品少妇天堂| 操逼天美3区| 性欧美体内射精| 老熟妇乱轮| 嗯~啊~快点 死我视频| 超碰在线一区| 国产精品麻豆成人AV艾秋| 久久久青青草| 一区二区三区四区色图| 97精品久久| 天美国产三级传媒|