聽說你最近在刷題- 軟體工程師的面試一定會遇到的資料結構及演算法關卡 (& 分享 LeetCode 折扣)& LeetCode Premium 抽獎啦(2021- 9 月更新)
-----------------------------
2021年 9 月更新:
從 8 月開始,收到許多剛到美國唸書的讀者來信請求幫忙內推 2022 年暑假的實習工作,如果你還不知道的話, 請查看我另外一篇文章來了解內推網路:最有效得到面試的方式- 內部推薦: 尋找內推資源 & 歹晚郎互助網絡 (2021 年 8 月更新)。軟體工程師的面試關卡很多都是資料結構及演算法, 所以大家在準備實習也都不免俗的要刷題一下。 我許久沒有看 LeetCode, 發現現在 LeetCode 的功能越來越多, 還有像是學習資源文章及 study plan 的功能,把大家要準備面試的各種需求都越來越在他們網站上一站搞定。 今天除了再次分享去年寫的文章(還有折扣碼), 還要大大感謝 LeetCode 願意提供 3 個 7 天 Premium 會員試用來給予讀者, 讓大家面試前可以使用如公司 tag 的功能來做複習。 此外感謝大家一直以來的支持, 我也自掏腰包提供購買 3 個 1 個月的 Premium 會員試用來加碼, 再請大家做以下動作參加抽獎歐!
✅ 按讚並留言你希望用 LeetCode 達到什麼目標 (轉職、實習面試、換工作,可以寫一寫細節像是目標公司、職位等), 或是你過去使用 LeetCode 的心得、或者是自己未來職業目標等等, 也可以是找朋友來一起練習。
✅ 公開分享此篇文章的話多一次被抽中的機會
獎項: 共 6 個名額,3 個 7 天 Premium 試用會隨機抽出, 3 個 1 個月的 Premium 試用則用留言內容來挑選, 希望抽出給很需要、或是很有創意的留言, 哈!
活動期間到加州時間下週四 9/9 晚上 9 點截止。會直接於文中留言通知中獎,祝大家學習愉快、找實習、換工作都順利!
--------------------------
2020 年 12 月原文:
歐, 要澄清一下我現在沒有在刷題 (我這樣講絕對不是怕很多同事會看到我的文章 XD), 說實在的, 我覺得大家好像太過度強調 “刷”題的刷, 好像刷油漆似的要來回刷很多遍。 我過往看過許多刷幾百題、每題做 2、3、4 次以上的人分享他們的經驗, 我很佩服他們投入的時間及毅力, 但我自知做不到, 有小孩後更是難以做到刷一遍。 我自己找軟體工程師的工作的經驗, 2015 年上完 Coding Bootcamp 到找到工作, 大概做了 60 題左右的 LeetCode 問題, 2016 年底找工作比較認真, 大概完成了 100 題左右。 今天這篇文章想要分享一下我的演算法準備方式, 如果你想要找如何刷題的方式,或是覺得無法刷幾百題很多遍的人, 歡迎往下閱讀。
2015 年上完 Coding Bootcamp 後, 我陸續有一些電話面試, 每天可能會有 1~3 個電話面試, 所以在準備面試上, 要研究公司, 並且依照職缺來做面試的複習, 因為我是面試前端相關的職缺, 所以也有一部分的精力在前端的資料複習。 關於資料結構及演算法 (Data Structures & Algorithms) 的練習,我大概維持一天練習 1-2 題的步調。 2016 年底的面試, 因為還要上班, 所以基本上只有晚上有時間, 可能一天只能練習 1 題, 假日有比較多時間才可以多做幾題。
看到問題的時候, 我會先確保我了解題目的意思, 真正在面試的時候, 通常第一步也是和面試官確認我們自我的理解和面試官要問的是否一致, 不要花了時間才發現一開始的理解及假設是錯誤的。 我通常會立刻寫下題目給予的 input 有什麼、格式是什麼, desired output 又是什麼。
確認好 input & output 後, 我會思考題目可以用什麼類型的資料結構或是演算法來解。 通常在面試的時候, 我會和面試官說明我可能會先就一個大概可行的方式來做解答, 如果他/她覺得沒有什麼問題的話, 我再做後續的優化。 在我開始有一些思路後, 我會先寫下 pseudo code, 就是先用英文來說明我的解法會是怎麼樣。 每個步驟和面試官確認都沒有問題後, 我才會正式寫 code 。
當然有些時候不論怎麼想都寫不出來, 如果是自己練習的時候,我大概在 15 分鐘後會開始看一些討論, 嘗試學習別人的思路, 但如果再花 10 分鐘還是解不出來的話, 才會參考別人的解法。 我看完別人的答案後, 還是會用自己的 code 再實現一次。 如果面試中卡住的話, 則是要儘快和面試官討論, 我會把我的理解, 可能的解法方式和面試官說, 同時也說明我的情況可能哪裏不是很確定, 讓面試官在適當的時候可以給予我提示。 一般來說, 公司都是希望有順利的面試經驗, 面試官也都願意在溝通正常下給予協助。
自己練習寫完之後, 我會再寫出解法的空間及時間複雜度 (Space & Time Complexity) , 通常面試也會詢問這個部分, 所以自己每個練習也要歸納一下。 如果我發現我的解法時間可能不是太好, 我會再嘗試看不同人的討論, 研究更優化的解法, 並再自己寫出不一樣的解法。 有些比較棘手的問題我可能會寫 2、3 個解法比較彼此的優缺點。
在之前準備面試的時候, 我有準備一本筆記本, 每次寫完問題之後, 我會用筆寫下我在哪一天寫了哪一個問題, 並且用很精簡的方式總結問題及解法。 隔天要做下一題之前, 我會先看一下前一天的問題, 嘗試回想我是否可以再次在頭腦中想出大致的解法。 如果還是不行的話, 再看我自己的總結並做上記號, 隔天會再做一次同樣的步驟,直到我可以順利複習出解題的邏輯思路。
如果有和公司面試, 不論是電話還是 onsite, 面試完後我會再檢查我遇到的題目是否和我過去做過的題目類似, 如果有的話, 是否我的思路在面試中是清晰及正確的, 如果沒有的話, 我是否有利用對的觀念來解答。 面試結束後, 會花時間在盤點及複習, 從面試中的題目和過往的練習做統整。
你可以看到我的練習方式不是很強調快, 因為我希望我做完問題可以有很深的理解, 所以花很多時間在做整理、複習確認, 即使當下沒有那麼理解, 隔天回想又想不出的話, 我會再複習一次, 再隔一天做新題前也會再確認。 複習及思考的次數多了,真正把題目所想要考的觀念融會貫通, 畢竟面試很難真的遇到原題, 重點是我們對於資料結構及演算法的理解, 及遇到難題如何面對的應對的思考過程。
條條大路通羅馬, 每個人面試準備的方式都不太一樣, 以上就是我的資料結構及演算法的準備方式, 之前寫找工作的系列文章好像沒有特別提這塊, 所以特別再寫出來分享。當然我不是大神每次面試都可以收割 5 到 10 個以上 offer, 所以就請你自己斟酌評估你的學習方法,畢竟我們都要找到對自己最能接受、且有效率的方式來準備面試 。
我從 2015 、2016 年準備面試的時候, 有許多練習演算法的網站, 但到了今日, 好像 LeetCode 和練習演算法關係就如同 Google 和搜尋一樣, 大部分我聽到的準備面試的人都用 LeetCode 來做練習了! 剛好最近認識一位在 LeetCode 工作的朋友牽線, LeetCode 特別優惠讀者, 只要使用這個連結購買 Premium, 就能有 15% 優惠 (幾乎和一年一度的感恩節特價差不多了!)。
我目前聽到朋友準備面試基本上都會購買 LeetCode 的 Premium, Premium 最大的好處就是可以看到問題和公司的標註, 拿過去拒絕我 2 次的 Google 為例 (XD), LeetCode 就有 925 道題目被大家回報有在 Google 面試中看到 (2021 年已經變成 1014 道了! @@), 當你正要 phone or onsite interview 的時候, 可以聚焦你要面試的公司練習、提高效率的話還是可以提高面試的表現的。 Premium 還有答題評斷比較快、LeetCode 官方解答、及依據公司有 Mock interviews 等其他功能, 但主要大家好像都還是為了 company tag 的功能而付費, (2021 年 9 月更新, 最近又有如文章、影片的學習資源,還有像是 Study Plan 的功能, 看起來 LeetCode 要往大家學習、準備、一站式的服務來黏住使用者了!)
相信以大家拿到 offer 後的加薪, 會覺得這是個很好的投資!(什麼, 你說不一定會加薪, 那請你再閱讀一下我的談判文章來和公司談判加薪 "面試中談到錢怎麼辦? 問到你期望薪水如何接招?" 及"面試得到 Offer 薪水如何談? 三明治溝通法及最後簽約前的談判招式") 。
我當初有想說要直播訪問在 LeetCode 的朋友, 探討 LeetCode 最近幾年的快速發展、及如何幫助軟體工程師及公司行號, 可惜目前朋友還沒有意願, 如果大家有興趣的話, 請在文章留言, 讓她可以看到大家的意願加強她的動力和我們分享 (群眾多數暴力啊!)。
附上過去我寫的找工作系列文章:
1. 程式語言- 到底學哪個好?我想進Google,我沒學OOO,他們會接受我XXX語言背景嘛?
2. 簡介美國軟體工程師面試流程
3. 等待機緣- 我要如何被人資或獵人頭發現? 我要如何脫穎而出? LinkedIn重要嘛?
4. 主動出擊- 我要找工作了,現在美國都用什麼找工作?哪個網站平台能讓我有較多面試機會?
5. 軟體工程師面試準備- 面試要練習什麼? 找工作和練習的時間要如何平衡拿捏?
6. 被錄取了- 我該注意什麼,我可以談判要求多一點薪水、股票或假期嘛?
7. 矽谷找工作之常見問題 FAQ
8. 面試技巧及心得,如何有條理的說服面試官?
9. 英文履歷怎麼寫? 美國科技公司注重什麼?
10. 如何到美國科技公司工作?
11. 最有效得到面試的方式- 內部推薦: 尋找內推資源 & 歹晚郎互助網絡
12. 面試中談到錢怎麼辦? 問到你期望薪水如何接招?
13. 面試得到 Offer 薪水如何談? 三明治溝通法及最後簽約前的談判招式
2021 年, 如果你要找工作的話, 祝你轉換順利, 拿到許多理想的 offers! 如果你有什麼準備的技巧及心得, 也歡迎留言分享。
部落格原文:
https://bit.ly/3zNrluU
演算法空間複雜度 在 Taipei Ethereum Meetup Facebook 的最佳貼文
📜 [專欄新文章] 區塊鏈管線化的效能增進與瓶頸
✍️ Ping Chen
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
使用管線化(Pipeline)技術可以提升區塊鏈的處理效能,但也可能會產生相應的代價。
Photo by tian kuan on Unsplash
區塊鏈的擴容方案
說到區塊鏈的效能問題,目前討論度最高的應該是分片(sharding)技術,藉由將驗證者分成多組的方式,可以同時分別處理鏈上的交易需求,即使單分片效能不變,總交易量可以隨著分片/驗證者集的數量線性增加。
除了分片,另一個常用來提升程式效能的方案是將計算步驟拆解,以流水線的方式將複雜的運算攤平,降低系統的閒置時間,並大幅提升工作效率。為了達到管線化預期的目的,會需要先知道系統的瓶頸在哪。
區塊鏈的效能瓶頸
熟悉工作量證明設計哲學的人應該會知道,區塊鏈之所以需要挖礦,並不是為了驗證交易的正確性,而是要決定交易的先後順序,從而避免雙花和帳本分裂的發生。可以說,區塊鏈使用低效率的單線程設計,並付給礦工高額的成本,都只為了一件事,就是對交易的全局排序產生共識。
在這樣的基礎之上,區塊鏈在一段時間內可以處理的交易數量是有限的,這之中包含許多方面的限制,包括 CPU 效能、硬碟空間、網路速度等。其中,關於 TPS(每秒交易數) 提升和對硬體的要求大致上是線性增加的,但在設計共識演算法時,通訊複雜度常是平方甚至三次方的關係。
以現在的目標 TPS 來說,處理交易和生成一個合法的區塊並不困難,只是因為區塊鏈的特性,新區塊需要透過洪水法的方式擴散到全網路,每個節點在收到更新請求的時候都要先執行/驗證過區塊內的交易,等於整個廣播的延時會是「驗證區塊時間×經過的 hop 數量」這麼多。似乎網路越分散、節點越多,我們反而會需要降低計算量,以免讓共識不穩定。
管線化的共識機制
使用權益證明取代工作量證明算是行業發展的趨勢,除了環保或安全這些比較顯然的好處之外,權益證明對產生共識的穩定性也很有幫助。首先,權益證明在同一時間參與共識的節點數是已知的,比較容易控制數量級的邊界;其次,權益證明的出塊時間相較工作量證明固定很多,可以降低計算資源不足或閒置的機率。
相較於工作量證明是單一節點出塊,其餘節點驗證,權益證明的出塊本身就需要很多節點共同參與,瓶頸很像是從驗證轉移到通訊上。
以 PBFT 為例,每次產新區塊都需要經過 pre-prepare, prepare, commit 三個階段,你要對同意驗證的區塊簽名,還要對「你有收到某人的簽名」這件事簽名,再對「你有收到 A 說他有收到 B 的簽名」這件事簽名,過程中會有很多簽名飛來飛去,最後才能把一個區塊敲定。
為了降低每兩個區塊間都需要三輪簽名造成的延遲,後來的共識演算法包括 HotStuff 和 Casper FFG 採用了管線化的區塊驗證過程。也就是對區塊 T 的 pre-prepare 同時是對 T-1 的 prepare 和對 T-2 的 commit。再加上簽名聚合技術,出塊的開銷在複雜度等級和係數等級都降低許多。
然而,要保持管線化的區塊生產順利,需要驗證者集合固定不變,且網路通訊狀況良好。如果會經常更動驗證者集合或變換出塊的領導者,前後區塊間的相依性會是個大問題,也就是 T 的驗證者集合取決於 T-1 裡有沒有會導致刪除或新增驗證者的交易,T-1 的合法性又相依於 T-2,以此類推。
當激烈的分叉出現的時候,出塊跟共識的流水線式耦合就從優雅變成災難了。為了避免這種災難,更新的共識演算法會限制驗證者變更的時機,有些叫 epoch 有些叫 checkpoint,每隔一段時間會把前面的區塊徹底敲定,才統一讓驗證者加入或退出。到這些檢查點的時候,出塊的作業流程就會退化成原本的三階段驗證,但在大部分時候還是有加速的效果。
管線化的狀態更新
另一個可以用管線化加速的是區塊鏈的狀態更新。如前所述,現在公鏈的瓶頸在於提高 TPS 會讓區塊廣播變慢,進而導致共識不穩定,這點在區塊時間短的以太坊上尤其明顯。可是如果單看執行一個區塊內的交易所花的時間的話,實際上是遠遠低於區塊間隔的。
只有在收到新區塊的時候,節點才會執行狀態轉移函數,並根據執行結果是否合法來決定要不要把區塊資訊再廣播出去。不過其實只要給定了交易集合,新的狀態 s’ = STF(s, tx) 應該是確定性的。
於是我們有了一個大膽的想法:何不乾脆將交易執行結果移出共識外呢?反正只要大家有對這個區塊要打包哪些交易有共識,計算的結果完全可以當作業留給大家自己算吧。如果真的不放心,我們也可以晚點再一起對個答案,也就是把這個區塊執行後的新狀態根包在下個區塊頭裡面。
這就是對狀態更新的管線化,在區塊 T 中敲定交易順序但暫不執行,區塊 T+1 的時候才更新狀態(以及下一批交易)。這麼做的好處十分顯而易見,就是將原本最緊繃的狀態計算時間攤平了,從原本毫秒必爭的廣播期移出來,變成只要在下個塊出來之前算完就好,有好幾秒的時間可以慢慢來。新區塊在廣播的每個 hop 之間只要驗證交易格式合法(簽名正確,有足夠的錢付手續費)就可以放行了,甚至有些更激進的方案連驗簽名都省略了,如果真的有不合法交易混進去就在下個區塊處罰礦工/提案者便是。
把負擔最重的交易執行移出共識,光用想的就覺得效能要飛天,那代價呢?代價是區塊的使用程度會變得不穩定。因為我們省略了執行,所以對於一筆交易實際用掉多少 gas 是未知的。本來礦工會完整的執行所有交易,並盡可能的塞滿區塊空間,然而在沒有執行的情況下,只能以使用者設定的 gas limit 當作它的用量,能打包的交易會比實際的上限少。
緊接著,下一個問題是退費困難。如果我們仍然將沒用完的手續費退還給使用者,惡意的攻擊者可以透過發送 gas limit 超大,實際用量很小的交易,以接近零的成本「霸佔」區塊空間。所以像已故區塊鏈 DEXON 就直接取消 gas refund,杜絕濫用的可能。但顯然這在使用者體驗和區塊空間效率上都是次優的。
而最近推出的 smartBCH 嘗試擬了一套複雜的退款規則:交易執行後剩餘的 gas 如果小於 gas limit 的一半(代表不是故意的)就退款;如果剩餘量介於 50%-75% 可以退一半;超過 75% 推斷為惡意,不退款。乍看是個合理的方案,仔細一想會發現製造的問題似乎比解決的還多。無論如何,沒用掉的空間終究是浪費了,而根據殘氣比例決定是否退款也不會是個好政策,對於有條件判斷的程式,可能要實際執行才知道走哪條路,gas limit 一定是以高的情況去設定,萬一進到 gas 用量少的分支,反而會噴更多錢,怎麼想都不太合理。
安全考量,退費大概是沒希望了。不過呢,最近以太坊剛上線的 EIP1559 似乎給了一點方向,如果區塊的使用程度能以某種回授控制的方式調節,即使偶爾挖出比較空的區塊似乎也無傷大雅,也許能研究看怎麼把兩者融合吧。
管線化方案的發展性
考慮到以太坊已經堅定地選擇了分片的路線,比較激進的單鏈高 TPS 管線化改造方案應該不太有機會出線,不過管線化畢竟是種歷史悠久的軟體最佳化技巧,還是很有機會被使用在其他地方的,也許是 VDF 之於信標鏈,也許是 rollup 的狀態轉換證明,可以坐等開發者們表演。
倒是那些比較中心化的 EVM fork/sidechain,尤其是專門只 for DeFi 的鏈,管線化加速可以在不破壞交易原子性的前提下擴容,確實是有一些比分片優秀的地方可以說嘴,值得研究研究,但這就要看那些機房鏈們有沒有上進心,願不願意在分叉之餘也投資發展自己的新技術了。
給我錢
ping.eth
區塊鏈管線化的效能增進與瓶頸 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
演算法空間複雜度 在 台灣物聯網實驗室 IOT Labs Facebook 的最讚貼文
為了讓 AI 不斷打怪升級,DeepMind 打造「宇宙」
作者 雷鋒網 | 發布日期 2021 年 07 月 30 日 8:15 |
DeepMind 又給我們小驚喜。我們都知道,強化學習苦於類化能力差,經常只能針對單個任務從頭學習。
DeepMind之前開發的AlphaZero,儘管可以玩圍棋、西洋棋和日本將棋,但每種棋牌遊戲都只能從頭訓練。類化能力差也是AI一直被詬病為人工智障的一大原因。人類智慧的厲害之處,就在藉鑑之前經驗迅速適應新環境。
但類化能力不是一蹴而就,就像玩遊戲,也是先做簡單任務,逐步升級到複雜任務。《空洞騎士》(Hollow Knight)一開始只需要隨意走動揮刀砍怪,但噩夢級難度的「苦痛之路」關,沒有前面累積的技巧,只能玩寂寞。
多任務宇宙
DeepMind此次採用「課程學習」,讓智慧體於不斷擴展升級的開放世界學習。也就是說,AI新任務(訓練資料)是基於舊任務不斷生成。智慧體可盡情鍛鍊自己,簡單的如「靠近紫色立方體」,複雜點的如「靠近紫色立方體或將黃色球體放在紅色地板」,甚至和其他智慧體玩耍,如捉迷藏──「找到對方,且不要被對方發現」。
每個小遊戲存在世界小角落,千千萬萬個小角落拼成龐大的物理模擬世界,如下圖的幾何「地球」。總體來說這個世界的任務由三個要素構成,即任務=遊戲+世界+玩家,並根據三要素關係,決定任務的複雜度。
複雜度的判斷有四個維度:競爭性、平衡性、可選項、探索難度。
比如「搶方塊」遊戲,藍色智慧體需要把黃色方塊放到白色區域,紅色智慧體需要把黃色方塊放到藍色區域。這兩個目標矛盾,因此競爭性較強;同時雙方條件對等,平衡性比較高;因目標簡單,所以可選項少;DeepMind把探索難度評為中上,可能是因定位區域算較複雜的場景。
再如「球球喜歡和方塊一起玩」遊戲,藍色和紅色智慧體有共同目標,讓相同顏色的球體和方塊放在相近位置。
這時競爭性自然很低,平衡性毋庸置疑很高的;可選項比上面遊戲高很多;探索難度沒有定位區域,智慧體隨便把球體和方塊放哪都行,難度就變小了。
基於這四個維度,DeepMind打造超大規模「宇宙」任務空間,幾何「地球」也只是這宇宙的小角落,是四維任務空間的一點。DeepMind將「宇宙」命名為XLand,包含數十億個任務。
來看XLand的全貌,由一系列遊戲組成,每個遊戲在許多模擬世界進行,這些世界的拓樸和特徵平滑變化。
終生學習
數據有了,接下來得找到合適的算法。 DeepMind發現,目標注意代理(GOAT)可學習更通用的策略。
具體來說,智慧體輸入包括第一視角的RGB圖像、本體感覺以及目標。經過初步處理後,生成中間輸出,傳遞給GOAT模組,會根據智慧體目前目標處理中間輸出的特定部分,邏輯分析目標。
邏輯分析是指,每個遊戲可藉由一些方法,構建另一個遊戲,並限制策略的價值函數的最優值上限或下限。
DeepMind提出一個問題:對每個智慧體,什麼樣的任務是最好的?換句話說,打怪升級時,什麼樣的關卡設置才讓玩家順利升級為「真」高手,而不是一刀9999?
DeepMind的答案是,每個新任務都基於舊任務生成,「不會太難,也不會太容易」。其實恰好是讓人類學習時感覺「爽」的興奮點。
訓練開始時,太難或太容易的任務可能會鼓勵早期學習,但會導致訓練後期的學習飽和或停滯。不要求智慧體某任務非常優秀,而是鼓勵終身學習,即不斷適應新任務。所謂太難、太容易是較模糊的描述。需要量化方法,在新任務和舊任務之間彈性連接。
怎麼不讓智慧體做新任務時不適應而「暴死」?進化學習就提供很好的靈活性。總體來說,新任務和舊任務同時進行,且每個任務有多智慧體參與「競爭」。舊任務適應好的智慧體,會選拔到新任務繼續學習。
新任務中,舊任務的優秀智慧體權重、瞬間任務分佈、超參數都會複製,參與新一輪「競爭」。除了舊任務的優秀智慧體,還有很多新人參與,這就引進隨機性、創新性、靈活性,不用擔心「暴死」問題。
當然,因任務不斷生成、動態變化,一個任務可訓練不同長處的智慧體,並往不同方向演化(隨著智慧體相對性能和強健性進行)。最終每個智慧體都會形成擅長任務的集合,就像春秋戰國時期「百家爭鳴」。說打怪升級顯得格局小,簡直是模擬地球。
DeepMind表示,「這種組合學習系統的特性是,不最佳化有界性能指標,而是更新定義的通用能力範圍,這使智慧體開放式學習,僅受環境空間和智慧體的神經網路表達能力的限制。」
智慧初現
最終這複雜「宇宙」升級、進化、分流的智慧體長成了什麼優秀物種?DeepMind說,智慧體有很明顯的零樣本學習能力,比如使用工具、合圍、數數、合作+競爭等。
來看具體例子。首先智慧體學會臨機應變。目標有三個:
黑色金字塔放到黃色球體旁邊
紫色球體放到黃色金字塔旁邊
黑色金字塔放到橙色地板
AI一開始找到一個黑色金字塔,想拿到橙色地板(目標3),但搬運過程瞄見黃色球體,瞬間改變主意,「我可以實現目標1啦」,將黑色金字塔放到黃色球體旁邊。
第二個例子是,不會跳高,怎麼拿到高台上的紫色金字塔?智慧體需要想辦法突破障礙,取得高台上的紫色金字塔,高台周邊並沒有類似階梯、斜坡的路。
因不會跳高,所以智慧體「掀桌子」,把周邊幾塊豎起來的板子弄倒。然後一塊黑色石板剛好倒在高台邊,「等等,這不就是我要的階梯嗎?」這過程是否體現了慧體的智慧,還無法肯定,可能只是一時幸運。關鍵還是,要看統計數據。
經過5代訓練,智慧體在XLand的4千個獨立世界玩了約70萬個獨立遊戲,涉及340萬個獨立任務,最後一代每個智慧體都經歷2千億次訓練步驟。智慧體已能順利參與幾乎每個評估任務,除了少數即使人類也無法完成的任務。
DeepMind的研究,或許一定程度體現「密集學習」重要性。也就是說,不僅資料量要大,任務量也要大。這也使得智慧體在類化能力有很好表現,如資料顯示,只需對一些新複雜任務進行30分鐘集中訓練,智慧體就可快速適應,而從頭開始用強化學習訓練的智慧體根本無法學習這些任務。
往後我們也期待這「宇宙」更複雜和生機勃勃,AI經過不斷演化,不斷給我們帶來驚喜(細思極恐)的體驗。
資料來源:https://technews.tw/2021/07/30/deepmind_xland/
演算法空間複雜度 在 时间复杂度和空间复杂度,大O表示法【数据结构和算法入门2】 的推薦與評價
详细文字教程: https://turingplanet.org 视频纲要: 00:45 - 时间复杂度, 大O表示法05:02 - 时间复杂度常用量级分析09:07 - 空间复杂度 相关系列: ... ... <看更多>
演算法空間複雜度 在 《代码随想录》LeetCode 刷题攻略:200道经典题目刷 ... 的推薦與評價
介绍:本项目是一套完整的刷题计划,旨在帮助大家少走弯路,循序渐进学算法,关注 ... 关于时间复杂度,你不知道的都在这里! ... 递归算法的时间与空间复杂度分析! ... <看更多>
演算法空間複雜度 在 評量演算法:時間複雜度和空間複雜度 的推薦與評價
空間複雜度 (Space Complexity)# ... 執行演算法所耗費的儲存空間與輸入資料量的關係,用S(n)來表示。同時間複雜度,會根據輸入資料量(n)與佔用空間的關係來作為衡量的標準, ... ... <看更多>