IA0 - 資訊與算法專題,寫在前頭!
藝術化的元胞自動機 (cellular automaton),取自Softology's blog |
在今年初我在自己的這個部落格開了一個關於機率與統計 (P&S) 的系列,是包含了我自己學習古典機率的心得,後來再加上由於計算機效能長足進步後日漸興起的貝氏推論 (Bayesian inference) 的應用。在研習的過程當中,我感到許多的內容與統計力學和計算機理論是緊密相連的 (必然如此,這些學問都是嘗試去理解大自然的方法,也許從不同的立足點出發,但最終它們想攻剋的都是同一做山頭),所以不僅僅重新讀了以前懵懵懂懂的統計力學,還對資訊理論以及這些算法做了不少功課,我看見所有的學問都是一脈相承、自有而擁有的,包含最近這幾年不斷引起大眾耳目的人工智慧,以及在推論領域中已穩紮穩打許久的資料科學。
所以雖然P&S我還沒認為應該結束這個系列,但我想再開一個資訊與算法 (Information & Algorithm, IA) 的專題。不像PS系列,在這裡我應該會著重在我研讀這類資料的時候遇到的問題如何解決,以及已經解決的問題,我能夠用簡單的程式腳本來實現,所以這個系列每篇都如同一個小專題一樣,而不是我循序漸進的學習過程。
這類的問題像是圓周率\(\pi\)的估計,除了耳熟能詳的用computer隨機產生一堆點然後計算有多少落在半徑為1的圓內來估計外,我們也要提及幾乎被遺忘的18世紀法國布豐伯爵 (Georges-Louis Leclerc, Comte de Buffon, 1707-1788),他發明了布豐投針 (Buffon's needles) 估計\(\pi\)的蒙地卡羅方法 (Monte-Carlo method)。不像是傳統邏輯符號的推論,蒙地卡羅模擬 (Monte-Carlo simulation) 在於能用大自然處理事情的方式來估計未知的參數,或是推論可能發生的情況,而當代硬體計算效能之強大,即使在一台簡便的筆記型電腦上也足以處理這些運算,甚至得出精細的結果,所以電腦是實現蒙地卡羅模擬非常好的工具。除此之外,這個系列也包含了我遇到一些有趣的演算法,除了實踐它們外,我希望能逆向找出這類模擬背後的數理邏輯。
至於原本的P&S系列,我最想談的還是Bayesian analysis,在往後的專文中,我會將重點移到如何實踐Bayesian技巧估計參數與模型的方法,我認為P&S系列在這樣的觀點下會更有意思。好了,廢話不多說,這個系列的下一篇,也就是正式的第一篇專題我就要來談布豐投針估計\(\pi\)的例子,所有系列的文章都會使用python來實現。
大部份顯示的字體都基於Google Fonts,內文無意外正體中文的部分是採用Adobe和Google聯合開發的開源襯線字 (serif) 思源宋體 (Noto Serif TC),權重有500 (內文) 和700 (粗體) 兩種,中文標題皆採用粗體無襯線 (sans-serif,字體依讀者電腦內建為主),洋字母則是使用Google blogger內建的Cardo (標題和內文都是)。另外所有的圖片顯示的語法都已經針對高ppi螢幕 (果粉🍎稱之retina螢幕) 做過調整,所以應不會有圖片模糊的問題。但在行動裝置上閱讀可能會發生MathJax渲染\(\LaTeX\)公式時出現問題,需要重新整理多次才會正常,這目前無解。還有我注意到Google blogger上選用Cardo這類襯線字體時會自動開啟連字 (ligature) 的功能,像是ff、ffi、fl、ft……等等這些雙字排在一起時會特別的將之特定的部位相連,Google在排版上確實有注意到這些書寫的小細節!
至於原本的P&S系列,我最想談的還是Bayesian analysis,在往後的專文中,我會將重點移到如何實踐Bayesian技巧估計參數與模型的方法,我認為P&S系列在這樣的觀點下會更有意思。好了,廢話不多說,這個系列的下一篇,也就是正式的第一篇專題我就要來談布豐投針估計\(\pi\)的例子,所有系列的文章都會使用python來實現。
一些註記
另外在這個分類的文章中,會有不少顯示代碼的框格,我採用Prism在Google blogger上的解決方案,等寬字體的顯示會優先選取Ubuntu Mono (Ubuntu和Linux Mint內建)、Consolas (Windows內建),這類等寬字擁有優異的設計以及對LCD螢幕的優化,特別Ubuntu Mono是開源的,可以在這裡下載。原則上在這裡我使用CSS來自動鏈結Ubuntu Mono這個字體 (Consolas是有版權的,所以就無法這樣免費鏈結了),所以讀者並不必要下載這個字型,基本上常見的瀏覽器都可以支援在往後文章的代碼框裡自動套用該字體,但是在內文裡我會用HTML標籤<tt></tt>來註記等寬字,這會讓瀏覽器抓它預設的等寬字體,原則上就不一定是Ubuntu Mono了而是看使用者怎麼設定他的瀏覽器,因為我實在很懶得每次都用<span style...></span>,字打太多會累。大部份顯示的字體都基於Google Fonts,內文無意外正體中文的部分是採用Adobe和Google聯合開發的開源襯線字 (serif) 思源宋體 (Noto Serif TC),權重有500 (內文) 和700 (粗體) 兩種,中文標題皆採用粗體無襯線 (sans-serif,字體依讀者電腦內建為主),洋字母則是使用Google blogger內建的Cardo (標題和內文都是)。另外所有的圖片顯示的語法都已經針對高ppi螢幕 (果粉🍎稱之retina螢幕) 做過調整,所以應不會有圖片模糊的問題。但在行動裝置上閱讀可能會發生MathJax渲染\(\LaTeX\)公式時出現問題,需要重新整理多次才會正常,這目前無解。還有我注意到Google blogger上選用Cardo這類襯線字體時會自動開啟連字 (ligature) 的功能,像是ff、ffi、fl、ft……等等這些雙字排在一起時會特別的將之特定的部位相連,Google在排版上確實有注意到這些書寫的小細節!
留言
張貼留言