- vừa được xem lúc

[Paper Explained] Triple-Sigmoid Activation Function for Deep Open-Set Recognition

0 0 20

Người đăng: Trần Quang Vinh

Theo Viblo Asia

1. Bài toán Open-Set Recognition

Thông thường, với các bài toán classification, ta thường hay train một mô hình học máy học có giám sát trên một bộ training set với số lượng class nhất định và test mô hình đó trên một bộ test set có cùng các class với bộ đã được dùng để train. Khi đó, model sẽ chỉ thực hiện được task Closed-Set Recognition, nghĩa là classify một input vào một trong những class mà model đã được huấn luyện. Nếu gặp một input có class không nằm trong bộ train, model sẽ dự đoán class của input là một trong những class đã được train, từ đó đưa ra kết quả sai. Điều này làm cho việc deploy model trong thực tế gặp khó khăn bởi ngoài việc model classify được các class đã được train, ta cần nó phải phân biệt được một input có thuộc vào các class mà nó đã được train hay không để từ đó đưa ra các quyết định hợp lý. Task này được gọi là Open-Set Recognition.

Trong bài toán classification, ta có một model ff với tham số θ\theta. Với một input sample xXx \in X, model sẽ predict ra class y=f(x,θ)y = f(x,\theta) với yYy \in Y (Y=n|Y|=n) là các class mà model được train. Theo như hình minh hoạ ở trên, yy sẽ nhận index của logit tại layer cuối (layer thứ ll) mà có giá trị lớn nhất trong nn logit (tương ứng với nn class), hay y=argmax(hl1n)y = argmax(h_l^{1 \rightarrow n}). Tuy nhiên, điều này chỉ áp dụng cho Closed-Set Recognition. Còn với Open-Set Recognition, ta sẽ có hàm ff* như sau:

  • Với xx có class nằm trong bộ train (hay x là inlier): y=f(x,θ)=iy=f^*(x,\theta)=i với i[1..n]i \in [1..n].
  • Với xx có class nằm ngoài bộ train (hay x là outliet): y=f(x,θ)=n+1y=f^*(x,\theta)=n+1

2. Phân tích toán học

Thông thường, ở layer cuối ll, ta thường dùng hàm Softmax hoặc Sigmoid để các logit hl1nh_l^{1 \rightarrow n} nhận một số thực trong khoảng (0,1)(0,1). Để giải quyết bài toán Open-Set Recognition, ta có thể chọn cách đơn giản nhất là dùng một threshold τ[0,1]\tau \in [0, 1] để xác định xem xx là inlier hay outlier. xx sẽ được coi như là một outlier nếu như hl1n<τh_l^{1 \rightarrow n} < \tau. Do đó, với các input sample là outlier, ta kỳ vọng là hl1nh_l^{1 \rightarrow n} sẽ gần 00 nhất có thể. Tuy nhiên:

  • Hàm Softmax lại không phù hợp với phương pháp này do hl1nh_l^{1 \rightarrow n} không thể đồng thời gần 0 vì i=1nhli=1\sum_{i=1}^{n} h_l^i=1.
  • Với hàm Sigmoid, ta cũng có thể dùng một threshold như trên. Tuy nhiên, theo [2], các outlier cũng có thể sinh ra logit lớn hơn threshold này. Do đó, hàm Sigmoid cũng không thể đảm bảo được là các logit sẽ nhỏ hơn threshold.

Giả sử trong trường hợp có 2 class (n=2n=2), threshold τ=0.5\tau=0.5 và hàm activation tt ở layer cuối là Sigmoid, với input sample xx là inlier, một trong hai logit ở layer cuối hl1h_l^1 hoặc hl2h_l^2 phải lớn hơn hoặc bằng 0.50.5. Để điều đó xảy ra, một trong hai logit hl11h_{l-1}^1 hoặc hl12h_{l-1}^2 sẽ phải lớn hơn 00. Với xx là outlier, cả hl1h_l^1hl2h_l^2 phải nhỏ hơn τ\tau, hay hl11h_{l-1}^1hl12h_{l-1}^2 nhỏ hơn 0.

Do việc training chỉ được thực hiện với các inlier, tham số θ\theta sẽ được tối ưu để hl21mh_{l-2}^{1 \rightarrow m} có thể được dùng để phân biệt hai class. Ví dụ, coi các logit hl21mˉh_{l-2}^{1 \rightarrow \bar{m}} là các logit được dùng để nhận diện class 1, còn hl2mˉ+1mh_{l-2}^{\bar{m}+1 \rightarrow m} là để nhận diện class 2. Ngoài ra, để đơn giản hoá việc giải thích, ta sẽ coi như hl21mh_{l-2}^{1 \rightarrow m} chỉ nhận giá trị 00 hoặc 11 (thay vì từ -\infty đến ++\infty). Với giả sử trên, đối với các sample thuộc class 1, hl21mˉh_{l-2}^{1 \rightarrow \bar{m}} sẽ nhận giá trị là 11, còn hl2mˉ+1mh_{l-2}^{\bar{m}+1 \rightarrow m} sẽ nhận giá trị là 00. Điều ngược lại cũng sẽ xảy ra khi input sample thuộc class 2. Như vậy, với input sample thuộc class 1, ta cần i=1mˉwl11i0\sum_{i=1}^{\bar{m}}{w_{l-1}^{1^i}} \ge 0i=1mˉwl12i<0\sum_{i=1}^{\bar{m}}{w_{l-1}^{2^i}} \lt 0 (để hl110h_{l-1}^{1} \ge 0hl12<0h_{l-1}^{2} \lt 0). Còn với các sample thuộc class 2, ta cần i=mˉ+1mwl11i<0\sum_{i=\bar{m}+1}^{m}{w_{l-1}^{1^i}} \lt 0i=mˉ+1mwl12i0\sum_{i=\bar{m}+1}^{m}{w_{l-1}^{2^i}} \ge 0 (để hl11<0h_{l-1}^{1} \lt 0hl120h_{l-1}^{2} \ge 0).

Lúc inference với input sample là outlier, ta có thể gặp các trường hợp sau với layer l2l-2:

  • Trường hợp hiếm gặp nhất sẽ là xx bị nhận nhầm thành inlier khi toàn bộ logit của layer này bằng 0. Khi đó, hl11=hl12=0h_{l-1}^1=h_{l-1}^2=0, tương đương với việc hl1=hl2=0.5τh_l^1=h_l^2=0.5 \ge \tau.
  • Trường hợp khác, layer này sẽ có một vài logit liên quan đến class 1 (giả sử hl2m1ˇm2ˇh_{l-2}^{\v{m_1} \rightarrow \v{m_2}} với 1m1ˇm2ˇmˉ1 \le \v{m_1} \le \v{m_2} \le \bar{m}) và class 2 (giả sử hl2m1^m2^h_{l-2}^{\hat{m_1} \rightarrow \hat{m_2}} với mˉ+1m1^m2^m\bar{m}+1 \le \hat{m_1} \le \hat{m_2} \le m) nhận giá trị 11 và các logit còn lại nhận giá trị 00. Để cho hl1h_l^1hl2h_l^2 nhỏ hơn τ\tau, ta cần cả hl11=i=mˇ1mˇ2wl11i+i=m^1m^2wl11ih_{l-1}^1=\sum_{i={\v{m}_1}}^{\v{m}_2}w_{l-1}^{1^i} + \sum_{i={\hat{m}_1}}^{\hat{m}_2}w_{l-1}^{1^i}hl12=i=mˇ1mˇ2wl12i+i=m^1m^2wl12ih^2_{l-1}=\sum_{i={\v{m}_1}}^{\v{m}_2}w_{l-1}^{2^i} + \sum_{i={\hat{m}_1}}^{\hat{m}_2}w_{l-1}^{2^i} nhỏ hơn 00.

Trong quá trình training với hai class đã biết trước, i=1mˉwl11i\sum_{i=1}^{\bar{m}}{w_{l-1}^{1^i}}i=mˉ+1mwl12i\sum_{i=\bar{m}+1}^{m}{w_{l-1}^{2^i}} sẽ là số dương, còn i=mˉ+1mwl11i\sum_{i=\bar{m}+1}^{m}{w_{l-1}^{1^i}}i=1mˉwl12i\sum_{i=1}^{\bar{m}}{w_{l-1}^{2^i}} sẽ là số âm (do hl21mˉh_{l-2}^{1 \rightarrow \bar{m}} được dùng để nhận diện class 1, hl2mˉ+1mh_{l-2}^{\bar{m}+1 \rightarrow m} được dùng để nhận diện class 2). Điều này kéo theo i=mˇ1mˇ2wl11i\sum_{i={\v{m}_1}}^{\v{m}_2}w_{l-1}^{1^i}i=m^1m^2wl12i\sum_{i={\hat{m}_1}}^{\hat{m}_2}w_{l-1}^{2^i} thường nhận số dương, trong khi i=m^1m^2wl11i\sum_{i={\hat{m}_1}}^{\hat{m}_2}w_{l-1}^{1^i}i=mˇ1mˇ2wl12i\sum_{i={\v{m}_1}}^{\v{m}_2}w_{l-1}^{2^i} thường nhận số âm. Để tổng của một số âm và số dương là một số âm, ta cần số dương phải nhỏ hơn trị tuyệt đối của số âm. Khi train model, một trong hai hl11h_{l-1}^1hl12h_{l-1}^2 phải là số dương và cái còn lại là số âm. Khi inference, nếu như phần số âm càng trở nên âm, còn phần số dương trở nên càng nhỏ, xác suất hl11h_{l-1}^1hl12h_{l-1}^2 nhận giá trị âm khi input là outlier sẽ càng tăng.

3. Hàm activation Triple-Sigmoid

Dựa trên quan sát trên, tác giả bài báo đã đề xuất việc sử dụng hàm activation Triple-Sigmoid bao gồm 3 hàm Sigmoid con. Mục đích của hàm Triple-Sigmoid là để phạt các giá trị của hl11h_{l-1}^1hl12h_{l-1}^2, cũng như giúp ta dùng được threshold τ=t(0)\tau=t(0) để dễ dàng xác định xem input là inlier hay outlier. Đồ thị của hàm Triple-Sigmoid sẽ có dạng như hình dưới đây. Trong hàm Triple-Sigmoid, hàm Sigmoid 1 sẽ dùng để làm cho logit âm trở nên âm nhất có thể, còn Sigmoid 2 và 3 để làm cho logit dương nhỏ nhất có thể.

Công thức toán học của hàm Triple-Sigmoid như sau:

trong đó, hh là output của hidden layer. Hàm Triple-Sigmoid có 3 nhánh với tất cả 7 parameter:

  • wˉ1\bar{w}_1, wˉ2\bar{w}_2, wˉ3\bar{w}_3: lần lượt dùng để điều chỉnh độ dốc của hàm Sigmoid 1, 2, 3.
  • α\alpha: dùng để điều chỉnh điểm giao (trên trục x) giữa Sigmoid 1 và 2.
  • β\beta: dùng để điều chỉnh điểm giao (trên trục x) giữa Sigmoid 2 và 3.
  • γ\gamma: dùng để điều chỉnh điểm giao (trên trục y) giữa Sigmoid 1 và 2.
  • δ\delta: dùng để điều chỉnh độ nghiêng của Sigmoid 3 và điểm giao (trên trục y) giữa Sigmoid 1 và 2.

Có hai biến bˉ\bar{b}tβt_\beta sẽ không được chỉnh bằng tay. Điều này là do ta cần Sigmoid 1 và 2 phải có cùng giá trị tại h=αh=\alpha cũng như Sigmoid 2 và 3 phải có cùng giá trị tại h=βh=\beta. Công thức tính bˉ\bar{b}tβt_\beta như sau:

Dưới đây là đồ thị đạo hàm của Triple-Sigmoid. Có thể thấy giá trị đạo hàm tại hai khúc h<αh \lt \alphahβh \ge \beta rất nhỏ, trong khi tại khúc αh<β\alpha \le h \lt \beta thì lại lớn hơn. Điều này là để phạt mạnh hơn các negative sample bị dự đoán sai, đẩy logit của layer hl1h_{l-1} mạnh hơn về bên trái, giúp giảm thiểu việc các logit này nhận giá trị lớn hơn threshold khi input là outlier như trong [2] chỉ ra.

4. Kết quả thí nghiệm

Trong bài báo, các thí nghiệm được thực hiện bằng 2 model Net 1 và Net 2 (tương tự VGG-13).

Với hàm Triple-Sigmoid, các tham số wˉ1\bar{w}_1, wˉ2\bar{w}_2, wˉ3\bar{w}_3, α\alpha, β\beta, γ\gamma được set lần lượt là 0.0050.005, 0.10.1, 0.0010.001, 00, 50050000. Riêng δ\delta thì được chọn là 1.51.5 khi dùng với bộ MNIST và 3.53.5 với các trường hợp còn lại.

4.1. Closed-Set Recognition

Với các bộ dataset như MNIST, SVHN và CIFAR10, mỗi bộ sẽ có 6/10 class được chọn ngẫu nhiên làm một closed set. Riêng đối với bộ CIFAR+10 thì có 4 class liên quan đến phương tiện giao thông. Theo kết quả so sánh với các hàm activation khác, model Net 1 dùng Triple-Sigmoid có kết quả ngang ngửa với các hàm activation khác.

4.2. Open-Set Recognition

4.2.1. So sánh với các hàm activation thông thường

Với các bộ dataset như MNIST, SVHN và CIFAR10, các class còn lại của thí nghiệm trên được chọn làm outlier (class thứ n+1n+1). Với bộ CIFAR+10, outlier sẽ là 10/50 class liên quan đến động vật được chọn ngẫu nhiên. Ngoài ra, bộ CIFAR+50 gồm 4 class phương tiện giao thông từ CIFAR10 làm inlier và 50 class động vật từ CIFAR100 được lấy từ CIFAR100 làm outlier cũng được dùng. Đồng thời, trong các thí nghiệm này, threshold τ\tau được set bằng 0.50.5 để phân biệt inlier và outlier.

Kết quả F1-score riêng cho class thứ n+1n+1 ở trên cho thấy model dùng Triple-Sigmoid có khả năng phát hiện outlier mạnh hơn so với dùng hàm Softmax và Sigmoid thông thường. Điều này được giải thích bằng bảng phân bố logit của layer l1l-1 với input là outlier ở dưới đây (riêng hàm Softmax thì khó visualize nên thay vào đó, tác giả đã visualize bằng phân bố của logit lớn nhất tại layer cuối ll). Trong bảng phân bố này, ta có thể thấy hàm Softmax cùng với 2 kiểu loss Categorial and Binary Cross Entropy đều cho ra giá trị của layer cuối gần với 1, lớn hơn rất nhiều so với threshold τ=0.5\tau=0.5. Với model dùng Sigmoid được train với Categorial Cross Entropy, model không hề có khả năng phát hiện ra outlier vì các logit đều lớn hơn 00 làm cho layer cuối lớn hơn threshold. Khi train với Binary Cross Entropy, việc classify outlier của model này được cải thiện hơn khi distribution của hl1h_{l-1} dịch qua trục y=0y=0 về phía bên trái. Còn với Triple-Sigmoid, phân bố logit của outlier đa phần nằm ở bên trái trục y=0y=0, nhất là với MNIST, SVHN, CIFAR+50. Do đó, số lượng outlier được phát hiện cũng nhiều hơn so với các phương pháp trên.

4.2.2. So sánh với các phương pháp khác

Kết quả so sánh model Net 1 dùng Triple-Sigmoid với các phương pháp SOTA khác trên các bộ dataset như MNIST, SVHN, CIFAR10/+10/+50 cho thấy ngoài việc outperform đáng kể các phương pháp khác trên các task, việc dùng Triple-Sigmoid còn giúp cho model có lượng parameters ít hơn nhiều lần so với các phương pháp khác.

So với các phương pháp SOTA khác bằng model Net 2, phương pháp dùng Triple-Sigmoid cũng outperform toàn bộ với F1-score cao hơn đáng kể so với các phương pháp khác trên các bộ dataset phức tạp hơn.

Tài liệu tham khảo:

  1. D. T. Tran, N. Shimada and J. -H. Lee, "Triple-Sigmoid Activation Function for Deep Open-Set Recognition," in IEEE Access, vol. 10, pp. 77668-77678, 2022.
  2. Shu, Lei, Hu Xu, and Bing Liu. "Doc: Deep open classification of text documents." arXiv preprint arXiv:1709.08716 (2017).

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tấn công và phòng thủ bậc nhất cực mạnh cho các mô hình học máy

tấn công bậc nhất cực mạnh = universal first-order adversary. Update: Bleeding edge của CleverHans đã lên từ 3.1.0 đến 4.

0 0 42

- vừa được xem lúc

[Deep Learning] Key Information Extraction from document using Graph Convolution Network - Bài toán trích rút thông tin từ hóa đơn với Graph Convolution Network

Các nội dung sẽ được đề cập trong bài blog lần này. . Tổng quan về GNN, GCN. Bài toán Key Information Extraction, trích rút thông tin trong văn bản từ ảnh.

0 0 219

- vừa được xem lúc

Trích xuất thông tin bảng biểu cực đơn giản với OpenCV

Trong thời điểm nhà nước đang thúc đẩy mạnh mẽ quá trình chuyển đổi số như hiện nay, Document Understanding nói chung cũng như Table Extraction nói riêng đang trở thành một trong những lĩnh vực được quan tâm phát triển và chú trọng hàng đầu. Vậy Table Extraction là gì? Document Understanding là cái

0 0 230

- vừa được xem lúc

Con đường AI của tôi

Gần đây, khá nhiều bạn nhắn tin hỏi mình những câu hỏi đại loại như: có nên học AI, bắt đầu học AI như nào, làm sao tự học cho đúng, cho nhanh, học không bị nản, lộ trình học AI như nào... Sau nhiều lần trả lời, mình nghĩ rằng nên viết hẳn một bài để trả lời chi tiết hơn, cũng như để các bạn sau này

0 0 156

- vừa được xem lúc

[B5'] Smooth Adversarial Training

Đây là một bài trong series Báo khoa học trong vòng 5 phút. Được viết bởi Xie et. al, John Hopkins University, trong khi đang intern tại Google. Hiện vẫn là preprint do bị reject tại ICLR 2021.

0 0 45

- vừa được xem lúc

Deep Learning với Java - Tại sao không?

Muốn tìm hiểu về Machine Learning / Deep Learning nhưng với background là Java thì sẽ như thế nào và bắt đầu từ đâu? Để tìm được câu trả lời, hãy đọc bài viết này - có thể kỹ năng Java vốn có sẽ giúp bạn có những chuyến phiêu lưu thú vị. DJL là tên viết tắt của Deep Java Library - một thư viện mã ng

0 0 137