課程概要
1、反向傳播的四種解釋
2、項目指導
一、反向傳播的解釋1
任務:和上一課一樣,判斷中心詞是否是一個命名實體地點,窗口定義和最後一層的函數都是一樣的
結構:含有兩個隱層
二、反向傳播的解釋2:circuits
例子來源於:CS231n: http://cs231n.github.io/optimization-2/
用類似樹的結構來模擬計算,每個子節點表示一個數字,每個中間節點表示一個運算。
從右往左,我們可以依次計算每個節點對應的梯度,主要的計算是前一個節點的梯度乘以當前節點的梯度
一個更加複雜和具體的例子:
如果可以的話,我們也可以把幾個節點合併成爲一個節點:
三、反向傳播的解釋3:高級流程圖
對這個圖而言,每個節點都代表一個計算結果,每條邊都代表一個計算關係,y向量是x向量的衍生。
前饋做的事情是按照正常順序計算每個節點的結果。而後饋做的事情是初始化輸出的梯度爲1,計算反向順序的每個節點的梯度。
整體的梯度求導我們都可以使用自動化的方法求解,在做前饋計算的時候,前饋符號可以自動推斷出後饋的計算。每個節點都需要知道如何計算出輸出,以及如何基於輸出梯度計算出輸入的梯度。
四、反向傳播的解釋4:真實神經網絡中的δ誤差信號
和之前一樣的兩個隱層的神經網絡
五、項目指導(針對課程項目)
1、一些備選的項目類型
- 對一個新任務運用神經網絡模型
- 應用一個複雜的神經框架
- 建立一個新的神經網絡模型
- 深度學習的理論:比如優化
2、指導:對一個新任務運用已有神經網絡模型
a 定任務:比如說Summarization
- 更多和summarization相關的內容可以參考這個斯坦福大學-自然語言處理入門 筆記 第二十一課 問答系統(2)
b 定數據集
- 查找現有的學術數據集:這些數據集一般都已經有基準(baseline),比如Document Understanding Conference (DUC)
- 定義自己的數據集(會更困難,一般沒有基準):Wikipedia,Twitter,Blogs,News
c 定自己的度量標準
- 在網上查找針對該任務的已經建立好的度量(metrics),比如說 Summarization,就可以使用Rouge
d 分裂你的數據
- 把數據分成:訓練集,發展集和測試集
- 一定要確保測試集其他數據集之間是完全沒有重疊的
e 建立一個基準
- 應用最簡單的模型:通常是基於一元模型/二元模型的邏輯迴歸
- 在測試集和訓練集上計算度量(metrics)
- 分析錯誤
- 如果度量結果很好,那麼你就完成了,說明任務太簡單了,重新換個任務開始思考。
f 應用現有的神經網絡模型
- 在測試集和訓練集上計算度量(metrics)
- 分析輸出和錯誤
- 這樣就達到了課程的最低要求
g 要非常瞭解自己的數據
- 對數據集進行可視化
- 收集統計信息
- 關注錯誤
- 分析超參將會怎麼影響模型表現
h 嘗試不同的模型變體
- Word vector averaging model (neural bag of words)
- Fixed window neural model
- Recurrent neural network
- Recursive neural network
- Convolutional neural network
3、指導:構建一個新模型
- 首先,先要完成上面的步驟a-h
- 然後,思考爲什麼現有的模型是存在問題的
- 和研究者/mentor進行大量得交流
- 應用新的模型,並且進行重複的迭代
- 建立一個有效的實驗狂降
- 一開始先構建簡單模型
- 以summarization爲例:平均每個段落的詞向量,然後貪婪搜索;應用語言模型;衍生目標:生成seq2seq的總結