Thứ Sáu, 21 tháng 1, 2022

Deep Neural Network trong bài toán nhiều lớp

1. Giới thiệu

Ở bài trước mình đã trình bày về Deep Neural Network trong bài toán binary classification. Hôm nay mình sẽ trình bày về Deep Neural Network trong bài toán nhiều lớp.

Trong thực tế chúng ta gặp rất nhiều bài toán liên quan đến phân loại nhiều lớp ví dụ: Cho một bức ảnh phân loại xem bức ảnh đó chứa con chó, mèo hay gà. Hoặc phân loại một câu bình luận sản phẩm của khách hàng là tiêu cực, tích cực hay bình thường.

Trong bài toán binary classification thì output layer chỉ có 1 neural và activation function sẽ là sigmoid. Còn bài toán multiple classification thì số neural ở output layer bằng với số class mà bạn muốn phân loại với activation function là softmax. Softmax là gì mình sẽ giới thiệu trong bài viết này.

Nội dung

  • Deep Neural Network trong bài toán nhiều lớp
  • Biễu diễn dưới dạng toán học
  • Hàm softmax

2. Deep Neural Network trong bài toán nhiều lớp

Giả sử bài toán yêu cầu phân loại bình luận sản phẩm của user gồm 3 trạng thái: Tích cực, tiêu cực và bình thường

Để đơn giản mình sử dụng mạng neural với kiến trúc bao gồm: 1 input layer (2 neural), 2 hidden layer (2 neural, 2 neural), 1 output layer (3 neural tương ứng với 3 lớp).

3. Biểu diễn dưới dạng toán học

Cách biểu diễn toán học cũng như ở bài trước

Gọi $a^{(1)}, a^{(2)}$ chính là vector output của layer đó(hidden layer) với input của nó là output của layer trước. Số mũ trên đầu cũng là thứ tự của layer.

Đặt: $z^{(1)} = W^{(1)}*X$ và $z^{(2)} = W^{(2)}*a^{(1)}$ là vector tích của parameter và output của layer trước

$$z^{(1)} = \begin{bmatrix} z_{1}^{(1)}\\ z_{2}^{(1)}\\ ... ...\\ z_{n_1}^{(1)}\\ \end{bmatrix} = \begin{bmatrix} w_{1}^{(1)}*1 + w_{11}^{(1)}*x_{1} + w_{21}^{(1)}*x_{2} + w_{31}^{(1)}*x_{3} + ... + w_{n_01}^{(1)}*x_{n_0}\\ w_{2}^{(1)}*1 + w_{12}^{(1)}*x_{1} + w_{22}^{(1)}*x_{2} + w_{32}^{(1)}*x_{3} + ... + w_{n_02}^{(1)}*x_{n_0}\\ ... ... ... ... ... ...\\ w_{n_1}^{(1)}*1 + w_{1n_1}^{(1)}*x_{1} + w_{2n_1}^{(1)}*x_{2} + w_{3n_1}^{(1)}*x_{3} + ... + w_{n_0n_1}^{(1)}*x_{n_0}\\ \end{bmatrix}$$

Với $z_{i}^{(l)}$ là vector output neural $k$ của layer thứ $l$. Tương tự đối với $z^{(2)}$

$$z^{(2)} = \begin{bmatrix} z_{1}^{(2)}\\ z_{2}^{(2)}\\ ... ...\\ z_{n_2}^{(2)}\\ \end{bmatrix} = \begin{bmatrix} w_{1}^{(2)}*1 + w_{11}^{(2)}*a_{1}^{(1)} + w_{21}^{(2)}*a_{2}^{(1)} + w_{31}^{(2)}*a_{3}^{(1)} + ... + w_{n_11}^{(2)}*a_{n_1}^{(1)}\\ w_{2}^{(2)}*1 + w_{12}^{(2)}*a_{1}^{(1)} + w_{22}^{(2)}*a_{2}^{(1)} + w_{32}^{(2)}*a_{3}^{(1)} + ... + w_{n_12}^{(2)}*a_{n_1}^{(1)}\\ ... ... ... ... ... ...\\ w_{n_2}^{(2)}*1 + w_{1n_2}^{(2)}*a_{n_1}^{(1)} + w_{2n_2}^{(2)}*a_{n_1}^{(1)} + w_{3n_2}^{(2)}*a_{n_1}^{(1)} + ... + w_{n_1n_2}^{(2)}*a_{n_1}^{(1)}\\ \end{bmatrix}$$

Khi đó: $a^{(1)} = \sigma(z^{(1)})$ và $a^{(2)} = \sigma(z^{(2)})$

Về mặt bản chất nó giống với ký hiệu ở bài trước, tuy nhiên ở bài này mình đặt biến $z$ là biến phụ mà thôi

4. Hàm softmax

Hàm softmax này thường được sử dụng làm activation của output layer. Bây giờ chúng ta cùng áp dụng để tính $y_1, y_2, y_3$ như hình trên.

$$y_1 = \frac{e^{z_{1}^{(2)}}}{e^{z_{1}^{(2)}} + ... + e^{z_{n_2}^{(2)}}} = \frac{e^{z_{1}^{(2)}}}{\sum_{i=1}^{n_2} e^{z_{i}^{(2)}}}$$

Với $n_2$ là số neural tại hidden layer thứ 2

Tương tự với $y_2, y_3$

$$y_2 = \frac{e^{z_{2}^{(2)}}}{e^{z_{1}^{(2)}} + ... + e^{z_{n_2}^{(2)}}} = \frac{e^{z_{2}^{(2)}}}{\sum_{i=1}^{n_2} e^{z_{i}^{(2)}}}$$

$$y_3 = \frac{e^{z_{3}^{(2)}}}{e^{z_{1}^{(2)}} + ... + e^{z_{n_2}^{(2)}}} = \frac{e^{z_{3}^{(2)}}}{\sum_{i=1}^{n_2} e^{z_{i}^{(2)}}}$$

Quan sát thấy $y_1 + y_2 + y_3 = 1$. $y_1, y_2, y_3$ là các giá trị xác suất xảy ra ứng với từng class. Ví dụ bài toán phân loại câu bình luận với 3 trạng thái là tích cực, bình thường, tiêu cực. Sau khi dự đoán ta được: $y_1 = 0.8, y_2=0.1, y_3=0.1$. Lúc này rõ ràng $y_1$ là lớn nhất khi đó ta có thể đưa ra kết luận rằng với câu bình luận input đưa vào thì model sẽ dự đoán là tích cực vì xác suất xảy ra class tích cực là lớn nhất.

Đối với bài toán deep neural network nhiều lớp thì Feed Forward và Backpropagation y chang so với Binary Classification

Mình sẽ dừng bài viết này tại đây, trong quá trình viết công thức có thể sẽ gây nhầm lẫn, nếu có thắc mắc gì vui lòng comment phía dưới. Xin cảm ơn

0 nhận xét:

Đăng nhận xét