【探索七】機器的學習策略
第七講‧特稿
撰文│郭冠廷
■「生物雖然複雜,但是仍然具有邏輯性,讓我們得以去尋索,ATCG就如電腦的0跟1一般。」
跟著機器學習分子生物學
自從上完高中生物的解剖實驗以後,陳倩瑜老師就體認到自己或許不適合從事生醫工作,而踏入電機工程學系。直至博士班時,一方面是時代趨勢,在耳邊不時縈繞著「基因體時代」、「蛋白質時代」、「轉錄體時代」;而《Science》與《Nature》雜誌,更在2001年的先後發表基因體定序的報導。另一方面,則是有感於當時代電機硬體設計在未來的發展,也許比不上正處於萌芽的軟體設計。因而老師投入資訊工程的領域,利用程式來輔助分析資料,也就是資料探勘(data mining);而後則是在時代趨勢的推引下,發現生物體中也有著許多需要分析整理的資料。
生物雖然複雜,但是仍然具有邏輯性,讓我們得以去尋索。生物體中的DNA,基本單元的核苷酸大致有四種ATCG;而這簡單的組成,讓陳老師聯想:電腦語言不也就是0和1兩種?這中間似有著異曲同工之妙。在分子生物學的中心法則中,以DNA上的核苷酸序列為基礎,「轉錄」變成RNA,再經過「轉譯」到相對應的胺基酸,而胺基酸組成胜肽鏈、蛋白質。
而蛋白質中的單元組成胺基酸,是由DNA上的三個核苷酸為一組對應而得。為什麼是三個?不是兩個?或四個?因為三個核苷酸的組合,可以有六十四種變化,恰巧足以對應二十多種胺基酸。
而老師的工作之一,則是以既有資料為基礎,分析序列來預測蛋白質的功能。從十萬個序列,約略可以分成四千種功能。曾經有人問過老師一則問題:「請問蛋白質有什麼功能?」四千種功能?是什麼功能?當然,教科書上清楚寫著:蛋白質可以產生熱量,構成組織、酵素、抗體、激素,幫助物質吸收與運送,或調節體內pH值等等。不過這些就是全貌嗎?若是,何以從序列分類有四千種之多?生物體中雖然有其邏輯與規律,但是卻又有其複雜性。因而老師在研究過程中,亦不斷學習進而成長突破。
機器的學習策略
什麼是「機器」?隨著時代的進步,機器能做的事情愈來愈多。在過去我們說「冰冷」的機器。可是如今,許多的機器,或稱科技產品,卻常常主打「人性化」、「貼心」等詞。我們使用這些機器時,也常常會感「深得我心」,甚至還靠它來提醒自己親朋好友父母師長的生日就是今天!
較為成功的家電事例之一是「智慧型機器人吸塵器」。吸塵器在家中趴趴走,透過試誤與記憶,規劃出一條清掃路徑。除此之外,近日也推出可以「偵測人體所在位置」的冷氣機。因此,什麼是機器?什麼是有智慧的機器呢?「可以和你有互動;有感知能力,並有即時的反應。」或許這就是現在的機器。機器不再冷冰冰,而會聽取使用者的心聲以產生變化。如同輸入法,錯一次就不會再錯第二次;甚至會根據輸入的前後文改變選字。。
那機器是如何聽取使用者的心聲?又如何變化呢?設計者針對不同目標,而設計特殊的演算法(Algorithm),讓機器運作。這演算法就如生物的思考能力。如果拿做菜打比方,演算法就是食譜,我們將機器的做菜、思考方式先行寫下來,然後讓它依照著這個準則,去做出我們希望它要做出的料理、反應。
但值得注意的是,機器依照設計者要求的方式行動。設計者也在演算法中,要求機器「學習」,以不斷修正自身。所以,機器的學習大致上有兩種學習策略:「監督式學習(supervised)」、「非監督式學習(unsupervised)」。
透過專家的指導,而要求機器照著指示形式,宛若強硬派的父母教導子女時,爸媽「說了算」的指導風格,這是「監督式學習」。我們會清楚的去界定「對與錯」、「好與壞」、「成功與失敗」。但清楚的界定,是指最後輸出的結果。例如:小狗在第一次看到綠色蘋果時,可能會有所畏懼;但在幾度嗅聞之後,仍會開心的將它吃下。不過,監督也並非所有的東西都要看過,而是東西要「夠像」。例如,我們在Blast[1]的資料庫當中,讓眾多不同生物的肌紅蛋白序列相互比較我們發現,物種的演化結果,有部分遺傳訊息是被保留下來的,而它們在結構上與血紅素(Heme)有密切關係。
「非監督式學習」,現在智慧型產品常運用的策略,則是以「大眾的行為」或「通則」為依歸,如:Google就是以「將最多人點選的網頁置頂」為原則。而在序列分析的應用上,和監督式不同,我們蒐集幾條有相同結構特徵的序列,然後發現這當中有幾條序列具有較高的相似度。而透過其它的研究方式,我們也發現,這幾條在功用上確實有其關聯性,也進而應證了透過演算法所分析出的結果。
因為資料愈來愈多,如基因序列的解碼的速度,壓倒性領先相對應蛋白質功能的研究,更遑論蛋白質結構上的資訊。透過電腦的輔助,基因解碼的速度愈來愈快,甚至不久將來極有可能做到「個人」DNA基因序列的解碼。大家都能知道潛藏在自己生命中的有字天書,可是這天書上的內容,實際上的意義代表什麼?我們的所知卻仍是相當的有限。
因此,在未來機器學習的策略,因為專家知識有限(knowledge-driven),可能將會以「非監督式」為主流,讓機器透過演算法,去整理歸納出一個結果(data-driven),讓看似無章的數據資料,能變為有明確意義的資訊。就好似雙足步行一般,與其從各種物理學的角度來分析教導機器或嬰兒怎麼行走,不如就告訴它怎麼思考、試誤,讓它自己學會走路。
基因的演化與表現方式
老師透過自己所寫的演算法,得知某些物種的某些基因序列共存率、保留性較高。如老鼠和人類的肌紅蛋白(Myoglobin)的序列當中,只有部分基因被演化巧妙的保存下來;後來透過研究明白,原來這些被保存下來的部分,結構上與它的功能有密切的關係。
參與相同生物功能的基因群,會有類似的基因表現。就如同現行便利商店常常會推出39元的組合套餐,就是預測民眾有意願同時購買飲料與麵包,因此店家就在價格上推波助瀾一番,讓民眾把兩樣一齊帶走。基因的表現,常常也有這種傾向會共同表現(Co-expression)。如食物在人體中消化,此時與消化有關的基因就會一同啟動,來完成這份消化食物的任務。
因此,同一種基因,在跨物種間基因相似,有它的意義,可能是為維持蛋白質結構上的功用。而如果是在同一物種中,不同個體的某蛋白質序列相似,則可能是有著相同的功能,或者它們會是一齊共同參與某任務的夥伴。相似度,是機器學習策略中的基本核心。
若把這一點運用在醫療領域,利用疾病基因型(Genotype)與表現型(Phenotype)的關係,醫師可以參酌過去罹病的病患基因表現型上的差異,來判斷病人可能獲得的疾病為何;甚至,進而發現新的疾病類型。例如:急性骨髓性白血病(AML Acute myeloid leukemia)和急性淋巴性白血病(ALL, Acute lymphoblastic leukemia),病患的基因型與表現型就有所不同。
個人化的醫療
前面提到,基因解碼的速度愈來愈快,而這主要是歸功於「霰彈槍定序法(Shotgun sequencing)」的使用。它是為長DNA定序的方式,因為現行DNA定序的儀器要達到精確定序仍有所侷限,需要把長DNA先肢解成數小段的DNA。傳統方法是照順序去切DNA,然後依序比對,相當耗費人工;現在則是將整條DNA打成數百萬個片段,然後用演算法將片段的序列資訊重新整合,從而得到整條DNA的序列。簡單而言,我們有一臺翻譯機與寫滿密碼的大紙,但是翻譯機每次只能翻譯十分之一大紙面積的範圍。而傳統翻譯方式,是小心翼翼把大紙裁成一小塊一小塊,然後依序送進翻譯機翻譯,但這太費勞力;因此,我們直接把這塊大紙送進去碎紙機,不管次序,然後翻譯好後,再請超級電腦依照演算法去判斷上下文比對出正確的次序。
經由電腦硬體的升級,與演算法的設計愈來愈精密,定序的速度大幅提升,個人基因體的定序也如火如荼的展開。[2]相信在不久的將來,醫療將從個人的基因序列出發,邁向個人化的醫療服務。最後,倩瑜老師鼓勵有志於資訊或生物領域的同學跨領域的結合,一齊加入機器學習的大團隊。
[1] http://blast.ncbi.nlm.nih.gov/Blast.cgi
[2] 〈1 million human genomes resequencing project〉http://www.bgisequence.com/home/applications/human-disease-research/ongoing-projects/
--
本文整理自:101/06/02下午由陳倩瑜副教授在臺大應力所國際演講廳所主講之「機器學習的演進與應用」的演講內容
延伸閱讀:台大科學教育發展中心探索基礎科學講座2012年06月02日第七講〈機器學習的演進與應用〉全程影音
﹝本文作者據傳曾是不務正業的筆耕農夫,現就讀臺灣大學兼職文學寫作﹞
責任編輯:Nita Hsu