W!o+ 的《小伶鼬工坊演義》︰樹莓派 3 三兩事之 A.I. 篇

一場人機對奕, AlphaGo

Alphago_logo.svg

AlphaGo阿爾法圍棋,又暱稱阿爾法狗[1]阿法狗[2])是由英國倫敦Google DeepMind開發的人工智慧圍棋程式。2015年10月,它成為第一個無需讓子,即可在19路棋盤上擊敗圍棋職業棋士電腦圍棋程式。[3][4]2016年3月,在一場五番棋比賽中,AlphaGo於前三局以及最後一局均擊敗頂尖職業棋手李世乭,成為第一個不藉助讓子而擊敗圍棋職業九段棋士的電腦圍棋程式。[5]五局賽後韓國棋院授予AlphaGo為有史以來第一位名譽職業九段[6]

專業術語上來說,AlphaGo其做法是使用了蒙地卡羅樹狀搜尋與兩個深度神經網路相結合方法,其中一個是以估值網路來評估大量的選點,而以走棋網路來選擇落子。在這種設計下,電腦可以結合樹狀圖的長遠推斷,又可像人類的大腦一樣自發學習進行直覺訓練,以提高下棋實力。[7][8]

歷史

一般認為,電腦要在圍棋中取勝比在西洋棋等遊戲中取勝要困難得多,因為圍棋的分支因子大大多於其他遊戲,諸如暴力搜尋法Alpha-beta剪枝啟發式搜尋的傳統人工智慧方法在圍棋中很難奏效。[3][9]在1997年IBM的電腦「深藍擊敗俄籍世界西洋棋冠軍加里·卡斯帕羅夫之後,經過18年的發展,棋力最高的人工智慧圍棋程式才大約達到業餘5段圍棋棋手的水平,[10]且在不讓子的情況下,仍無法擊敗職業棋手。[3][4][11]2012年,在4台PC上執行的Zen程式在讓5子和讓4子的情況下兩次擊敗日籍九段棋士武宮正樹[12]。2013年,Crazy Stone在讓4子的情況下擊敗日籍九段棋士石田芳夫[13]

AlphaGo和之前的圍棋程式相比表現出顯著提升。在和Crazy Stone和Zen等其他圍棋程式的500局比賽中[14],單機版AlphaGo(執行於一台電腦上)僅輸一局[15]。而在其後的對局中,分散式版AlphaGo(以分散式運算執行於多台電腦上)在500局比賽中全部獲勝,且對抗運行在單機上的 AlphaGo 有 77% 的勝率。2015年10月的分散式運算版本AlphaGo使用1,202塊CPU及176塊GPU[10]

───

 

改寫了人工智慧的里程碑!!不知古之『奕秋』能有多少勝算??

論語.陽貨篇

宰我問:『三年之喪,期【時間】已久矣。君子三年不為禮禮必壞;三年不為樂樂必崩。舊穀既沒,新穀既升,鑽燧火,【一年】可已矣。』子曰:『食夫稻,衣夫錦,於女【你】安乎? 』曰:『。』『女安則為之!夫君子之居喪,食【脂】不甘,聞 ㄩㄝˋ 不樂 ㄌㄜˋ ,居處不安,故不為也。今女安,則為之!』宰我出。子曰:『予【宰我】之不仁也!子生三年,然後免於父母之懷。夫三年之喪,天下之通喪也。予也,有三年之於其父母乎?』

子曰:『飽食終日,無所用心,難矣哉!不有博弈者乎,為之猶乎已。』

。作者不知那編撰論語者是否有意這樣的安排篇章次序,彷彿孔老夫子以為宰我該去學學下圍棋,怎麼連個慎始敬終的棋理都不通的呢!如此看來圍棋起源實在很古早,有學者推測時間大約是公元前六世紀左右。據稱戰國時之弈秋是史籍記載的第一位高手,君不見《孟子‧告子上》有言︰

孟子曰:『無或乎王之不智也,雖有天下易生之物也,一日暴【曝】之,十日寒之,未有能生者也。吾見亦罕矣,吾退而寒之者至矣。吾如有萌焉何哉?今夫之為小數也;不專心致志,則不得也弈秋,通國之善弈者也。使弈秋二人,其一人專心致志弈秋之為;一人雖聽之,一心以為有鴻鵠將至,思援弓繳而射之,雖與之俱學,弗若之矣。為是其智弗若與?曰:非然也。』

於是乎圍棋成為古代知識分子修身養性的『必修課』,是為『琴棋書畫』四藝之一。這門古老的『博奕之術』有經典的嗎?在此僅舉北宋仁宗時的皇祐中翰林學士張擬所著《棋經》以饗讀者︰

張擬‧《棋經

論局
夫萬物之數,從一而起。局之路,三百六十有一。一者,生數之主,據其極而運四方也。三百六十,以象周天之數。分而為四,以象四時。隅各九十路,以象其日。外周七二路,以象其候。枯棋三百六十,白黑相半,以法陰陽。局之線道,謂之枰。線道之間,謂之罫。局方而靜,棋圓而動。自古及今,弈者無同局。《》曰:『日日新。』故宜用意深而存慮精,以求其勝負之由,則至其所未至矣

得算
棋者,以正合其勢,以權制其敵。故計定於內而勢成於外。戰未合而算勝者,得算多也。算不勝者,得算少也。戰已合而不知勝負者,無算也。兵法曰:『多算勝,少算不勝,而況於無算乎?由此觀之,勝負見矣。』

權輿
權輿者,弈棋布置,務守綱格。先於四隅分定勢子,然後拆二斜飛,下勢子一等。立二可以拆三,立三可以拆四,與勢子相望可以拆五。近不必比,遠不必乖。此皆古人之論,後學之規,捨此改作,未之或知。詩曰:『靡不有初,鮮克有終。

合戰
博弈之道,貴乎謹嚴。高者在腹,下者在邊,中者佔角,此棋家之常然。法曰:寧輸數子,勿失一先。有先而後,有後而先。擊左則視右,攻後則瞻前。兩生勿斷,皆活勿連。闊不可太疏,密不可太促。與其戀子求生,不若棄子取勢,與其無事強行,不若因之自補。彼眾我寡,先謀其生。我眾彼寡,務張其勢。善勝者不爭,善陣者不戰。善戰者不敗,善敗者不亂。夫棋始以正合,終以奇勝。必也,四顧其地,牢不可破,方可出人不意,掩人不備。凡敵無事而自補者,有侵襲之意也。棄小而不就者,有圖大之心也。隨手而下者,無謀之人也。不思而應者,取敗之道也。詩云:『惴惴小心,如臨于谷。

虛實
夫弈棋,緒多則勢分,勢分則難救。投棋勿逼,逼則使彼實而我虛。虛則易攻,實則難破。臨時變通,宜勿執一。《》曰:『見可而進,知難而退。

自知
夫智者見於未萌,愚者暗於成事。故知己之害而圖彼之利者,勝。知可以戰不可以戰者,勝。識眾寡之用者,勝。以虞待不虞者,勝。以逸待勞者,勝。不戰而屈人之棋者,勝。《老子》曰:『自知者明。

審局
夫弈棋布勢,務相接連。自始至終,著著求先。臨局離爭,雌雄未決,毫釐不可以差焉。局勢已贏,專精求生。局勢已弱,銳意侵綽。沿邊而走,雖得其生者,敗。弱而不伏者,愈屈。躁而求勝者,多敗。兩勢相違,先蹙其外。勢孤援寡,則勿走。機危陣潰,則勿下。是故棋有不走之走,不下之下。誤人者多方,成功者一路而已。能審局者多勝。》曰:『窮則變,變則通,通則久。

度情
人生而靜,其情難見;感物而動,然後可辨推之於棋,勝敗可得而先驗。持重而廉者多,輕易而貪者多。不爭而自保者多,務殺而不顧者多。因敗而思者,其勢;戰勝而驕者,其勢退。求己弊不求人之弊者,;攻其敵而不知敵之攻己者,。目凝一局者,其思周;心役他事者,其慮散。行遠而正者,機淺而詐者。能畏敵者,謂人莫己若者。意旁通者,心執一者。語默有常,使敵難量。動靜無度,招人所惡。《》云:『他人之心,予時度之。

斜正
或曰:『棋以變詐為務,劫殺為名,豈非詭道耶?』予曰:『不然。』《》云:『師出以律,否藏凶。兵本不尚詐,謀言詭行者,乃戰國縱橫之說。棋雖小道,實與兵合。故棋之品甚繁,而弈之者不一。得品之下者,舉無思慮,動則變詐。或用手以影其勢,或發言以泄其機。得品之上者,則異於是。皆沉思而遠慮,因形而用權。神遊局內,意在子先圖勝於無朕,滅行於未然。豈假言辭喋喋,手勢翩翩者哉?《》曰:『正而不譎。』其是之謂歟?

洞微
凡棋有益之而損者,有損之而益者。有侵而利者,有侵而害者。有宜左投者,有宜右投者。有先著者,有後著者。有緊避者,有慢行者。粘子勿前,棄子思後。有始近而終遠者,有始少而終多者。欲強外先攻內,欲實東先擊西。路虛而無眼,則先覷。無害于他棋,則做劫。饒路則宜疏,受路則勿戰。擇地而侵,無礙而進。此皆棋家之幽微也,不可不知也。《》曰:『非天下之至精,其孰能與於此。

名數
夫弈棋者,凡下一子,皆有定名棋之形勢、死生、存亡,因名而可見。有沖,有斡,有綽,有約,有飛,有關,有劄,有粘,有頂,有尖,有覷,有門,有打,有斷,有行,有捺,有立,有點,有聚,有蹺,有夾,有拶,有避,有刺,有勒,有撲,有徵,有劫,有持,有殺,有松,有盤。圍棋之名,三十有二,圍棋之人,意在可周。臨局變化,遠近縱橫,吾不得而知也。用倖取勝,難逃此名。《》曰:『必也,正名乎棋!

品格
夫圍棋之品有九。一曰入神,二曰坐照,三曰具體,四曰通幽,五曰用智,六曰小巧,七曰斗力,八曰若愚,九曰守拙。九品之外不可勝計,未能入格,今不復云。《》曰:『生而知之者,上也;學而知之者,次也;困而學之又其次也。

雜說
夫棋邊不如角,角不如腹。約輕於捺,捺輕於避。夾有虛實,打有情偽。逢綽多約,遇拶多粘。大眼可贏小眼,斜行不如正行。兩關對直則先覷,前途有礙則勿徵。施行未成,不可先動。角盤曲四,局終乃亡。直四扳六,皆是活棋,花聚透點,多無生路。十字不可先紐,勢子在心,勿打角圖。弈不欲數,數則怠,怠則不精弈不欲疏,疏則忘,忘則多失勝不言,敗不語。振廉讓之風者,君子也;起忿怒之色者,小人也。高者無亢,卑者無怯。氣和而韻舒者,喜其將勝也。心動而色變者,憂其將敗也。赧莫赧於易,恥莫恥於盜。妙莫妙於用松,昏莫昏於複劫。凡棋直行三則改,方聚四則非。勝而路多,名曰贏局;敗而無路,名曰輸籌。皆籌為溢,停路為芇。打籌不得過三,淘子不限其數。劫有金井、轆轤,有無休之勢,有交遞之圖。弈棋者不可不知也。凡棋有敵手,有半先,有先兩,有桃花五,有北斗七。夫棋者有無之相生,遠近之相成,強弱之相形,利害之相傾,不可不察也。是以安而不泰,存而不驕。安而泰則危,存而驕則亡。》曰:『君子安而不忘危,存而不忘亡。

─── 摘自《物理哲學·中中

 

難道 AlphaGo 『演算法』之精良已出《棋經》之右也!!??深得『智慧』之三昧乎??!!

如果想知道『人工智慧』的滋味,探究它的『功夫火侯』,何不就自己飲水,或可以從此開始︰

About TensorFlow

TensorFlow™ is an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) communicated between them. The flexible architecture allows you to deploy computation to one or more CPUs or GPUs in a desktop, server, or mobile device with a single API. TensorFlow was originally developed by researchers and engineers working on the Google Brain Team within Google’s Machine Intelligence research organization for the purposes of conducting machine learning and deep neural networks research, but the system is general enough to be applicable in a wide variety of other domains as well.

What is a Data Flow Graph?

Data flow graphs describe mathematical computation with a directed graph of nodes & edges. Nodes typically implement mathematical operations, but can also represent endpoints to feed in data, push out results, or read/write persistent variables. Edges describe the input/output relationships between nodes. These data edges carry dynamically-sized multidimensional data arrays, or tensors. The flow of tensors through the graph is where TensorFlow gets its name. Nodes are assigned to computational devices and execute asynchronously and in parallel once all the tensors on their incoming edges becomes available.

tensors_flowing

……

Who Can Use TensorFlow?

TensorFlow is for everyone. It’s for students, researchers, hobbyists, hackers, engineers, developers, inventors and innovators and is being open sourced under the Apache 2.0 open source license.

TensorFlow is not complete; it is intended to be built upon and extended. We have made an initial release of the source code, and continue to work actively to make it better. We hope to build an active open source community that drives the future of this library, both by providing feedback and by actively contributing to the source code.

……

Why Did Google Open Source This?

If TensorFlow is so great, why open source it rather than keep it proprietary? The answer is simpler than you might think: We believe that machine learning is a key ingredient to the innovative products and technologies of the future. Research in this area is global and growing fast, but lacks standard tools. By sharing what we believe to be one of the best machine learning toolboxes in the world, we hope to create an open standard for exchanging research ideas and putting machine learning in products. Google engineers really do use TensorFlow in user-facing products and services, and our research group intends to share TensorFlow implementations along side many of our research publications.

───

 

看看是否能將樹莓派『聰明化』??能把 IOT 『智慧化』的耶!!

Installing TensorFlow on Raspberry Pi 3 (and probably 2 as well)

Intro

We did it! It took a lot of head-banging and several indirect passings-of-the-torch, but we finally got TensorFlow compiled and running properly on the Raspberry Pi! Hopefully this will enable more hardware-based machine learning projects, as well as making the distributed aspects of TensorFlow more accessible.

Contents

Installing from Pip

Note: These are unofficial binaries (though built from the minimally modified official source), and thus there is no expectation of support from the TensorFlow team. Please don’t create issues for these files in the official TensorFlow repository.

This is the easiest way to get TensorFlow onto your Raspberry Pi 3. Note that currently, the pre-built binary is targeted for Raspberry Pi 3 running Raspbian 8.0, so this may or may not work for you.

───