1. <strike id="voekh"><bdo id="voekh"></bdo></strike>
      <button id="voekh"><acronym id="voekh"></acronym></button>

      <s id="voekh"></s>

        <span id="voekh"></span>
      1. <li id="voekh"><acronym id="voekh"></acronym></li>
        <th id="voekh"></th>
        作家
        登錄

        數學科普人士攻克火爆猜字游戲 Wordle

        作者: 來源: 2022-02-09 15:07:15 閱讀 我要評論

         免費猜字小游戲 Wordle 正在席卷全球,火到以數百萬美元的價格被收購,全球玩家數量也突破了 200 萬。如果你在微博、微信等地方看到這些神神秘秘的方塊,那就是 Wordle 玩家在分享自己當日的戰績了。

        根據統計,大多數人類玩家需要猜測 4 次或以上才能取得勝利。比如,2 月 5 日的題目在當天 30 多萬份曬出戰績的玩家中,只有 27% 能在三次以內猜中。這個游戲自然也成了程序員們的新競技場,他們寫出各種算法來比拼誰用的步數最少。這其中,百萬粉數學科普人士 3Blue1Brown 的玩法更為硬核 —— 他不光寫出了求解算法,還用數學知識一步步優化至逼近理論極限,最終成績平均 3.138 次猜測就能獲勝。并且他用統計辦法找出了與人類常見策略不同的最佳開局單詞 crane。

        他像往常一樣把這個過程整理成視頻分享出來,不僅展示了算法,還把其中涉及的信息論、統計學知識講得明明白白。視頻發布一天之內就有上百萬播放,圍觀的網友也紛紛在評論區表達了贊嘆。

        為了游戲點進來,為了精彩的信息論知識留下,太酷了!

        他用了什么樣的算法,理論極限又是怎么算出來的?下面一起來看看。

        從每一次猜測中獲得最多信息

        Wordle 的游戲規則很簡單,玩家需要猜出程序每天指定的一個 5 位英語單詞謎底。玩家可以隨意提交一個英語單詞,但必須是字典里有的,不能胡亂拼寫。如果字母在謎底中出現且位置對了就顯示綠色,字母出現了但位置不對就顯示黃色,字母在答案的單詞中沒出現就顯示灰色。根據反饋信息再進行下一輪猜測,在 6 次嘗試之內猜出就算贏。

        如何讓步數盡量少?

        3Blue1Brown 的總體思路是盡量從每一次猜測中獲得最多的信息。他先是找來了 26 個字母在英語文本中出現頻率的統計數據,嘗試在前兩次嘗試中覆蓋最多高頻字母。比如 other+nails 的組合,就可以覆蓋出現頻率最高的 11 個字母中的 10 個,如果運氣好就能確定下來一些字母。即使這些字母都沒出現依然是一種信息量很大的反饋,10 個常用字母都沒出現的單詞數量就大大減少了,讓下一步猜測更簡單。

        不過在嘗試過程中,又出現了新的問題。同樣用 nails 這幾個字母,也可以拼成 snail ,這兩種拼寫順序之間的差異,僅依據字母頻率數據是無法衡量的。

        下面需要一種新的計算方法。

        如何計算信息量?

        原版 Wordle 游戲里有一個數量 12972 的總單詞列表,都能作為猜測詞使用。另外有一個 2315 個單詞的列表,只有這些單詞會出現在答案里 (據說是游戲作者的女朋友挑選的)。因為游戲是用 Javascript 寫的,數據都在客戶端,這些數據直接可以從源碼里找到。不過 3Blue1Brown 覺得讓程序利用答案列表的話有點像作弊了,他果斷給自己加大難度,只考慮總單詞列表。游戲中,每一次猜測都能從 12972 個單詞中排除一些結果。比如猜測 weary,如果 W 位置正確同時 A 出現了,那么剩下的可選單詞只剩 58 個。

        這樣對同一個猜測,從 5 個字母全沒出現到 5 個字母全對的各種反饋的概率都可以計算出來。

        這樣,問題就變成了如何評估各種反饋情況包含的信息量。

        3Blue1Brown 選擇的辦法,就是利用信息論祖師爺香農提出的信息熵概念。信息熵描述的是事件的不確定性,單位就是大家知道的比特。理解起來也不難,可以用扔硬幣來解釋。

        扔 1 枚硬幣只會出現正、反兩種結果,而且概率相等。扔 2 枚硬幣就有正正、正反、反正、反反這 4 種結果,扔 3 枚有 8 種情況等等,也就是扔 n 次有 2 的 n 次方種結果。

        當一個事件有兩種結果且概率都是 1/2,其不確定性相當于扔 1 枚硬幣,此時信息熵定義為 1 比特。如果一個事件有 8 種結果且概率都是 1/8,就相當于扔 3 枚硬幣,此時信息熵就是 3 比特。

        信息量和信息熵的數量相等、意義相反,相當于衡量一則信息能消除多少不確定性。設每種結果的概率為 p,信息量為 I,有如下等式。

        稍作變換,可以得到信息量的計算公式。

        回到 Wordle 游戲上,一次猜測獲得的信息量可以用每種可能情況的概率與對應信息量相乘、再把結果相加來計算,也就是求數學期望。

        以猜測 weary 為例,計算出獲得的信息量為 4.9 比特。代表這則信息消除的不確定性比扔 5 個硬幣的不確定性少一點。

        算法思路有了,接下來就可以交給程序,計算出所有 12972 個單詞的能消除的信息熵。

        用同樣的方法,可以再計算第二步、第三步猜測能消除的信息熵。

        根據這些計算結果,程序就可以在每一次猜測時,選擇所有可能單詞里能消除信息熵最多的那個。

        比如第一次猜 slate 獲得一次反饋,此時還剩下 578 個單詞可選,其中選 ramin 能消除最多的信息熵,這樣一步一步猜直到猜出正確答案。

        接下來,拿這個程序在所有 2135 種可能的答案上跑一遍,平均用了 4.124 步猜出正確答案。

        3Blue1Brown 覺得這個成績還不夠好,至少沒有超過普通人類玩家水平,還需要繼續優化。

        最終成績逼近理論極限

        成績不夠好的一個問題出在每個單詞作為答案的可能性其實并不相同。像 aahed aalii aargh 這種偏門單詞雖然在允許猜測的總單詞列表里,但并不在答案列表的 2315 個單詞里。找一個典型的例子,當遇到 abbas(人名,阿巴斯)和 abyss(深淵)二選一時,如果程序能知道 abyss 是常用詞,就可以省下一步。

        下一步改進方向就是引入詞頻統計數據,這樣的數據集可以從 Wolfram 上找到。

        這里還遇到一個問題,比如 which 和 braid 的出現頻率相差 1000 倍,但都可以算是常見單詞,出現在答案列表里的可能性相差不大。

        解決辦法就是用 Sigmoid 函數做處理,讓更多數據靠近 0 或 1。

        將處理后的詞頻數據與前面的信息量計算結果相結合,得到優化后的信息量計算方法。

        在實際游戲中,也把信息量與詞頻結合考慮,就能讓程序更傾向于選擇常見單詞。比如在下面的情況中,words 和 dorms 的信息量并不是最高的,但因為詞頻較高所以優先考慮。

        優化后的成績到了 3.601,平均節省了半步。如果加大計算量,每次根據兩步搜索的結果選擇單詞可以進一步提高成績。

        而且根據兩步搜索的計算結果,3Blue1Brown 認為能獲得最大信息量的開局單詞是 crane。此外還可以讓程序知道具體哪 2315 個單詞真的是在答案列表里的,用上所有這些技巧后,成績再次提升到 3.438。

        實際上這個成績的理論極限就不可能低于 3。2315 種答案意味著有 11.17 比特的不確定性,而暴力搜索后,前兩步能獲得的最大信息量在 10.01 比特,還剩下 1.16。也就是說第三步的難度比二選一還要難一點,沒有算法能保證每次都正確。

        不過 3Blue1Brown 還是找到了新辦法進一步提升成績。讓程序記住每個正確答案,并在下一局中把猜過的單詞排除出去,最終成績到達 3.138,逼近了理論極限。

        看完整個視頻后,有網友表示學到的信息論知識比上課學到的還多。也有很多人對到底哪個單詞才是最佳開局展開了討論。雖然兩步搜索的結果是 crane,不過 3Blue1Brown 也不確定對于人類玩家來說是不是最佳開局單詞。畢竟實際游戲中人類很難像程序一樣算出第二步的情況。對于人類來說,soare 和 tares 都是很好的開局。

        還能挑戰變態模式

        程序寫好后,3Blue1Brown 還做了更多嘗試,比如原版 Wordle 的困難難度,成績是 3.562,還有一個 Wordle 變態版 Absurdle,這個版本不再限制嘗試次數,但變態之處在于游戲 AI 會與玩家對抗。玩家猜測一次后正確答案就會變化,在所有反饋可能性中挑選信息熵最大的那個,就像是在躲避玩家的猜測。

        Absurdle 的作者之前還開發過一個變態版俄羅斯方塊,每次都給你最不需要的方塊。對于這個變態版 Wordle,結果 3Blue1Brown 的程序也挑戰成功。

        如果你看到這里也想挑戰這個變態版試試,可以復制下方鏈接。

        視頻傳送門:

        https://www.youtube.com/c/3blue1brown/videos

        原版游戲地址:

        https://www.powerlanguage.co.uk/wordle

        變態版游戲地址:

        https://qntm.org/files/absurdle/absurdle.html


          推薦閱讀

          山東聯通寬帶:同一賬號限最多同時接入 15 個終端(含手機電腦電視等),超出視為違約可停網

          2 月 9 日消息,近期,山東聯通寬帶的一則條款引起用戶爭議,要求一個寬帶賬號最多只能同時接入 15 個終端,超出可視為違約,如今一個家庭中,特別是在打造智能家居的趨勢下,電腦、平板電腦、手機、智能音箱、>>>詳細閱讀


        本文標題:數學科普人士攻克火爆猜字游戲 Wordle

        地址:http://www.hnbrwh.com/lsqh/41176.html

        關鍵詞: 探索發現

        樂購科技部分新聞及文章轉載自互聯網,供讀者交流和學習,若有涉及作者版權等問題請及時與我們聯系,以便更正、刪除或按規定辦理。感謝所有提供資訊的網站,歡迎各類媒體與樂購科技進行文章共享合作。

        網友點評
        自媒體專欄

        評論

        熱度

        精彩導讀
        欄目ID=71的表不存在(操作類型=0)
        成 人 黄 色 网站 小说 免费
        1. <strike id="voekh"><bdo id="voekh"></bdo></strike>
          <button id="voekh"><acronym id="voekh"></acronym></button>

          <s id="voekh"></s>

            <span id="voekh"></span>
          1. <li id="voekh"><acronym id="voekh"></acronym></li>
            <th id="voekh"></th>