用 PSSM 與多視窗 CNN 辨識外排蛋白
回顧我大學時做的第一個深度學習研究專題。
摘要
寫這篇文章,是因為在整理過去資料時,想用一份比履歷上的一行經歷更詳細、又比完整論文更好懂的筆記,把以前做過的事記錄下來。
這篇回顧的是我 2022 年在大學資工系的畢業專題,也是我第一次比較正式地接觸深度學習研究。特別感謝當時指導我的歐昱言教授,從老師身上學到的研究方法與思考問題的方式,到今天仍讓我受益良多。
當時我想回答的問題是:只看蛋白質的胺基酸序列,能不能用深度學習判斷它是不是會把抗生素排出細胞的「外排蛋白」?我的做法是先用 PSSM 把序列中的演化資訊編碼成矩陣,再用多視窗卷積神經網路(mCNN)掃描辨識。最後在獨立測試資料上,從膜蛋白與運輸蛋白中辨識外排蛋白的 MCC 分別達到 0.99 與 0.98,明顯高於傳統分類器中表現最好的 SVM(0.74 與 0.71)。
以下依照模型的流程說明:輸入的蛋白質序列、把序列變成數字的特徵工程、負責判斷的分類器,最後是評估方式與實驗結果。
研究問題
世界衛生組織(WHO)把抗微生物藥物抗藥性列為重大的全球健康威脅,並估計 2021 年全球有超過 470 萬人的死亡與細菌抗藥性有關。1
外排蛋白(efflux protein)是嵌在細胞膜上的一種運輸蛋白,負責把有毒物質排出細胞,抗生素也是它排出的對象之一:一篇 2023 年的綜述指出,抗生素外排是致病細菌最常見的抗藥性機制之一。2
要確認一個膜蛋白是不是外排蛋白,傳統做法是做生物實驗,但膜蛋白的實驗既費時又費力。如果能先用電腦從序列快速篩選出可能的外排蛋白,實驗資源就能集中在最有希望的候選上。專題把問題拆成兩個二元分類任務:
- 外排蛋白 vs. 膜蛋白:從一般的膜蛋白中找出外排蛋白。
- 外排蛋白 vs. 運輸蛋白:從運輸蛋白中找出外排蛋白。後者比較難,因為外排蛋白本身就是運輸蛋白的一種。
蛋白質序列:模型的輸入
蛋白質是由胺基酸一個接一個連成的長鏈。生物體內常見的胺基酸有 20 種,每一種都有一個單字母代號,例如 M 是甲硫胺酸、K 是離胺酸、A 是丙胺酸。把一條蛋白質從頭到尾的胺基酸依序寫下來,就是它的胺基酸序列,例如 MKTLLIAVAG…。
一條蛋白質的長度從幾十個到上千個胺基酸都有。這條鏈會摺疊成特定的立體結構,而結構決定了它的功能;所以不做實驗時,序列是推測一個蛋白質「做什麼」最直接的線索,也是這個模型唯一的輸入。
One-hot 與 PSSM:特徵工程
模型只能處理數字,所以要先把序列中的每個位置轉成一列數字。長度為 L 的序列,兩種編碼都會變成 L × 20 的矩陣,每一欄對應一種胺基酸,差別在格子裡放的是什麼。
One-hot 編碼是最直接的做法:每一列只有該位置實際出現的那種胺基酸是 1,其餘 19 格都是 0。它只記錄「這裡是什麼」,所以任兩種不同的胺基酸之間,差異都一樣大。
位置特定評分矩陣(Position-Specific Scoring Matrix,PSSM)的出發點是一個生物學上的觀察:功能相似的蛋白質,序列也會很像,但不會完全一樣。它們通常來自共同的祖先,在演化過程中,對功能很重要的位置很少改變,不重要的位置則可以換成別的胺基酸,蛋白質照樣能運作。
所以,與其只看一條序列,不如把一群相似的序列對齊在一起,看每個位置「通常是什麼、還能換成什麼」。PSSM 就是這個統計結果。做法是用 PSI-BLAST 到大型蛋白質資料庫中反覆搜尋相似的序列:每一輪把找到的顯著比對結果整合成一個位置特定的分數矩陣,再用它進行下一輪搜尋。3 最後每一格是一個分數,表示在這群相似的蛋白質中,這個位置出現這種胺基酸的傾向有多高:
- 保守的位置:在所有相似序列中幾乎都是同一種胺基酸,所以只有一兩種胺基酸是高分,其他都是負分。這通常表示這個位置對功能很重要。
- 變化大的位置:不同序列在這裡放了不同的胺基酸,所以很多種胺基酸的分數都差不多。
換句話說,one-hot 只告訴模型「這條序列長什麼樣」,PSSM 則告訴模型「這一類蛋白質通常長什麼樣、哪裡可以變」。
點一下序列中的字母,比較同一個位置在兩種編碼下的差別:
多視窗卷積神經網路:分類器
有了 PSSM 之後,我需要一個模型來讀這張 L × 20 的矩陣。我選擇卷積神經網路(CNN),因為它很擅長在一長串資料中找出局部的樣式。在序列上做卷積的方式是:
- 每個濾波器有固定的寬度 w,像一個視窗,一次蓋住連續 w 個位置的 20 個分數。
- 視窗沿著序列一格一格滑動,每到一個位置,就把視窗內的分數和濾波器的權重相乘再加總,得到一個分數。分數高,表示這一段序列很符合這個濾波器學到的樣式。
- 模型會同時學很多個濾波器,各自負責不同的樣式。
一開始我只用單一寬度的視窗,結果發現不管選哪個寬度,總有一些情況表現不好。我的理解是:蛋白質上有意義的區段長短不一,一種寬度的視窗只抓得到其中一種長度。所以我參考了多視窗卷積神經網路(multi-window CNN,以下簡稱 mCNN)的做法,同時用好幾種寬度的視窗掃描同一張 PSSM,再把結果合起來。4 視窗的寬度怎麼選,我是先逐一測試單一寬度,再把幾種寬度組合起來比較。
接著要處理的問題是序列長短不一。為了讓所有序列能一起送進模型,我先把每條序列的 PSSM 補零到同樣的長度。掃完之後,每個濾波器沿著序列得到的是一整排分數;我用 one-max pooling(只取最大值的池化)只保留每個濾波器的最高分,所以不管它要找的樣式出現在序列的哪個位置,每個濾波器都只輸出一個數字,所有濾波器合起來就是固定長度的特徵向量。最後,我在 dropout 之後接上一個有 1,024 個神經元的全連接層和 softmax,輸出這個蛋白是不是外排蛋白。
勾選不同的視窗寬度,按播放看掃描的過程,再試試把序列加長:
寬度 8 的視窗在位置 15–22 得到最高分:這段剛好對上一個保守區段。
把上面這些步驟串起來,就是整個模型的架構:
輸入 · L × 20,L = 24
卷積 · 每個寬度 3 個濾波器,分數條畫出其中一個
one-max pooling
串接 · 長度 = 寬度數 × 每個寬度的濾波器數 = 2 × 3 = 6
長度固定,跟序列長短無關
把游標移到向量的數字上(或用 Tab 選取),看它來自序列的哪一段。
Dropout(0.7)→ 全連接層(1,024 個神經元)→ softmax · 示意
訓練時,dropout 每次隨機關掉 70% 的特徵,減少過度擬合;預測時全部使用。
全連接層整合這些特徵,softmax 輸出是外排蛋白的機率。
如何評估:MCC
外排蛋白的數量遠少於其他兩類,在膜蛋白資料集中只占約一成。這種不平衡的資料不適合只看準確率:一個把所有蛋白都猜成「不是外排蛋白」的模型,準確率也能超過九成,卻完全沒有用。
所以專題主要用 MCC(Matthews 相關係數)評估模型。MCC 同時考慮兩類的對錯,範圍是 −1 到 1:1 代表全部判斷正確,0 代表跟隨機猜差不多,上面那個「全部猜不是」的模型 MCC 就是 0。
實驗結果
以下各表來自不同階段的實驗,視窗組合與濾波器數量不同,所以 PSSM + mCNN 的 MCC 不完全一樣;最終模型的結果是最後一張表。
資料與設定
- 資料來源:從 UniProt 下載膜蛋白、運輸蛋白與外排蛋白序列,移除長度小於 50 個胺基酸的序列。
- 去除相似序列:用 CD-HIT 把相似度超過 70% 的序列歸為同一群,每群只保留一條,避免幾乎一樣的序列同時出現在訓練與測試資料中。
- 切分:各類別依 80% / 20% 分成訓練資料與獨立測試資料。
- 不平衡處理:在訓練資料上用 SMOTE 補足少數類別的樣本。
- 調參:以 K-fold 交叉驗證選擇視窗組合與濾波器數量。
| 類別 | 原始序列 | 去除相似序列後 | 訓練(80%) | 獨立測試(20%) |
|---|---|---|---|---|
| 外排蛋白 | 6,458 | 570 | 457 | 113 |
| 膜蛋白 | 13,111 | 5,422 | 4,338 | 1,084 |
| 運輸蛋白 | 7,328 | 2,272 | 1,818 | 454 |
特徵:PSSM 比 one-hot 好
在相同的 mCNN 模型下:
| 輸入特徵 | 外排 vs. 膜蛋白(MCC) | 外排 vs. 運輸蛋白(MCC) |
|---|---|---|
| PSSM | 0.95 | 0.97 |
| One-hot | 0.90 | 0.88 |
分類器:多種寬度比單一寬度好
以外排 vs. 膜蛋白為例:
| 視窗寬度 | MCC |
|---|---|
| 單一寬度(最佳:24) | 0.85 |
| 兩種寬度(28、16) | 0.96 |
| 三種寬度(28、16、24) | 0.96 |
| 四種寬度(28、16、24、20) | 0.93 |
從一種寬度增加到兩種,MCC 從 0.85 提升到 0.96;再增加寬度,MCC 維持在 0.93 到 0.96 之間,沒有再明顯提升,所以視窗組合是一個需要調整的超參數。以四種寬度(28、16、24、20)測試濾波器數量時,濾波器從 4 個增加到 256 個,MCC 也從 0.65 提升到 0.98。
與傳統分類器比較
在獨立測試資料上,使用相同的 PSSM 特徵:
| 模型 | 外排 vs. 膜蛋白(MCC) | 外排 vs. 運輸蛋白(MCC) |
|---|---|---|
| KNN | 0.47 | 0.26 |
| Random Forest | 0.54 | 0.61 |
| SVM(RBF kernel) | 0.74 | 0.71 |
| PSSM + mCNN | 0.99 | 0.98 |
結論
PSSM 把「功能相似的蛋白質會長得像、但不完全一樣」的演化資訊帶進每一個位置,讓模型知道哪些位置是保守的;多視窗 CNN 則用不同寬度的視窗同時掃描,再用 one-max pooling 把每個濾波器的結果濃縮成一個數字。兩者結合,在這份資料上能有效區分外排蛋白與一般的膜蛋白、運輸蛋白。
回頭看,這個專題也有幾個限制:
- 只在單一資料集上驗證:所有結果來自同一份資料與切分。MCC 接近 0.99 是非常高的分數,若要確認結果能推廣到其他資料,可以再用一份獨立收集的資料驗證。
- 相似度門檻:70% 的門檻只排除了非常接近的序列,訓練與測試資料之間仍可能有中度相似的序列。若要更嚴格地評估,可以考慮更低的門檻。
- PSSM 的計算成本:每條序列都要用 PSI-BLAST 在大型資料庫上反覆搜尋,序列一多就很耗時。這也是後來研究轉向蛋白質語言模型的原因之一。5
- 只解決第一步:這個模型只負責篩選出可能的外排蛋白,之後的結構分析與藥物篩選不在專題的範圍。
註腳
-
World Health Organization,Antimicrobial resistance(fact sheet)。
-
Gaurav, A. et al.(2023)。Role of bacterial efflux pumps in antibiotic resistance, virulence, and strategies to discover novel efflux pump inhibitors。Microbiology, 169(5), 001333。
-
Altschul, S. F. et al.(1997)。Gapped BLAST and PSI-BLAST: a new generation of protein database search programs。Nucleic Acids Research, 25(17), 3389–3402。
-
多視窗掃描的做法參考 Ho, Q.-T., Le, N. Q. K., & Ou, Y.-Y.(2022)。mCNN-ETC: identifying electron transporters and their functional families by using multiple windows scanning techniques in convolutional neural networks with evolutionary information of protein sequences。Briefings in Bioinformatics, 23(1), bbab352。
-
從多重序列比對到蛋白質語言模型的演進,可參考我們實驗室之後發表的綜述,整理了膜蛋白序列特徵從 PSSM 等演化資訊到預訓練語言模型的發展:Ou, Y.-Y., Ho, Q.-T., & Chang, H.-T.(2023)。Recent advances in features generation for membrane protein sequences: From multiple sequence alignment to pre-trained language models。Proteomics, 23(23–24), 2200494。