1. 一文學透Crane DSP預測演算法
在《Effective HPA:預測未來的彈性伸縮產品》一文中,我們提到原生HPA存在不足之處,基於閾值被動響應機制的滯後性與眾多應用冷啟動慢等問題導致很大一部分應用無法安心配置彈性。針對這一問題,Crane引入了DSP(Digital Signal Processing,數字信號處理)演算法的預測機制,確保在閾值到達之前就能提前感知並使應用提前彈出,確保冷啟動慢的應用也能有效利用彈性。
在技術交流群中,不斷有人問及DSP演算法的原理和細節,因其依賴的傅里葉變換號稱上個世紀最強演算法甚至有史以來最強演算法,涉及很多數學基礎,學習門檻很高。因此,有必要撰寫本文,將對該演算法的細節以及Crane如何應用該演算法進行公開,為方便閱讀,本文會盡量減少勸退的數學公式的出現次數。
傅里葉變換是一種線性積分變換,用於信號在時域和頻域之間的變換。任何周期函數,都可以看作是不同振幅、不同相位正弦波的疊加。通過觀察頻域,可以直觀地看到復雜曲線是由頻率、振幅、相位的組合構成的。在真實世界中,我們獲得的信號基本都是經過采樣後的離散信號,處理這類信號時,離散傅里葉變換(DFT)更為適用。
離散傅里葉變換是一種將離散時間信號從時域轉換到頻域的方法,它能將信號投影到不同頻率空間上去。要確定投影的頻率,以及計算每個頻率的振幅和相位,我們需要了解復雜的周期信號可能會含有許多不同頻率的分量。通過傅里葉變換,任何時域信號都可以轉換成為正弦波的組合,而正弦函數又可以轉換為自然常數的對數形式。因此,自然的傅里葉變換公式可以以自然對數的形式表示。
在數學的世界裡,復平面可以用來表示單位圓上任意一點到圓心的向量,通過自然常數e的指數表示,並可以轉換成為正弦和餘弦函數的表示法。通過分治的方法快速計算傅里葉變換,基於復數的特性,可以實現減少大量重復計算的目的。FFT(快速傅里葉變換)主要分為兩個階段:位反轉和蝶形變換。Crane調用了go-dsp完成FFT的計算,整個過程與上述流程完全一致。
在實際應用中,Crane有如下操作:數據預處理、主周期判斷、預測與狀態更新。數據預處理包括填充缺失數據、去除異常數據;主周期判斷分為兩階段:首先對監控數據序列進行快速傅立葉變換,得到周期圖;計算序列的自相關函數,並根據最高峰點選出序列的主周期;預測調用FFT函數將時域指標數據轉換為頻域數據,過濾掉噪音,並調用逆快速傅里葉變換(IFFT),將頻域信號轉換成時域信號,作為下一個周期的預測數據;狀態更新將預測後的指標數據的下標,按采樣頻率轉換成timestamp,與對應的預測值組合成TimeSeries,並寫回TimeSeriesPrediction.Status。
本文從數學原理層面將預測原理講解清楚,Crane支持多種預測演算法,且演算法可靈活擴展。後續文章將推出在工程落地過程中所遇到的挑戰以及演算法優化內容,也計劃開源離線演算法有效性評估模塊,敬請留意。
2. 大家都知道,腦子這個好東西,那現如今我們模仿得怎麼樣了
統計數據顯示,目前全球約有20家左右的企業致力於模仿人腦的研究,這些企業的融資輪次大多集中在A輪,但每家企業獲得的融資額至少有數千萬,甚至超過1億元。其中,有一家公司成功上市,大約有3家公司完成了新產品的批量生產。盡管面臨著許多難以解決的問題,類腦計算已經開始從實驗室走向商業化的探索。據政府部門預測,到2035年,類腦計算的市場規模將達到約200億美元。就在這個月,美國宣布投入5億美元啟動腦計劃2.0,准備製作出史上最強大的人類大腦細胞圖譜。這一計劃與曾經的基因組計劃相媲美,將有助於我們解決當前類腦計算科學研究中的許多謎題。那麼,模仿人腦的工作進行得如何了呢?經過與行業專家多次交流,我們撰寫了這份《類腦計算產業深度報告》,試圖為大家提供一個全面的答案。
在技術篇中,我們了解到,目前類腦計算正處於從計算智能到感知智能的過渡階段。人工智慧近年來在信息處理和計算速度上取得了令人矚目的進展,但與人類大腦相比,其基於的神經網路演算法(DNN)在效率和功耗方面仍有待提高。類腦計算因此受到了關注。從定義上來說,類腦計算分為廣義和狹義兩種。狹義的類腦計算是指模仿大腦神經結構和原理的新型神經形態計算,學界稱之為Brain-like Computing。廣義的類腦計算則在模仿大腦結構和原理的基礎上,結合了傳統的神經網路演算法(ANN)和具有類腦特徵的異構神經元網路,學界稱之為Brain-inspired Computing。與DNN不同,類腦計算的探索重點是SNN網路。
在硬體生態篇中,我們了解到,類腦計算技術的硬體生態主要包括類腦晶元和新式存儲器。類腦晶元主要分為三類,包括適用於脈沖神經元網路的TrueNorth、Loihi、達爾文處理晶元等;適用於人力和脈沖神經元網路的異構結合處理晶元:天手錶機芯、Loihi2、領鍵滾高啟KA200;適用於神經元程序編寫的腦模擬平台:SpiNNaker、BrainScaleS、領啟KA200等。新式存儲器主要是指憶阻器,它結構緊湊、集成度高,本質上一個就能實現神經突觸功能,可大大提高神經遞質的密度,是以硬體方面實現類腦神經元網路高效方式之一。
從研究進度來看,歐美國家總體上具有先發優勢。類腦計算的概念最早在上個世紀80年代由美國專家CuverMead提出。1995年,瑞士蘇黎世聯邦理工學院和蘇黎世大學首先共同創立了神經信息研究所(INI),開啟了類腦計算研究的首例。到2004年左右,這項技術開始得到了IBM、曼徹斯特大學等多家知名機構的支持。隨後,越來越多的機構加入了這一領域。總體來看,海外主要是以IBM、英特爾、德國海德堡大學、曼徹斯特大學等為代表,成果包括以下幾個方面:
中國的類腦計算探索始於2014年左右,以清華大學、浙江大學、中科院等為代表,主要成果包括異構體(SNN+ANN)結合的「天璣」晶元、達爾文處理晶元以及由該處理晶元組成的類腦計算機等。
3. 最強AlphaGo是怎樣煉成的
最強AlphaGo Zero怎樣煉成
剛剛,Deepmind在Reddit的Machine Learning板塊舉辦了在線答疑活動AMA,Deepmind強化學習組負責人David Silver和其同事熱情地回答了網友們提出的各種問題。由於在AMA前一天Deepmind剛剛發表了《Mastering the game of Go without human knowledge》(不使用人類知識掌握圍棋)的論文,相關的提問和討論也異常熱烈。
什麼是AMA?
AMA(Ask Me Anything)是由Reddit的特色欄目,你也可以將其理解為在線的「真心話大冒險」。AMA一般會約定一個時間,並提前若干天在Reddit上收集問題,回答者統一解答。
本次Deepmind AMA的回答人是:
David Silver:Deepmind強化學習組負責人,AlphaGo首席研究員。David Silver1997年畢業於劍橋大學,獲得艾迪生威斯利獎。David於2004年在阿爾伯塔大學獲得計算機博士學位,2013年加盟DeepMind,是AlphaGo項目的主要技術負責人。
Julian Schrittwieser:Deepmind高級軟體工程師。
此前有多位機器學習界的大牛/公司在Reddit Machine Learning版塊開設AMA,包括:Google Brain Team、OpenAI Research Team 、Andrew Ng and Adam Coates、Jürgen Schmidhuber、Geoffrey Hinton、Michael Jordan 、Yann LeCun、Yoshua Bengio等。
我們從今天Deepmind的AMA中選取了一些代表性的問題,整理如下:
關於論文與技術細節
Q: Deepmind Zero的訓練為什麼如此穩定?深層次的增強學習是不穩定和容易遺忘的,自我對局也是不穩定和容易遺忘的,如果沒有一個好的基於模仿的初始化狀態和歷史檢查點,二者結合在一起應該是一個災難...但Zero從零開始,我沒有看到論文中有這部分的內容,你們是怎麼做到的呢?
David Silver:在深層增強學習上,AlphaGo Zero與典型的無模式演算法(如策略梯度或者Q學習)採用的是完全不同的演算法。通過使用AlphaGo搜索,我們可以極大改進策略和自我對局的結果,然後我們會用簡單的、基於梯度的更新來訓練下一個策略及價值網路。比起基於簡便的基於梯度的策略改進,這樣的做法會更加穩定。
Q:我注意到ELO等級分增長的數據只與到第40天,是否是因為論文截稿的原因?或者說之後AlphaGo的數據不再顯著改善?
David Silver:AlphaGo已經退役了!這意味著我們將人員和硬體資源轉移到其他AI問題中,我們還有很長的路要走吶。
Q:關於論文的兩個問題:
Q1:您能解釋為什麼AlphaGo的殘差塊輸入尺寸為19x19x17嗎?我不知道為什麼每個對局者需要用8個堆疊的二進制特徵層來描述?我覺得1、2個層就夠了啊。雖然我不是100%理解圍棋的規則,但8個層看起來也多了點吧?
Q2:由於整個通道使用自我對局與最近的/最好的模型進行比較,你們覺得這對於採用參數空間的特定SGD驅動軌跡對否會有過擬合的風險?
David Silver:說起來使用表徵可能比現在用的8層堆疊的做法更好!但我們使用堆疊的方式觀察歷史數據有三個原因:1)它與其他領域的常見輸入一致;2)我們需要一些歷史狀態來表示被KO;3)如果有一些歷史數據,我們可以更好地猜測對手最近下的位置,這可以作為一種關注機制(註:在圍棋中,這叫「敵之要點即我之要點」),而第17層用於標注我們現在究竟是執黑子還是白子,因為要考慮貼目的關系。
Q:有了強大的棋類引擎,我們可以給玩家一個評級——例如Elo圍棋等級分就是通過棋手對局的分析逐步得出的,那麼AlphaGo是否可以對過去有等級分前的棋手的實力進行分析?這可能為研究人類的認知提供一個平台。
Julian Schrittwieser:感謝分享,這個主意很棒!
我認為在圍棋中這完全可以做到,或許可以用最佳應對和實際應對的價值差異或者政策網路給每一手位置評估得到的概率來進行?我有空的時候試一下。
Q: 既然AlphaGo已經退役了,是否有將其開源的計劃?這將對圍棋社區和機器學習研究產生巨大的影響。還有,Hassabis在烏鎮宣稱的圍棋工具將會什麼時候發布?
David Silver:現在這個工具正在准備中。不久後你就能看到新的消息。
Q:AlphaGo開發過程中,在系統架構上遇到的最大障礙是什麼?
David Silver:我們遇到的一個重大挑戰是在和李世石比賽的時候,當時我們意識到AlphaGo偶爾會受到我們所謂的「妄想」的影響,也就是說,程序可能會錯誤理解當前盤面局勢,並在錯誤的方向上持續許多步。我們嘗試了許多方案,包括引入更多的圍棋知識或人類元知識來解決這個問題。但最終我們取得了成功,從AlphaGo本身解決了這個問題,更多地依靠強化學習的力量來獲得更高質量的解決方案。
圍棋愛好者的問題
Q:1846年,在十四世本因坊跡目秀策與十一世井上幻庵因碩的一盤對局中,秀策下的第127手讓幻庵因碩一時驚急兩耳發赤,該手成為扭轉敗局的「耳赤一手」。如果是AlphaGo,是否也會下出相同的一首棋?
Julian Schrittwieser:我問了樊麾,他的回答是這樣的:
當時的圍棋不貼目,而AlphaGo的對局中,黑棋需貼7.5目。貼目情況不同造成了古今棋局的差異,如果讓AlphaGo穿越到當年下那一手,很有可能下的是不同的另一個地方。
Q:從已發布的AlphaGo相互對局看,執白子的時間更為充裕,因而不少人猜測,7.5目的貼目太高了(註:現代圍棋的貼目數也在不斷變化,如在30年前,當時通行的是黑子貼白子5.5目)。
如果分析更大的數據集,是否可以對圍棋的規則得出一些有趣的結論?(例如,執黑或者執白誰更有優勢,貼目應該更高還是更低)
Julian Schrittwieser:從我的經驗和運行的結果看,7.5目的貼目對雙方來說是均勢的,黑子的勝率略高一些(55%左右)。
Q:你能給我們講一下第一手的選擇嗎?ALphaGo是否會下出我們前所未見的開局方式?比如說,第一手下在天元或者目外,甚至更奇怪的地方?如果不是,這是否是一種「習慣」,或者說AlphaGo有強烈的「信念」認為星位、小目、三三是更好的選擇?
David Silver:在訓練中我們看到ALphaGo嘗試過不同方式的開局——甚至剛開始訓練的時候有過第一手下在一一!
即便在訓練後期,我們仍然能看到四、六位超高目的開局,但很快就恢復到小目等正常的開局了。
Q:作為AlphaGo的超級粉絲,有一個問題一直在我心中:AlphaGo可以讓職業棋手多少子?從論文中我們知道AlphaGo可以下讓子棋,我也知道AlphaGo恐怕讓不了柯潔兩子,但我想你們一定很好奇,你們是否有做內部測試?
David Silver:我們沒有和人類棋手下讓子棋。當然,我們在測試不同版本的時候下過讓子棋,在AlphaGo Master>AlphaGo Lee>ALphaGo Fan這三個版本中,後一個版本均可讓三子擊敗前一個版本。但是,因為AlphaGo是自我訓練的,所以尤其擅長打敗自己的較弱的前一版本,因此我們不認為這些訓練方式可以推廣到和人類選手的讓子棋中。
Q:你們有沒有想過使用生成對抗網路(GAN)?
David Sliver:從某種意義來講,自我對弈就是對抗的過程。每一次結果的迭代都是在試圖找到之前版本的「反向策略」。
傳言終結者
Q:我聽說AlphaGo在開發初期被引導在某一個具體的方向訓練以解決對弈中展現出的弱點。現在它的能力已經超過了人類,是否需要另外的機制來進一步突破?你們有做了什麼樣的工作?
David Silver:實際上,我們從未引導過AlphaGo來解決具體的弱點。我們始終專注於基礎的機器學習演算法,讓AlphaGo可以學習修復自己的弱點。
當然你不可能達到100%的完美,所以缺點總會存在。 在實踐中,我們需要通過正確的方法來確保訓練不會落入局部最優的陷阱,但是我們從未使用過人為的推動。
關於DeepMind公司
Q:我這里有幾個問題:在DeepMind工作是什麼感受?AlphaGo團隊成員都有誰?你能介紹一下AlphaGo團隊工作分配的情況嗎?下一個重大挑戰是什麼?
David Silver:在DeepMind工作感覺好極了:)——這不是一個招聘廣告,但我感覺每天可以在這里做我喜歡的事實在是太幸運了。有很多(多到忙不過來!:))很酷的項目去參與。
我們很幸運有許多大牛在AlphaGo工作。您可以通過查看相應的作者列表來獲取更詳細的信息。
Q: 你覺得本科生是否可以在人工智慧領域取得成功?
Julian Schrittwiese:當然。我本人就只有計算機科學學士學位,這一領域變化迅速,我認為您可以從閱讀最新的論文和試驗中來進行自學。另外,去那些做過機器學習項目的公司實習也是很有幫助的。
關於演算法的擴展和其他項目
Q:Hassabis今年三月份在劍橋的一個演講中表示,AlphaGo項目未來目標之一是對神經網路進行解釋。我的問題是:ALphaGo在神經網路結構上取得了什麼樣的進展,或者說,對AlphaGo,神經網路仍然是神秘的黑盒子?
David Silver:不僅僅是ALphaGo,可解釋性是我們所有項目的一個非常有意思的課題。Deepmind內部有多個團隊從不同方式來探索我們的系統,最近有團隊發表了基於認知心理學技術去嘗試破譯匹配網路內部發生了什麼,效果非常不錯!
Q: 很高興看到AlphaGo Zero的好成績。我們的一篇NIPS論文中也提到了對於深度學習和搜索樹之間效率的相似問題,因此我對於在更長的訓練過程中的行為尤其感興趣。
AlphaGo的訓練過程中,創建學習目標的蒙特卡洛樹搜索的貪心演算法、策略網路的貪心演算法、以及在訓練過程中價值功能變化的貪心演算法之間的相對表現如何?這種自我對局學習的方法是否可以應用在最近的星際爭霸 II API中?
David Silver:感謝介紹您的論文!真不敢相信這篇論文在我們4月7日投稿的時候已經發布了。事實上,它與我們的學習演算法的策略組件非常相似(盡管我們也有一個值組件),您可以參考我們的方法和強化學習中的討論,也很高興看到在其他游戲中使用類似方法。
Q:為什麼早期版本的AlphaGo沒有嘗試自我對弈?或者說,AlphaGo之前也嘗試過自我對弈但效果不好?
我對這個領域的發展和進步程度感到好奇。相比起今天,在兩年前在設計一個自主訓練的AlphaGo的瓶頸在哪裡?今天我們見到的「機器學習直覺」又是經歷了什麼樣的系統迭代過程?
David Silver:創建一個可以完全從自我學習的系統一直是加強學習的一個開放性問題。 我們最初的嘗試包括你能查到的許多類似的演算法,是相當不穩定的。 我們做了很多嘗試,最終AlphaGo Zero演算法是最有效的,而且似乎已經破解了這個特定的問題。
Q:你認為機器人什麼時候能夠有效解決現實世界關於高度、尺寸方面的問題(例如,自己學習如何抓取任何形狀、尺寸、位置垃圾的設備)?策略梯度方法是否是實現這一目標的關鍵點?
Julian Schrittwieser:這主要是由於價值/政策網路上的雙重改進,包括更好的訓練和更好的架構。具體參見論文圖4對不同網路架構的比較。
Q:據說擊敗柯潔的ALphaGo Master的功耗只是擊敗李世石的AlphaGo Lee的1/10。你們做了什麼樣的優化呢?
Julian Schrittwieser:這主要是由於價值/政策網路上的雙重改進,包括更好的訓練和更好的架構。具體參見論文圖4對不同網路架構的比較。(你確認不是上一個問題的答案嗎)
Q:看起來在增強學習中使用或模擬Agent的長期記憶是一個很大的障礙。 展望未來,您覺得我們是否能以一種新的思維方式解決這一點? 還是說需要等待我們技術可以實現一個超級網路?
Julian Schrittwieser:是的,長期記憶可能是一個重要的因子,例如在「星際爭霸」游戲中,你可能已經做出了上千個動作,但你還要記住你派出的偵察兵。
我認為現在已經有了令人振奮的組件(神經圖靈機!),但是我認為我們在這方面仍有很大的改進空間。
Q:David,我看過你的演講視頻,你提到增強學習可以用於金融交易, 你有沒有真實世界的例子? 你會如何處理黑天鵝事件(過去沒有遇到過的情況)?
David Silver:已經發表增強學慣用於現實世界的財務演算法的論文非常少見,但有一些經典論文值得一看,例如Nevmyvaka、Kearns在2006寫的那篇和Moody、Safell在2001年寫的那篇。
Q:你們和Facebook幾乎同時研究圍棋問題,你們能更快獲得大師級表現的優勢是什麼?
對於那些無法獲得像AlphaGo如此多的訓練數據的領域如何開展機器學習或者增強學習?
David_Silver:Facebook更側重於監督學習,我們選擇更多地關注強化學習,因為我們認為AlphaGo最終將超越人類的知識。 我們最近的結果實際上表明,監督學習方法可以讓人大吃一驚,但強化學習絕對是遠遠超出人類水平的關鍵之處。