我讀 «華燈之下:條通媽媽桑的懺情錄»

雖然 Netflix 台灣的的大片 «華燈初上» 是由 Netflix 的朋友所推薦的 (瑞昱是 Netflix 在 Android 和 RDK 的雙平台的夥伴), 但因為追劇的時間有限, 所以一直沒有在 Netflix 點播過這個片子. 倒是在臉書上看到有不少人發表對 “華燈初上" 的感想, 因此我才發現了敦子媽媽這討論串.

敦子媽媽的文筆很好, 又是真正在條通有工作經驗的小姐和媽媽桑. 因此她的留言立刻吸引大批網友關注. 累積幾篇留言後, 便脫離 Netflix 討論區, 發展成一個粉絲專頁 [1], 每天都有人敲碗等敦子媽媽出續集. 久而久之, 出版社找上敦子媽媽合作出書. 所以有了這本 “華燈之下".

至於敦子媽媽對於用情有多 “懺"? 我覺得是還好咧.  雖然她喜歡過"深田", 和"佐用", 但整本書看下來, 她沒有後悔喜歡過他們. 反倒是很感謝這兩位對她的好, 除了送吃的用的, 也很關心作者心情. 敦子媽媽在自己的網頁用 “回憶錄" 為名相對中肯, 書商用 “懺情錄" 比較商業~~~

條通生活, 離我們太遠. 然而, 透過敦子媽媽的文筆, 讓我們了解高級的日式酒店是如何運作的. 首先, 敦子媽媽所在的高級酒店, 他們主要財源就是來自日本公司的駐台幹部, 不管是自掏腰包, 或是報公帳. 反正以喝酒為名, 行把妹之實. 找個漂亮的異性聊天紓壓, 還真的滿日式的.

如果客人和小姐看得對眼, 雙方交往也是有時間性的. 當日本幹部五年期滿 (大約) 要調回母公司, 這段戀情就要自動結束了. 畢竟日本人來台灣可能花的都是公費, 回日本還要包養台灣小姐, 可能就要拿出真金白銀來了. 更何況日本人又重視表面形象, 弄個外人小三搞壞家庭, 大概會影響升遷之路吧! 到時還有沒有那麼真愛就不好說了.

另一方面小姐如果動了真情, 每隔幾年自動失戀一次也是很痛的. 更別說書上提到的女人心機. 一群利益衝突的女生在同一個競技場共生, 雖然我不懂, 相信傷害力不小. 被男人傷心、被女人傷感情, 喝酒又傷身, 再加上歲月不饒人, 這個行業果然沒辦法做很久.

至於酒店為何是酒店呢? 看來在這家姬 group 是用酒來當作代幣的意思. 跟打賞網路直播主煙火跑車的意思一樣. 舊經濟還沒有虛擬代幣的觀念, 所以消費多少都是用酒來當媒介. 外面便宜的酒, 在酒店就是超貴, 外面貴的酒在酒店就是天價的貴. 而酒開了就要喝, 就算是能寄的酒終究還是要喝掉. 所以酒店小姐能唬客人開多少酒, 酒店就能賺多少錢.

寄酒可能是咖啡寄杯的始祖. 但現在虛擬的概念已經很成熟了. 拿酒當代幣似乎有點落伍. 小姐應該ㄋㄞ客人買個 NFT 送她?  就不用大家灌酒傷身了. 想當年我們去大陸徵才,  地點選在某酒店 (其實是飯店啦) , 所以我們也就近在酒店餐廳吃飯以節省時間. 某次下午場快開始了, 一份東坡肉才剛上. 所以我們問酒店可否寄肉到晚餐再吃, 他們竟然也答應了. 所以酒店其實可以寄肉 (蛤? 哈哈!)

條通的小姐為何要投入這個行業, 敦子媽媽沒有透露. 我想如果本書還要有續集, 可以考慮寫這個, 大家應該也會滿好奇的. 另外就是敦子當媽媽桑之後的故事交代比較少, 也許可以從經營管理的角度…去修個 MBA? 欸~~~疫情期間, 聰明的藝人都去拿學位了. 既然通告相對少, 又比較多線上上課, 這真的是提升學歷的大好時機啊 [2].

這本書也是親簽版.

20220612_225833-151x300

[REF]

  1. 敦子媽媽回憶錄
  2. 這幾天關於藝人畢業的新聞包括 –  許效舜: 開南大學健康照護技術碩士. 范瑋琪: 台師大國際時尚高階管理碩士. 許瑋甯: 世新傳管碩士.

我讀 «郭婞淳:舉重若輕的婞念»

這本書最近出了個 “親簽版" 在博客來打廣告, 賣點當然是扉頁有郭婞淳簽名. 原本她的簽名習慣是在名字下面畫個槓鈴, 然後加上 WL 5X kg [4]. 表示 weight level 58 or 59kg . 至於這次的簽書, 可能簽了太多本, 槓片已經變成 W. 但 WW 也可以理解為 Womem Weightlfting, 至於 WL 就有點走鐘了, 我本來還以為是 UC, 哈!  

sign-213x300

無論是郭婞淳 (1993) 或是戴資穎 (1994), 都是大家耳熟能詳的運動選手, 而且年紀也跟我女兒差不多. 自從蔡溫義先生勇奪奧運舉重銅牌, 我就覺得我入錯行了. 基於 “爸爸自己做不到的都會叫小孩去做" 的原則. 從小我就跟孩子她媽洗腦: 小孩要當舉重選手.  不過她媽媽的基因也很強, 所以小孩喜歡畫圖 >>>>>>>>>>>>>>>>>> 舉重 (呵). 總之, 舉重金牌的大任只好交給別家的女兒了.

本書是由天下文化的葉士弘先生, 整理郭婞淳的訪談錄音檔後集結成書, 所以兩位並列為作者. 書中的大架構是抓主題作為章節, 沒有按時間順序陳述. 我建議本書的讀者去看一下 wiki, 瀏覽一下郭小姐的重要比賽經歷, 例如什麼時候受傷、破紀錄之類的.  本書再版的時候, 我也建議出版社在後面附上郭婞淳的大事摘要. 此外書上提到許多破紀錄的數字, 但這些中文字 – 抓舉XXX公斤, 挺舉XXX公斤, 總和XXX公斤, 講完就一兩行了 , 讀起來沒有立體感. 建議把該頁的插畫換成阿拉伯數字橫式加法來呈現. 

看完這本書後, 我覺得舉重金牌真的得之不易. 女兒走這條路大概不會成功, 哈! 舉重選手除了要有天分, 還要有紀律和意志力. 意志力這點就不用說了, 大家都可以想像, 贏得任何比賽都需要求勝意志 – 除了鬼滅的善逸, 海賊王的貴公子, 月光騎士的第二人格以外 (诶, 尷尬, 愈想就愈多反例, 還好都是漫畫). 而本書給我的啟發之一就在於維持紀律的重要.

假設郭婞淳是個從小就非常聽話, 做事一板一眼的人, 那麼要求她有紀律並不難. 不過她原來並不是這樣的個性, 後來她能調整自身的性格, 從浪漫到嚴謹, 這個地方很厲害. 舉例來說, 她從小就展現運動天賦, 在很多項目都有些成績. 她喜歡打籃球、練田徑, 舉重是她比較不喜歡的項目, 常常請假逃避翹課. 要不是教練看她是百年難得一見的練武奇才, 硬拉著她練舉重, 今天也不會有金牌的郭婞淳了.

然而, 即使是對她當初喜歡的田徑, 她也沒有展現出足夠的熱誠. 在國三參加全中運那年 (2009), 她整個寒假都沒參加練習, 導致教練將她退隊.  後來雖然還是派她上陣, 但 400 接力比賽時發生掉棒失誤, 連累苦練的隊友丟牌. 當時接力的隊友包括跨欄美少女羅佩琳 [1], 奪牌希望本來相當濃厚 (p31~p33). 郭婞淳因為連累隊友的自責, 加上隔天在舉重項目奪金. 此後才決定專心在舉重項目上. 

教練循序漸進的指導也是讓郭婞淳稱霸這個量級的關鍵. 舉重選手不像籃球員一樣可以用每天苦練投個一百顆、兩百顆. 畢竟每天舉世界紀錄的重量一百下這想法還滿好笑的! 相對地, 啟蒙教練只要求郭婞存把動作做正確, 以 “輕飄飄的" 木棍來練習分解動作, 動作對了才慢慢加重量 (p42~43). 後來的郭婞淳也非常重視自己的體態. 看到櫥窗的反光, 都會把握機會端正自己的姿勢, 避免不正常的姿勢導致肌肉代償而增加受傷風險 (p107~109).

既然是運動傳記, 書上免不了提到她的大小傷勢: 大傷就是 2014/5/12 練習時壓傷右大腿, 小傷則是 (左) 鎖骨和脖子破皮出血這種  (p106 附掛彩的彩照 ><). 雙手起繭子更是基本配備. 選手受重傷當然該以科學治療復健, 但 2014 那次用上高壓氧是正確的選擇. 如果當初沒有做好復健, 後來可能留下嚴重的後遺症. 台灣之光王建民當初也只是跑壘扭了一下不是嗎? 至於小傷則可能是身體不平衡的徵兆, 需要自我檢視那邊沒練好. 郭婞淳能夠反覆檢討自己那裏不夠好, 我想這個心態也很關鍵.

畢竟天分, 苦練, 野心和想像力, 對手也都有. 精確有紀律地持續修正, 除了靠自己, 也要靠團隊.  書上提到郭婞淳的背後有一個團隊在關照著她 – 教練、醫師、防護員、營養師…等等. 2024 的巴黎奧運打算把一面獎牌複製四份, 讓整個團隊都能分享到他們應有的一份榮譽. 我想這正好呼應了書中郭婞淳對她團隊的感謝.

書上提到郭婞淳默默行善, 還有捐過救護車. 這事我先前就聽過. 至於寫到她會彈鋼琴, 本來我不知道. 有興趣的人可以參考 Youtube 影片 [2]. 她在這個 YT 片段說到 2020 東京奧運是她最後一戰, 但在本書中已經更新到要挑戰 2024 巴黎奧運了. 運動員走斜槓人生算是滿有遠見的布局, 書中也提到郭婞淳的其他身分, 像是主持等等. 我覺得她形象滿好的, 未來應該能走得很長遠.

BTW, 我希望比她更年輕的小戴在斜槓 (廣告) 很多之餘, 這幾天也在西班牙湯優盃打出好成績. 查了 wiki 一看, 小戴的天敵不是大家耳熟能詳的山口茜、陳雨菲, 而是退役的李雪芮 [3]. 可見一個超級選手若沒有生涯規劃, 受個傷就什麼都沒有了. 至於我們工程師只要身體還過得去, 即使變成三高肥宅, 還是可以上班賺錢,  所以我們斜槓個不用動腦的 ETF 投資看來不錯. 

[Ref]

  1. https://www.facebook.com/RunningPei
  2. https://www.youtube.com/watch?v=J88hmZIUCAE
  3. 李雪芮
  4. https://www.mtaxi.com.tw/20170911/

Train ESRGAN 小整理

我想挑戰一面挖礦, 一面跑 AI training, 一面開艾爾登法環,… 不過看起來有點困難, 只好不跑老環了, 反正一直 “You Died". 好, 在此把 training 的步驟整理如下.

  1. 如先前所說, 用 Anaconda3 做出一個環境, 然後開 terminal.
  2. 到網路上下載訓練用的圖片.  根據原作者所述, 他用的 database 是 DF2K.DF2K is a merged training dataset consisting of 800 DIV2K  training images and 2650 Flickr2K training images.
  3. 雖然不知道有什麼特殊之處, 總之這兩個 databse 的名稱長度不一樣, 我就直接把它們塞到同一個目錄.

新目錄的位置在主目錄下自己建一個 datasets. 再下面一層開個 DF2K 子目錄, 一層 DF2K_HR 子子目錄. 2K 照片全部放這裡. 然後在與 DF2K_HR 同層開個 DF2K_multiscale 目錄. 這樣下一階段就可以開始訓練了.

train-data-150x150

4.  訓練步驟參考 [1], 首先把每張圖做縮圖, 分成 0.75, 0.5, 0.33, 0.25 四種大小. 看起來有 rounding 到特定的數字, 而且有 floor = 400.

python scripts/generate_multiscale_DF2K.py --input datasets/DF2K/DF2K_HR --output datasets/DF2K/DF2K_multiscale

例如 000001.png 就生成 000001T0.png、000001T1.png、000001T2.png 、000001T2.png 四張不同尺寸的小圖.

2048×1356 1530×1017 1020×678 680×452 601×400

5. 然後把圖形全部切齊成同樣大小的方塊. 注意 DF2K_multiscale_sub 這個目錄要留給程式建, 自己先建好會報錯.

python scripts/extract_subimages.py --input datasets/DF2K/DF2K_multiscale --output datasets/DF2K/DF2K_multiscale_sub --crop_size 400 --step 200

這裡的第一個參數顯然就是要把圖形裁切成 400×400 的小圖. 第二個參數看程式註解: “step (int): Step for overlapped sliding window."  這個意思是每個小圖有 200 pixel 和另外一張裁切圖有重疊. However, 我必須說此處就丟掉一些重要的資訊, 我想想怎模申請專利好了~~~

[原始的小圖 xxxT2: 680×452]

000001-300x199

T0 切成  35 個 400×400, T1 切成 15 個, T2 切成 6 個, T3 切成 2 個. T0 的前四張 400×400 長這樣. 也就是由左至右掃過原圖的上方.

000001T0_s001-150x150000001T0_s002-150x150000001T0_s003-150x150000001T0_s004-150x150

6. 在前一個步驟, 很多 400×400 小塊的原稿在哪裡? 這個資訊 (metadata) 需要保留起來, 因此下面這個步驟的重點就是回溯紀錄 metadata.

 python scripts/generate_meta_info.py --input datasets/DF2K/DF2K_HR, datasets/DF2K/DF2K_multiscale --root datasets/DF2K, datasets/DF2K --meta_info datasets/DF2K/meta_info/meta_info_DF2Kmultiscale.txt

7. 以上算是滿快就跑完了, 跟我打字的速度差不多. 接下來是重點, 作者的說明在不同版本有些許差異, 總之找到前面檔案總管節圖的那個目錄底下的 options, 裡面會有很多個 yml 檔. 以放大四倍來說, 需要改這兩個檔案, 確定目錄都對. 第一個訓練 generator, 第二個訓練 discrimator, 因此 pre-train 的檔案不同.

train_realesrnet_x4plus.yml

train_realesrgan_x4plus.yml

8. 接下來用 debug mode 跑一次,

python realesrgan/train.py -opt options/train_realesrnet_x4plus.yml --debug

馬上發現 Anaconda 的環境沒有安裝 cuda “Torch not compiled with CUDA enabled", 即使補安裝 cudatool, 也只是把 torch 版本由 1.10.2+CPU 變成 1.10.2, cuda 還是 unavailable.

(RealESRgan) C:\Users\ufoca\Real-ESRGAN>python
Python 3.8.12 (default, Oct 12 2021, 03:01:40) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print (torch.__version__)
1.10.2
>>> print (torch.cuda.is_available())
False
>>>

看起來要先下載正確版本. 參考 [2],[3],[4]. 網站 [4] 是 pytorch 官網, 似乎只要把自己環境設定對, 就可以用 UI 生成正確的安裝指令.

conda install pytorch==1.10.2 torchvision cudatoolkit=11.3 -c pytorch

不過這招其實沒用, [5] 說的才是對的. 要用 pip install, anaconda 本身的 server 只有 cpu 的 pytorch 可以選.

pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio===0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

另外, 我本來 pytorch 是 1.10.2, torchvision 是 0.11.3, 但上面那行貼了就會動. 安裝完跑出一些紅字說沒有檢查所有版本的相容性, 所以我又重新安裝成我的版號, 不過我不知道我的 torchaudio 應該要搭哪一版? 反而安裝不成功.

於是我還是用網路版本, 並且重跑一次

pip install -r requirements.txt

讓作者的檢查系統幫我微調一下版本. 總之, AI 的技術進步很快, 網路文章上的版號參考就好. 到時候要隨機應變.

9. 接者就不用跑 debug 版了. 改跑這條.

python realesrgan/train.py -opt options/train_realesrnet_x4plus.yml --auto_resume

我估計應該會做很久很久. 記錄一下起跑時間.

run

UI 顯示要跑 5 天半.

2022-04-10 21:48:02,327 INFO: [train..][epoch: 5, iter: 6,500, lr:(2.000e-04,)] [eta: 5 days, 10:47:47, time (data): 0.476 (0.002)] l_pix: 6.8241e-02

10. 然後是訓練 discriminator

python realesrgan/train.py -opt options/train_realesrgan_x4plus.yml --auto_resume

證明環境沒問題之後, 就可以自己動手腳去改 code 了.

[Note]

1. https://github.com/xinntao/Real-ESRGAN/blob/master/Training.md

2. https://towardsdatascience.com/setting-up-tensorflow-gpu-with-cuda-and-anaconda-onwindows-2ee9c39b5c44

3. https://varhowto.com/install-pytorch-cuda-10-0/

4. https://pytorch.org/

5. https://ithelp.ithome.com.tw/articles/10282119

ESRGAN 小註解

我參考 ESRGAN [11] 的論文導讀[1], 把其中相關的名詞做了個整理.

基本上兩大重點是 RRDB 和 GAN. 這個網路模型前者的修改是拔掉 BN, 後續又出了一篇 [9] 加上 noise 處理. 後者是修改 GAN 的對抗方式, [9] 又做了一些調整就略過. 以下把相關的名詞稍微整理如下.

首先看到 BN 這個詞, 文章中指的是第二種, 但是也順便把第一種 BN 列進來.

Bayesian Network (BN)

在 AI 中的主要應用是把人類的知識加入類神經網路 [2]. 如果單純使用 data training 叫做 machine learning. 既然它的名字裡面有 Bayesian, 顯然它考慮了條件機率, 所以在 training 的過程中, 我們要引入條件機率表 (conditional probability table – CPT).

條件式的因果關係就是 P(B|A) = C 的形式, 因此 BN 網路需要有一群輸入層的 feature 值, 然後以因果關係建立網路結構, 接著用條件機率把每個 node 到下一層 node 的機率以 CPT 表示, 最後會有一個輸出層, 告訴我們有幾種可能的 state, 以及各自有多少機率.

Batch Normalization (BN)

這是另外一個 BN, 在 RealSRGAN 裡面指的是這個, 事實上它也比較常用. 原理就是把輸入正規化為 N(0,1). 即 mean = 0, variance = 1, 這方法在 pattern recognition 和 classification 中也常用.  不過對 NN 來說, 它是指在 internal layer 去做 normalization, 不只是在輸入層.

RRDBNet Network [3]

在 RRDB 的實作中, 裡面有許多的 basic block 串接. Basic block  包括 Dense Block (DB) [4] 和 Residial Block (RB) [5]. Residual in Resisual Dense Block 就是把 dense block 以 residual network 的方式連起來 [3], 把這些 DB 都當作 RB 裡面的一層 layer 看待.

RRDBNet-768x255

RRDB 在 [1] 講得比較多. BTW, 關於噪音的改進. 可以參考 [9] 這篇的開頭.

Dense Block [4]

主要是每層都和其他幾層相連. 我把它當作 full connection 的分批簡化形式. Dense Block 的串接連成 Dense Network.

denseblock-768x653

Residual Block (RB) [5]

Residual Block 的概念, 像是 Dense block 的變形. 也就是可以跳過一層網路不連.

resisual-network-768x668

GAN

GAN 用國文來解釋很簡單, 就是正邪兩派各自去認親, 能夠訓練到邪不勝正, 那麼正的網路就大功告成了.

GAN-block-diagram

本圖取材自 [10].

從 coding 的角度來說, 當然還是要看到程式比較有感覺. 我覺得 [6] 的寫法滿好懂的. 若對於只熟悉C語言, 不熟 Pythone 的人需要克服這個底線障礙. 這邊的底線是 [7] 五種底線的第二種, ‘_’ 表示傳回的值有些是 don’t care. 例如:

validity, _, _ = discriminator(gen_imgs)

GAN 的基本流程當然是把生成對抗網路都各 train 一輪.  此時每輸入每一張圖, 都要生成一堆有噪音的圖 (靠隨機變數) – train generator. 然後把這一大把圖, 拿去 train discrimiator. 在生成 generator 的時候, 可以看到有製造噪音的 code 和最後的 back propogation.

# Train Generator
optimizer_G.zero_grad()
# Sample noise and labels as generator input
z = Variable(FloatTensor(np.random.normal(0, 1, (batch_size, opt.latent_dim))))
label_input = to_categorical(np.random.randint(0, opt.n_classes, batch_size), num_columns=opt.n_classes)
code_input = Variable(FloatTensor(np.random.uniform(1, 1, (batch_size, opt.code_dim))))
# Generate a batch of images
gen_imgs = generator(z, label_input, code_input)
# Loss measures generator’s ability to fool the discriminator
validity, _, _ = discriminator(gen_imgs)
g_loss = adversarial_loss(validity, valid)
g_loss.backward()
optimizer_G.step()

訓練 discrimator 網路時. 要得到 real image 在這個網路的 loss 評分 (終極目標是 loss = 0), 以及 fake image 的 loss 評分 (終極目標是 loss 很大). 兩組 loss 輸出, 取其平均值做 backward propogation 的分數. adversarial_loss 的實作細節看起來是在 Torch 的 loss.py 裡面 [8].

# Train Discriminator
optimizer_D.zero_grad()
# Loss for real images
real_pred, _, _ = discriminator(real_imgs)
d_real_loss = adversarial_loss(real_pred, valid)
# Loss for fake images
fake_pred, _, _ = discriminator(gen_imgs.detach())
d_fake_loss = adversarial_loss(fake_pred, fake)
# Total discriminator loss
d_loss = (d_real_loss + d_fake_loss) / 2
d_loss.backward()
optimizer_D.step()

以上是普通的 GAN 的處理方式. ESRGAN 的 GAN 不是比較 real image 和 fake image 誰的分數高, 因為我們早已經知道 real image 和 fake image 各自要扮演的角色. 花太多時間讓參數長對有點浪費時間.

ESRGAN 用的方式是讓真的和假的直接去 PK, 而不是對標準答案. 真的贏過假的參數要加分, 假的贏過真的的參數要扣分. 以下直接貼 [1] 的內容, 但用顏色標註重點.

我们可以看SRGAN的loss:

         l_d_real = self.cri_gan(real_d_pred, True, is_disc=True)
         l_d_fake = self.cri_gan(fake_d_pred, False, is_disc=True)

而ESRGAN的loss:

l_d_real = self.cri_gan( real_d_pred - torch.mean(fake_d_pred), True, is_disc=True)         
l_d_fake = self.cri_gan(fake_d_pred - torch.mean(real_d_pred), False, is_disc=True)

以上就是這篇論文會用到的重要模組. 沒有什麼創見, 就是幫入門者的障礙減少一點.

[Note]

  1. https://zhuanlan.zhihu.com/p/258532044
  2. https://towardsdatascience.com/how-to-train-a-bayesian-network-bn-using-expert-knowledge-583135d872d7
  3. https://blog.csdn.net/gwplovekimi/article/details/90032735
  4. DenseNet 學習心得
  5. https://ithelp.ithome.com.tw/articles/10204727
  6. https://github.com/eriklindernoren/PyTorch-GAN/blob/master/implementations/infogan/infogan.py
  7. https://towardsdatascience.com/5-different-meanings-of-underscore-in-python-3fafa6cd0379
  8. https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/loss.py
  9. https://zhuanlan.zhihu.com/p/393350811
  10. https://github.com/jonbruner/generative-adversarial-networks/blob/master/gan-notebook.ipynb
  11. https://aiqianji.com/blog/article/1

我讀 «一小時科普量子力學» – 下

6. 量子隱形傳態 (quantum teleportation)

它的原理是這樣. Alice 有一個量子態不知的微觀粒子 A 要傳給 Bob. Alice 和 Bob 手中各一個糾纏量子對 E1, E2. 因為 E1 和 E2 糾纏, 所以 E1 改變, E2 就會改變. 兩者之間有量子通道的存在. Alice 將粒子 A 和 E1 做某種測量, 因為 E1 被測過之後就改變了, 所以 E2 也就跟著變. 術語是 E2 塌縮到一個特定的量子態. OK, 那干 A 底事呢? A 是我們要傳遞的東西, 到現在都還沒有傳出去…

沒問題, Alice 通過古典通道, 把他量測的結果也告訴 Bob, Bob 根據這個數據, 和塌縮的 E2 反推出 A 粒子的量子態. 這樣我們完全沒有傳送 A 粒子, 但是可以重現 A 粒子. 而 Alice 和 Bob 從頭到尾都不知道 A 粒子的量子態, 所以稱為隱形傳態.

這聽起來怪的地方是古典通道的 cost 會不會高到比量子通道更高? 還有這樣的糾纏真的能實現嗎? 如果 Google 簡體中文的新聞, 大陸已經實現了 6 光子隱形傳態, 在 45 個小時中保持 98% 的量子干涉 (糾纏態) [3].

為了怕大陸新聞是大外宣, 我們來看看英文的 [4]. Zeilinger 的團隊以一光子跨過 143 公里傳遞, 有平均 0.863 的正確率 (The teleportation fidelity). 如果沒有量子糾纏, 瞎猜沒辦法達到這種水準. 可見得量子隱形傳態雛型已經有了, 只是正確性還不夠. 能傳出的量子個數也還太少.

7.  Others

這本書有很多名人故事, 也有厲害的數學. 在這些名人故事中, 我覺得最遺憾的是有 93 年中華民國國籍的楊振寧, 在 2015 年入籍中國. 不過老共的量子電腦都上太空了, 我們物理研發環境確實沒得比. 新聞說鴻海在發展離子阱, 希望他們有所突破.

書中公式密集的地方大家可以跳過.  量子力學的數學模式, 本書介紹過: 1925 年海森堡矩陣力學, 1926 年薛丁格波動方程式, 1948 年費曼路徑積分, 以及和它們和等效的狄拉克 q 數形式, 至少四種. 基本上除了路徑積分之外, 都無法和相對論結合. 故路徑積分的數學篇幅較多. 在 7.3 節 “相對論性量子力學" (P.201~), 介紹的就是與相對論有關的公式和計算. 

8. 附錄: 對稱和守恆.

(1) 空間平移對稱:動能守恆

(2) 空間旋轉對稱: 角動量守恆

(3) 時間平移對稱:能量守恆

無論在巨觀的古典力學或是微觀的量子力學, 這三者都依然守恆. 守恆和對稱看起來都是應該是"天經地義".  但是弱交互作用力 [2] 下, 宇稱卻不守恆 (parity nonconservation)[1]. 鈷 60 原子核的左旋或右旋, 在幾乎絕對零度下, 發射出的電子數量大不同. 

當初包立從 β 衰變出的電子有固定能量, 而推論出微中子 (大陸叫中微子) 的存在. 結果上帝居然不搞平等, 只要左旋右旋就可以造成電荷不同, 叫他一時難以接受, 不過他最後還是接受了啦, 還幫 “宇稱女士" 寫了死亡證明書 [5]. 楊政寧和李振道便以這個不守恆得諾貝爾獎. 做出實驗證明這個假說的吳健雄則摃龜…

9. 結語

看看本書中的諾貝爾獎小故事, 貢獻很大卻錯失獎項的人很多. A 貢獻比 B 大, 結果 B 獲獎的狀況也有. 愛因斯坦應該得十次只得一次. 田中耕一無心把別人認為不可能的東西做出來, 拿去申請專利, 而意外得到諾貝爾獎, 更是前幾年大家津津樂道的趣聞.  

基本上數學不好的人沒辦法深入欣賞量子力學, 但是看到物理學家努力解讀這個世界的故事, 還是覺得挺有趣的. 即使是愛因斯坦這麼聰明的人, 至死也想不出能統一廣義相對論和量子力學的數學架構. 我想一般人若不是要創立新教當教主, 抓住量子物理其中片面的解讀, 就想要建立一套新的宇宙觀, 恐怕是沒有必要.  我們可以接受不完美, 就像接受宇稱不對稱一樣. 知道多少就是多少.

最後附上兩大學術理論相矛盾之處:

  廣義相對論 量子力學
基本差異 定域 非定域
時空 4 維平等 4 維 + 自旋

時間一階導數

空間二階導數

引力 算得準 必須要測不準原理

[Notr]

  1. 宇稱不守恆
  2. 弱交互作用力
  3. http://scitech.people.com.cn/BIG5/n1/2020/1221/c1007-31972908.html
  4. https://en.wikipedia.org/wiki/Quantum_teleportation
  5. https://kknews.cc/zh-tw/science/yb4n5ag.html