Posts

Category

文章索引

原本這個部落格存在的目的僅僅是為了沉澱一些心得、紀錄我覺得重要的事情和保存年輕時的回憶與思想。沒想到寫著寫著發現不少文章的瀏覽次數出乎意料的高,也讓我意識到我的想法可能在不知不覺中影響著許多素不相識的人。

所以基於「可能有人在看」的前提下,我決定將文章分門別類後做一個索引,讓大家方便查詢。每個分類索引中的文章由上到下是按照寫作時間由最舊到最新排序。

部分文章我有同步發佈在 medium 的板上,有興趣歡迎參考我的 medium 連結:Sheracaolity

《Deep Learning with Python》by François Chollet

Image
不知不覺兵役已經服完一半了,在軍中讀書的計畫也已來到第六本。今天要介紹的是 François Chollet 的 《Deep Learning with Python》,會挑這本是因為之前選的讀物除了 TechBridge 以外都是非技術類書籍(TechBridge 本身其實也只能歸類為單篇彙集),有好一段時間沒有讀這種系統性介紹特定技術的書籍,想換換口味。另一方面是我自己對神經網路本來就有些興趣,只是之前東摸一點西摸一點,對它的暸解還不是很多,剛好聽說這本書寫得簡單易懂,觀念上的解釋又鞭辟入裡,決定來一睹其風采。唯一的缺點大概就是在軍中沒有電腦可以讓我實驗書中的程式碼吧(嘆。

對於內容牽涉到比較多技術思維的書籍,我通常傾向做稍微詳細一點的筆記,所以這篇其實算是一份讀書筆記兼分章摘要。整體上來說我覺得這書寫的有趣又實用,對我啟發不小,誠心推薦給任何想踏進神經網路領域的新手,或是覺得有些觀念仍未弄清的老手看。至少我看完後心情還蠻亢奮的,決定之後再找時間來仔細讀讀 Ian Goodfellow 的聖經《Deep Learning》,應該也會收穫不少。

(本文圖片來源除 GAN 的示意圖取自机器之心外,其餘皆取自《Deep Learning with Python》by François Chollet 書中)

CH1 - What is Deep Learning

這章介紹了人工智慧(AI)、機器學習(Machine Learning)、深度學習(Deep Learning)彼此間的關係。簡單來說,機器學習是人工智慧的一種,而深度學習是機器學習的一種。機器學習和普通的人工智慧程式差別在於,普通程式是接受資料和規則算出答案,機器學習則是接受資料和答案來算出規則。大部分機器學習模型所追尋的「規則」,形式為「將資料轉換成一個有用的表示方式(representation),再透過這個表示方式得到答案」;而所謂的「學習」,一般是指「讓電腦自動從假設空間(Hypothesis Space )中搜索出最好的表示方式」這個行為。

舉例來說,平面上有一堆點,有些是圈有些是叉,我希望我的機器學習模型能透過點的座標自動分辨出哪些點是圈、哪些點是叉。此時我可以把我的假設空間(Hypothesis Space )設定為「空間中的任意直線」,然後試圖去找一條能完整的將圈和叉分開來的最佳直線。倘…

「TechBridge 技術共筆部落格」&《創意電力公司:我如何打造皮克斯動畫》

Image
TechBridge 技術共筆部落格

這週的軍中讀物一樣是走一個部落格+一本書的模式。由於入伍兩個月來幾乎沒讀什麼技術相關的東西,所以這次挑了 TechBridge 這個技術共筆部落格的文章來看。它主要是由四個工程師負責撰文,近期有時會有新作者的文章,講的技術涵蓋 Web、App、機器人、新的語言、基礎 DSA 和數據分析......等等,當中也有不少適合初學者的文章。

對於我這樣一個比較常寫 Web 的人來說,裡面讓我偏愛的主題大概是 Web Security 和 Optimization 這兩塊吧。像是 XSS、CSRF、SQL Injection、DDoS、CSS keylogger 和一些各式各樣的 OWASP issues,這些文章把它們的機制寫的淺顯易懂,讓我感覺醍醐灌頂,對資安防禦有更深刻的理解。而 Optimization 相關的主題主要跟前後端的 Cache 有關,另外也有一些針對 React、Browser 的性能優化,又或是像 WebAssembly 這種高效能新技術的介紹。

其他我覺得不錯的主題有:直播、WebVR、支付 API、RxJS 等特定技術介紹,React Fiber、Flux、DOM、Ajax、原型鍊等 Web 原理講解,Sketch、D3v4、Canvas、CSS 等視覺化相關的操作指南。有些原本就懂的東西,看過別人的解釋後會有全新的感受;而沒接觸過的技術在讀了介紹後更覺得新奇有趣,會想直接在放假時做些嘗試。簡而言之,那些跟我日常開發密切相關,並且能提供幫助的主題總是讓我收穫最多。

當然這個部落格涵蓋的內容絕對不只這點,只不過像機器人這種我過去涉獵較低的領域,或是類似 Python 新手入門這種太簡單的教學文,對於我產生的影響就相對小了不少,畢竟手邊沒有電腦,在理解較少的情況下只能當走馬看花,略顯可惜。下面列出一些我喜歡的文章。

資安

〈與 DDoS 奮戰:nginx, iptables 與 fail2ban〉
〈Web 資訊安全(Security)簡明入門教學指南〉
〈讓我們來談談 CSRF〉
〈我遇過的最難的 Cookie 問題〉
〈Top issues on OWASP〉
〈CSS keylogger:攻擊與防禦〉

優化

〈Browser Rendering Optimization〉
〈資料庫的好夥伴:Redis〉
〈循序漸進理解 HTTP…

「得意忘形」&《The Hard Thing About Hard Things》

Image
這兩週在軍中看的讀物主要有兩份,一份是「得意忘形」這個部落格的所有文章,另一份是 Ben Horowitz 的《The Hard Thing About Hard Things》這本書。

自從年初被推坑得到 App 後,我就一直是它的忠實用戶,而在裡面的眾多專欄中,張瀟雨是我特別喜歡的一個專欄作家。這傢伙一開始在高盛工作,後來跑去做私募股權基金投資,最後自己創立雲報銷這家公司,並在中期把公司賣給騰訊。他解析企業的方式讓我眼界拓展不少,也因此將一些時間拿去研究商業和金融相關的知識。

而「得意忘形」這個部落格,正是張瀟雨以前在知乎開的專欄,內容主要是他從國外精選的、創業相關的文章。不難發現,這些文章充滿著濃濃的矽谷味,光看其作者就能窺知一二:Paul Graham, Mark Suster, Ben Horowitz, Sam Altman, Marc Andressen......而《The Hard Thing About Hard Things》這本書也正是他在多篇文章導讀與論壇中大力推薦的,一本如同聖經般的創業指南。

(如果做個不嚴謹的粗略歸類,我猜張瀟雨的創業立場應該是屬於 YC+Ben Horowitz 流派。)

原本預計一週看「得意忘形」,另一週拿來看《The Hard Thing About Hard Things》,沒想到我錯估了它們的內容量:把「得意忘形」全部的文章爬下來一共七百頁、四十萬字,讀完花了我一周半的時間;而《The Hard Thing About Hard Things》則是比預期中精短,所以兩份讀物加起來還是剛好填補了軍中乏味的兩個禮拜。

這篇主要是做個導引,把「得意忘形」裡的文章做個大致分類推薦,也給《The Hard Thing About Hard Things》寫個簡單的導讀介紹。

「得意忘形」

創業基本面

普通公司(Normal Company)和創業公司(Startup)的差別在於是否能「快速增長」。理髮店、餐廳無法快速增長,規模從初期到穩定可能頂多差個幾倍;創業公司初期則能以每週 5-10% 的速率高速增長(時間拉長看就是增長幾千萬倍,諸如 Google、Facebook),原因很多,例如:提供大量客戶服務的成本相對低、產品具有網絡效應、可透過融資提高增長速度等。

增長作為創業公司的第一要務,背後有很多基本的方法和精神。…

《復仇者聯盟3:無限之戰》

Image
今天看了一部近期當紅的美食電影,叫《薩諾斯的便當秀》。

主角薩諾斯是個藍色皮膚的大個子,過去在故鄉因為料理的觀念與其他人不合而被稱作狂人。悲憤的他為追求符合自我信念的廚藝之道,獨自一人離開家鄉,而這部電影的劇情主軸正是薩諾斯在離鄉後,用盡畢生心力集結世界最頂級廚具的故事。

即便過程充滿波折與阻礙,薩諾斯依然堅持自我,將「不多不少,一半剛好」的料理哲學貫徹在他的每一道便當中。我覺得每個人都應該學學薩諾斯:只要懂得堅持,終有一天,你也能和薩諾斯一樣,做出驚呆半個世界的、完美無暇的便當。

《黑天鵝效應》 - 筆記 & 心得

Image
當兵真的太無聊了,所以現在每次放假都會買二手書來拆、或是把電子書印下來,一章一章訂成小冊子帶進軍中(方便裝進口袋),在操課或出公差中的發呆空擋從口袋拿出來看。我決定來不定期做點簡短的筆記跟心得,以防止在軍中愚蠢官兵體系變成智障。

這週剛看完的是《黑天鵝效應》,一本在講隨機性和不確定性的書。

人類的思考充滿瑕疵與偏誤,諸如確認偏誤(先產生觀點,再將任何事情都解釋為支持自己觀點的證據)、敘事偏誤(總是想替各種事情建立因果關係,但這個過程既不嚴謹,又容易因為降低了資訊複雜度而濾掉大量的重要內容)、沈默證據(沒發生的事是不會被記載的,因而在你看到一個決策導致的結果時,往往看不到背後的機會成本)等等。在大部分的情況下,基於前述的各種偏誤,你心理上認定你已經暸解的事物,其實有更大的可能是你並不暸解;而當我們心中已經擁有一個觀點時,比起去找支撐自己觀點的證據,更應該去試著找出能駁斥自己觀點的反例來做反向驗證。把全世界的人聚集在一起,將體重最重的一千位去掉,對總體重沒什麼影響。我們稱這種度量世界的規模可變性很低。但如果把最有錢的一千位去掉,對總財產的影響就會非常大,我們稱這種度量世界的規模可變性很高。統計學只適用在規模可變性低且滿足特定公設的世界,例如體重分佈、投擲硬幣、物理模型等。而牽涉到社會、經濟、金融等領域的事物,通常具備極高規模可變性跟複雜度,你基本上是無法對未來進行預測的,更遑論籌備長遠計畫。但傲慢的知識份子總是想利用各種複雜的數學模型來預測未來,並嚴重低估了這些模型的不適用性和事件的混沌性質。在規模可變性高的世界中,會有很多你無法預期的、發生機率極低、但一發生就會大幅改變世界的事件,稱之為黑天鵝事件。例如網路的出現、智慧型手機的出現、世界大戰等都是典型的例子。處理日常事務時,不論規模可變性是高是低,只要不涉及高風險,該預測時不需要逃避,不用總是保留判斷,當個傻瓜沒關係。確保讓自己只在小事情上糊塗,而不會在大事情上被矇騙。在規模可變性高的世界中,面對極高的不可預測性,我們可以使用槓鈴策略:把一部分的資源,放到極為安全的工具上,獲取穩定的回報,作為你的地板。另一部分的資源放去做極為投機的賭注,抓住任何看起來像機會的東西,提高自己遇到好的黑天鵝事件的機率。
看完這本書後,對我有三個比較大的影響。

首先是一些過去隱隱約約覺得思考中不對勁的地方被作者點出來了,而我想若要確實的活…

寫在休學之後(二):不斷地思考、不斷地問

Image
下週就要入伍了,沒意外的話腦袋會變鈍不少,趁當兵前來火速更新一篇休學系列的文,整合一下最近的想法。這次寫的東西很單純,就只談一個行為:問問題。 
它是貫徹我二十年來所做決定的極為重要的行為,也是休學後我覺得對我最有幫助的能力和態度。如果要抽離出更上層的概念,我問的問題主要是源自好奇心,這是在我反覆思考後許久所發現到的、也是決定我這個人一切行為的核心因素,未來有機會再開一整篇去談它。

這篇希望把東西聚焦在問問題能產生的一些價值:過濾資訊、理解事情、解決困境等,透過一些我經歷過的具體情境去解釋它的重要性。雖然裡頭的道理很簡單,但我長期觀察下來發現:越是聽起來簡單的道理,大家越容易覺得不重要,執行力也越差。所以希望這篇文能起到一點警惕的作用。

問問題的動機

由於秉信凡事總有那麼幾個道理,以前只要遇到好奇的,或是想不透的事情,我第一個直覺反應就是問。一般在學物理、數學時,問問題還蠻被鼓勵的。「為什麼要這樣定義?」、「為什麼這個步驟可以這樣推?」、「為什麼這個問題要這樣假設?」、「為什麼這個值可以忽略不看?」,這些問題都弄懂後可以釐清不少觀念,觀念串在一起總能讓理論像燈泡般亮起來。

開始寫程式後概念也類似,只是因為這領域細節繁多,即使很厲害的人也不一定能回答每一個問題,所以最常被我問的對象就變成了 Google、Quora、知乎等,宏觀重要的概念才拿來問人。而當問問題的對象變成這些非人資源時,這個行為就會被很多人稱為「自學」,雖然我其實沒有感覺到本質上有什麼變化,一樣都是自己為了找到答案而去尋找的必經過程。

( FYI:針對自學方式的一些細節,可以參考我高中曾寫過的這篇《物理與奧林匹亞大小事》裡,「解題思路」、「學習方法」、「常見問題集」這三個段落,雖然很多想法現在有了改變,但根本的方法是類似的)

令人難過的是,同樣是問問題,在某些情景下不會受到尊重。相信大家在小時都問過、抱怨過:「為什麼我要考這我覺得毫無意義的考卷?」、「為什麼學生有義務讀書?」、「為什麼學校要教這個而不是教那個?」、「為什麼我要一直重複做已經會的東西?」、「為什麼你考卷題目要這樣出?這到底想測什麼?」、「為什麼課程要這樣設計?」。只要一問這樣的問題,對方就會覺得我在找麻煩,防禦性的姿態和官方版本的回答隨之出現。繼續追根究底下去,接下來就是挨罵。

即便動機依然是好奇、不能理解,得到的回覆品質卻…

《大賣空》與次貸危機:你該聽信權威,還是聽信瘋子?

Image
最近基於興趣研究了一點經濟和金融,然後被推坑看了《大賣空》這部電影,內容講述的是 2008 年引發全球金融海嘯的美國次貸危機爆發前的故事。說實在看完後內心還蠻震驚的,但因為在這方面學識淺薄,當下有些東西沒有非常懂,決定透過這篇文章來事後做點整理,釐清整部電影的故事內容,順便發表些自己的小感想。

怕你跟我ㄧ樣國高中沒認真上過半堂公民課,這裡盡量用簡單的說法介紹電影中金融相關的背景知識。

今天一個人跟你借錢,對方的信用如何?他會不會借了以後捲款逃跑?會不會一下子花光光沒能力償還?這些都是交易中可能存在的信息不對稱。但如果你把錢存進銀行,而有人跟銀行借錢,銀行就會投入精力去調查借款人是否信用良好,依此判定是否要貸款給借款人。

換言之,「銀行」這東西在概念上,就是個幫忙消除信息不對稱的金融中介機構。它讓很多人把錢存進去,再把這些錢借給信用良好但當下需要錢的人,依此達成良性的貨幣流動。而在銀行對借款人的調查之下,借款人的信用就會被予以評級,信用最低的級別是次級,借給這些「次級人群」的錢就被稱為次級債,又稱次貸。

在 2000 年左右,為了應變美國的經濟衰退,政府希望透過增加市場上貨幣的流動來促進經濟的成長,於是開始推動銀行降息政策來刺激經濟。降息的效果是讓借錢要償還的利息變低,而存錢能獲取的利息也變低,這會造成大家想盡量跟銀行借錢而非把錢存入銀行,結果就是讓市場上有更多貨幣在流動。

同時,布希政府開始放寬房地產貸款的條件。為了鼓勵讓「次級人群」(某方面來說算是社會的弱勢族群)能跟銀行借到錢買房,還推動了 ARM(Adjustable Rate Mortgage,又名可調整利率貸款),也就是在前幾年期間只收你比較低的利息,等到五六年後再把利息漲回去。這吸引了更多的次級人群跑到銀行貸款。

這兩件事造成了最終釀造次貸危機的第一個關鍵因素:在降息和 ARM 的推動下,信用低的人變的可以跟銀行大量借錢買房了。整個房地產的市場也因而開始供不應求,導致房價不斷上升,逐漸形成泡沫。

第二個釀造次貸危機的關鍵因素是資產的證券化。這個概念上簡化是這樣:A 跟銀行借 100 萬,五年後要還 110 萬的債,那銀行就把這 110 萬的債務轉換成 105 萬的證券賣出,買家購買後只要等五年,就可以獲得 110 - 105 = 5 萬的收益。為什麼銀行要這麼做呢?因為把錢外借後,這些債沒辦法立即轉換…