30到60分鐘的速成課,讓你了解人工智能的實(shí)際應(yīng)用,以及它的缺陷。
人工智能已經(jīng)成為現(xiàn)在的熱門詞匯,而醫(yī)療健康也是也是很有潛力的行業(yè)。AI最終會(huì)完全代替醫(yī)療人員嗎?或者它們會(huì)讓從業(yè)者從事更加有趣、更有價(jià)值的工作嗎?
醫(yī)學(xué)專家和研究人員不能一夜之間學(xué)會(huì)編程和數(shù)據(jù)分析,但他們需要了解AI究竟是什么、是如何工作的、現(xiàn)在達(dá)到了什么水平、將來會(huì)怎樣發(fā)展,以及數(shù)據(jù)科學(xué)家的工作是什么。這就是本文要講的內(nèi)容,從中你會(huì)了解機(jī)器學(xué)習(xí)的基礎(chǔ)概念,例如交叉驗(yàn)證和過度擬合,以及在實(shí)踐中最常見的困難和缺點(diǎn)。
我們會(huì)在文中講解如何建立一套算法,用核磁共振(MRI)數(shù)據(jù)估計(jì)大腦的生理年齡。你會(huì)學(xué)到如何用入門級(jí)線性回歸知識(shí)和高級(jí)深度神經(jīng)網(wǎng)絡(luò)打造先進(jìn)的算法,可以自動(dòng)辨識(shí)暗示著大腦的年齡的特征,例如白質(zhì)稀疏癥和大腦皮層萎縮。這篇文章面向所有讀者,即使你不是放射科醫(yī)生也沒關(guān)系,我們會(huì)從科學(xué)的角度,向大家展示大腦的生理年齡對(duì)理解神經(jīng)退行性疾病是很有幫助的。在文章的最后,我們會(huì)證明,算法估計(jì)出患有阿爾茲海默癥病人的大腦年齡,比正常人老了六歲。
我們還發(fā)布了Colab筆記本,你可以執(zhí)行代碼復(fù)現(xiàn)此過程,鏈接:colab.research.google.com/drive/1SWUcKT6bJLaTlxVLMvjHgLOD7Rdy3MQY#scrollTo=emyzNaHln9qa&forceEdit=true&offline=true&sandboxMode=true
在最近的一篇文章中,機(jī)器學(xué)習(xí)領(lǐng)軍人物Michael Jordan試圖給AI去神秘化:
“現(xiàn)在大多被稱作AI的東西實(shí)際上在過去幾十年都屬于機(jī)器學(xué)習(xí)。機(jī)器學(xué)習(xí)結(jié)合了統(tǒng)計(jì)學(xué)、計(jì)算機(jī)科學(xué)和很多其他學(xué)科,設(shè)計(jì)算法處理數(shù)據(jù),進(jìn)行預(yù)測,從而做出決定?!?/p>
事實(shí)上,對(duì)大腦年齡的估計(jì)可以看做是一種監(jiān)督式的機(jī)器學(xué)習(xí)問題,這是數(shù)據(jù)科學(xué)家們很擅長的問題。監(jiān)督式機(jī)器學(xué)習(xí)問題的目標(biāo)就是創(chuàng)造一種算法,能夠在給定輸入X的情況下輸出Y。在這里,我們的X是MRI數(shù)據(jù),Y是大腦年齡。機(jī)器學(xué)習(xí)算法關(guān)鍵的一點(diǎn)就是他們用真實(shí)世界的數(shù)據(jù)進(jìn)行訓(xùn)練,并非根據(jù)專家制定的規(guī)則進(jìn)行設(shè)計(jì)。如果你能用X和Y解決醫(yī)學(xué)問題,那你也能成為半個(gè)數(shù)據(jù)科學(xué)家了。
遇到這樣的問題,數(shù)據(jù)科學(xué)家們采取的方法是一樣的:
獲取數(shù)據(jù)、清洗數(shù)據(jù)
分析數(shù)據(jù)、提取相關(guān)特征
設(shè)計(jì)一個(gè)驗(yàn)證方案
用數(shù)據(jù)訓(xùn)練算法、分析錯(cuò)誤、解釋結(jié)果
不斷迭代,直至算法達(dá)到最佳性能
我們將對(duì)這些步驟一一講解,重點(diǎn)解釋最常用的機(jī)器學(xué)習(xí)工具,以及常見錯(cuò)誤。
硬件、軟件和知識(shí)
機(jī)器學(xué)習(xí)的運(yùn)用少不了對(duì)硬件環(huán)境的要求,如果你只有一臺(tái)筆記本電腦、用Excel操作的話,可能會(huì)很痛苦,因?yàn)檫@里的數(shù)據(jù)集體量很大,也很復(fù)雜(因?yàn)槭?D圖像)。所以一臺(tái)好的機(jī)器可能需要如下配置:
一個(gè)可以存儲(chǔ)并快速下載的SSD硬盤:項(xiàng)目結(jié)束后我們可能有大約500GB的數(shù)據(jù)
大量的RAM(如128GB)
多核處理器(如32核)
至少一臺(tái)高性能GPU,GPU對(duì)于深度學(xué)習(xí)至關(guān)重要。
軟件方面,我們用Python作為編程語言。
另外,數(shù)據(jù)科學(xué)需要你掌握一些理論知識(shí),例如應(yīng)用數(shù)學(xué)、統(tǒng)計(jì)學(xué)、算法以及編程經(jīng)驗(yàn)、數(shù)據(jù)庫管理等等。數(shù)據(jù)科學(xué)家可能來自不同領(lǐng)域,但經(jīng)常需要分析或咨詢,在他們的工作中使用機(jī)器學(xué)習(xí)工具會(huì)非常有幫助。
數(shù)據(jù)收集
在這個(gè)項(xiàng)目里,我們用了兩個(gè)公開的數(shù)據(jù)集,A中包含了來自倫敦三家不同醫(yī)院的數(shù)據(jù),有將近600名病人。數(shù)據(jù)集B包含了來自美國、中國和德國25家不同醫(yī)院的1200多名病人的數(shù)據(jù)。一份MRI數(shù)據(jù)可能包括了多張圖像,表示不同生理特征(T1、T2、FLAIR、DTI等等),稱為序列。在我們的實(shí)驗(yàn)中,我們只用了最常見的T1序列。
這一部分對(duì)我們很容易,因?yàn)槲覀兪褂玫臄?shù)據(jù)集已經(jīng)是經(jīng)過管理的,是可用的。而且醫(yī)學(xué)圖像都是標(biāo)準(zhǔn)格式(DICOM)。
數(shù)據(jù)清洗
數(shù)據(jù)科學(xué)項(xiàng)目的開始就伴隨著數(shù)據(jù)清洗,這并不是最令人激動(dòng)的緩解,并且還會(huì)很費(fèi)時(shí)。為了清洗數(shù)據(jù),研究者首先需要研究它。
數(shù)據(jù)集A中包含一個(gè)病人信息的電子表格以及含有大量MRI數(shù)據(jù)的壓縮文件夾。圖像以NlfTI格式存儲(chǔ),NlfTI是DICOM的常見替代版本,每個(gè)項(xiàng)目都有自己的ID,可以在電子表格和MRI文件夾中找到。觀察數(shù)據(jù)后,我們發(fā)現(xiàn)了幾個(gè)問題:
有些項(xiàng)目有一個(gè)MlfTI文件夾,但并沒有在電子表格中出現(xiàn)過。
相反地,一些項(xiàng)目在電子表格中出現(xiàn),但沒有在MlfTI中出現(xiàn)。
有些ID在電子表格中重復(fù)出現(xiàn)。
來源醫(yī)院的名稱并不在電子表格中顯示,而是在壓縮文件夾中隱藏。
一些NlfTI文件夾有問題,圖像的分辨率會(huì)很低,而且經(jīng)過部分裁剪。
看起來數(shù)據(jù)一團(tuán)糟,但是這個(gè)數(shù)據(jù)集還不算無藥可救,一些錯(cuò)誤在醫(yī)學(xué)數(shù)據(jù)集中算是很常見的,通常是由于數(shù)據(jù)的轉(zhuǎn)換才造成了這樣的結(jié)果。我們在數(shù)據(jù)集B中也遇到了類似的情況、最后,我們從數(shù)據(jù)集A中獲得了563個(gè)“干凈”的對(duì)象,從數(shù)據(jù)集中獲取了1034個(gè)處理過的對(duì)象,仍然是較大規(guī)模的數(shù)據(jù)集。我們創(chuàng)建了另一個(gè)電子表格,有1597行,5列。每一列分別是ID、年齡、性別、MRI來源醫(yī)院和相關(guān)NlfTI文件路徑。具體表格可點(diǎn)擊鏈接查看:colab.research.google.com/drive/1SWUcKT6bJLaTlxVLMvjHgLOD7Rdy3MQY#scrollTo=emyzNaHln9qa&forceEdit=true&offline=true&sandboxMode=true
數(shù)據(jù)顯示,其中55%的研究對(duì)象為女性,最小的為18歲(我們在數(shù)據(jù)集中排除了兒童),最大的87歲。
數(shù)據(jù)處理
當(dāng)我們打開NlfTI文件夾后,發(fā)現(xiàn)圖像之間的分辨率、立體像素值、視野、方向等差別很大。所以我們必須對(duì)它們進(jìn)行規(guī)范化。
幸運(yùn)的是,神經(jīng)科學(xué)研究社區(qū)的研究人員曾開發(fā)過一些用于規(guī)范大腦MRI數(shù)據(jù)的軟件工具,我們選擇了ANTs以及一些自制的Python腳本,對(duì)每份MRI數(shù)據(jù)進(jìn)行以下操作:
重新采樣:將每立體像素的分辨率設(shè)為1mm3
N4偏見域矯正:該步驟是去除圖像中的非生物信號(hào)。
制作統(tǒng)一的大腦圖像模板:將所有圖像轉(zhuǎn)換到相同的方向、調(diào)整成同樣的比例大小等等。
去除頭骨:我們要從圖像中移除顱骨,僅保留大腦,方便估計(jì)大腦的年齡。
立體像素密度歸一化:在MRI中,立體像素的密度值是隨機(jī)的(從0到100,或者從0到10000……)。我們使用了一種成為白條紋歸一化的技術(shù),它會(huì)檢測白色物質(zhì)的密度值,并將其設(shè)置為1。
這些操作都需要大量計(jì)算力,每個(gè)項(xiàng)目操作一遍需要5分鐘,所以要處理完整個(gè)數(shù)據(jù)集大約需要5天!
醫(yī)生有關(guān)大腦年齡都了解哪些知識(shí)
事實(shí)上,醫(yī)生對(duì)大腦年齡的了解并不多!讓醫(yī)生單從一張大腦圖像上判斷準(zhǔn)確的生理年齡幾乎不可能。但是放射科醫(yī)生們知道MRI上正常大腦都具備哪些形態(tài)。在大腦衰老的過程中,有三個(gè)主要特征可以在MRI的T1序列上發(fā)現(xiàn),如圖。
腦萎縮,圖中灰色部分的厚度會(huì)減少
出現(xiàn)腦白質(zhì)疏松癥狀(leukoaraiosis)
由于腦萎縮,會(huì)導(dǎo)致腦室擴(kuò)張,其中會(huì)積聚腦脊髓液
為了方便解釋,我們只對(duì)T1進(jìn)行分析。實(shí)際上,放射科醫(yī)生在判斷腦齡時(shí)還會(huì)節(jié)課其他MRI序列。例如,在T2序列上的腦白質(zhì)疏松癥狀更明顯,其他序列能幫助檢測某些與腦齡有關(guān)的結(jié)構(gòu)特征。未來,功能性磁共振成像(fMRI)也許可以進(jìn)一步提升腦齡判斷的準(zhǔn)確性。
準(zhǔn)備工作
從這里開始,就要進(jìn)入算法部分了!
確定問題:用X預(yù)測Y
最初接觸機(jī)器學(xué)習(xí),最好的實(shí)踐方法就是用簡單的基準(zhǔn)算法對(duì)復(fù)雜問題進(jìn)行了解。所以,我們決定先不使用3D圖像,而是用能夠反映它們內(nèi)容的立體像素強(qiáng)度直方圖表示。
對(duì)于電腦來說,一份MRI就是由立體像素灰度的數(shù)值組成的3D網(wǎng)格,高值通常用黑色表示,低值用白色表示。一份圖像的直方圖就是這些值的直方圖。其中一個(gè)例子如下所示,x軸表示灰度的值從0到1,y軸表示每個(gè)值的總立體像素值。
檢測的核心思想是,同類組織的灰度值是相近的,所以為了確定灰色物質(zhì)和白色物質(zhì)的數(shù)量和占比,你可以計(jì)算二者有相似值的立體像素?cái)?shù)量。
回到算法上,我們將輸入的X用向量(一串?dāng)?shù)字)替換,共有200個(gè)。用數(shù)學(xué)表示,即對(duì)于單一MRI,X=[X1,X2,…,X200],其中Xi是在第i個(gè)項(xiàng)目中立體像素的數(shù)量。我們把對(duì)MRI的具體描述稱為特征向量。機(jī)器學(xué)習(xí)算法的主要概念就是,這里沒有人類制定的規(guī)則告訴你如何將X輸出Y,而是他們可以用數(shù)據(jù)學(xué)習(xí)這些規(guī)則。這就是深藍(lán)(Deep Blue)和AlphaGo的主要區(qū)別之一。
更進(jìn)一步,“訓(xùn)練”算法,表示搜索一種函數(shù)F,算法F(X)可以進(jìn)行預(yù)測,其中輸出的結(jié)果最接近真值Y。而“學(xué)習(xí)”就是一個(gè)優(yōu)化問題,讓預(yù)測結(jié)果和真值之間的誤差達(dá)到最小。在我們的案例中,公寓1597對(duì)(X, Y)值,我們試著讓|F(X)—Y|的絕對(duì)值誤差最小。例如如果F(X)預(yù)測出年齡為23歲,而此時(shí)Y的實(shí)際值是21歲,絕對(duì)誤差就是2歲。
交叉驗(yàn)證:分離訓(xùn)練集和測試集
現(xiàn)在,我們要進(jìn)入機(jī)器學(xué)習(xí)過程中的重要一步:如何判斷算法的有效性?機(jī)器學(xué)習(xí)解決這一問題的方法叫做交叉驗(yàn)證(cross-validation)。我們隨機(jī)將數(shù)據(jù)集分成兩部分:訓(xùn)練集和測試集(也叫做驗(yàn)證集)。訓(xùn)練集用來訓(xùn)練算法,驗(yàn)證集用來評(píng)估性能,看算法在從未見過的新數(shù)據(jù)上表現(xiàn)得怎樣。
難處在與,我們?nèi)绾卧O(shè)置訓(xùn)練集和測試集的比例,訓(xùn)練集越大,算法性能就越好,因?yàn)榻邮苡?xùn)練的數(shù)據(jù)更多。但是越大的測試集能反映出更可靠的性能,因?yàn)閿?shù)據(jù)代表真實(shí)世界的情況。
這里我們運(yùn)用了一種名為K-折交叉驗(yàn)證的方法,隨機(jī)將數(shù)據(jù)集分為5部分,重復(fù)訓(xùn)練5次,每次都將該數(shù)據(jù)集用作測試集,其他四個(gè)用作訓(xùn)練集。這樣進(jìn)行五次之后,模型會(huì)更加可靠。
但是在醫(yī)學(xué)研究中,僅有交叉驗(yàn)證是不夠的,通常論文中的結(jié)果都被過度高估了,因?yàn)槟P涂傇谙嗤臄?shù)據(jù)集上多次迭代。所以,想要實(shí)際驗(yàn)證算法,就要用外部獨(dú)立的數(shù)據(jù)集進(jìn)行檢測。
選擇正確的模型
模型的種類有很多,為你的問題選擇正確的一種需要有一定的經(jīng)驗(yàn)。大部分人都是從簡單有效的方法開始的,所以這里,線性模型通常是一種好的選擇。
在線性模型中,F(xiàn)(X)是X的加權(quán)總和:F(X)=(W1X1)+(W2X2)+…+(W200*X200)+β。其中Wi是與Xi有關(guān)的權(quán)重,β是表示偏差的常量。
在線性回歸中,我們能用簡單的代數(shù)找到最佳可能權(quán)重Wi。我們用Scikit Learn Python包訓(xùn)練線性模型。地址:colab.research.google.com/drive/1SWUcKT6bJLaTlxVLMvjHgLOD7Rdy3MQY#scrollTo=emyzNaHln9qa&forceEdit=true&offline=true&sandboxMode=true
當(dāng)然,假設(shè)MRI直方圖和年齡之間的關(guān)系是線性的有些過于簡單??紤]到其中的非線性關(guān)系會(huì)讓預(yù)測更加準(zhǔn)確。這里我們用刀的是流行的Gradient tree boosting。這是決策樹的一種形式,經(jīng)過多次迭代可以減少誤差。通過這一模型,我們將平均絕對(duì)誤差減少到了5.71歲,與目前最佳結(jié)果4.16歲比較接近了。
常見陷阱
在交叉驗(yàn)證中,我們將所有對(duì)象集合,隨機(jī)分出了訓(xùn)練集和測試集。那么如果我們按醫(yī)院來源分會(huì)怎樣?最終我們發(fā)現(xiàn)線性回歸和Boosting模型的絕對(duì)誤差都增加了5到6歲。
下方的圖示表明,對(duì)數(shù)據(jù)進(jìn)行更認(rèn)真的分析,可以避免這樣的錯(cuò)誤。可以看到,每個(gè)醫(yī)院病例的年齡分布,大多數(shù)醫(yī)院的患者年齡并不是平均分布的。
接下來,我們回執(zhí)了每個(gè)醫(yī)院患者的平均直方圖:
每家醫(yī)院立體像素強(qiáng)度直方圖的平均曲線
從中我們得出結(jié)論:白色物質(zhì)的變化與不同來源的醫(yī)院有關(guān),而灰色物質(zhì)的變化在各家醫(yī)院中都存在。所以有了這些特征,算法的目的就很明確了:
用直方圖判斷來源醫(yī)院
根據(jù)醫(yī)院的數(shù)據(jù)信息限定預(yù)測年齡的范圍
為了消除這種影響,我們決定返回到預(yù)處理的步驟,即立體像素值歸一化。我們從單一的只修正白色物質(zhì)的方法,改變成加入了灰色物質(zhì)的方法?,F(xiàn)在,兩種物質(zhì)都集中在直方圖中了,平均直方圖如下所示:
重新運(yùn)行線性和非線性模型后,我們得到了更好地結(jié)果:
主要收獲
多花時(shí)間分析數(shù)據(jù)
從簡單方法開始分析
如果使用得當(dāng),非線性模型會(huì)很強(qiáng)大
在多中心研究中要十分注意交叉驗(yàn)證,尤其是當(dāng)每個(gè)病人有多個(gè)樣本,或者樣本尺寸很小時(shí)。最佳方法是由外部的或獨(dú)立的驗(yàn)證集,只分割數(shù)據(jù)有時(shí)并不是好方法。
泛化和過度擬合
泛化是算法能在從未見過的數(shù)據(jù)上保持預(yù)測性能的能力之前的交叉驗(yàn)證過程就是檢測模型從訓(xùn)練數(shù)據(jù)到測試數(shù)據(jù)的泛化能力。
擬合表示模型表示數(shù)據(jù)的準(zhǔn)確程度,如果算法在測試集和訓(xùn)練集上的表現(xiàn)都不好,那么就叫“欠擬合”。如果在訓(xùn)練集上表現(xiàn)很好,但測試集表現(xiàn)不好,就叫“過擬合”。
應(yīng)對(duì)過擬合的方法有幾種:添加更多數(shù)據(jù)(增加樣本規(guī)模)、降低算法復(fù)雜程度、添加各種限制和規(guī)則、去除無用特征、如果出現(xiàn)過擬合就停止訓(xùn)練等等。在我們的案例中,想要降低模型復(fù)雜程度,就只能對(duì)MRI的分辨率進(jìn)行下采樣,獲得更小的圖像以及更少的立體像素。
可解釋的深度學(xué)習(xí)
我們用數(shù)據(jù)的方法提取了特征,研究能幫助我們進(jìn)行年齡預(yù)測的方法。除此之外,深度學(xué)習(xí)采取的是另一種方法,即神經(jīng)網(wǎng)絡(luò),可以直接在原始數(shù)據(jù)上工作。
在我們的研究中,我們將每個(gè)MRI軸向維度的200張圖片減少到只有10張圖,這些圖像對(duì)應(yīng)腦室中1cm的軸向區(qū)域,可以檢測到潛在的腦萎縮、腦室擴(kuò)張和腦白質(zhì)疏松癥。為了加快訓(xùn)練,我們使用了高性能的圖形處理器GTX-1080Ti和TensorFlow Python庫加速訓(xùn)練。
最終,我們設(shè)計(jì)出了一個(gè)簡單的、只有10層卷積層的網(wǎng)絡(luò),它在隨機(jī)分割的數(shù)據(jù)集中的平均絕對(duì)誤差為4.57歲,在按照醫(yī)院劃分的數(shù)據(jù)中平均絕對(duì)誤差為6.94歲。之后我們用數(shù)據(jù)增強(qiáng)對(duì)模型進(jìn)行改進(jìn)。數(shù)據(jù)增強(qiáng)是指在數(shù)據(jù)集中加入少量干擾項(xiàng),將圖片旋轉(zhuǎn)或縮放,從而讓網(wǎng)絡(luò)更穩(wěn)定。
最終,我們將經(jīng)過數(shù)據(jù)增強(qiáng)的CNN模型結(jié)果和在分割后的MRI上訓(xùn)練的線性模型結(jié)果取平均值,與人類專家的合作結(jié)果相比較,最終表明我們的模型在表現(xiàn)上得到了提升。
結(jié)語
現(xiàn)在,我們已經(jīng)可以用機(jī)器學(xué)習(xí)預(yù)測大腦年齡了,除此之外,這也有助于醫(yī)學(xué)家們了解阿爾茲海默癥這類的神經(jīng)退行性疾病。不過,研究者在搭建分析模型時(shí)依然要小心,交叉驗(yàn)證要采取合適的方法,才能保證結(jié)果的可靠。
-
人工智能
+關(guān)注
關(guān)注
1793文章
47535瀏覽量
239331 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1208瀏覽量
24761 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5511瀏覽量
121356
原文標(biāo)題:機(jī)器學(xué)習(xí)實(shí)戰(zhàn):結(jié)合核磁共振數(shù)據(jù)估計(jì)大腦年齡
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論