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)}*Xz^{(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)})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

Related Posts:

  • Tổng quan về machine learning1. Giới thiệu Trong những năm gần đây machine learning là một khái niệm được nhắc đi nhắc lại nhiều lần trong thế giới công nghệ, điều này đã cho th… Read More
  • Neural Network1. Giới thiệu Xin chào các bạn hôm nay mình xin giới thiệu tới các bạn Neural Network là nền tảng của Deep Learning. Nội dung Logistic là một Neura… Read More
  • Phân loại học máy1. Giới thiệu Việc xác định bài toán thuộc loại học máy nào là một trong những vấn đề quan trọng và đầu tiên trong việc xử lý một bài toán machine l… Read More
  • Các Loss Function thường gặp1. Giới thiệu Từ các bài học trước các bạn đã biết Loss Function là gì, đây cũng là khái niệm quan trọng bậc nhất trong Machine Learning cụ thể trong … Read More
  • Gradient descent1. Giới thiệu Gradient descent là một kĩ thuật tối ưu rất quan trọng trong Machine Learning cũng như Deep Learning mà bạn cần phải biết. Mục đích… Read More

0 nhận xét:

Đăng nhận xét