Latest Entries »

有時候部分 Windows 7 的圖示,像是開始功能表列或桌面的程式圖示會消失

這是因為 Windows 有對這些程式圖示做快取,但快取資料庫可能被某些新安裝的程式弄亂了

下面方法方法可以重建圖示快取資料庫:

  1. 關閉所有的檔案總管 (Windows Explorer) 視窗
  2. 按 Ctrl + Shift + Esc 啟動 Windows 工作管理員 (Task Manager)
  3. 在「處理程序」頁面,找到 explorer.exe,在其上按右鍵
  4. 點選 「結束處理程序(E)」。 (這時工作列會消失,因為工作列就是 explorer.exe 的一部分。)
  5. 從工作管理員左上角的「檔案(F)」選單,點選「新工作 (執行…) (N)」
  6. 輸入 cmd 後按「確定」,以打開命令提示字元 (Command Prompt)
  7. 在 cmd 視窗內,依序輸入下列指令並按 Enter:
    cd /d %userprofile%\AppData\Local
    del IconCache.db /a
    exit
    (這步驟基本上刪除圖示快取檔,explorer.exe 重開後就會重建)
  8. 在工作管理員,點「檔案(F)」>「新工作 (執行…) (N)」
  9. 輸入 explorer 後按「確定」,工作列就會出現

資料來源 (英文):http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/icons-missing-their-specialized-image/3f1f7108-2984-4071-afd8-5bec9cceda38?auth=1

最近開始使用 Spyder 的 python IDE,其中包含 editor、IPython、變數檢視器、檔案檢視器和各種 documentation,對於需要不斷改 code 並實驗各種參數非常好用。

Spyder IDE 的 Github: https://github.com/spyder-ide/spyder
Spyder 官方網站: http://pythonhosted.org/spyder/index.html

由於我沒有安裝 Anaconda,這裡提供使用 pip 安裝的方法:

Spyder IDE 需要藉由 PyQt 來顯示圖形介面,因此需先安裝 PyQt。在 cmd 輸入:

pip install PyQt5

安裝完成後,接著輸入:

pip install spyder

來安裝 Spyder。如果沒問題就安裝好了。最新的 Spyder 版本是 3.2.0,但我在安裝 Spyder 3.2.0 遇到一些 unicode 的問題,所以目前我還是安裝舊版的 3.1.4

pip install spyder==3.1.4

如果以後 bug 修復了,可以再透過下列指令更新 Spyder

pip install -U spyder

 

Windows 上安裝完後,要啟動 Spyder IDE ,可以在 cmd 輸入:

spyder3

Spyder 的程式執行檔 “spyder3.exe" 是放在 Python 安裝位置下的 Scripts 資料夾 (Python 的其他 cmd 指令像是 pip 也都在此)。如果嫌麻煩,可以建立一個捷徑連結到 “spyder3.exe"。

註:一般 Python 3 的預設安裝位置是

C:\Program Files (x86)\Python 3.x (所有使用者安裝 32 位元)
C:\Program Files      \Python 3.x (所有使用者安裝 64 位元)
C:\Users\<user name>\AppData\Local\Programs\Python\Python3x-32 (個別使用者安裝 32 位元)
C:\Users\<user name>\AppData\Local\Programs\Python\Python3x    (個別使用者安裝 64 位元)

而 Python 2 的預設安裝位置是

C:\Python2x

 

See you later alligator

今天聽到英文一種奇妙的方法說再見:

A: See you later alligator.

Urban dictionary 上寫對方聽到這句,必須要回答:

B: In a while crocodile.

搞笑的是 alligator 和 crocodile 都是鱷魚

美國人的梗真是難懂 ~~

Defense! Defense! Defense!

周二就要做 PhD dissertation 的 defense 了
極度緊張,但是卻又沒有非常有效率的在準備
這種心理狀態到底是怎麼樣的一個機制呢?
還是無法理解如何讓自己最有效率的在時間內做完一件事情
現在暫時把 Facebook 封鎖起來,希望有幫助

如果使用的是 MiKTeX 2.9

可以在
C:\Program Files (x86)\MiKTeX 2.9\tex\latex\base
找到 LaTeX 的原始檔

LaTeX 一般也會包含說明檔 source2e,但我的 source2e 無法編譯,所以在網路上找到了編譯好的版本:
https://www.tug.org/texlive/Contents/live/texmf-dist/doc/latex/base/source2e.pdf

另外,你可能不會直接看到 source2e.pdf 所提到的原始檔 (例如:lt….dtx 檔),因為他們已經被包裝到 latex.ltx 和 latexa.ltx 檔內了。

去年有幸第一次受邀到不同的系所給正式的 seminar talk,

雖然不是很成功,但學到了一些寶貴的經驗。

 

在學術界,一位來訪者到一個系所給 talk,不單單只是 talk 本身而已。

禮貌上,來訪者還需要拜訪該系所同領域內的各個教授、postdoc 或學生。

如果自己正在尋找 postdoc 或教職,將來有打算申請該學校的職缺,與當地教授面談就更為重要。

一般 (歐美) 教授都會預期來訪者在 talk 前後找自己談話,所以不用太害羞或覺得打擾到人家。

當然談話的內容也不能太空洞,所以在拜訪前一天,應該先做好功課,

了解該系所有哪些教授,研究領域是什麼,做過哪些重要的題目。

而更重要的一點是! 要記得系所裡的人名和長相 (這對我來說相當困難 XD)。

這樣在見面的時候,可以很有禮貌的認出對方並叫出名字XD

 

談話時,因為事前有做過功課,就可以根據對方做的研究發問,討論討論有時就會有意想不到的 idea 出現。

除了聊對方的題目,對方也一定會問自己最在做什麼研究。

這時因為 talk 上的題目已經在 talk 中討論得相當詳細了,繼續討論它也沒什麼好說。

所以很重要的一點是,必須準備一個 talk 之外自己正在做的題目來介紹。

技巧上,talk 上所講的題目應該是已經做完、發表過東西。而自己正在做的題目,可以保留在個別談話的過程中提及。

尤其是正在做的研究,有很多不確定性和未完全了解的部分,若把它放在 talk 上講,容易出錯或被問到不懂的部分。

而在個別的訪談中,可以以比較輕鬆的方式講解。若對方有不同的看法或認為你的了解有誤,也可以私下跟你說並跟你討論。

一方面比較不尷尬,另一方面可以學到的東西也比較多。

 

我第一次拜訪時,並不知道這些,而把正在做的題目放在 talk 的後半部講。

結果因為對它不熟悉,讓 Talk 收尾的相當差,而訪談時也沒有別的話題可以聊。

後來前輩告訴我這些技巧,第二次有特別準備,拜訪的經驗就好上許多。

第一次練習用 Python 寫 logistic regression。

Logistic regression 雖然已經有很多寫好的 package 可以用,不過我還是嘗試自己寫了一下,

讓自己熟悉 logistic regression 到底做了什麼,還有各個參數的特性。

 

Logistic regression 顧名思義就是用 logistic function:

h(z) = 1/(1 + exp(-z)).

為 fitting function 來 fit data 或說是做分類,logistic function 本人長這樣:

logistic-function

它的特性是,連續的從 0 到 1 遞增,當輸入 z < 0 時輸出 h < 0.5,當輸入 z > 0 時輸出 h > 0.5。

所以當你的 data 分布是大約以 z = 0 為分界,以上為 True (1),以下為 False (0),就可以用 logistic function fit 或分類出來。

如果分界點不剛好在 z = 0,或是 T 和 F 的區域相反,可以藉由不同的 fitting function 像是 z(x) = t_0 + t_1*x 輸入到 h(z) 來達到。

依此類推,你也可以 fit 更高維的 data,然後考慮 z(x1, x2, x3, …) = t_0 + t_1*x1 + t_2*x2 + t_3*x3 …。

或是更高次方的 fitting function,像是 z = t_0 + t_1*x + t_11*x^2 + t_111*x^3 …,等。

 

下圖的 2 維 data  點是由室友提供,藍點代表 1 (True),黃點代表 0 (False)。

可以看出來點的分布像是個歪斜的橢圓形,所以我使用一個 2 次的 function 來 fit 它:

z(x,y) = t_0 + t_1*x + t_2*y + t_11*x^2 + t_22*y^2 + t_12*x*y.

在給定 t_0 … t_12 後, 對於每一個 data 點代入 z (x, y) 再代入 logistic function, h(z), 並以 h(z) = 0.5 為分界

就可以預測每一點 (x,y) 大約是 T 或是 F

a-result

圖中紅色曲線代表 h(z) = 0.5 的曲線,就是這個 model 分類 T 和 F 的界線。

 

當然,真正 regression 的部分在於找到 model 的參數 t_0, t_1, …, t_12,讓 model 最符合 data。

對於一組參數 t_0, t_1, …, t_12,可以計算出 model 的 prediction ( h(z(x,y)) )與 實際 data 的誤差,

每一組 data 都可以算出誤差,這些誤差之合稱為 cost function (就像是高中學過的 X^2 一樣)。

Regression 的目的就是找到一組參數 t_0, t_1, …, t_12 使得 cost function 最低。

也就是說 regression 就是一個找最小值的問題。

 

要找到一個 function 的最小值,最簡單的般法就是 gradient descent。

先計算 cost function 在該點的梯度,然後讓參數 t_0, t_1, …, t_12, 往 cost function 減少最快的方向前進一段距離。

再重新計算梯度,再前進。

重複夠多次之後,就會逼近最小值,找到 model 的參數。

 

上圖為 gradient descent 前進 1000 次的結果,

可以看的出來,還不是 fit 得很好,因為我使用的方法相當簡單,每次前進的步伐是固定的

較為進階的演算法,會每一步調整最佳的前近距離,收斂的就會更快更有效率。

 

總之,logistic regression 是個相當有趣的 python 練習,另外也是做 data scientist 和 neural network 的第一步。

 

My code and data: http://github.com/louis925/Logistic-Regression-Oval

Coursera 上關於 Machine Learning 的線上開放課程 (由 Stanford University 教授上課): http://www.coursera.org/learn/machine-learning/home/welcome

SO(3) 是各種 3維旋轉 所構成的群,任何 3 維的旋轉都可以由兩樣東西表示:

1. 旋轉軸的方向 v (一個三維的單位向量)

2. 旋轉的角度 θ (介於 -π 和 π 之間)

 

要圖像化 SO(3) 的結構,我們可以想像一個半徑為 r = π 的三維實心球

球裡的每一點代表一種旋轉,該點的徑向向量就是旋轉軸 v

而點到球心的距離 r 就代表旋轉的角度 θ,其範圍可以從 r = -π 到 π

這是合理的,因為對某方向 v 旋轉 -θ 角,就跟對 –v 方向旋轉 θ 角是一樣的。

此外,因為旋轉 θ = π 和 -π 也是一樣的,所以這顆球的表面上的一點 (r = π) 和其相對的點 (antipodal, r = -π) 是一樣的。也就是說北半球的表面跟南半球的表面視為相同的,並且互相連通。

所以 SO(3) 可以看做是一顆實心球,但南北半球的表面互相連通。

 

就是因為這樣的連通,所以 SO(3) 不是 simply connected (單連通) 的。

簡單的說,一個 simply connected 的拓撲空間,其內部通過任意兩點的一條 closed loop (封閉路徑),必需要可以連續的變形收縮到一個點。

像是 R^2 空間或是實心球體就是 simply connected 的。

而甜甜圈內部就不是 simply connected 的,因為一條繞過甜甜圈中間洞口的封閉路徑,無法連續變形到一個點。

 

SO(3) 雖然長得像實心球,但是它的南北半球表面互通。

如果考慮一條從南極出發,經過球心,再到達北極跟南極相連的封閉路徑,

這條路徑無法連續收縮到一點,所以 SO(3) 不是 simply connected。

 

此外,長得跟 SO(3) 很像的 SU(2),實際上是 simply connected 的。

 

References:
[1] https://zh.wikipedia.org/wiki/單連通
[2] Matthew D. Schwartz, “Quantum Field Theory and the Standard Model", Sec. 10.5.1.

雖然已經發了數篇 paper,但這還是人生中第一次自己 submit paper 到 journal 上

在 APS 的 Physical Review D (PRD) 系列發表是可以選擇免費或是付費的

如果選擇免費的話,paper 的版權會是出版社的。但讀者要看的時候,就必須要付錢才能看。

如果要讓你的 paper 免費給大家看 (open access) 的話,那你就要付錢,費用大概是 USD $1900 ,還蠻貴的。

我想一般人都是選擇免費發吧?

另外,投稿 PRD 的時候,會讓你選擇該 paper 的 keywords,

據我老闆說,期刊會根據這來挑 referee 的人選。所以建議選適合的領域的 keywords 比較好。

最後,PRD 還會要你直接建議幾個 referee,據說一般 editor 會從你建議的名單挑選一位,其他的幾位再由 editor 決定。

 

Numpy 是 Python 中處理數學相關的一個強大 package,要使用 Numpy 前請先安裝 Python。(可以到 Python 官網 下載安裝,目前最新版本是 3.6.2 和 2.7.13。) 而 Scipy package 依賴於 Numpy ,以提供更多科學運算所需的功能。

一般 Python 安裝 packages 可以直接在 command line (cmd) 裡輸入

pip install <package 名稱>

來下載安裝。

然而 Scipy (於 2017 年) 在 pip 上仍然沒有相容於 Windows 的安裝版本,因此必須手動至 Christoph Gohlke 的網站下載安裝。由於此 Scipy 依賴於 Numpy+mkl,所以 Numpy package 也必須手動安裝。

下面提供在 Windows 上已安裝好 Python 後,手動下載安裝 Numpy package 的方法

  1. 開啟命令提示字元 (cmd)
  2. 輸入並執行 python -m pip install -U pip setuptools
    (如果命令提示字元不認得 ‘python’ 和 ‘pip’,請先把 python 資料夾 C:\Python27 和 C:\Python27\Scripts 加入到 Windows 的 path 環境變數內)
    (此例子以 python 2.7 版,3.6 版也是類似,只是位置不同)
    (如果 pip 無法更新,請試試看重新安裝新版的 Python 2.7 或 3.6)
  3. 輸入並執行 python -m pip install wheel ,來安裝 Wheel
  4. Unofficial Windows Binaries for Python Extension Packages 網站,下載  NumPy 及 Scipy 的 Wheel 安裝 package (.whl 檔),此網站由 UCI Laboratory for Fluorescence Dynamics 的 Christoph Gohlke 所維護
    Numpy: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
    Scipy: http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
    依 Python 安裝的版本做選擇。(cp27 是給 2.7 版的 Python,cp36 是給 3.6 版。win32 是給 32 位元的 Python,win_amd64 是給 64 位元的。例如:2.7 版 32 位元的 Python,就下載 “numpy-1.12.0+mkl-cp27-cp27m-win32.whl" 及 “scipy-0.19.1-cp27-cp27m-win32.whl")
  5. 到剛剛下載的資料夾內,啟動命令提示字元 (檔案總管,在該資料夾空白處,按 shift + 右鍵 > 在此處開啟命令視窗(W))
  6. 先安裝 Numpy,執行 pip install numpy-1.12.0+mkl-cp27-cp27m-win32.whl
  7. 接著安裝 Scipy,執行 pip install scipy-0.19.1-cp27-cp27m-win32.whl
  8. 安裝完成後,到 Python IDLE,執行看看 import numpy 和 import scipy,如果沒有出現問題就是安裝成功了!

其他常見的 packages 如 sklearn, tensorflow, matplotlib 皆可以直接透過 pip install 安裝,並相容此 numpy

But, 以上是 the hard way to install。如果你只想要無腦安裝直接使用,可以試試 Anaconda Distribution 的 Python

http://www.continuum.io/downloads

這是由 Continuum Analytics 公司提供的,一般使用應該是免費,預設會安裝一些 data 分析和科學運算常用的 packages。