蒙地內哥羅之旅

2026/4/21 (二)

旅行接近尾聲,我們從克羅埃西亞離開歐盟,進入蒙地內哥羅這個國家。除了台灣,大部分的國家都叫它 “黑山共和國",只差在從音譯和意譯。Monte 即是山,negro 就是黑色。

黑山這個國名來自於他們有很多這種高高的直立深色的樹 (杉木?),遠看就是一片黑黑的山。我們的路程會有一小段渡輪,不然沿著海岸開車會花很多時間。下圖是在渡輪上的 Google Map 截圖,我們可以看到該國同時使用拉丁字母和西里爾字母

黑山很想加入歐盟,他們使用大量的拉丁字母來取代原生的西里爾字母,不用自己的貨幣而是使用歐元。但是它從 2008 年開始申請,到現在歐盟也還沒有批准,團員們認為就是因為它比較窮,可能會扯後腿的。

Monica AI 提供的數據如下:

  1. 斯洛維尼亞
    平均月薪:約 €1,300 – €1,500(新台幣約 42,000 – 48,000
  2. 台灣
    平均月薪:約 NT$50,000 – NT$55,000(約 €1,500 – €1,650
  3. 克羅埃西亞
    平均月薪:約 €1,000 – €1,200(新台幣約 32,000 – 38,000
  4. 蒙特內哥羅(黑山)
    平均月薪:約 €700 – €900(新台幣約 22,000 – 28,000
  5. 越南
    平均月薪:約 $250 – $400(新台幣約 7,500 – 12,000

過海關之後,我們參觀科托古城。這個城市以愛貓聞名。主要是因為這裡本來就有很多貓,所以黑死病期間,老鼠不太敢進來,使得他們的疫情比較輕微。這邊還有個貓的博物館,我們沒有進去參觀,外觀也看不出什麼。導遊說門票是做公益用。下圖右是城門入口所對到的鐘和恥辱柱。

建築的形式是導遊介紹的重點,下圖中是天主教科托主教座堂。聖尼古拉斯教堂 (下圖左)和聖盧克教堂 (下圖右) 都是東正教形式。聖盧克教堂同時有天主教和東正教的祭壇是一大特點。

下午本來有自由活動時間可以去走科托的城牆。但是此時下起了暴雨。只能邊躲雨邊看紀念品店。

然後就驅車前往首都波多哥理查,然而我們已經沒有行程了,只是去這個 (導遊說的) 比馬祖機場還要小的國際機場搭飛機回家。

這個機場出境之後只有兩家店,一家免稅店,一家賣吃的喝的。一個麵包 6.9 歐,一個小便當盒 14 歐,基本就是敲盤子。我們入境黑山的第一家休息站,每包零食只要一歐,有人買了一堆,吃不完還得找人幫忙吃,那個才是他們真正的物價水準。連上廁所都只要 0.5 歐元,至於科托古城這種景點,上公廁還是要 1 歐啦!

這次在伊斯坦堡轉機時,土航的貴賓室已經整修完畢,不像去年跟難民營一樣那麼擁擠了。雖然老婆說飛機餐也有 cost down (沒小罐蜂蜜和橄欖油),但是油價漲了我們早鳥的團費都沒漲,已經有賺。

BTW,這些皮克敏沒有幾個月是回不來了。現在我只能小本經營。

克羅埃西亞之旅 – 3

2026/4/16 (四)

這天同樣搭電動車到達一號碼頭,然後坐船到三號碼頭的下湖。

下湖的水量比上湖還要大。雖然也有安靜的小角落,但常常可以看到河水漫過木棧道的景象。

從出口附近的觀景台拍的。

從導遊介紹的私房景點拍的上帝視角。

很美麗吧!不過走到這裡也是要有一點腳力。而且國家公園裡面沒有廁所,一天要走完上下湖也不是不行,但是膀胱可能不太允許。公園的配套措施是:第二天要用的門票就沿用第一天買的,給當地的旅館蓋章認證後,第二天就不用再買票。

出了國家公園,我們驅車南下,在 Restaurant Borje 用午餐。甜點是當地名產 Fritule。它跟台灣的炸雙胞胎吃起來一個味道。導遊介紹之後大家都有點嫌棄它太油什麼的。不過既然是土特產,一定要捧場啊!

車子繼續南下,我們來到很有名,有點厲害,但是又有點不好說的著名景點。札達爾 (Zadar) 的海風琴 (Morske orgulje) 和向太陽致敬 (POZDRAV SUNCU ZADAR CROATIA)。

海風琴是把管子插進海水哩,利用此處外島很多,潮水相對起伏較小的特性,讓海浪稍稍衝擊這些管子,發出高高低低的聲音,卻又不會破音。"向太陽致敬" 是將太陽系的星球做成不同大小的太陽能板,白天儲電,晚上可以發光。

比起早上的風景,這邊有點小兒科。後面的市區古建築介紹相對有趣些。Zadar 是一座濱海的羅馬古城。後來因為威尼斯人入侵 (下圖左上城門的飛獅標記),羅馬遺跡都被當石材處理 (下圖左下的教堂地基),形狀完整的東西所剩不多 ,考古學家拼不回來,就把它們直接拿來陳列 (下圖右下)。

看完古蹟之後,我們入住 Falkensteiner Hotel & Spa Ladera。裡面很高級,晚餐可以點菜又可以吃自助 Bar。當然就不老實又不客氣~~~

斯洛維尼亞 + 克羅埃西亞之旅 – 1

2026/4/14 (二)

這是一個幾乎每天換旅館的行程,早上從布雷德湖畔的 Hotel Park,經過盧比安納 – 也就是 Google Map 上的盧比爾雅那 (Ljubijana),來看一個石灰岩洞 Postojna Cave。

行前氣象預報說每天幾乎都會下雨,而這個岩洞又是最冷的一個點,洞內只有 8~9 度。所以我們還去 “迪卡儂" 買了防水衣、防水褲、防水鞋、手套、雨衣、雨傘等配備。不過運氣不錯的是沒下什麼雨,也沒那麼冷。

雖然交通順暢,我們提早到了,還是要等預定的時間 10:45 才能進場。進去洞穴要先搭小 “火" 車,然後下車徒步。這個洞穴據說是斯國第二大、但是第一個被發現的石灰岩溶洞,也是喀斯特地形被命名由來。光是坐小火車進去,沿途開錄影就錄了 7’17″,基本上這裡大到匪夷所思。逛了 50 分鐘來到車站,然後搭反向的小火車出去。

洞內據說有很多生物,但是都怕光躲起來了。其中,最特別的是盲螈,園區特別養了一些放在大型玻璃箱裡,牠們還順利生出下一代。因為不能拍照和錄影,所以只能拍官方的即時監控螢幕。紀念品店裡賣很多盲螈娃娃,基本上整隻白白不太討喜。

中餐就在岩洞旁的餐廳解決,接下來就驅車前往克羅埃西亞 (Republika Hrvatska)。因為兩國同是申根區,所以沒有邊境檢查。

抵達歐帕提亞 (Opatija) 後,導遊先帶我們去上廁所。為什麼這件事很重要呢?首先我們拉車時間比較長了一點。但更重要的是,離開斯洛維尼亞之後, “廁所自由" 就沒有了,公廁要錢,而且不是到處都有。三十個人撐著傘、大排長龍地上完廁所;大家就冒雨去海邊看 “少女與海鷗" 的銅像。

再來就沒有行程了,讓我們在度假中心好好玩。Check in 高級的 Hilton Rijeka Contabella Beach Resort 後,其實我也不想去游泳池、健身房,就去海邊探險。亞得里亞海岸的海水清澈見底。我一隻魚也沒看見,但是確實有人在釣魚。

晚餐也吃得很好。基本上我都在吃甜點。

古風 Manifold 小筆記

文天祥的正氣歌 [1] 說:"天地有正氣,雜然賦流形。" 這個 “流形" 就是 Manifold 的中文翻譯。後兩句 “下則為河嶽" 就是說一般人站在地球上,還以為地球是平的,"上則為日星" 就是抬頭一看,感到世界大到甚至不只是 3D。

正經地說,流形是一個局部看起來像歐幾里得空間(平坦的空間),但整體結構可能非常複雜且彎曲的拓樸空間。一張 1024×1024 的彩色照片,在數學上是一個高達 300 萬維度的空間,但「有意義的貓狗照片」只佔據這個 300 萬維空間裡一個極小的低維流形,不是每個空間中的值都有特殊意義。這種群聚就像是太陽系裡面的星球彼此靠得很"近",若是出了太陽系,宇宙就顯得很稀疏,直到遇到其他星系。

對 AI 來說,世界模型充滿雜訊且計算量太大。模型會透過編碼器(Encoder),將高維的觀測數據「壓縮」並映射到一個低維度的潛在空間(Latent Space) 中。這個潛在空間本質上就是在捕捉數據所在的流形。一旦 AI 掌握了這個低維流形的潛在空間,它就能在這個平滑、連續的流形上做計算。這也可以解釋 transformer – encoder、decoder 為何會有用。

當初 DeepSeek 出來的時候,也用上了 latent space 壓縮的技術。我當時想,做完這個 lossy 的壓縮,雖然節省計算量,但是資訊丟掉就回不來了啊!? 因為那個 monent 我還沒有流形的觀念;如果有,我就不用緊張了。

在數學上,流形不一定可以微分。但是要訓練 AI ,就要計算梯度。因此我們只能假設它可以被微分,也就是要假裝它更平坦一點。因此就算真實的流形不可微,我們也得製造出一個可微分的流形。所謂 “人心惟危,道心惟微" [2],人類明明知道會有危險的奇點 (Singularity),但是演算法只能讓它可微分。以目前 AI 強大的戰力來看,這個有意的忽略,似乎影響不大。

[REF]

  1. 正氣歌
  2. 十六字心傳

PPO 小註解

Proximal Policy Optimization 是一個 fine-tune Model 的方式, 另一個主流方式是 DPO (Direct Preference Optimization). 這邊主要是整理課程影片中 PPO 的公式 (只用大約 2 分鐘超高速閃過…), 以便有空時可以查詢.

[基本架構]

有一個 LLM model, 和可調整的參數: θ, query: X, response: Y, 所有輸出入組合 rollout 表示為 (X, Y).

因為我們要微調這個 model, 所以要給一個獎勵函數 (reward function): r(X,Y), 用來調整模型 πθ (X,Y).

獎勵是對所有輸出的 Y 取期望值

EY~πθ (X,Y) [r(X,Y)], 其中 Y~πθ (X,Y), 表示 Y 在 πθ (X,Y) 的輸出組合.

也對每個 query X 計算

EX~D[EY~πθ (X,Y) [r(X,Y)]] ——————— (1)

其中 X~D, D 表示 X 的散度 (Divergence), 依此類推.

我們找出一個得到最多獎勵的那組參數, 就算是 fine-tune 完成.

π* (X,Y) = arg maxπ {EX~D[EY~πθ (X,Y) [r(X,Y)]]}, {} 裡面就是上面那包.

[Reference model]

做得好不好, 我們要有一個 reference model 來當評審.

πref (X,Y)

Model 的輸出愈接近 reference model 就表示學得愈好.

[懲罰值]

KL 是 Kullback-Leibler 兩個人名的縮寫. KL penality coefficient 是它們衡量懲罰的函數. 基於 reference model πref (X,Y) 下, 對 πθ (X,Y) 產生的懲罰 DKL 表示為

DKLθ (X,Y) || πref (X,Y)]

[綜合期望值和懲罰值]

π* (X,Y) = arg maxπ {EX~D[EY~πθ (X,Y) [r(X,Y)]] – β * 懲罰值} =>

π* (X,Y) = arg maxπ {EX~D[EY~πθ (X,Y) [r(X,Y)]] – β DKLθ (X,Y) || πref (X,Y)]}


為了要知道往哪個方向調整, 我們要找 θ 的梯度.

[只看 reward function]

這是 reward function 在特定 model 參數 θ 的期望值

E[rY ] = EY~πθ (X,Y) [r(X,Y)]

將它表示為解析函數 [1], 期望值等於所有 Y 可能的值乘上它的機率的和

E[rY ] = ∑Y r(X,Y)πθ (Y|X) —— (2)

最優化的參數 θ⌃ 就是所有 θ 中 reward 最好的. (我打不出 hat theta, 所以把帽子放右邊)

θ⌃ = arg maxθ [E[rY ]] = arg maxθ [∑Y r(X,Y)πθ (Y|X)]

對式子 (2) 取 θ 的梯度,

θ E[rY ] = ∑Y r(X,Y)θ πθ (Y|X)] ——– (3)

按照微積分的 chain rule [3]

θ log (πθ (Y|X)) = θπθ (Y|X) / πθ (Y|X) =>

θπθ (Y|X) = θ log (πθ (Y|X)) * πθ (Y|X) —– (4)

把這個變長的 (4) 帶回去 (3),

θ E[rY ] = ∑Y r(X,Y)θ πθ (Y|X)] =>

θ E[rY ] = ∑Y r(X,Y)θ log (πθ (Y|X)) * πθ (Y|X) =>

θ E[rY ] = EY~πθ (Y|X) r(X,Y)θ log (πθ (Y|X))

再把 X 考慮進去, 就得到

Ex~D [θ E[rY ] ] = θ Ex~D [ E[rY ] ]

意思是說, 當 β = 0, 忽略掉懲罰的話, 對式子 (1) 取梯度, 等效只對 reward function 取梯度. 反之亦然.

這有什麼意義呢? 我請 AI 幫我解釋. 我試了幾次都沒有它講得好.

θ E[rY ] = EY~πθ (Y|X) r(X,Y)θ log (πθ (Y|X)) 這個結果是 策略梯度定理(Policy Gradient Theorem)[2] 的核心公式。其意義在於:

  • 將梯度轉換為期望形式:原始梯度需遍歷所有可能的輸出 θY(計算量巨大),但此公式表明:梯度可通過從策略 πθ   中採樣 Y 來近似計算。
  • 避開解析計算:無需知道所有 Y 的機率分佈,只需對採樣的 Y 計算  r(X,Y)θ log (πθ (Y|X)) 的平均值。

它與 Monte Carlo Method 的相似處在於: 透過採樣直接估計期望值,無需精確計算所有可能的 Y.

蒙特卡羅方法收斂速度為 O(1/√N​), N 夠大就好. 而窮舉法不可行.

最後再筆記一下懲罰項.

Kullback-Leibler 方法其實是要避免訓練後新的參數和舊的參數偏差太遠. 以至於學會新的東西就忘了舊的 – 災難性遺忘 (Catastrophic Forgetting), 和 reward 無關. 因此討論原理時可以忽略它.

但它對於穩定系統非常重要, 其主要角色是作為正則化項 (Regularizer), 將策略更新限制在信賴域 (Trust Region) 內. 在PPO算法中,KL 散度還會動態調整更新步長. 當 DKL​ 超過閾值時自動縮小學習率,此設計本質上將 “避免遺忘" 和 “促進學習" 綁定為同一過程。

[REF]

  1. 解析函數 – 維基百科,自由的百科全書
  2. https://en.wikipedia.org/wiki/Policy_gradient_method
  3. Slide 1