九月 18, 2012

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» 「黑天鵝效應」讀書心得

書籍請見博客來

簡短摘錄書籍內容

書籍內容分成四部。
  • 第一部從知識論角度來說明人類思想的盲點。
  • 第二部舉證了「預測」本身的荒繆。
  • 第三部針對有數學、科學背景的讀者所準備,提供區分真正的不確定性方法。
  • 第四部簡短分享作者個人面對黑天鵝事件的態度。
作者在前三部所作的陳述,也就是針對歷史的不透明性可從三個面向來解釋:

理解力的幻覺:面對複雜的世界,人類心智卻自以為可以掌握全局。

分析我們是如何思考的,如何因為錯誤的思考方式,讓我們以為「預測」有效。
作者舉了「火雞問題」、「確認偏誤」、「敘事謬誤」、「沉默證據」、 「戲局謬誤」幾個主題來說明人的思考模式不是正確的。

火雞問題

一隻被餵養了 1000 天的火雞在第 1001 天時,必定保持與第 999 天時的信念一般 --- 必定有一善良生物提供牠當天所需的食物,讓牠無憂無慮地再過一天。 然而事實是該善良生物會在第 1001 天將牠變成某人的盤中美食。
從時間序列資料歸納事物發展的模式,並從此模式推導未來的情況是不合理的。 「現在事件」所需的發生條件並不等於「未來事件」所需的發生條件。簡單地講, 我們都知道地震對股市的影響是非常強烈的,且往往是負向影響, 若一高傷害性的地震在 2009 年 1 月 1 日上午 5 點發生, 那麼利用 2008 年 12 月 31 日前所歸納的預測模型可應用在 2009 年 1 月 1 日上嗎? 絕對不行。我們就是無法預測突發事件,像是地震、 SARS、次級房貸…等及其他根本講不出名字的意外。

確認偏誤

一命題在通過百億次驗證後為真,也不表示該命題的確為真; 但該命題卻可以在一次驗證為假後,確認命題為假。
「知道它是錯的」絕對是對的,而「知道它是對的」還是有可能為錯。

敘事謬誤

講故事讓人們得以將真實世界的 4D 模型轉成一個 1D 線性的歷史故事,這有助約化爆炸資訊。
通常一般人認為刪減掉的資訊不過是雜訊而已,但作者認為有些雜訊其實就是隻黑天鵝。

沉默證據

有一種非常老套的騙術,首先是收集電子信箱,愈多愈好,假設收集了 10000 個信箱, 其中一半的信箱,寄給他們的訊息內容是洋基將在5月10日的比賽中打敗紅襪, 另一半則寄給他們紅襪會擊敗洋基,等到比賽結束後,留下預測對的 5000 個信箱, 其中 2500 個人再寄給他們洋基會在5月11日擊敗紅襪,而另一半則寄給他們紅襪打敗洋基。 就這麼經過5個回合後,將有 10000除以32 約 312 個人是一直收到預測準確的信件,這時候, 再寄給他們:「預知下回比賽結果,請先支付一定金額」。如此一來,不管有多少人相信這個騙術, 對寄信人而言,所支付的金額都是純益,因為他根本沒花錢在作賽事預測,是個無本生意。
那曾收到錯誤預測信的 9688 人,每個人都是沉默證據。但對於另外的 312 人來說,他們得不到這種資訊。
這沉默證據的出現也呼應了作者在一開始所說的,沒看過的書比較重要。
事實上,沉默證據到處都有,只是需要花些精神才能發現。我們拿主動型股票投資基金來說, 每年財經雜誌一定會統計過去一年的基金投資績效並排序,而我們常常可以發現這些基金的排名每年都不一樣, 絕少有同一支基金能長時間(十年以上)排在前頭,而那些績效不如大盤的基金對投資人而言,就是一種沉默證據, 它告訴我們,主動投資並不一定有比較好的投資績效。而基金排名只是一種大風吹的遊戲, 所有人都可以坐過第一名,也有機會坐在最後一名,所有股票型主動基金的整體績效約等於大盤績效。

戲局謬誤

在我們學過的數學、企圖解決問題的模型中,必定在假設及邊界條件上簡化了真實世界的複雜度, 因為只有在簡化模型中,我們才能求解答案。
作者希望我們這些書呆子,在應用模型上,不要以為解值可以百分百套用到真實世界中。 要在心中保留一個想法:「這個解答是理想模型中求解的」。

回顧性扭曲:問題總在事後才被檢討。

「預測」根本不準,就算錯了,總可以找到個理由證明。 而通常的藉口就是:「原模型在考慮黑天鵝事件後就能符合未來」。
作者從幾個實證方法來說明「預測」沒有用。

知識傲慢

學得愈多,反而對於未知事物的預測就愈不準確。

意外對計劃的單邊效應

大部份的意外造成計劃成本增加、進度變慢或是品質下降,絕少有意外是幫助降低成本、減少工期及提昇品質。
這原因通常是我們這些書呆子在套模型時,會將無法估量的因子去除,而這些因子多半是對計劃有害的。

預測錯誤的特性

每發生錯誤預測後,真值會離預測值更遠。譬如:一個計劃預期需要七十九天完成,到了第七十九天, 如果計劃尚未完成,那麼預期還需要二十五天才行。但到了第九十天,如果計劃尚未完成, 那就還需要五十八天才能完成。到了第一百天,預期還要八十九天才能完成。 到了第一百一十九天,預期還要一百四十九天才能完成。到了第九百天,如果該計劃還是沒有完工, 你將預期多花一千五百九十天。當你等得越久,你預期要再等待的時間就越長。

不經意的發現

今日大多數人對世界影響巨大的發明認定是電腦、網際網路及雷射。而這三項發明都是不經意的。
因為有太多有用的工具、產品是在意外中誕生的,所以在策略管理理論中,有人堅持一種 r 策略的經營模式, 它的意義是透過對生物系統的學習,將其繁殖後代的策略應用在企業管理中。 以一種「機會主義」式的繁殖策略,採取「多產」的方式,亦即,在有限能量和物質的限制下, 對每一個繁殖後代,只能做很少的能量和物質投資【策略九說,2000】。相對於 K 策略,是將能量與物質其中投資在一個後代上, 容易在波動高、意外多的環境下失敗, r 策略提供了生存在「規模可變性世界」的能力。

三體問題

在太陽系中,如果只有二顆行星,則無論它們的起始位置為何,我們都可以計算出它們在未來某時點的絕對位置, 然而再增加一顆行星後,此行星的初始位置將嚴重地影響它們未來的位置,原因是「不可積性」。 這也證明了機械論的謬誤。
在第二部的最後一章,作者提供了幾個面對黑天鵝事件的技巧:
  1. 分清楚你從事的工作受正面黑天鵝事件還是負向黑天鵝事件的影響。
  2. 不要尋找明確而狹隘的東西。
  3. 抓住任何機會,或任何看起來像機會的東西。
  4. 要小心政府的明確計劃。
  5. 別浪費時間和預測者對抗。

被「柏拉圖化」:事件被權威、飽學之士歸納、簡化了。

真正的不確定性與機率分配的差別: 一個可以計算,一個只能承受。
作者在這個部份大肆批評 Black-Scholes-Merton 方程式,認為他們不過是讓大家能接受這個公式而已, 發明這個公式的人應是 Louis Bachelier 和 Edward O. Thorp,且原創公式並未要求使用高斯模式。 同時他也批評馬可維茲的現代投資組合理論、夏普的 CAPM 是以高斯模式為基礎。
但就這部份以我目前所學尚無法確認究竟誰是正確的。或者是說,在把高斯模式換成冪法則、 碎形機率等更符合現況的機率分配,那麼就皆大歡喜了,我們在學術上的任務不就是把前人研究的缺點加以改進嗎!
這三個面向,也依序擴展成第一部(理解力的幻覺)、第二部(回顧性扭曲)、 第三部(被柏拉圖化)的內文。
作者強調在歷史的不透明性中,我們只能把垃圾資料送進不一定正確的模式中,並得到垃圾預測 [1]
[1]既然從歷史資料,我們無法歸納準則,從而避免錯誤,達到以古為鏡,可以知興替。那麼整個歷史學科還有存在的必要性嗎? 這一點,是我這個歷史門外漢的疑點。
最後在第四部中,說明幾個如何面對「未來不可預測」的方法, 像是儘可能地嘗試,別擔心小失敗。

結論

「預測未來」這件事到底存不存在?
  1. 存在! 則社會依舊照它原本的規則繼續運作,有些人命中結果賺大錢、有些人猜錯下地獄。
  2. 不存在! 那糟了,我們該如何生活? 對「明天太陽依然昇起」這件事沒了信心,那麼我們還須應付下個月的信用卡帳單嗎? 既然如此,工作、讀書、生小孩也就不重要了!
作者說明了黑天鵝事件總會發生,且大幅地改變原來我們對未來的期待, 黑天鵝事件總讓我們預測錯誤 --- 不過這沒有關係。
原本我們處在「預測有效」的世界中,我們總是在錯誤地預測, 而事後,我們依舊正常地生活,有時候會塘塞個錯誤理由,甚或遺忘了當初預測的結果, 在未來事件真的到來時,天真地認為這結果就是我們想要的。
相不相信「無法預測未來」這命題對社會運作不會有影響。該來的總會來,不該來的你也等不到。 唯一的差別是我們的心智能否接受這個事實,接受「無法預測未來」這個事實, 能讓我們把資源配置在「準備」而不是「預測」,這更有效地減緩壞黑天鵝事件(巨大的風險)所造成的損失, 或是面對好黑天鵝事件(巨大的報酬)。不會把頭埋在沙中, 堅決宣誓這個世界是由黑暗及二氧化矽所組成的烏托邦。
目前的現實世界,大部份人都相信事物具備可預測性且預測結果的正確性與歸納準則(計算模式)的吻合度呈正相關。 就此概念,作者花了 400 多頁的內容為我們否證「未來的可預測性」、 駁斥柏拉圖模式不能應付真實世界、 分析黑天鵝事件(真正的不確定性事件)與可預測的機率事件之間的差別。 這部份有點冗長,但從作者整理的資訊看來,有些研究早就成功驗證, 只是待由他來整理、分享與我們而已。
在如何面對「黑天鵝事件」上,他不過以 5 頁蓼蓼帶過,這點令人有點失望。 我在閱讀本書約一半內容時,已完全相信他所提及「未來的不可預測性」, 並急著想要跳過這些更詳細的證明以得知作者避開負向黑天鵝事件及擁抱正向黑天鵝事件的方法。 最後的這 5 頁,除了讓人有著無法痛快的感覺, 卻也間接證明了「未來不可預測性」的確是無法掌握,沒有單一方法、特定手段可以避開/迎向它, 我們所能作的就是在心裡放置著一隻黑天鵝,不讓牠跑出柏拉圖圈。
如果這本書說對了,那麼現在對於那些整日與「預測」有關的工作怎麼辦? 像是證券分析師、市場分析人員、 專案可行性評估人員…。

證券分析師

股價不能預測、公司經理人良心不能預測、政府法規不能預測…,那我們幹麼要買股票! 因為我們必須利用股債組合打敗通貨臌脹率來維持我們的實質購買力。
證券分析師的工作目標是要讓投資人能獲得超額報酬。但是在效率市場的假設下,長期而言, 投資人只能獲得股市的平均報酬。就算是某些分析師真能神準預測股票的漲跌,但看看「沉默證據」後, 你會發現你挑不到那個神準分析師。
這些精研產業、公司的分析師,我是認為他們的存在只是在證明投資人不是理性之人。 如果可以,不應該找證券分析師的工作,因為當投資人變成理性之人後,買的會是指數型基金。 這時,分析師的話就沒人要聽了。因為有大量的證據顯示, 專業投資經理不能打敗購買和持用廣泛股票的指數基金【漫步華爾街,2004】。

市場分析人員、專案可行性評估人員

在產品開發或是專案推動上,不可避免地要作市場調查,或是可行性評估。在這些研究中, 必面臨到某些變數的預測:利率、需求量、物價成本、人力成本、可使用資源量…。那麼在不可預測下, 難道我們就要放棄作調查嗎? 那麼專案是否執行? 就只能靠丟銅板決定,我想老闆們絕對不會接受這種說法。
我認為如果擔任到這方面的職務,就只能硬著頭皮,照著傳統上、其他人大量使用的方法論去作預估。 要不然,生不出企劃書,到時候,銀行也不可能給專案貸款,或是工廠根本無法向上游供應廠商叫料, 這只會增加企業經營成本。
雖然不得已進行預測,但請在心中保留著一份對「企劃書」的質疑,它可是在柏拉圖圈內的成品。
因為意外總會打亂計劃,所以我認為作任何事應該以「存在」為最高目標。凡事不要過份強求, 不要認為作對一件事,整個人生就高枕無憂,如同 r 策略一般,儘量掌握每個小機會。
我們以公司經營績效來看,為了賺取高額利潤,勢必要忍受高額風險,像在產品研發上, 如果要它能賺大錢,勢必研發費用會提高,在面臨幾次研發失敗後,公司資本撐不過虧損, 那就只能關廠走人。
像只作光碟片的 2396 精碟過去也有 359 元的行情,如今不到 1 元。 而產品線豐富的 GE 卻已經存活了 133 年了。另外像台積電目前也打算轉型作太陽能相關產業, 這也說明了單靠一種產品,有可能獲利豐厚,但在趨勢轉變下,該單一產品就會變成最大負擔了。
最後,這本書給我的最大收獲,就是別浪費時間了, 停止「預測」這檔事吧! 直接找尋避險管道,或是配置可消減個別風險的事件組合, 像是買進股票並在高檔買進賣權、購買終身夀險及保持適度運動維持健康。

參考書目

  1. Nassim Nicholas Taleb,2008.05,黑天鵝效應,大塊文化。
  2. 吳思華,2000,策略九說,臉譜出版。
  3. Burton G. Malkiel,2004.05,漫步華爾街,天下文化。
備註:這是本學期「期貨與選擇權」的期末讀書心得報告,原本是用 rst 格式寫成的,交報告時是在 Ubuntu 中用 rst2latex -> latex -> dvipdfmx 轉成 pdf 檔; 而貼到 blog 上,則是用 rst2html 即可。十分方便。原始 rst 格式,請點選這裡下載; pdf 格式請點選這裡下載。

九月 3, 2009

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» Latex CJK on Windows

我都是使用 rst 格式作為日常書寫格式,因為很方便地讓我作版本控制。所以網頁程式開發的功能/技術規格書也是用 rst 來編輯的。

但有個問題,當我想作圖文合併時,我可以在 ubuntu 中,使用 rst2latex, latex, dvipdfmx 等工具來轉成 pdf 檔,如果是在 Windows 下呢? 我的那些學弟們多半還是在 Windows 下工作,為了他們著想,我寫了這篇文章。

首先,一樣使用 rst2latex 程式(這是 python-docutils 提供的),把 rst 檔轉成 .tex 檔 * ,然後再利用 latex.exe 生出 .dvi 文件,最後再利用 dvipdfmx.exe 把 dvi 轉成 pdf 檔。指令如下:

C:\> "C:\Program Files\MiKTeX 2.7\miktex\bin\latex.exe" xxx.tex
C:\> "C:\Program Files\MiKTeX 2.7\miktex\bin\dvipdfmx.exe" xxx

所以在 Windows 中,生成 pdf 檔也不是件難事。

那麼我們如何讓 Windows 可以有 latex.exe 及 dvipdfmx.exe 的指令呢! 很簡單,安裝 Basic MiKTex.exe相關字型檔即可。

Basic MiKTex.exe 的安裝方式就是下一步、下一步。待安裝好後,請開啟 MiKTeX > Settings ,並在 Roots 中新增「相關字型檔」的資料夾位置(看你將解壓縮後的資料夾放在那裡,我是放在 C:\texmf)。接下來在命令列中打入指令:

C:\> initexmf -u
C:\> initexmf --edit-config-file updmap
這時候會出現純文字編輯器,請把以下紫色內容複製貼上,再存檔關閉。
Map cwmu.map
Map cwku.map
Map cwfsu.map
Map cwhbu.map
Map cwyu.map

C:\> initexmf --mkmaps

這樣你就可以使用 latex.exe 及 dvipdfmx.exe 來生成 pdf 檔了 **。

詳細步驟可參考政大應數蔡炎龍老師的教學文件(本站備份)

  • 註1 rst 及 tex 檔其實都只是純文字檔,只是它們的內文用不同的結構化標籤作格式排版。
  • 註2 Windows 下使用的字型檔,其字型名稱為 cwmu, cwku, cwfsu, cwhbu, cwyu ,所以原本我們在 tex 中,所寫的 \begin{CJK}{UTF8}{kai} 要改成 \begin{CJK}{UTF8}{cwku} 。

八月 17, 2009
» [tips] sphinx支持中文pdf的方法

目前 python 官方文件使用的sphinx是個不錯的文件產生系統,

可以同時由rst產生html,latex,pdf,ps等文件格式,

不過我目前試的結果似乎預設從latex產生pdf時沒有支援中文,

網路上相關的文件大都寫得很複雜,

但其實只要在文件project裡的source/conf.py加入

latex_preamble = '''\usepackage{CJKutf8}\n\AtBeginDocument{\\begin{CJK}{UTF8}{bsmi}}\n\AtEndDocument{\end{CJK}}'''

其他都不需更改,
以後make latex; cd build/latex; make all-pdf 就都可以產生出正確的
中文pdf檔了

測試環境是Gentoo linux底下的texlive 2008 (cjk) + pdflatex

六月 2, 2009

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» colorful source code in Latex(written in reStructed Text)

之前提到使用 Vim 的 plugin VST 來撰寫可自動轉換 latex 格式的簡單結構文章。VST 相當容易使用,不過在轉換程式碼到 pdf 格式時,它無法使用類似 2html 的技巧來讓程式碼變色。

所以我參考了 Listings Package 的語法,稍為修改了 VST 的程式碼(其實只是加上幾個宣告而已)。

 1 diff -r 56c0141f8add Configure/vim/plugin/vst-x.vim
 2 --- a/Configure/vim/plugin/vst-x.vim    Tue Jun 02 00:12:23 2009 +0800
 3 +++ b/Configure/vim/plugin/vst-x.vim    Tue Jun 02 00:14:07 2009 +0800
 4 @@ -4541,6 +4541,18 @@
 5                         \.'\usepackage{longtable}'."\n"
 6                         \.'\usepackage{tabularx}'."\n"
 7                         \.'\usepackage{amsmath}'."\n"
 8 +            \.'\usepackage{color}'."\n"
 9 +            \.'\usepackage{listings}'."\n"
10 +            \.'\definecolor{Brown}{cmyk}{0,0.81,1,0.60}'."\n"
11 +            \.'\definecolor{OliveGreen}{cmyk}{0.64,0,0.95,0.40}'."\n"
12 +            \.'\definecolor{CadetBlue}{cmyk}{0.62,0.57,0.23,0}'."\n"
13 +            \.'\lstloadlanguages{Python,PHP,Ruby,Bash,Perl}'."\n"
14 +            \.'\lstset{language=Python,frame=ltrb,framesep=5pt,basicstyle=\normalsize,'."\n"
15 +            \.' keywordstyle=\ttfamily\color{OliveGreen},'."\n"
16 +            \.' identifierstyle=\ttfamily\color{CadetBlue}\bfseries,'."\n"
17 +            \.' commentstyle=\color{Brown},numbers=left,backgroundcolor=\color{white},'."\n"
18 +            \.' stringstyle=\ttfamily,escapeinside=``,identifierstyle=}'."\n"
19 +            \."\n"
20                         \.countrysettings."\n"
21                         \.'\renewcommand\CJKglue{\hskip -0.3pt plus 0.08\baselineskip}'."\n"
22                         \.'\linespread{1.382}'."\n"

這樣就可以在 vim 中撰寫如下語法,來讓程式碼在 pdf 中變色了:

.. raw:: latex

\begin{lstlisting}
import sys
print sys.getdefaultencoding()
sys.path.append(".")
sys.path.append("/home/hoamon/`桌面`")
from hashlib import md5
from random import random
for i in xrange(10): print md5(str(i+random())).hexdigest()
def whatever(x): print x + 3
whatever(10) # 13
#`中文要作跳脫,使用符號為[數字鍵1]左邊的那一個 \\``
\end{lstlisting}

.. raw:: latex

\lstinputlisting{xxx.py}


下圖就是成果啦:

沒有網頁格式的那樣多采多姿,但聊勝於無呀!

五月 17, 2009

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» reStructured Text + CJK Latex: footnote 破壞文句階層問題

之前考博士班時,曾把自己的履歷用 Latex 寫出來。但是這太麻煩了。文章結構不難,但要多打很多我記不起來的標準語句,雖然可用 vim 樣版解決,但寫 latex 版的文章機會實在是太少了,除了履歷、期刊論文外,一些 blog 文章、計劃書、說明檔都是用類 wiki 的語法寫下來的。所以會少了很多時間記住 latex 語法。

最近開始寫報告及論文了,重新把 CJK Latex 安裝回我的 Ubuntu ,並回顧(複習)之前的 Latex 語法,覺得十分生疏。也就研究一下 Linux 上如何把 rST 格式轉 latex 的技術。還滿簡單的。我是結合 vim 來作轉換的動作。

但是在一個使用 footnote 的地方,無論我怎麼設定,它(rST)在轉 latex 時,就是會跑掉。

我的文句如下:

    在歷史的不透明性中,我們只能把垃圾資料送進模式(不一定正確)中,並得到垃圾預測 [#]_ 。

.. [#] 既然從歷史資料,我們無法歸納準則,從而避免錯誤,達到以古為鏡,可以知興替。
那麼整個歷史學科還有存在的必要性嗎? 這一點,是我這個歷史門外漢的疑點。

最後在第四部中,說明幾個如何面對「未來不可預測」的方法,
像是儘可能地嘗試,別擔心小失敗。

轉成 pdf 後,發現「最後在第四部中…」這一句也會變成 footnote 中的文句。

而如果使用:
    在歷史的不透明性中,我們只能把垃圾資料送進模式(不一定正確)中,並得到垃圾預測 [#]_ 。

.. [#] 既然從歷史資料,我們無法歸納準則,從而避免錯誤,達到以古為鏡,可以知興替。
那麼整個歷史學科還有存在的必要性嗎? 這一點,是我這個歷史門外漢的疑點。

最後在第四部中,說明幾個如何面對「未來不可預測」的方法,
像是儘可能地嘗試,別擔心小失敗。

則「最後在…」的文句其階層不同於「在歷史的不透…」。

最後,我終於找到解法了,就是把 footnote 解釋文句放置於該段落的最後段,如此一來,它就不會破壞文句階層了。其最後結果如下:
    在歷史的不透明性中,我們只能把垃圾資料送進模式(不一定正確)中,並得到垃圾預測 [#]_ 。

最後在第四部中,說明幾個如何面對「未來不可預測」的方法,
像是儘可能地嘗試,別擔心小失敗。

.. [#] 既然從歷史資料,我們無法歸納準則,從而避免錯誤,達到以古為鏡,可以知興替。
那麼整個歷史學科還有存在的必要性嗎? 這一點,是我這個歷史門外漢的疑點。


嗯~這個排版問題,我花了二個小時。可見我多麼要求排版品質

二月 11, 2008
» XeTeX (誤

一直以來我都是在 Windows 下用 miktex 編輯文件。這個習慣一直到我改以 rst 為主力格式之後才稍有改變;就是用得少了一點 :p 目前除了我自己專業上的東西用 tex 寫之外,多數都改成 rst 了。

前天把 miktex 從 2.6 昇級到 2.7,因為發現 2.7 裡面有了 xetex。支援 unicode 和 ttf 的 xetex 很有吸引力 (雖然我手上的中文 tex 都被轉成 rst,沒辦法試了 Orz)。裝好了以後雖然沒有體會到 unicode 的威力,卻發現 pdflatex 變快了好多。

miktex 2.8 更好玩,會把 luatex 放進去。

biggo.com.tw

A Django site.