Reflection: Deep Learning with R-Ch3.5–3.6

imflorachen
6 min readApr 10, 2020

--

ch3.5-ch3.6

### 3.5. CLASSIFYING NEWSWIRES: A MULTICLASS CLASSIFICATION EXAMPLE

#### 3.5.1. The Reuters dataset

* 路透社數據集,一組短新聞通訊社及其主題,由路透社於1986年發布,46個不同主題,訓練集中,每個主題至少有10的樣本

* 每個樣本都是一個list的整數(word indices)

* decoding

#### 3.5.2. Preparing the data

* 可以將標籤列表轉換為整數張量,也可以使用one-hot encoding。 one-hot encoding是一種廣泛用於分類數據的格式,也稱categorical encoding。

#### 3.5.3. Building your network

* 46個類別需要更多的unit,小層可能會成為信息瓶頸,從而永久失去相關信息。所以這裡用 64 units

* 使用大小為46的dense層結束網絡。這意味著對於每個輸入樣本,網絡將輸出46維向量。

* 最後一層使用 softmax 激活函數。模型會輸出46個類別不同的機率,總合為1。

* loss function 最好是選擇 categorical_crossentropy。

#### 3.5.4. Validating your approach

* 切出 validation data 和 training data

* 訓練 20 epoch

* 畫圖,觀察到第 9 epoch 開始 overfit

* 模型用 9 epoch 再建一次

* 跟隨機抽取的類別準確度(模擬是18%)相比,本模型的準確度79%好很多

#### 3.5.5. Generating predictions on new data

* 預測值機率最高的類別,就是預測類別

#### 3.5.6. A different way to handle the labels and the loss

* labels to follow a categorical encoding: categorical_crossentropy

* integer labels: sparse_categorical_crossentropy

* 這個新的損失函數在數學上仍然與categorical_crossentropy相同。它只是具有不同的界面(interface)。

#### 3.5.7. The importance of having sufficiently large intermediate layers

* 嘗試中間層僅使用 4 個 unit

* 準確度下降主要是由於您試圖將大量信息(足夠的信息來恢復46類分離超平面的信息)壓縮到一個維數太低的中間空間中。 網絡能夠將大多數必要的信息塞入這些八維表示中,但不是全部。

#### 3.5.8. Further experiments

* 新增或減少unit,32 units or 128 units..

* 新增或減少hidden layer,一層或三層…

#### 3.5.9. Wrapping up

* 如果要進行 N 類別分類,則網絡應以大小為N的dense layer結尾。

* singlelabel, multiclass classification problem: 最後以softmax激活函數作為結束,並對N個輸出類上輸出概率分佈。

* Categorical crossentropy: 它使網絡輸出的概率分佈與目標的真實分佈之間的距離最小化。

* categorical encoding (one-hot encoding) label: categorical_crossentropy

* integer label: sparse_categorical_crossentropy

* 避免使用太小的中間層(unit),而在網絡中產生信息瓶頸。

### 3.6. PREDICTING HOUSE PRICES: A REGRESSION EXAMPLE

#### 3.6.1. The Boston Housing Price dataset

* only 506, split between 404 training samples and 102 test samples

* 變數有不同的尺度

* target 是自住房的中位數,以千美元為單位

#### 3.6.2. Preparing the data

* normalize data

* 注意,用於標準化的測試數據也是使用”訓練資料”計算的。在做任何處理時,絕對不能使用”測試資料”算出來的數據。

#### 3.6.3. Building your network

* 模型最後沒有激活函數就是 linear layer

* loss function 使用 mse

* 監控模型的 metric 使用 mae

#### 3.6.4. Validating your approach using K-fold validation

* 當資料點很少時,validation 值會差異很大,所以最好使用 k-fold cross validation。

* 計算每個 epoch 所有 fold 的平均,觀察何時 overfit

* 使用合適的 epoch 數建模

#### 3.6.5. Wrapping up

* regression 最合適的 loss function: MSE

* regression 最合適的 metric: MAE

* input data 應該要先標準化

* 當資料少的時候應該使用 K-fold validation

* 當訓練資料少的時候,不要用太多層的網路架構,避免 overfitting

--

--

imflorachen
imflorachen

Written by imflorachen

Hi i’m trying to write what i’ve learned from work or from books. Wish I could become a better data scientist.

No responses yet