<center> <img src = "https://i.imgur.com/PiXrWYP.jpg"> </center> ## Prerequisite ### MLP & DNN 多層感知器(MLP)和深度神經網路(DNN)都是神經網路的類型,但它們有一些重要的區別。 **多層感知器(MLP)**: - MLP是最簡單和最常見的神經網路類型。 - 它由輸入層、一個或多個隱藏層和輸出層組成。 - MLP能夠處理線性可分和非線性可分的數據。 - MLP通常用於處理非線性可分的數據,如回歸分析。 - 由於其簡單性,它們最適合用於複雜的分類任務和預測建模。 **深度神經網路(DNN)**: - DNN是具有深層的人工神經網路。 - MLP是DNN的一個子集,而DNN可以有迴圈,MLP則始終是前饋的。 換句話說,MLP是一種特定類型的神經網路,具有至少三層(輸入層、輸出層和至少一個隱藏層),而DNN則是具有更多或更深層的神經網路。 ### Regularization 正則化(Regularization)是一種用於機器學習和神經網絡中的技術,旨在減少模型的過度擬合(overfitting)問題。 過度擬合發生在模型在訓練數據上表現很好,但在新的、未見過的數據上表現很差的情況下,這是因為模型在訓練數據上學到了噪聲或不必要的細節,而忽略了通用的特徵。 正則化的目標是使模型更加泛化,即在新數據上表現更好。 在神經網絡中,最常見的正則化方法包括 L1 正則化和 L2 正則化。 這些方法通常通過修改損失函數或成本函數,引入額外的懲罰項(penalty term)來實現。 1. **L1 正則化(Lasso 正則化)**: L1 正則化通常用於權重的稀疏化,可以幫助模型選擇最重要的特徵,並將不重要的特徵的權重變為零。它的數學表示如下: $$ J(\theta) = \text{損失函數} + \lambda \sum_{i=1}^{n} |w_i| $$ 其中: - $J(\theta)$ 是經過正則化的成本函數。 - $\lambda$ 是正則化參數,控制正則化的程度。 - $w_i$ 是權重參數。 2. **L2 正則化(Ridge 正則化)**: L2 正則化通常用於防止權重參數變得過大,它的數學表示如下: $$ J(\theta) = \text{損失函數} + \lambda \sum_{i=1}^{n} w_i^2 $$ 其中: - $J(\theta)$ 是經過正則化的成本函數。 - $\lambda$ 是正則化參數,控制正則化的程度。 - $w_i$ 是權重參數。 這些正則化項被添加到原始的損失函數中,通常以 $J(\theta)$ 的形式,然後通過梯度下降等優化算法來最小化整體成本函數。 正則化有助於避免過度擬合,提高模型的泛化能力,使其在新數據上更好地表現。 選擇正則化參數 $\lambda$ 是一個重要的超參數調整過程,它可以影響正則化的程度。 ## Goal 神經網絡是一種機器學習模型,模擬了人類神經元之間的信息傳遞,用於學習從數據中提取特徵和解決各種任務。 ## Background 一個典型的神經網絡可以表示為多個層次的神經元,其中包括輸入層(input layer)、隱藏層(hidden layers)和輸出層(output layer)。 我們用下標表示不同的層,並使用上標表示每個層中的神經元。 輸入層包含特徵或輸入變數,我們用 $x^{(i)}$ 表示第 $i$ 個輸入特徵。通常,這些特徵將組成一個向量 $x$,其中 $x = [x^{(1)}, x^{(2)}, \ldots, x^{(n)}]$,其中 $n$ 是特徵的數量。 隱藏層可以有多個層次,我們用 $a^{[l]}_j$ 表示第 $l$ 層的第 $j$ 個神經元的激活值。這些激活值是根據前一層的輸出計算得出的,通常使用 activation function 進行非線性轉換。具體來說,每個隱藏層的激活值可以通過以下方式計算: $$ a^{[l]}_j = f^{[l]}\left(\sum_{i} w^{[l]}_{ij}a^{[l-1]}_i + b^{[l]}_j\right) $$ 其中: - $l$ 表示層的索引(輸入層為 0,隱藏層和輸出層依次遞增)。 - $j$ 表示神經元的索引。 - $w^{[l]}_{ij}$ 表示第 $l$ 層的第 $j$ 個神經元與第 $l-1$ 層的第 $i$ 個神經元之間的權重。 - $b^{[l]}_j$ 表示第 $l$ 層的第 $j$ 個神經元的偏差項(bias term)。 - $f^{[l]}$ 是 activation function,用於引入非線性性質。 輸出層的激活值 $a^{[L]}_j$ 用於表示神經網絡的輸出。在分類任務中,通常使用 softmax 函數來獲得每個類別的概率分佈。 神經網絡的訓練過程涉及到調整權重和偏差項,以最小化損失函數,以實現所需的任務,例如分類或回歸。 以下是有關 Neural Network 不同類型的架構 ![](https://hackmd.io/_uploads/SJqlmlMkT.png) ## Implementation ## From Scratch [Feedforward Neural Network](https://github.com/jacksonchen1998/2023-NYCU-DL/blob/main/Homework%201/hw1-1/hw1_1_311511052.ipynb) ## More example [Natural Language Processing with Disaster Tweets](https://www.kaggle.com/competitions/nlp-getting-started/overview) ## Reference 歡迎更仔細閱讀以下相關內容以了解本篇知識 - [一文了解神经网络MLP(ANN), CNN, RNN](https://zhuanlan.zhihu.com/p/261056748) - [The mostly complete chart of Neural Networks, explained](https://kim.hfg-karlsruhe.de/neural-network-chart/)