對初學者來說,有沒有易於上手,使用流行神經網路框架進行教學的深度學習課程?近日,麻省理工學院(MIT)正式開源了線上介紹性課程「MIT 6.S191:深度學習入門」。該課程包括一系列有關神經網路及其在序列建模、計算機視覺、生成模型和強化學習等方面的基本應用知識。
- 課程 GitHub:github.com/aamini/intr…
因次,在這門課程的教學中,我們選用了 TensorFlow。我們設計了兩個基於 TensorFlow 的軟體 lab 作為演講課程的補充,一個是通過迴圈神經網路聚焦於音樂生成,另一個則專注於醫療影象的氣胸檢測。
相應地,首個 lab 介紹 TensorFlow 基礎——構建和執行計算圖、sessions 以及在深度學習中常用的一般操作,同樣也會重點介紹 TensorFlow 最新的重大更新:Eager mode。
通過 RNN 生成音樂
RNN 同樣適用於音樂生成,可以捕捉時序資料中的依賴關係。在第一個 lab 中,學生致力於編碼音樂檔案資料集,界定 TensorFlow 中的 RNN 模型,並從中取樣以生成全新的音樂。
音樂生成 RNN 模型
該資料集是一個流行音樂片段的集合,被編碼成向量格式以饋送給 RNN 模型。一旦資料被處理,下一步則是使用該資料集定義和訓練 RNN 模型。
我們為學生提供構建 RNN 模型並定義合適的計算圖的指導。再次,我們已經設計這些 lab,供有興趣的人使用,不管其有無 TensorFlow 經驗。
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 note
pred_note = tf.argmax(prediction, 1) # identify the predicted note
correct_pred = tf.equal(pred_note, true_note) # compare!複製程式碼
生成新音樂
該 Lab 指導學生把一個種子饋送給已訓練的模型(畢竟如果沒有什麼開始的話,它無法預測任何新的音符!),接著使用已訓練的 RNN 迭代地預測每一個連續的音符。這相當於從 RNN 在每個時間步輸出的下一個音符的概率分佈中隨機抽樣,然後使用這些樣本生成一首新歌。
生成更多逼真的音樂
氣胸檢測
我們把這一 lab 推進到分類之外,以嘗試解決可解釋性的問題——什麼是反映網路為什麼和如何把一個特定類別標籤分配給指定影象的量化指標。為解決這一問題,學生部署了一項稱之為類別啟用對映的特徵視覺化技術,以獲得對區分性影象區域的理解。
資料集
鑑於它是一個基於真實世界資訊的資料集,其中含有大量噪音。在這裡,我們希望讓學生們能夠使用真實的資料,以便了解包裝和註釋資料會面臨的挑戰——特別是在計算機視覺的背景下。
學生們將使用與訓練的 CNN 模型展開氣胸疾病檢測任務;在這裡,我們不會讓神經網路保持黑箱狀態,而是會提供模型和訓練模型呼叫的程式碼,並希望以此能夠讓學習者充分參與整個實驗。此外,lab 還將實現成本和預測函式,以及 CNN 分類器的評估指標(如 ROC 曲線)。
用 CAM 解釋 CNN 的輸出
CAM 是一種視覺化圖片在 CNN 中最後的卷積層上被「注意」區域的方法。請注意,CAM 視覺化適用於在最終全連線層之前具有全域性平均池化層的架構,其中我們輸出最後一個卷積層上每個單元的特徵對映的空間平均值。
在氣胸分類器的背景下,這相當於強調胸透照片中識別(或未識別到)氣胸最為重要的那些畫素。
為了進行具體說明,我們讓 F_k 代表 k-th 在卷積神經網路最後一個卷積層上的特徵圖,然後讓 w_k 代表 k-th 在特徵凸和全連線層上的權重。於是,用於氣胸檢測的類啟用圖為:
該 lab 從頭到尾演示了 CAM 在 TensorFlow 中計算和視覺化的整個過程。學生們需要定義函式來提取特徵圖,計算 CAM 的權重:
(feature_maps, dense_weights) = extract_features_weights(model)複製程式碼
正如氣胸陽性的胸透照片示例所展示的那樣,CAM 最終可以視覺化為一張熱圖。
以上這些教學 Lab 都是 MIT 6.S191 系列課程所獨有的,授課者為本課程進行了專門設計。目前,所有 MIT 6.S191 課程的視訊都可以在網上免費觀看了。