From 4aa20b3ef5fff53cf9c7073cfa5e29acd6a08e22 Mon Sep 17 00:00:00 2001 From: 46135621 <87229030+46135621@users.noreply.github.com> Date: Thu, 20 Apr 2023 00:00:16 +0800 Subject: [PATCH 1/5] =?UTF-8?q?Update=204.2=E6=9C=BA=E5=99=A8=E5=AD=A6?= =?UTF-8?q?=E4=B9=A0=EF=BC=88AI=EF=BC=89=E5=BF=AB=E9=80=9F=E5=85=A5?= =?UTF-8?q?=E9=97=A8=EF=BC=88quick=20start=EF=BC=89.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...¹ ï¼ˆAI)快速入门(quick start).md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/4.人工智能/4.2机器学习(AI)快速入门(quick start).md b/4.人工智能/4.2机器学习(AI)快速入门(quick start).md index ea935c9..5376fd1 100644 --- a/4.人工智能/4.2机器学习(AI)快速入门(quick start).md +++ b/4.人工智能/4.2机器学习(AI)快速入门(quick start).md @@ -84,19 +84,19 @@ ```python def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): - price = 0 # In my area, the average house costs $200 per sqft + price = 0 # In my area, the average house costs $200 per sqft price_per_sqft = 200 if neighborhood == "hipsterton": - # but some areas cost a bit more + # but some areas cost a bit more price_per_sqft = 400 elif neighborhood == "skid row": - # and some areas cost less - price_per_sqft = 100 # start with a base price estimate based on how big the place is - price = price_per_sqft * sqft # now adjust our estimate based on the number of bedrooms + # and some areas cost less + price_per_sqft = 100 # start with a base price estimate based on how big the place is + price = price_per_sqft * sqft # now adjust our estimate based on the number of bedrooms if num_of_bedrooms == 0: - # Studio apartments are cheap + # Studio apartments are cheap price = price — 20000 else: - # places with more bedrooms are usually - # more valuable + # places with more bedrooms are usually + # more valuable price = price + (num_of_bedrooms * 1000) return price ``` @@ -212,9 +212,9 @@ def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): ```python def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): price = 0# a little pinch of this - price += num_of_bedrooms * 0.123# and a big pinch of that - price += sqft * 0.41# maybe a handful of this - price += neighborhood * 0.57 + price += num_of_bedrooms * 0.123# and a big pinch of that + price += sqft * 0.41# maybe a handful of this + price += neighborhood * 0.57 return price ``` @@ -328,10 +328,10 @@ print('y_pred=',y_test.data) 请注æ„,我们的神ç»ç½‘络现在有了两个输出(而ä¸ä»…仅是一个房å­çš„价格)。第一个输出会预测图片是「8ã€çš„æ¦‚çŽ‡ï¼Œè€Œç¬¬äºŒä¸ªåˆ™è¾“å‡ºä¸æ˜¯ã€Œ8ã€çš„æ¦‚率。概括地说,我们就å¯ä»¥ä¾é å¤šç§ä¸åŒçš„输出,利用神ç»ç½‘络把è¦è¯†åˆ«çš„物å“进行分组。 ```python -model = Sequential([Dense(32, input_shape=(784,)), - Activation('relu'),Dense(10),Activation('softmax')])# 你也å¯ä»¥é€šè¿‡ .add() 方法简å•地添加层: model = Sequential() - model.add(Dense(32, input_dim=784)) - model.add(Activation('relu'))# 激活函数,你å¯ä»¥ç†è§£ä¸ºåŠ ä¸Šè¿™ä¸ªä¸œè¥¿å¯ä»¥è®©ä»–效果更好 +model = Sequential([Dense(32, input_shape=(784,)), + Activation('relu'),Dense(10),Activation('softmax')])# 你也å¯ä»¥é€šè¿‡ .add() 方法简å•地添加层: model = Sequential() + model.add(Dense(32, input_dim=784)) + model.add(Activation('relu'))# 激活函数,你å¯ä»¥ç†è§£ä¸ºåŠ ä¸Šè¿™ä¸ªä¸œè¥¿å¯ä»¥è®©ä»–效果更好 ``` 虽然我们的神ç»ç½‘ç»œè¦æ¯”上次大得多(这次有 324 ä¸ªè¾“å…¥ï¼Œä¸Šæ¬¡åªæœ‰ 3 个ï¼ï¼‰ï¼Œä½†æ˜¯çŽ°åœ¨çš„è®¡ç®—æœºä¸€çœ¨çœ¼çš„åŠŸå¤«å°±èƒ½å¤Ÿå¯¹è¿™å‡ ç™¾ä¸ªèŠ‚ç‚¹è¿›è¡Œè¿ç®—。当然,你的手机也å¯ä»¥åšåˆ°ã€‚ From 5d962c0d4d36ced1ba32e33cd2e28c8bccb06ea7 Mon Sep 17 00:00:00 2001 From: 46135621 <985579956@qq.com> Date: Thu, 20 Apr 2023 00:49:48 +0800 Subject: [PATCH 2/5] fix --- 4.人工智能/4.3.1æœç´¢.md | 297 ++++++++-------------------------- 1 file changed, 69 insertions(+), 228 deletions(-) diff --git a/4.人工智能/4.3.1æœç´¢.md b/4.人工智能/4.3.1æœç´¢.md index bd4e1e1..775d015 100644 --- a/4.人工智能/4.3.1æœç´¢.md +++ b/4.人工智能/4.3.1æœç´¢.md @@ -47,16 +47,8 @@ - 动作(Action) - 一个状æ€å¯ä»¥åšå‡ºçš„选择。更确切地说,动作å¯ä»¥å®šä¹‰ä¸ºä¸€ä¸ªå‡½æ•°ã€‚å½“æŽ¥æ”¶åˆ°çŠ¶æ€ - $$ - s$$作为输入时, - $$ - - Actions(s) - $$ - 将返回å¯åœ¨çŠ¶æ€ - $$ - - s$$ 中执行的一组æ“作作为输出。 + + $s$作为输入时,$Actions(s)$将返回å¯åœ¨çжæ€$s$ 中执行的一组æ“作作为输出。 - 例如,在一个数字åŽå®¹é“中,给定状æ€çš„æ“ä½œæ˜¯æ‚¨å¯ä»¥åœ¨å½“å‰é…置中滑动方å—的方å¼ã€‚ ![](static/MpgrbCjtDo1NlLxVyL1cMH6FnAg.png) @@ -65,45 +57,15 @@ - 对在任何状æ€ä¸‹æ‰§è¡Œä»»ä½•适用æ“作所产生的状æ€çš„æè¿°ã€‚ - 更确切地说,过渡模型å¯ä»¥å®šä¹‰ä¸ºä¸€ä¸ªå‡½æ•°ã€‚ - - åœ¨æŽ¥æ”¶åˆ°çŠ¶æ€ - $$ - s$$和动作 - $$ - - a - $$ - 作为输入时, - $$ - - Results(s,a) - $$ - è¿”å›žåœ¨çŠ¶æ€ - $$ - - s - $$ - 中执行动作 - $$ - - a$$ 所产生的状æ€ã€‚ - - 例如,给定数字åŽå®¹é“的特定é…ç½®ï¼ˆçŠ¶æ€ - $$ - s$$),在任何方å‘上移动正方形(动作 - $$ - - a$$)将导致谜题的新é…置(新状æ€ï¼‰ã€‚ + - 在接收到状æ€$s$和动作$a$作为输入时,$Results(s,a)$返回在状æ€$s$中执行动作$a$ 所产生的状æ€ã€‚ + - 例如,给定数字åŽå®¹é“的特定é…置(状æ€$s$),在任何方å‘上移动正方形(动作$a$)将导致谜题的新é…置(新状æ€ï¼‰ã€‚ ![](static/RKV2buJoroCV6SxiMUuct3dbnPU.png) - 状æ€ç©ºé—´(State Space) - 通过一系列的æ“作目标从åˆå§‹çжæ€å¯è¾¾åˆ°çš„æ‰€æœ‰çжæ€çš„集åˆã€‚ - - 例如,在一个数字åŽå®¹é“谜题中,状æ€ç©ºé—´ç”±æ‰€æœ‰ - $$ - \frac{16!}{2} - $$ - - ç§é…置,å¯ä»¥ä»Žä»»ä½•åˆå§‹çжæ€è¾¾åˆ°ã€‚状æ€ç©ºé—´å¯ä»¥å¯è§†åŒ–为有å‘图,其中状æ€è¡¨ç¤ºä¸ºèŠ‚ç‚¹ï¼ŒåŠ¨ä½œè¡¨ç¤ºä¸ºèŠ‚ç‚¹ä¹‹é—´çš„ç®­å¤´ã€‚ + - 例如,在一个数字åŽå®¹é“谜题中,状æ€ç©ºé—´ç”±æ‰€æœ‰$\frac{16!}{2}$ç§é…置,å¯ä»¥ä»Žä»»ä½•åˆå§‹çжæ€è¾¾åˆ°ã€‚状æ€ç©ºé—´å¯ä»¥å¯è§†åŒ–为有å‘图,其中状æ€è¡¨ç¤ºä¸ºèŠ‚ç‚¹ï¼ŒåŠ¨ä½œè¡¨ç¤ºä¸ºèŠ‚ç‚¹ä¹‹é—´çš„ç®­å¤´ã€‚ ![](static/JdCqb2UI9ooWmdxk258cTIIznab.png) @@ -130,11 +92,11 @@ - 从åˆå§‹çжæ€åˆ°è¯¥èŠ‚ç‚¹çš„è·¯å¾„æˆæœ¬â€”—path cost - 节点包å«çš„ä¿¡æ¯ä½¿å®ƒä»¬å¯¹äºŽæœç´¢ç®—法éžå¸¸æœ‰ç”¨ã€‚ -它们包å«ä¸€ä¸ªçжæ€ï¼Œå¯ä»¥ä½¿ç”¨ç›®æ ‡æµ‹è¯•æ¥æ£€æŸ¥è¯¥çŠ¶æ€æ˜¯å¦ä¸ºæœ€ç»ˆçжæ€ã€‚ + 它们包å«ä¸€ä¸ªçжæ€ï¼Œå¯ä»¥ä½¿ç”¨ç›®æ ‡æµ‹è¯•æ¥æ£€æŸ¥è¯¥çŠ¶æ€æ˜¯å¦ä¸ºæœ€ç»ˆçжæ€ã€‚ -如果是,则å¯ä»¥å°†èŠ‚ç‚¹çš„è·¯å¾„æˆæœ¬ä¸Žå…¶ä»–节点的路径代价进行比较,从而å¯ä»¥é€‰æ‹©æœ€ä½³è§£å†³æ–¹æ¡ˆã€‚ + 如果是,则å¯ä»¥å°†èŠ‚ç‚¹çš„è·¯å¾„æˆæœ¬ä¸Žå…¶ä»–节点的路径代价进行比较,从而å¯ä»¥é€‰æ‹©æœ€ä½³è§£å†³æ–¹æ¡ˆã€‚ -一旦选择了节点,通过存储父节点和从父节点到当å‰èŠ‚ç‚¹çš„åŠ¨ä½œï¼Œå°±å¯ä»¥è¿½æº¯ä»Žåˆå§‹çжæ€åˆ°è¯¥èŠ‚ç‚¹çš„æ¯ä¸€æ­¥ï¼Œè€Œè¿™ä¸€ç³»åˆ—动作就是解决方案。 + 一旦选择了节点,通过存储父节点和从父节点到当å‰èŠ‚ç‚¹çš„åŠ¨ä½œï¼Œå°±å¯ä»¥è¿½æº¯ä»Žåˆå§‹çжæ€åˆ°è¯¥èŠ‚ç‚¹çš„æ¯ä¸€æ­¥ï¼Œè€Œè¿™ä¸€ç³»åˆ—动作就是解决方案。 - ç„¶è€Œï¼ŒèŠ‚ç‚¹åªæ˜¯ä¸€ä¸ªæ•°æ®ç»“æž„â€”â€”å®ƒä»¬ä¸æœç´¢ï¼Œè€Œæ˜¯ä¿å­˜ä¿¡æ¯ã€‚为了实际æœç´¢ï¼Œæˆ‘们使用了边域(frontier),å³â€œç®¡ç†â€èŠ‚ç‚¹çš„æœºåˆ¶ã€‚è¾¹åŸŸé¦–å…ˆåŒ…å«ä¸€ä¸ªåˆå§‹çжæ€å’Œä¸€ç»„空的已探索项目(探索集),然åŽé‡å¤ä»¥ä¸‹æ“作,直到找到解决方案: @@ -158,9 +120,9 @@ 边域从节点 A åˆå§‹åŒ–开始 -1. å–出边域中的节点 A,展开节点 A,将节点 B 添加到边域。 -2. å–出节点 B,展开,添加...... -3. åˆ°è¾¾ç›®æ ‡èŠ‚ç‚¹ï¼Œåœæ­¢ï¼Œè¿”回解决方案 +a. å–出边域中的节点 A,展开节点 A,将节点 B 添加到边域。 +b. å–出节点 B,展开,添加...... +c. åˆ°è¾¾ç›®æ ‡èŠ‚ç‚¹ï¼Œåœæ­¢ï¼Œè¿”回解决方案 ![](static/XmnObIGaUoF4ssxkgzUc4vTUnmf.png) @@ -191,7 +153,7 @@ ![](static/M2vZbA5hpoT9RExuAGwcBHF1nmh.png) -- 代ç å®žçް + - 代ç å®žçް ```python def remove(self): @@ -223,7 +185,7 @@ def remove(self): ![](static/PQeZbJv3Bom6NYxa6lccT084nFn.png) -- 代ç å®žçް + - 代ç å®žçް ```python def remove(self): @@ -240,37 +202,25 @@ def remove(self): - 广度优先和深度优先都是ä¸çŸ¥æƒ…çš„æœç´¢ç®—法。也就是说,这些算法没有利用他们没有通过自己的探索获得的关于问题的任何知识。然而,大多数情况下,关于这个问题的一些知识实际上是å¯ç”¨çš„ã€‚ä¾‹å¦‚ï¼Œå½“äººç±»è¿›å…¥ä¸€ä¸ªè·¯å£æ—¶ï¼Œäººç±»å¯ä»¥çœ‹åˆ°å“ªæ¡è·¯æ²¿ç€è§£å†³æ–¹æ¡ˆçš„大致方å‘å‰è¿›ï¼Œå“ªæ¡è·¯æ²¡æœ‰ã€‚人工智能也å¯ä»¥è¿™æ ·åšã€‚一ç§è€ƒè™‘é¢å¤–知识以试图æé«˜æ€§èƒ½çš„算法被称为知情æœç´¢ç®—法。 - 贪婪最佳优先æœç´¢(Greedy Best-First Search) - - 贪婪最佳优先æœç´¢æ‰©å±•最接近目标的节点,如å¯å‘å¼å‡½æ•° - $$ - h(n) - $$ - - æ‰€ç¡®å®šçš„ã€‚é¡¾åæ€ä¹‰ï¼Œè¯¥å‡½æ•°ä¼°è®¡ä¸‹ä¸€ä¸ªèŠ‚ç‚¹ç¦»ç›®æ ‡æœ‰å¤šè¿‘ï¼Œä½†å¯èƒ½ä¼šå‡ºé”™ã€‚贪婪最佳优先算法的效率å–决于å¯å‘å¼å‡½æ•°çš„好å。例如,在迷宫中,算法å¯ä»¥ä½¿ç”¨å¯å‘å¼å‡½æ•°ï¼Œè¯¥å‡½æ•°ä¾èµ–于å¯èƒ½èŠ‚ç‚¹å’Œè¿·å®«æœ«ç«¯ä¹‹é—´çš„æ›¼å“ˆé¡¿è·ç¦»ã€‚曼哈顿è·ç¦»å¿½ç•¥äº†å¢™å£ï¼Œå¹¶è®¡ç®—了从一个ä½ç½®åˆ°ç›®æ ‡ä½ç½®éœ€è¦å‘上ã€å‘下或å‘两侧走多少步。这是一个简å•的估计,å¯ä»¥åŸºäºŽå½“å‰ä½ç½®å’Œç›®æ ‡ä½ç½®çš„ - $$ - (x,y) - $$ - - åæ ‡å¯¼å‡ºã€‚ + - 贪婪最佳优先æœç´¢æ‰©å±•最接近目标的节点,如å¯å‘å¼å‡½æ•°$h(n)$æ‰€ç¡®å®šçš„ã€‚é¡¾åæ€ä¹‰ï¼Œè¯¥å‡½æ•°ä¼°è®¡ä¸‹ä¸€ä¸ªèŠ‚ç‚¹ç¦»ç›®æ ‡æœ‰å¤šè¿‘ï¼Œä½†å¯èƒ½ä¼šå‡ºé”™ã€‚贪婪最佳优先算法的效率å–决于å¯å‘å¼å‡½æ•°çš„好å。例如,在迷宫中,算法å¯ä»¥ä½¿ç”¨å¯å‘å¼å‡½æ•°ï¼Œè¯¥å‡½æ•°ä¾èµ–于å¯èƒ½èŠ‚ç‚¹å’Œè¿·å®«æœ«ç«¯ä¹‹é—´çš„æ›¼å“ˆé¡¿è·ç¦»ã€‚曼哈顿è·ç¦»å¿½ç•¥äº†å¢™å£ï¼Œå¹¶è®¡ç®—了从一个ä½ç½®åˆ°ç›®æ ‡ä½ç½®éœ€è¦å‘上ã€å‘下或å‘两侧走多少步。这是一个简å•的估计,å¯ä»¥åŸºäºŽå½“å‰ä½ç½®å’Œç›®æ ‡ä½ç½®çš„$(x,y)$åæ ‡å¯¼å‡ºã€‚ ![](static/Pe3WbBuTjomWjfxd5Ryc3OPPnSd.png) -- 然而,é‡è¦çš„æ˜¯è¦å¼ºè°ƒï¼Œä¸Žä»»ä½•å¯å‘å¼ç®—法一样,它å¯èƒ½ä¼šå‡ºé”™ï¼Œå¹¶å¯¼è‡´ç®—法走上比其他情况下更慢的é“路。ä¸çŸ¥æƒ…çš„æœç´¢ç®—法有å¯èƒ½æ›´å¿«åœ°æä¾›ä¸€ä¸ªæ›´å¥½çš„解决方案,但它比知情算法更ä¸å¯èƒ½è¿™æ ·ã€‚ + - 然而,é‡è¦çš„æ˜¯è¦å¼ºè°ƒï¼Œä¸Žä»»ä½•å¯å‘å¼ç®—法一样,它å¯èƒ½ä¼šå‡ºé”™ï¼Œå¹¶å¯¼è‡´ç®—法走上比其他情况下更慢的é“路。ä¸çŸ¥æƒ…çš„æœç´¢ç®—法有å¯èƒ½æ›´å¿«åœ°æä¾›ä¸€ä¸ªæ›´å¥½çš„解决方案,但它比知情算法更ä¸å¯èƒ½è¿™æ ·ã€‚ ![](static/HkvdbcEdmo6RtjxOqqic31XFnSh.png) ![](static/SU2DbQeN2oxs5ex3K3NcMaJfnch.png) -- $$ - A^*$$æœç´¢ - - - 作为贪婪最佳优先算法的一ç§å‘展,$$A^*$$æœç´¢ä¸ä»…考虑了从当å‰ä½ç½®åˆ°ç›®æ ‡çš„ä¼°è®¡æˆæœ¬$$h(n)$$,还考虑了直到当å‰ä½ç½®ä¸ºæ­¢ç´¯ç§¯çš„æˆæœ¬$$g(n)$$。通过组åˆè¿™ä¸¤ä¸ªå€¼ï¼Œè¯¥ç®—法å¯ä»¥æ›´å‡†ç¡®åœ°ç¡®å®šè§£å†³æ–¹æ¡ˆçš„æˆæœ¬å¹¶åœ¨æ—…é€”ä¸­ä¼˜åŒ–å…¶é€‰æ‹©ã€‚è¯¥ç®—æ³•è·Ÿè¸ªï¼ˆåˆ°ç›®å‰ä¸ºæ­¢çš„è·¯å¾„æˆæœ¬+åˆ°ç›®æ ‡çš„ä¼°è®¡æˆæœ¬,$$g(n)+h(n)$$ï¼‰ï¼Œä¸€æ—¦å®ƒè¶…è¿‡äº†ä¹‹å‰æŸä¸ªé€‰é¡¹çš„ä¼°è®¡æˆæœ¬ï¼Œè¯¥ç®—法将放弃当å‰è·¯å¾„并返回到之å‰çš„选项,从而防止自己沿ç€$$h(n)$$错误地标记为最佳的å´é•¿è€Œä½Žæ•ˆçš„路径å‰è¿›ã€‚ - - - 然而,由于这ç§ç®—法也ä¾èµ–于å¯å‘å¼ï¼Œæ‰€ä»¥å®ƒä¾èµ–它所使用的å¯å‘å¼ã€‚在æŸäº›æƒ…况下,它å¯èƒ½æ¯”贪婪的最佳第一æœç´¢ç”šè‡³ä¸çŸ¥æƒ…的算法效率更低。对于最佳的$$A^*$$æœç´¢ï¼Œå¯å‘å¼å‡½æ•°$$h(n)$$应该: - +- $A^*$æœç´¢ + + - 作为贪婪最佳优先算法的一ç§å‘展,$A^*$æœç´¢ä¸ä»…考虑了从当å‰ä½ç½®åˆ°ç›®æ ‡çš„ä¼°è®¡æˆæœ¬$h(n)$,还考虑了直到当å‰ä½ç½®ä¸ºæ­¢ç´¯ç§¯çš„æˆæœ¬$g(n)$。通过组åˆè¿™ä¸¤ä¸ªå€¼ï¼Œè¯¥ç®—法å¯ä»¥æ›´å‡†ç¡®åœ°ç¡®å®šè§£å†³æ–¹æ¡ˆçš„æˆæœ¬å¹¶åœ¨æ—…é€”ä¸­ä¼˜åŒ–å…¶é€‰æ‹©ã€‚è¯¥ç®—æ³•è·Ÿè¸ªï¼ˆåˆ°ç›®å‰ä¸ºæ­¢çš„è·¯å¾„æˆæœ¬+åˆ°ç›®æ ‡çš„ä¼°è®¡æˆæœ¬,$g(n)+h(n)$ï¼‰ï¼Œä¸€æ—¦å®ƒè¶…è¿‡äº†ä¹‹å‰æŸä¸ªé€‰é¡¹çš„ä¼°è®¡æˆæœ¬ï¼Œè¯¥ç®—法将放弃当å‰è·¯å¾„并返回到之å‰çš„选项,从而防止自己沿ç€$h(n)$错误地标记为最佳的å´é•¿è€Œä½Žæ•ˆçš„路径å‰è¿›ã€‚ + + - 然而,由于这ç§ç®—法也ä¾èµ–于å¯å‘å¼ï¼Œæ‰€ä»¥å®ƒä¾èµ–它所使用的å¯å‘å¼ã€‚在æŸäº›æƒ…况下,它å¯èƒ½æ¯”贪婪的最佳第一æœç´¢ç”šè‡³ä¸çŸ¥æƒ…的算法效率更低。对于最佳的$A^*$æœç´¢ï¼Œå¯å‘å¼å‡½æ•°$h(n)$应该: + - 坿ޥå—ï¼Œä»Žæœªé«˜ä¼°çœŸå®žæˆæœ¬ã€‚ - - - 一致性,这æ„味ç€ä»Žæ–°èŠ‚ç‚¹åˆ°ç›®æ ‡çš„ä¼°è®¡è·¯å¾„æˆæœ¬åŠ ä¸Šä»Žå…ˆå‰èŠ‚ç‚¹è½¬æ¢åˆ°è¯¥æ–°èŠ‚ç‚¹çš„æˆæœ¬åº”该大于或等于先å‰èŠ‚ç‚¹åˆ°ç›®æ ‡çš„ä¼°è®¡è·¯å¾„æˆæœ¬ã€‚用方程的形å¼è¡¨ç¤ºï¼Œ$$h(n)$$是一致的,如果对于æ¯ä¸ªèŠ‚ç‚¹$$n$$å’ŒåŽç»­èŠ‚ç‚¹$$n'$$,从$$n$$到$$n'$$的步长为$$c$$,满足$$h(n)≤h(n')+c$$。 - $$ + + - 一致性,这æ„味ç€ä»Žæ–°èŠ‚ç‚¹åˆ°ç›®æ ‡çš„ä¼°è®¡è·¯å¾„æˆæœ¬åŠ ä¸Šä»Žå…ˆå‰èŠ‚ç‚¹è½¬æ¢åˆ°è¯¥æ–°èŠ‚ç‚¹çš„æˆæœ¬åº”该大于或等于先å‰èŠ‚ç‚¹åˆ°ç›®æ ‡çš„ä¼°è®¡è·¯å¾„æˆæœ¬ã€‚用方程的形å¼è¡¨ç¤ºï¼Œ$h(n)$是一致的,如果对于æ¯ä¸ªèŠ‚ç‚¹n$å’ŒåŽç»­èŠ‚ç‚¹n'$,从n$到$n'$的步长为c$,满足$h(n)≤h(n')+c$。 ![](static/BbIiba1pwo3uI7x4k7QcwicznGc.png) @@ -282,72 +232,45 @@ def remove(self): - æžå¤§æžå°ç®—法(Minimax) - - 作为对抗性æœç´¢ä¸­çš„一ç§ç®—法,Minimax 将获胜æ¡ä»¶è¡¨ç¤ºä¸º - $$ - (-1) - $$ + - 作为对抗性æœç´¢ä¸­çš„一ç§ç®—法,Minimax 将获胜æ¡ä»¶è¡¨ç¤ºä¸º$(-1)$表示为一方,$(+1)$表示为å¦ä¸€æ–¹ã€‚进一步的行动将å—到这些æ¡ä»¶çš„驱动,最å°åŒ–的一方试图获得最低分数,而最大化的一方则试图获得最高分数。 + + + +- 井字棋 AI 为例 + + - $s_0$: åˆå§‹çжæ€ï¼ˆåœ¨æˆ‘们的情况下,是一个空的3X3棋盘) + + ![](D:\MDnote\MDimage\WstnbmHwYoQauRxUQOCclz8Jngb-1681921487075.png) - 表示为一方, - $$ - (+1) - $$ - - 表示为å¦ä¸€æ–¹ã€‚进一步的行动将å—到这些æ¡ä»¶çš„驱动,最å°åŒ–的一方试图获得最低分数,而最大化的一方则试图获得最高分数。 - -![](static/FYu3bQwCZofBgsxKDJiciTR7nzc.png) - -- 井字棋 AI 为例 - - - $$ - s_0$$: åˆå§‹çжæ€ï¼ˆåœ¨æˆ‘们的情况下,是一个空的3X3棋盘) - $$ - -![](static/WstnbmHwYoQauRxUQOCclz8Jngb.png) - -``` -- $$Players(s)$$: 一个函数,在给定状æ€$$s$$的情况下,返回轮到哪个玩家(X或O)。 -``` - -![](static/DKzTbJSZMoc1UkxT9KOcIHqvnob.png) - -``` -- $$Actions(s)$$: 一个函数,在给定状æ€$$s$$的情况下,返回该状æ€ä¸‹çš„æ‰€æœ‰åˆæ³•动作(棋盘上哪些ä½ç½®æ˜¯ç©ºçš„)。 -``` - -![](static/LuEzbLOaqox7yox5lXzcouWYnKc.png) - -``` -- $$Result(s, a)$$: 一个函数,在给定状æ€$$s$$å’Œæ“作$$a$$的情况下,返回一个新状æ€ã€‚这是在状æ€$$s$$上执行动作$$a$$(在游æˆä¸­ç§»åŠ¨ï¼‰æ‰€äº§ç”Ÿçš„æ£‹ç›˜ã€‚ -``` - -![](static/AdOVbwCGhoVcWVx21TMcdhbDnIg.png) - -``` -- $$Terminal(s)$$: 一个函数,在给定状æ€$$s$$çš„æƒ…å†µä¸‹ï¼Œæ£€æŸ¥è¿™æ˜¯å¦æ˜¯æ¸¸æˆçš„æœ€åŽä¸€æ­¥ï¼Œå³æ˜¯å¦æœ‰äººèµ¢äº†æˆ–打æˆå¹³æ‰‹ã€‚如果游æˆå·²ç»“æŸï¼Œåˆ™è¿”回True,å¦åˆ™è¿”回False。 -``` - -![](static/EOfJbvoUMogVT8xsrTxcl5ugnrk.png) - -``` -- $$Utility(s)$$: 一个函数,在给定终端状æ€s的情况下,返回状æ€çš„æ•ˆç”¨å€¼ï¼š$$-1ã€0或1$$。 -``` + - $$Players(s)$$: 一个函数,在给定状æ€$$s$$的情况下,返回轮到哪个玩家(X或O)。 + + ![](D:\MDnote\MDimage\DKzTbJSZMoc1UkxT9KOcIHqvnob.png) + + - $Actions(s)$: 一个函数,在给定状æ€$$s$$的情况下,返回该状æ€ä¸‹çš„æ‰€æœ‰åˆæ³•动作(棋盘上哪些ä½ç½®æ˜¯ç©ºçš„)。 + + ![](D:\MDnote\MDimage\LuEzbLOaqox7yox5lXzcouWYnKc.png) + + - $Result(s, a)$: 一个函数,在给定状æ€$$s$$å’Œæ“作$$a$$的情况下,返回一个新状æ€ã€‚这是在状æ€$$s$$上执行动作$$a$$(在游æˆä¸­ç§»åŠ¨ï¼‰æ‰€äº§ç”Ÿçš„æ£‹ç›˜ã€‚ + + ![](D:\MDnote\MDimage\AdOVbwCGhoVcWVx21TMcdhbDnIg.png) + + - $Terminal(s)$: 一个函数,在给定状æ€$$s$$çš„æƒ…å†µä¸‹ï¼Œæ£€æŸ¥è¿™æ˜¯å¦æ˜¯æ¸¸æˆçš„æœ€åŽä¸€æ­¥ï¼Œå³æ˜¯å¦æœ‰äººèµ¢äº†æˆ–打æˆå¹³æ‰‹ã€‚如果游æˆå·²ç»“æŸï¼Œåˆ™è¿”回True,å¦åˆ™è¿”回False。 + + ![](D:\MDnote\MDimage\EOfJbvoUMogVT8xsrTxcl5ugnrk.png) + + - $Utility(s)$: 一个函数,在给定终端状æ€s的情况下,返回状æ€çš„æ•ˆç”¨å€¼ï¼š$$-1ã€0或1$$。 + + ![](static/UcpAbpWtJoHb5Wx6ycrcG2ZZnIe.png) - 算法的工作原ç†ï¼š - - 该算法递归地模拟从当å‰çжæ€å¼€å§‹ç›´åˆ°è¾¾åˆ°ç»ˆç«¯çжæ€ä¸ºæ­¢å¯èƒ½å‘生的所有游æˆçжæ€ã€‚æ¯ä¸ªç»ˆç«¯çжæ€çš„值为 - $$ - (-1)ã€0或(+1) - $$ - - 。 + - 该算法递归地模拟从当å‰çжæ€å¼€å§‹ç›´åˆ°è¾¾åˆ°ç»ˆç«¯çжæ€ä¸ºæ­¢å¯èƒ½å‘生的所有游æˆçжæ€ã€‚æ¯ä¸ªç»ˆç«¯çжæ€çš„值为$(-1)$ã€$0$或$(+1)$。 ![](static/DN3mb0lbno2AHvx2M0JcrTvtnYf.png) -``` -- æ ¹æ®è½®åˆ°è°çš„状æ€ï¼Œç®—法å¯ä»¥çŸ¥é“当å‰çŽ©å®¶åœ¨æœ€ä½³æ¸¸æˆæ—¶æ˜¯å¦ä¼šé€‰æ‹©å¯¼è‡´çжæ€å€¼æ›´ä½Žæˆ–更高的动作。 -``` + - æ ¹æ®è½®åˆ°è°çš„状æ€ï¼Œç®—法å¯ä»¥çŸ¥é“当å‰çŽ©å®¶åœ¨æœ€ä½³æ¸¸æˆæ—¶æ˜¯å¦ä¼šé€‰æ‹©å¯¼è‡´çжæ€å€¼æ›´ä½Žæˆ–更高的动作。 é€šè¿‡è¿™ç§æ–¹å¼ï¼Œåœ¨æœ€å°åŒ–和最大化之间交替,算法为æ¯ä¸ªå¯èƒ½çš„动作产生的状æ€åˆ›å»ºå€¼ã€‚举一个更具体的例å­ï¼Œæˆ‘们å¯ä»¥æƒ³è±¡ï¼Œæœ€å¤§åŒ–的玩家在æ¯ä¸€ä¸ªå›žåˆéƒ½ä¼šé—®ï¼šâ€œå¦‚果我采å–这个行动,就会产生一个新的状æ€ã€‚如果最å°åŒ–çš„çŽ©å®¶å‘æŒ¥å¾—最好,那么该玩家å¯ä»¥é‡‡å–什么行动æ¥è¾¾åˆ°æœ€ä½Žå€¼ï¼Ÿâ€ @@ -361,102 +284,30 @@ def remove(self): - 具体算法: - - ç»™å®šçŠ¶æ€ $$s$$ + - ç»™å®šçŠ¶æ€ $s$ - - 最大化玩家在 - $$ - Actions(s) - $$ + - 最大化玩家在$$Actions(s)$$中选择动作$$a$$,该动作产生$$Min-value(Result(s,a))$$ 的最高值。 + - 最å°åŒ–玩家在$$Actions(s)$$中选择动作$$a$$,该动作产生$$Max-value(Result(s,a))$$ 的最å°å€¼ã€‚ - 中选择动作 - $$ - a$$,该动作产生 - $$ - - Min-value(Result(s,a))$$ 的最高值。 - - 最å°åŒ–玩家在 - $$ - Actions(s) - $$ - - 中选择动作 - $$ - a$$,该动作产生 - $$ - - Max-value(Result(s,a))$$ 的最å°å€¼ã€‚ - Function Max-Value(state): - - - $$ - v=-\infty - $$ - - if - $$ - Terminal(state) - $$ - - : - - - return - $$ - Utility(state) - $$ - - for - $$ - action - $$ - - in - $$ - Actions(state) - $$ - - : - - - $$ - v = Max(v, Min-Value(Result(state, action))) - $$ + - $$v=-\infty$$ + - if $$Terminal(state)$$: + - return $$Utility(state)$$ + - for $$action$$ in $$Actions(state)$$: + - $$v = Max(v, Min-Value(Result(state, action)))$$ - return $$v$$ - Function Min-Value(state): - - - $$ - v=\infty - $$ - - if - $$ - Terminal(state) - $$ - - : - - - return - $$ - Utility(state) - $$ - - for - $$ - action - $$ - - in - $$ - Actions(state) - $$ - - : - - - $$ - v = Min(v, Max-Value(Result(state, action))) - $$ + - $$v=\infty$$ + - if $$Terminal(state)$$: + - return $$Utility(state)$$ + - for $$action$$ in $$Actions(state)$$: + - $$v = Min(v, Max-Value(Result(state, action)))$$ - return $$v$$ ä¸ä¼šç†è§£é€’归?也许你需è¦çœ‹çœ‹è¿™ä¸ªï¼š[阶段二:递归æ“作](https://hdu-cs-lecture-notes.feishu.cn/wiki/wikcnwIRBW8rXspHQvigmYXZSWd) -- $$ - \alpha$$-$$\beta$$剪æž(Alpha-Beta Pruning) - +- $$\alpha$$-$$\beta$$剪æž(Alpha-Beta Pruning) - 作为一ç§ä¼˜åŒ–Minimax的方法,Alpha-Beta剪æžè·³è¿‡äº†ä¸€äº›æ˜Žæ˜¾ä¸åˆ©çš„递归计算。在确定了一个动作的价值åŽï¼Œå¦‚æžœæœ‰åˆæ­¥è¯æ®è¡¨æ˜ŽæŽ¥ä¸‹æ¥çš„动作å¯ä»¥è®©å¯¹æ‰‹èŽ·å¾—æ¯”å·²ç»ç¡®å®šçš„动作更好的分数,那么就没有必è¦è¿›ä¸€æ­¥è°ƒæŸ¥è¿™ä¸ªåŠ¨ä½œï¼Œå› ä¸ºå®ƒè‚¯å®šæ¯”ä¹‹å‰ç¡®å®šçš„动作ä¸åˆ©ã€‚ - - è¿™ä¸€ç‚¹æœ€å®¹æ˜“ç”¨ä¸€ä¸ªä¾‹å­æ¥è¯´æ˜Žï¼šæœ€å¤§åŒ–的玩家知é“,在下一步,最å°åŒ–的玩家将试图获得最低分数。å‡è®¾æœ€å¤§åŒ–玩家有三个å¯èƒ½çš„动作,第一个动作的值为4。然åŽçŽ©å®¶å¼€å§‹ä¸ºä¸‹ä¸€ä¸ªåŠ¨ä½œç”Ÿæˆå€¼ã€‚è¦åšåˆ°è¿™ä¸€ç‚¹ï¼Œå¦‚果当å‰çީ家åšå‡ºè¿™ä¸ªåŠ¨ä½œï¼ŒçŽ©å®¶ä¼šç”Ÿæˆæœ€å°åŒ–è€…åŠ¨ä½œçš„å€¼ï¼Œå¹¶ä¸”çŸ¥é“æœ€å°åŒ–è€…ä¼šé€‰æ‹©æœ€ä½Žçš„ä¸€ä¸ªã€‚ç„¶è€Œï¼Œåœ¨å®Œæˆæœ€å°åŒ–器所有å¯èƒ½åŠ¨ä½œçš„è®¡ç®—ä¹‹å‰ï¼ŒçŽ©å®¶ä¼šçœ‹åˆ°å…¶ä¸­ä¸€ä¸ªé€‰é¡¹çš„å€¼ä¸º3。这æ„å‘³ç€æ²¡æœ‰ç†ç”±ç»§ç»­æŽ¢ç´¢æœ€å°åŒ–玩家的其他å¯èƒ½è¡ŒåŠ¨ã€‚å°šæœªèµ‹å€¼çš„åŠ¨ä½œçš„å€¼æ— å…³ç´§è¦ï¼Œæ— è®ºæ˜¯10还是(-10)。如果该值为10,则最å°åŒ–器将选择最低选项3ï¼Œè¯¥é€‰é¡¹å·²ç»æ¯”预先设定的4差。如果尚未估价的行动结果是(-10),那么最å°åŒ–者将选择(-10)这一选项,这对最大化者æ¥è¯´æ›´åŠ ä¸åˆ©ã€‚因此,在这一点上为最å°åŒ–者计算é¢å¤–çš„å¯èƒ½åŠ¨ä½œä¸Žæœ€å¤§åŒ–è€…æ— å…³ï¼Œå› ä¸ºæœ€å¤§åŒ–çŽ©å®¶å·²ç»æœ‰äº†ä¸€ä¸ªæ˜Žç¡®çš„æ›´å¥½çš„选择,其值为4。 $$ @@ -464,15 +315,5 @@ def remove(self): - 深度é™åˆ¶çš„æžå¤§æžå°ç®—法(Depth-Limited Minimax) - - 总共有 - $$ - 255168 - $$ - - 个å¯èƒ½çš„井字棋游æˆï¼Œä»¥åŠæœ‰ - $$ - 10^{29000} - $$ - - 个å¯èƒ½çš„国际象棋中游æˆã€‚到目å‰ä¸ºæ­¢ï¼Œæœ€å°æœ€å¤§ç®—法需è¦ç”Ÿæˆä»ŽæŸä¸ªç‚¹åˆ°ç»ˆç«¯æ¡ä»¶çš„æ‰€æœ‰å‡è®¾æ¸¸æˆçжæ€ã€‚虽然计算所有的井字棋游æˆçжæ€å¯¹çŽ°ä»£è®¡ç®—æœºæ¥è¯´å¹¶ä¸æ˜¯ä¸€ä¸ªæŒ‘战,但目å‰ç”¨æ¥è®¡ç®—国际象棋是ä¸å¯èƒ½çš„。 - - 深度é™åˆ¶çš„ Minimax ç®—æ³•åœ¨åœæ­¢ä¹‹å‰åªè€ƒè™‘预先定义的移动次数,而从未达到终端状æ€ã€‚然而,这ä¸å…许获得æ¯ä¸ªåŠ¨ä½œçš„ç²¾ç¡®å€¼ï¼Œå› ä¸ºå‡è®¾çš„æ¸¸æˆè¿˜æ²¡æœ‰ç»“æŸã€‚为了解决这个问题,深度é™åˆ¶ Minimax ä¾èµ–于一个评估函数,该函数从给定状æ€ä¼°è®¡æ¸¸æˆçš„预期效用,或者æ¢å¥è¯è¯´ï¼Œä¸ºçжæ€èµ‹å€¼ã€‚例如,在国际象棋游æˆä¸­ï¼Œæ•ˆç”¨å‡½æ•°ä¼šå°†æ£‹ç›˜çš„当å‰é…置作为输入,å°è¯•评估其预期效用(基于æ¯ä¸ªçŽ©å®¶æ‹¥æœ‰çš„æ£‹å­åŠå…¶åœ¨æ£‹ç›˜ä¸Šçš„ä½ç½®ï¼‰ï¼Œç„¶åŽè¿”回一个正值或负值,表示棋盘对一个玩家对å¦ä¸€ä¸ªçŽ©å®¶çš„æœ‰åˆ©ç¨‹åº¦ã€‚è¿™äº›å€¼å¯ä»¥ç”¨æ¥å†³å®šæ­£ç¡®çš„æ“ä½œï¼Œå¹¶ä¸”è¯„ä¼°å‡½æ•°è¶Šå¥½ï¼Œä¾èµ–它的 Minimax 算法就越好。 + - 总共有$$255168$$个å¯èƒ½çš„井字棋游æˆï¼Œä»¥åŠæœ‰$$10^{29000}$$个å¯èƒ½çš„国际象棋中游æˆã€‚到目å‰ä¸ºæ­¢ï¼Œæœ€å°æœ€å¤§ç®—法需è¦ç”Ÿæˆä»ŽæŸä¸ªç‚¹åˆ°ç»ˆç«¯æ¡ä»¶çš„æ‰€æœ‰å‡è®¾æ¸¸æˆçжæ€ã€‚虽然计算所有的井字棋游æˆçжæ€å¯¹çŽ°ä»£è®¡ç®—æœºæ¥è¯´å¹¶ä¸æ˜¯ä¸€ä¸ªæŒ‘战,但目å‰ç”¨æ¥è®¡ç®—国际象棋是ä¸å¯èƒ½çš„。 + - 深度é™åˆ¶çš„ Minimax ç®—æ³•åœ¨åœæ­¢ä¹‹å‰åªè€ƒè™‘预先定义的移动次数,而从未达到终端状æ€ã€‚然而,这ä¸å…许获得æ¯ä¸ªåŠ¨ä½œçš„ç²¾ç¡®å€¼ï¼Œå› ä¸ºå‡è®¾çš„æ¸¸æˆè¿˜æ²¡æœ‰ç»“æŸã€‚为了解决这个问题,深度é™åˆ¶ Minimax ä¾èµ–于一个评估函数,该函数从给定状æ€ä¼°è®¡æ¸¸æˆçš„预期效用,或者æ¢å¥è¯è¯´ï¼Œä¸ºçжæ€èµ‹å€¼ã€‚例如,在国际象棋游æˆä¸­ï¼Œæ•ˆç”¨å‡½æ•°ä¼šå°†æ£‹ç›˜çš„当å‰é…置作为输入,å°è¯•评估其预期效用(基于æ¯ä¸ªçŽ©å®¶æ‹¥æœ‰çš„æ£‹å­åŠå…¶åœ¨æ£‹ç›˜ä¸Šçš„ä½ç½®ï¼‰ï¼Œç„¶åŽè¿”回一个正值或负值,表示棋盘对一个玩家对å¦ä¸€ä¸ªçŽ©å®¶çš„æœ‰åˆ©ç¨‹åº¦ã€‚è¿™äº›å€¼å¯ä»¥ç”¨æ¥å†³å®šæ­£ç¡®çš„æ“ä½œï¼Œå¹¶ä¸”è¯„ä¼°å‡½æ•°è¶Šå¥½ï¼Œä¾èµ–它的 Minimax 算法就越好。 \ No newline at end of file From c90da867a3ff232634321a08f553c1ab127720f1 Mon Sep 17 00:00:00 2001 From: 46135621 <87229030+46135621@users.noreply.github.com> Date: Thu, 20 Apr 2023 01:00:02 +0800 Subject: [PATCH 3/5] =?UTF-8?q?Update=204.3.1=E6=90=9C=E7=B4=A2.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4.人工智能/4.3.1æœç´¢.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/4.人工智能/4.3.1æœç´¢.md b/4.人工智能/4.3.1æœç´¢.md index 775d015..04386b0 100644 --- a/4.人工智能/4.3.1æœç´¢.md +++ b/4.人工智能/4.3.1æœç´¢.md @@ -46,9 +46,7 @@ - 动作(Action) - - 一个状æ€å¯ä»¥åšå‡ºçš„选择。更确切地说,动作å¯ä»¥å®šä¹‰ä¸ºä¸€ä¸ªå‡½æ•°ã€‚å½“æŽ¥æ”¶åˆ°çŠ¶æ€ - - $s$作为输入时,$Actions(s)$将返回å¯åœ¨çжæ€$s$ 中执行的一组æ“作作为输出。 + - 一个状æ€å¯ä»¥åšå‡ºçš„选择。更确切地说,动作å¯ä»¥å®šä¹‰ä¸ºä¸€ä¸ªå‡½æ•°ã€‚当接收到状æ€$s$作为输入时,$Actions(s)$将返回å¯åœ¨çжæ€$s$ 中执行的一组æ“作作为输出。 - 例如,在一个数字åŽå®¹é“中,给定状æ€çš„æ“ä½œæ˜¯æ‚¨å¯ä»¥åœ¨å½“å‰é…置中滑动方å—的方å¼ã€‚ ![](static/MpgrbCjtDo1NlLxVyL1cMH6FnAg.png) @@ -316,4 +314,4 @@ def remove(self): - 深度é™åˆ¶çš„æžå¤§æžå°ç®—法(Depth-Limited Minimax) - 总共有$$255168$$个å¯èƒ½çš„井字棋游æˆï¼Œä»¥åŠæœ‰$$10^{29000}$$个å¯èƒ½çš„国际象棋中游æˆã€‚到目å‰ä¸ºæ­¢ï¼Œæœ€å°æœ€å¤§ç®—法需è¦ç”Ÿæˆä»ŽæŸä¸ªç‚¹åˆ°ç»ˆç«¯æ¡ä»¶çš„æ‰€æœ‰å‡è®¾æ¸¸æˆçжæ€ã€‚虽然计算所有的井字棋游æˆçжæ€å¯¹çŽ°ä»£è®¡ç®—æœºæ¥è¯´å¹¶ä¸æ˜¯ä¸€ä¸ªæŒ‘战,但目å‰ç”¨æ¥è®¡ç®—国际象棋是ä¸å¯èƒ½çš„。 - - 深度é™åˆ¶çš„ Minimax ç®—æ³•åœ¨åœæ­¢ä¹‹å‰åªè€ƒè™‘预先定义的移动次数,而从未达到终端状æ€ã€‚然而,这ä¸å…许获得æ¯ä¸ªåŠ¨ä½œçš„ç²¾ç¡®å€¼ï¼Œå› ä¸ºå‡è®¾çš„æ¸¸æˆè¿˜æ²¡æœ‰ç»“æŸã€‚为了解决这个问题,深度é™åˆ¶ Minimax ä¾èµ–于一个评估函数,该函数从给定状æ€ä¼°è®¡æ¸¸æˆçš„预期效用,或者æ¢å¥è¯è¯´ï¼Œä¸ºçжæ€èµ‹å€¼ã€‚例如,在国际象棋游æˆä¸­ï¼Œæ•ˆç”¨å‡½æ•°ä¼šå°†æ£‹ç›˜çš„当å‰é…置作为输入,å°è¯•评估其预期效用(基于æ¯ä¸ªçŽ©å®¶æ‹¥æœ‰çš„æ£‹å­åŠå…¶åœ¨æ£‹ç›˜ä¸Šçš„ä½ç½®ï¼‰ï¼Œç„¶åŽè¿”回一个正值或负值,表示棋盘对一个玩家对å¦ä¸€ä¸ªçŽ©å®¶çš„æœ‰åˆ©ç¨‹åº¦ã€‚è¿™äº›å€¼å¯ä»¥ç”¨æ¥å†³å®šæ­£ç¡®çš„æ“ä½œï¼Œå¹¶ä¸”è¯„ä¼°å‡½æ•°è¶Šå¥½ï¼Œä¾èµ–它的 Minimax 算法就越好。 \ No newline at end of file + - 深度é™åˆ¶çš„ Minimax ç®—æ³•åœ¨åœæ­¢ä¹‹å‰åªè€ƒè™‘预先定义的移动次数,而从未达到终端状æ€ã€‚然而,这ä¸å…许获得æ¯ä¸ªåŠ¨ä½œçš„ç²¾ç¡®å€¼ï¼Œå› ä¸ºå‡è®¾çš„æ¸¸æˆè¿˜æ²¡æœ‰ç»“æŸã€‚为了解决这个问题,深度é™åˆ¶ Minimax ä¾èµ–于一个评估函数,该函数从给定状æ€ä¼°è®¡æ¸¸æˆçš„预期效用,或者æ¢å¥è¯è¯´ï¼Œä¸ºçжæ€èµ‹å€¼ã€‚例如,在国际象棋游æˆä¸­ï¼Œæ•ˆç”¨å‡½æ•°ä¼šå°†æ£‹ç›˜çš„当å‰é…置作为输入,å°è¯•评估其预期效用(基于æ¯ä¸ªçŽ©å®¶æ‹¥æœ‰çš„æ£‹å­åŠå…¶åœ¨æ£‹ç›˜ä¸Šçš„ä½ç½®ï¼‰ï¼Œç„¶åŽè¿”回一个正值或负值,表示棋盘对一个玩家对å¦ä¸€ä¸ªçŽ©å®¶çš„æœ‰åˆ©ç¨‹åº¦ã€‚è¿™äº›å€¼å¯ä»¥ç”¨æ¥å†³å®šæ­£ç¡®çš„æ“ä½œï¼Œå¹¶ä¸”è¯„ä¼°å‡½æ•°è¶Šå¥½ï¼Œä¾èµ–它的 Minimax 算法就越好。 From 1d6a296af38e0b333e1a4c6ea6e444245f286f37 Mon Sep 17 00:00:00 2001 From: camera-2018 <2907618001@qq.com> Date: Thu, 20 Apr 2023 01:08:59 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=204.3.1=20=E5=9B=BE=E7=89=87=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E4=B8=8D=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vitepress/cache/deps/_metadata.json | 6 +++--- 4.人工智能/4.3.1æœç´¢.md | 14 +++++++------- package-lock.json | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.vitepress/cache/deps/_metadata.json b/.vitepress/cache/deps/_metadata.json index 5094116..ea8fe0c 100644 --- a/.vitepress/cache/deps/_metadata.json +++ b/.vitepress/cache/deps/_metadata.json @@ -1,11 +1,11 @@ { - "hash": "37427fdc", - "browserHash": "93d17c76", + "hash": "6fdfc41b", + "browserHash": "128697d0", "optimized": { "vue": { "src": "../../../node_modules/vue/dist/vue.runtime.esm-bundler.js", "file": "vue.js", - "fileHash": "87e80f21", + "fileHash": "6266fb14", "needsInterop": false } }, diff --git a/4.人工智能/4.3.1æœç´¢.md b/4.人工智能/4.3.1æœç´¢.md index 04386b0..9a3fa19 100644 --- a/4.人工智能/4.3.1æœç´¢.md +++ b/4.人工智能/4.3.1æœç´¢.md @@ -38,7 +38,7 @@ - 智能主体在其环境中的é…置。 - 例如,在一个数字åŽå®¹é“è°œé¢˜ä¸­ï¼Œä¸€ä¸ªçŠ¶æ€æ˜¯æ‰€æœ‰æ•°å­—æŽ’åˆ—åœ¨æ£‹ç›˜ä¸Šçš„ä»»ä½•ä¸€ç§æ–¹å¼ã€‚ - - åˆå§‹çжæ€(Initial State) + - åˆå§‹çжæ€ï¼ˆInitial State) - æœç´¢ç®—法开始的状æ€ã€‚在导航应用程åºä¸­ï¼Œè¿™å°†æ˜¯å½“å‰ä½ç½®ã€‚ @@ -238,23 +238,23 @@ def remove(self): - $s_0$: åˆå§‹çжæ€ï¼ˆåœ¨æˆ‘们的情况下,是一个空的3X3棋盘) - ![](D:\MDnote\MDimage\WstnbmHwYoQauRxUQOCclz8Jngb-1681921487075.png) + ![](static/WstnbmHwYoQauRxUQOCclz8Jngb.png) - $$Players(s)$$: 一个函数,在给定状æ€$$s$$的情况下,返回轮到哪个玩家(X或O)。 - ![](D:\MDnote\MDimage\DKzTbJSZMoc1UkxT9KOcIHqvnob.png) + ![](static/DKzTbJSZMoc1UkxT9KOcIHqvnob.png) - $Actions(s)$: 一个函数,在给定状æ€$$s$$的情况下,返回该状æ€ä¸‹çš„æ‰€æœ‰åˆæ³•动作(棋盘上哪些ä½ç½®æ˜¯ç©ºçš„)。 - ![](D:\MDnote\MDimage\LuEzbLOaqox7yox5lXzcouWYnKc.png) + ![](static/LuEzbLOaqox7yox5lXzcouWYnKc.png) - $Result(s, a)$: 一个函数,在给定状æ€$$s$$å’Œæ“作$$a$$的情况下,返回一个新状æ€ã€‚这是在状æ€$$s$$上执行动作$$a$$(在游æˆä¸­ç§»åŠ¨ï¼‰æ‰€äº§ç”Ÿçš„æ£‹ç›˜ã€‚ - ![](D:\MDnote\MDimage\AdOVbwCGhoVcWVx21TMcdhbDnIg.png) + ![](static/AdOVbwCGhoVcWVx21TMcdhbDnIg.png) - $Terminal(s)$: 一个函数,在给定状æ€$$s$$çš„æƒ…å†µä¸‹ï¼Œæ£€æŸ¥è¿™æ˜¯å¦æ˜¯æ¸¸æˆçš„æœ€åŽä¸€æ­¥ï¼Œå³æ˜¯å¦æœ‰äººèµ¢äº†æˆ–打æˆå¹³æ‰‹ã€‚如果游æˆå·²ç»“æŸï¼Œåˆ™è¿”回True,å¦åˆ™è¿”回False。 - ![](D:\MDnote\MDimage\EOfJbvoUMogVT8xsrTxcl5ugnrk.png) + ![](static/EOfJbvoUMogVT8xsrTxcl5ugnrk.png) - $Utility(s)$: 一个函数,在给定终端状æ€s的情况下,返回状æ€çš„æ•ˆç”¨å€¼ï¼š$$-1ã€0或1$$。 @@ -302,7 +302,7 @@ def remove(self): - $$v = Min(v, Max-Value(Result(state, action)))$$ - return $$v$$ -ä¸ä¼šç†è§£é€’归?也许你需è¦çœ‹çœ‹è¿™ä¸ªï¼š[阶段二:递归æ“作](https://hdu-cs-lecture-notes.feishu.cn/wiki/wikcnwIRBW8rXspHQvigmYXZSWd) +ä¸ä¼šç†è§£é€’归?也许你需è¦çœ‹çœ‹è¿™ä¸ªï¼š[阶段二:递归æ“作](../3.%E7%BC%96%E7%A8%8B%E6%80%9D%E7%BB%B4%E4%BD%93%E7%B3%BB%E6%9E%84%E5%BB%BA/3.6.4.2%E9%98%B6%E6%AE%B5%E4%BA%8C%EF%BC%9A%E9%80%92%E5%BD%92%E6%93%8D%E4%BD%9C.md) - $$\alpha$$-$$\beta$$剪æž(Alpha-Beta Pruning) - 作为一ç§ä¼˜åŒ–Minimax的方法,Alpha-Beta剪æžè·³è¿‡äº†ä¸€äº›æ˜Žæ˜¾ä¸åˆ©çš„递归计算。在确定了一个动作的价值åŽï¼Œå¦‚æžœæœ‰åˆæ­¥è¯æ®è¡¨æ˜ŽæŽ¥ä¸‹æ¥çš„动作å¯ä»¥è®©å¯¹æ‰‹èŽ·å¾—æ¯”å·²ç»ç¡®å®šçš„动作更好的分数,那么就没有必è¦è¿›ä¸€æ­¥è°ƒæŸ¥è¿™ä¸ªåŠ¨ä½œï¼Œå› ä¸ºå®ƒè‚¯å®šæ¯”ä¹‹å‰ç¡®å®šçš„动作ä¸åˆ©ã€‚ diff --git a/package-lock.json b/package-lock.json index e3ceb6a..7f99a68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "srt-wiki", + "name": "hdu-cs-wiki-cww", "lockfileVersion": 2, "requires": true, "packages": { From b17c99064c3216bae151fff4b724bae682b0c5c1 Mon Sep 17 00:00:00 2001 From: camera-2018 <2907618001@qq.com> Date: Thu, 20 Apr 2023 01:22:09 +0800 Subject: [PATCH 5/5] fix: 4.3.1 html tag --- 4.人工智能/4.3.1æœç´¢.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/4.人工智能/4.3.1æœç´¢.md b/4.人工智能/4.3.1æœç´¢.md index 9a3fa19..503e98a 100644 --- a/4.人工智能/4.3.1æœç´¢.md +++ b/4.人工智能/4.3.1æœç´¢.md @@ -232,7 +232,7 @@ def remove(self): - 作为对抗性æœç´¢ä¸­çš„一ç§ç®—法,Minimax 将获胜æ¡ä»¶è¡¨ç¤ºä¸º$(-1)$表示为一方,$(+1)$表示为å¦ä¸€æ–¹ã€‚进一步的行动将å—到这些æ¡ä»¶çš„驱动,最å°åŒ–的一方试图获得最低分数,而最大化的一方则试图获得最高分数。 - + ![](static/FYu3bQwCZofBgsxKDJiciTR7nzc.png) - 井字棋 AI 为例