對初學(xué)者來說,有沒有易于上手,使用流行神經(jīng)網(wǎng)絡(luò)框架進(jìn)行教學(xué)的深度學(xué)習(xí)課程?近日,麻省理工學(xué)院(MIT)正式開源了在線介紹性課程「MIT 6.S191:深度學(xué)習(xí)入門」。該課程包括一系列有關(guān)神經(jīng)網(wǎng)絡(luò)及其在序列建模、計算機(jī)視覺、生成模型和強(qiáng)化學(xué)習(xí)等方面的基本應(yīng)用知識。
MIT 6.S191: MIT 關(guān)于深度學(xué)習(xí)算法及其應(yīng)用的官方入門課程 MIT 6.S191 不僅僅是一門深度學(xué)習(xí)課程系列。在設(shè)計它時,我們希望做的更多。我們想要聽眾具備必須的實踐技能,部署自己的深度學(xué)習(xí)模型,并將其應(yīng)用到課程之外倍感興奮、深受啟發(fā)的問題上。 因次,在這門課程的教學(xué)中,我們選用了 TensorFlow。我們設(shè)計了兩個基于 TensorFlow 的軟件 lab 作為演講課程的補(bǔ)充,一個是通過循環(huán)神經(jīng)網(wǎng)絡(luò)聚焦于音樂生成,另一個則專注于醫(yī)療圖像的氣胸檢測。 MIT 6.S191 的課程設(shè)計原則是盡可能地易于上手,不僅針對于不同背景不同水平的人,也針對于 MIT 社區(qū)內(nèi)外的人。 相應(yīng)地,首個 lab 介紹 TensorFlow 基礎(chǔ)——構(gòu)建和執(zhí)行計算圖、sessions 以及在深度學(xué)習(xí)中常用的一般操作,同樣也會重點介紹 TensorFlow 最新的重大更新:Eager mode。 這些背景知識有助于學(xué)生在 TensorFlow 中構(gòu)建音樂生成和氣胸檢測模型。 通過 RNN 生成音樂 循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)多是應(yīng)用于序列建模和預(yù)測任務(wù),諸如從股票趨勢到自然語言處理,再到醫(yī)療信號識別(比如心電圖),范圍異常廣泛。你可以查看課程中的深度序列建模一節(jié)以了解 RNN 及其應(yīng)用的相關(guān)背景知識。 RNN 同樣適用于音樂生成,可以捕捉時序數(shù)據(jù)中的依賴關(guān)系。在第一個 lab 中,學(xué)生致力于編碼音樂文件數(shù)據(jù)集,界定 TensorFlow 中的 RNN 模型,并從中采樣以生成全新的音樂。 音樂生成 RNN 模型 該數(shù)據(jù)集是一個流行音樂片段的集合,被編碼成向量格式以饋送給 RNN 模型。一旦數(shù)據(jù)被處理,下一步則是使用該數(shù)據(jù)集定義和訓(xùn)練 RNN 模型。 該模型基于單個 LSTM 模塊,其中狀態(tài)向量追蹤兩個連續(xù)節(jié)點之間的時間依賴關(guān)系。在每一時間步,先前節(jié)點的序列被饋送進(jìn)模塊,LSTM 最后單元的最后輸出饋送給全連接層。因此在先前所有時間步的節(jié)點給定的情況下,我們可以輸出下一節(jié)點在時間步 t 上的概率分布。下圖是這一過程的可視化。 預(yù)測序列中下一音樂節(jié)點的可能性 我們?yōu)閷W(xué)生提供構(gòu)建 RNN 模型并定義合適的計算圖的指導(dǎo)。再次,我們已經(jīng)設(shè)計這些 lab,供有興趣的人使用,不管其有無 TensorFlow 經(jīng)驗。 該 lab 首先致力于設(shè)置相關(guān)超參數(shù),定義占位符變量,初始化 RNN 模型的權(quán)重。學(xué)生接著定義其自己的 RNN(input_vec, weights, biases),它接受相應(yīng)的輸入變量并定義一個計算圖。 Lab 允許學(xué)生試驗不同的損失函數(shù),優(yōu)化方案,甚至是準(zhǔn)確度指標(biāo): loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits( logits, labels))optimizer = tf.train.AdamOptimizer(learning_rate)true_note = tf.argmax(output_vec,1) # identify the correct notepred_note = tf.argmax(prediction, 1) # identify the predicted notecorrect_pred = tf.equal(pred_note, true_note) # compare! 生成新音樂 樂趣并不止于構(gòu)建和訓(xùn)練 RNN!畢竟,該 lab 是關(guān)于音樂生成——剩下的是使用 RNN 實際地創(chuàng)建新音樂。 該 Lab 指導(dǎo)學(xué)生把一個種子饋送給已訓(xùn)練的模型(畢竟如果沒有什么開始的話,它無法預(yù)測任何新的音符!),接著使用已訓(xùn)練的 RNN 迭代地預(yù)測每一個連續(xù)的音符。這相當(dāng)于從 RNN 在每個時間步輸出的下一個音符的概率分布中隨機(jī)抽樣,然后使用這些樣本生成一首新歌。 像以前一樣,我們只給學(xué)生一個指導(dǎo)架構(gòu),定義采樣由其自己決定。 為了提供已生成歌曲的一個采樣,我們繼續(xù)并訓(xùn)練模型,接著從中采樣生成新歌。試聽一下由已訓(xùn)練模型生成的一個實例:https:///alexanderamini/mit-6s191-rnn-song。 生成更多逼真的音樂 你很可能已發(fā)現(xiàn),這里還有大量的提升空間。我們希望學(xué)生繼續(xù)通過我們提供的框架,調(diào)試超參數(shù),擴(kuò)充數(shù)據(jù)集來生成更加悅耳的音樂。 氣胸檢測 第二個 lab 補(bǔ)充了課程中用于計算機(jī)視覺的深度學(xué)習(xí)一節(jié)。學(xué)生有機(jī)會在逼真的醫(yī)療圖像數(shù)據(jù)集上使用 CNN 檢測疾病。特別地,學(xué)生使用一組真實的胸部 X 射線構(gòu)建模型,檢測和分類被預(yù)測有氣胸的掃描,這種情況發(fā)生在肺與胸壁之間的空氣量異常的情況下。 我們把這一 lab 推進(jìn)到分類之外,以嘗試解決可解釋性的問題——什么是反映網(wǎng)絡(luò)為什么和如何把一個特定類別標(biāo)簽分配給指定圖像的量化指標(biāo)。為解決這一問題,學(xué)生部署了一項稱之為類別激活映射的特征可視化技術(shù),以獲得對區(qū)分性圖像區(qū)域的理解。 數(shù)據(jù)集 在這里,我們使用了 ChestXRay 數(shù)據(jù)集的一個子集。顧名思義,這是一個大型 X 射線胸透照片數(shù)據(jù)集,并標(biāo)有相應(yīng)的診斷信息。 鑒于它是一個基于真實世界信息的數(shù)據(jù)集,其中含有大量噪音。在這里,我們希望讓學(xué)生們能夠使用真實的數(shù)據(jù),以便了解包裝和注釋數(shù)據(jù)會面臨的挑戰(zhàn)——特別是在計算機(jī)視覺的背景下。 CNN 模型 學(xué)生們將使用與訓(xùn)練的 CNN 模型展開氣胸疾病檢測任務(wù);在這里,我們不會讓神經(jīng)網(wǎng)絡(luò)保持黑箱狀態(tài),而是會提供模型和訓(xùn)練模型調(diào)用的代碼,并希望以此能夠讓學(xué)習(xí)者充分參與整個實驗。此外,lab 還將實現(xiàn)成本和預(yù)測函數(shù),以及 CNN 分類器的評估指標(biāo)(如 ROC 曲線)。 用 CAM 解釋 CNN 的輸出 這一 lab 的主要目的是應(yīng)用類激活圖(CAM)來解釋 CNN 的輸出。雖然目前已有很多用于圖像分類的 CNN 模型資源,但我們發(fā)現(xiàn)很少有介紹可解釋性的 lab。但對于初學(xué)者而言,認(rèn)識并接受深度學(xué)習(xí)局限性是非常重要的——這些都是本 lab 的一部分,也是整個課程的一部分。將 CAM 結(jié)合到實驗中也為學(xué)生們提供了閱讀和上手實踐最新研究成果的機(jī)會,這會是一種非常有意義的體驗。 CAM 是一種可視化圖片在 CNN 中最后的卷積層上被「注意」區(qū)域的方法。請注意,CAM 可視化適用于在最終全連接層之前具有全局平均池化層的架構(gòu),其中我們輸出最后一個卷積層上每個單元的特征映射的空間平均值。 CAM 有效地高亮了輸入圖像中分配特定類別標(biāo)簽最重要的部分。也可以直觀地說:一個類的 CAM 是基于每個特征圖,將圖像分配給該類的重要性。CNN 中的特征映射反映了圖像中特定視覺圖案(即特征)的存在。我們通過對特征映射的重要性加權(quán)的特征映射和來計算 CAM。因此,在重要信道中具有更大激活的輸入圖像的區(qū)域在 CAM 中被賦予了更大的權(quán)重,因此顯得「更熱」。 在氣胸分類器的背景下,這相當(dāng)于強(qiáng)調(diào)胸透照片中識別(或未識別到)氣胸最為重要的那些像素。 為了進(jìn)行具體說明,我們讓 F_k 代表 k-th 在卷積神經(jīng)網(wǎng)絡(luò)最后一個卷積層上的特征圖,然后讓 w_k 代表 k-th 在特征凸和全連接層上的權(quán)重。于是,用于氣胸檢測的類激活圖為: 在對最終的類激活圖進(jìn)行上采樣以后,我們可以把胸透照片中與氣胸檢測最相關(guān)的區(qū)域可視化(至少是從神經(jīng)網(wǎng)絡(luò)的角度看)。 該 lab 從頭到尾演示了 CAM 在 TensorFlow 中計算和可視化的整個過程。學(xué)生們需要定義函數(shù)來提取特征圖,計算 CAM 的權(quán)重: (feature_maps, dense_weights) = extract_features_weights(model) 在這里,學(xué)生們需要將從最后的卷積層中提取的 Feature_maps 輸入,并從全連接層 dense_weights 輸入到 CAM 計算的函數(shù)中,然后定義上采樣過程。 氣胸陽性的胸透照片類激活圖 正如氣胸陽性的胸透照片示例所展示的那樣,CAM 最終可以可視化為一張熱圖。 或許這個 lab 最有意思的部分是它所引發(fā)的討論。學(xué)生們需要仔細(xì)研究模型對輸入胸透照片進(jìn)行錯誤分類的實例,CAM 在這些實例中的樣子,并思考自己可以對模型做出哪些修改來突破這些限制。構(gòu)建一種可以「窺探」神經(jīng)網(wǎng)絡(luò)內(nèi)部運行機(jī)制的算法可以幫助激發(fā)學(xué)生們的好奇心,并讓他們體會到機(jī)器學(xué)習(xí)中可解釋性的重要性。 以上這些教學(xué) Lab 都是 MIT 6.S191 系列課程所獨有的,授課者為本課程進(jìn)行了專門設(shè)計。目前,所有 MIT 6.S191 課程的視頻都可以在網(wǎng)上免費觀看了。 原文鏈接:https:///tensorflow/mit-6-s191-introduction-to-deep-learning-24994d705aca
|
|