6/11/2025

[最佳化] C^2 函數一階逼近的餘項積分表示

令 $f: \mathbb{R}^m \to \mathbb{R}$ 為 $C^2$-函數。對 $f$ 在 $y$ 附近使用一階泰勒展開:
\[ T_y(x) := f(y) + \nabla f(y)^\top (x - y) \]
則其餘項 $R(x,y)$ 訂為 $$R(x,y ):= T_y(x) - f(x)$$

現在定義單變數輔助函數 $g: [0,1] \to \mathbb{R}$ 滿足 $$g(t) : = f(y + t(x - y))$$現在觀察 $g(0) = f(y)$ 且 $g(1) = f(x)$。我們可以計算 $g(t)$ 導數透過多變數鏈鎖律:
$$g'(t) = \nabla f(y + t(x - y))^\top (x-y)$$且
$$g''(t) = (x-y)^\top \nabla^2 f(y + t(x-y)) (x-y)$$ 其中 $\nabla^2 f$ 為 $f$ 的 Hessian matrix。那麼由 Lemma 1可知單變數Taylor Theorem 對 $g(t)$ 在 $t=0$處展開有
$$g(1) = g(0) + g'(0)(1-0) + \int_0^1 g''(t) (1-t) dt \qquad (*)$$
現在代入 $g(1) = f(x), g(0)=f(y)$ 與 $g'(0) = \nabla f(y)^\top (x-y)$,上述 式$(*)$ 可改寫為
$$f(x) = \underbrace{ f(y) + \nabla f(y)^\top (x-y) }_{T_y(x)}+ \int_0^1  (1-t) (x-y)^\top \nabla^2 f(y + t(x-y)) (x-y) dt $$
因此,我們得到
$$f(x) - T_y(x) =  \int_0^1  (1-t) (x-y)^\top \nabla^2 f(y + t(x-y)) (x-y) dt $$
回憶餘項定法為 $R(x,y ):= T_y(x) - f(x)$,故我們有 
$$R(x,y) = -\int_0^1  (1-t) (x-y)^\top \nabla^2 f(y + t(x-y)) (x-y) dt$$


Lemma 1:
令 $g \in C^2([0,1])$,則單變數Taylor Theorem 對 $g(t)$ 在 $t=0$處展開有
$$g(1) = g(0) + g'(0) + \int_0^1 g''(t) (1-t) dt$$

Proof:
給定$g \in C^2$,回憶微積分基本定理對 $g$ 函數而言,
$$g(1) - g(0) = \int_0^1 g'(t) dt \qquad (**)$$

對於 $g'(t)$ 而言,我們亦可在次使用微積分基本定理:
$$g'(1) - g'(0) = \int_0^1 g''(s) ds$$
故對任意 $t \in [0,1]$ 我們有
$$g'(t) = g'(0) + \int_0^t g''(s) ds \qquad (@)$$
將 $(@)$ 代入 $(**)$ 得到
\begin{align*}g(1) - g(0) &= \int_0^1 [g'(0) + \int_0^t g''(s) ds] dt \\ &= \int_0^1 g'(0) dt + \int_0^1 \left( \int_0^t g''(s) \right) ds dt \qquad (@@)\end{align*}
其中
$$ \int_0^1 g'(0) dt = g'(0) \cdot t|_0^1 = g'(0)$$
\begin{align*} \int_0^1 \left( \int_0^t g''(s) \right) ds dt &= \int_0^1 \left( \int_0^t g''(s) \right) ds dt \\ &= \int_0^1 \int_0^1 1_{\{s < t\}} g''(s) ds dt \\ &= \int_0^1 \int_0^1 1_{\{s < t\}} g''(s) dt ds \\ &= \int_0^1 g''(s) \int_s^1 dt ds \\ &= \int_0^1 g''(s) (1-s) ds \\ \end{align*}
也就是說,$(@@)$ 可改寫為
$$g(1) - g(0)  =  g'(0) + \int_0^1 g''(s) (1-s) ds $$至此得證




1/30/2025

[人工智慧] 本地端 DeepSeek R1 快速安裝:以 Macbook Pro M4 Chip為例

最近火熱的 DeepSeek R1 模型由於採用了 distill 技術,可以大幅降低計算成本,使得一般人有機會在自家筆電上跑性能逼近 Open AI ChatGPT o1的大語言模型。本文簡單介紹一步安裝在 Macbook Pro 的方法以及使用方法,以下測試採用 Macbook Pro M4 64GB (如果是使用其他晶片組的Macbook 使用者請參閱文末Remark 2)。有興趣的讀者可以先至 Ollama 官網看看最新版本:

https://ollama.com/


Step 1: 在 Macbook Pro M4 上安裝的方式相當容易,只要打開 Mac 內建的終端機 Terminal 輸入:

ollama run deepseek-r1:14b
系統會自動開始下載所需資料,安裝完畢後即可開始運行。運行結果如下圖所示:


當出現 send a message (/? for help) 即可開始與之對談:以下展示如果輸入 who are you ? 則 DeepSeek會回答他是 DeepSeek R1。


如果關閉 Terminal視窗,那麼下次要再使用 DeepSeek R1 模型只要再次打開 terminal並且輸入 ollama run deepseek-r1:14b 即可。

Remark: 1. 如果記憶體充足 (64GB以上),可以嘗試跑跑看更大的模型如 ollama run deepseek-r1:32b 或者 ollama run deepseek-r1:70b

2. 注意到如果使用其他 Macbook,如M1, 2, 3晶片組或者 iMac桌機(intel晶片組),則需要先安裝 ollama 到系統中,指令可透過  brew install ollama 達成。接著需啟動 ollama:

brew services start ollama

接著才能使用

ollama run deepseek-r1:14b
來進行安裝。

3. 另外如果想要更方便的使用 DeepSeek R1 本地模型,可以透過使用 WebUi 插件到 Microsoft Edge 或者 Chrome的瀏覽器裡面。比如 Page Assist ,相關網址如下供讀者參考:

1/09/2025

[數學分析] 連續函數族的逐點上包絡函數不一定連續

連續函數有諸多用途,一般在參數最佳化領域中常見的情況是考慮所謂的上包絡函數(upper envelope function)。


Definition: 定義函數族 \(\{f_t : t \in T\} \) 其中 \(T\) 為 index set 並考慮對任意 \(x \in X\),現在定義上包絡函數(upper envelope function) 或者 逐點上確界函數(pointwise supremum function)
$$ F(x) := \sup_t f_t(x)$$


Question: 一個有趣的問題是如果這些函數族成員都是連續函數,那麼取 supremum 之後所得到的新函數 \(F\) 是否仍為連續呢?

答案是否定的。以下例子說明甚至是定義在緊緻集合上的連續函數族也沒有保證上包絡函數連續。

Example: 考慮一連續函數族 \( \{f_t: t \in [0, T]\} \) 其中 \(f_t(x) := x^t\) 對 \(x \in [0,1]\) 且 \(t \in [0,1]\) 並定義 \(f_0 = 0\)。 則函數族的上包絡函數為 $$ \sup_t f_t(x) = \begin{cases} 1, & x \in (0, 1] \\ 0, & x = 0\end{cases}$$ 讀者不難發現此函數在 \(x=0\) 處有不連續跳點。


Comment: 在最佳控制與數理經濟中有個非常有用的定理可以刻畫上包絡函數的連續性稱作 Berge's Maximum Theorem 有興趣的讀者可以自行查閱。





11/06/2024

[隨筆] A+焦慮的世代

接住A+世代學生

當了老師之後發現要"接住"學生確實不容易,撇開老師自身可能也有需要被接住的問題不談。我這幾年常常感受到這世代的學生們有著很大的徬徨,不太清楚未來的方向,但是卻有著非得要拿到A/A+不可的糾結,於是課優先選甜涼課,實習競賽投好投滿。好像看著同學做了些什麼,自己也要趕快跟上,深怕落後。想到很多年前讀過的太傻十日談,裡面提到許多跟現在當前學生們的焦慮幾乎如出一徹。

對我而言,拿A+大概意思是對於該科目"學得還行",對於內容掌握了一定的基礎,但並非完全精通該課程。學海無崖,正如聖經哥林多前書8:2 説到:
若有人以為自己知道什麼,按他所當知道的,他仍是不知道---哥林多前書8:2
這也是我常常提醒我自己的一句話。身為老師總是希望學生們別讓分數成為唯一的目標,能更深入地去理解和應用所學知識。這樣的觀點也許不符合學生的"期待",但這確實是我一直努力的方向。

職業與學術之間:適合比起優異更加重要

為什麼要拿A+? 或許是為了有漂亮成績單找工作/留學/申請研究所。但是這些知名公司/頂尖名校想要什麼樣的人選?難道是實習超多,獎項拿滿,GPA滿分的人才有機會嗎?我認為對於公司/名校而言真正重視的是想要找到"適合"的人,找到符合該職位或者學術需求的人。那麼適合那個職位的人到底需要些什麼技能我想才是需要被關注的地方。對於公司來說,他們往往重視應聘者能否在特定情況下解決實際問題,或者能否快速融入環境,快速學習。對於留學/申請研究所而言,展示自己具備研究能力,擁有學術熱誠的人,會遠比一張GPA滿分的成績單更具說服力。那麼這些能力該如何具體展示才是重點。



個人選擇 vs 個人夢想的不一致性:

很多人會說要找到自己喜歡的目標/領域,但是多數同學並不清楚自己喜歡的是什麼?有時候礙於家人環境同儕甚或經濟上的壓力,迫不得已折衷選了一條相對妥協的路。如果有機會,我常會建議:
選幾個至少不討厭的目標/領域試試看如何?

這是我常常跟不清楚未來的同學說的一句話,如果不知道自己要做什麼。至少選些"不討厭"的目標或者領域試試看。這可以讓你知道是否願意繼續深入還是提早退出。那麼該怎麼試?如果大學期間,除了本系之外的課程,涉獵自己有興趣的跨領域課程是一種方法,聽聽看各種學/業界的演講,參加有興趣的行業實習,參加社團/比賽也是一種方法,跟老師做做專題也是一種方法。八萬四千法門,選擇一種試試,時間允許的情況下,我想有心人永遠會找到一絲線索。但是永遠記得不是看別人做什麼就跟著做,而是先想清楚自己想要試試看什麼再做也不遲。


以終為始:動態規劃的最優解

如果把你想要的結果給你,你會不會愉快地接受?面對的每個決策,都有代價。確定目標之後,很多人可能會急著從現在開始一步步向目標前進,但是從現在的你看過去,可能的路線何其多,你怎麼知道哪條最正確呢?如果能練習從結果回推,往回看看前一小步所需的條件是什麼或許會更加有效。比如說你設立的一個長期目標:想出國留學,那麼前一步也許是決定領域?未來五年這個領域如何?哪所學校的研究方向更加適合?需要哪些語文能力/研究經驗/特定技能?每一步都從結果回推需求,這樣的動態規劃方式會讓你的前進方向更加具體更符合實際。


原則:尋找你自己

社群媒體的上的多數文章光鮮亮麗,滿手offer的貼文不免讓人稱羨,更甚者不免讓人失去自我,陷入攀比,但是年輕人,"你要保守你的心,勝過一切,因為一生的果效是由心發出的"--箴言4:32。別人的成功之路總是難以複製,那麼問問我們自己能不能勇敢走出屬於自己的路?

最後用詩人 Robert Frost 的 The Road Not Taken 作為結尾:

Two roads diverged in a wood, and I—I took the one less traveled by,
And that has made all the difference.


選擇一條少有人走的路,因為可能他帶給你最美的風景。並且譜寫成只屬於你的故事

後記:我大概有點資格談談這件事, 我本身研究橫跨隨機控制,優化理論與財務工程,走在這條路上的同行者寥寥。但是一路走來,我慶幸自己能有機會欣賞這條少有人走的道路以及沿途的特有風景。



7/12/2023

[轉載] PhD Simulator by Mianzhi Wang

模擬讀博士的小遊戲 by Mianzhi Wang ,個人覺得蠻貼近真實世界的情況,推薦給有興趣的朋朋玩玩看(見以下連結)。

 PhD Simulator (wmz.ninja)



只要發三篇論文就可以畢業,我想應該不會太難 (?)

2/17/2022

[隨筆] 指導教授的要求與省思

這一學期以來,我很幸運陸續有幾位碩士班同學表達有意願想找我當指導教授,我對每一位來訪的同學都表明:如果想找我當指導教授的話需要有 (or 致力達成) 以下兩項基本能力:

  1. 修習過 高等微積分 (or 數學分析或者等價的課程) 
  2. 具備以至少一種程式語言(Matlab, Python, R, C,...)實現各種算法的能力。

我對(碩士班)學生的畢業期許是:至少需完成並投稿一篇我認可的領域內會議論文。

我知道上述的要求(特別是條件1)對許多同學而言是極為*沈重*的負擔,因為學生們大多沒有接受過嚴格的數理論證訓練,也並不是每一位都志在學術,大多數同學也許更在乎的是找實習/找工作機會加入業界崗位,更在意的大多都不是碩士論文做了什麼題目,而是能不能準時畢業。我曾經也是學生,我想我大概可以體會這些同學的想法。

然而,另一方面,我是做*理論*研究的學者,我感興趣的研究領域(隨機系統投資組合優化理論)中許許多多的研究確實需要使用各種 數學工具 與 數學論證的手法。領域內的研究工作者需要能大致讀懂領域內相關文獻,並據此發想可能的新研究主題,接著利用各種(數學/優化/統計)工具來解決這些問題。陳述自己的研究成果方法多半是以定義/定理/證明的形式或者 算法/證明/實證模擬結果。最後實證的部分需使用真實資料輔以程式來實現。如果沒有受過一些嚴格論證的訓練與洗禮以及一定的程式撰寫經驗,要達成上述目標幾乎是寸步難行,特別是論證這塊,除了高微這門課之外我實在很難找到更好的替代方案。

學生們感到(辛苦)困難,老師也感到困難。或許我應該再想想有沒有更好的解決方案?


相關閱讀:
彭明輝,2012,指導教授的角色與責任,清大彭明輝的部落格






[最佳化] C^2 函數一階逼近的餘項積分表示

令 $f: \mathbb{R}^m \to \mathbb{R}$ 為 $C^2$-函數。對 $f$ 在 $y$ 附近使用一階泰勒展開: \[ T_y(x) := f(y) + \nabla f(y)^\top (x - y) \] 則其餘項 $R(x,y)$ 訂為 $$R(...