對初學者來講,有沒有易於上手,使用流行神經網絡框架進行教學的深度學習課程?近日,麻省理工學院(MIT)正式開源了在線介紹性課程「MIT 6.S191:深度學習入門」。該課程包括一系列有關神經網絡及其在序列建模、計算機視覺、生成模型和強化學習等方面的基本應用知識。
因次,在這門課程的教學中,咱們選用了 TensorFlow。咱們設計了兩個基於 TensorFlow 的軟件 lab 做爲演講課程的補充,一個是經過循環神經網絡聚焦於音樂生成,另外一個則專一於醫療圖像的氣胸檢測。git
相應地,首個 lab 介紹 TensorFlow 基礎——構建和執行計算圖、sessions 以及在深度學習中經常使用的通常操做,一樣也會重點介紹 TensorFlow 最新的重大更新:Eager mode。github
RNN 一樣適用於音樂生成,能夠捕捉時序數據中的依賴關係。在第一個 lab 中,學生致力於編碼音樂文件數據集,界定 TensorFlow 中的 RNN 模型,並從中採樣以生成全新的音樂。算法
該數據集是一個流行音樂片斷的集合,被編碼成向量格式以饋送給 RNN 模型。一旦數據被處理,下一步則是使用該數據集定義和訓練 RNN 模型。bash
咱們爲學生提供構建 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 在每一個時間步輸出的下一個音符的機率分佈中隨機抽樣,而後使用這些樣本生成一首新歌。session
咱們把這一 lab 推動到分類以外,以嘗試解決可解釋性的問題——什麼是反映網絡爲何和如何把一個特定類別標籤分配給指定圖像的量化指標。爲解決這一問題,學生部署了一項稱之爲類別激活映射的特徵可視化技術,以得到對區分性圖像區域的理解。架構
鑑於它是一個基於真實世界信息的數據集,其中含有大量噪音。在這裏,咱們但願讓學生們可以使用真實的數據,以便了解包裝和註釋數據會面臨的挑戰——特別是在計算機視覺的背景下。框架
學生們將使用與訓練的 CNN 模型展開氣胸疾病檢測任務;在這裏,咱們不會讓神經網絡保持黑箱狀態,而是會提供模型和訓練模型調用的代碼,並但願以此可以讓學習者充分參與整個實驗。此外,lab 還將實現成本和預測函數,以及 CNN 分類器的評估指標(如 ROC 曲線)。機器學習
CAM 是一種可視化圖片在 CNN 中最後的卷積層上被「注意」區域的方法。請注意,CAM 可視化適用於在最終全鏈接層以前具備全局平均池化層的架構,其中咱們輸出最後一個卷積層上每一個單元的特徵映射的空間平均值。ide
在氣胸分類器的背景下,這至關於強調胸透照片中識別(或未識別到)氣胸最爲重要的那些像素。
爲了進行具體說明,咱們讓 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 課程的視頻均可以在網上免費觀看了。