ReLU đã là hàm kích hoạt mặc định trong học sâu suốt nhiều năm. Và có lý do chính đáng cho điều đó - nó đơn giản và hiệu quả trong hầu hết các trường hợp. Nhưng khi các neuron bắt đầu cho ra giá trị 0 trong quá trình huấn luyện, chúng ngừng học, gradient trở về 0 và lan truyền ngược không thể cập nhật trọng số của chúng. Ở các mạng sâu hơn, vấn đề này có thể ảnh hưởng đến nhiều neuron và làm giảm khả năng mô hình nắm bắt các mẫu trong dữ liệu của bạn.
Nói đơn giản: mạng của bạn ngừng học.
Softplus mang đến một lựa chọn thay thế mượt, khả vi, giải quyết vấn đề này đồng thời vẫn giữ phần lớn ưu điểm của ReLU. Nó xấp xỉ hành vi của ReLU với đầu vào dương nhưng cung cấp gradient khác 0 cho các giá trị âm. Điều này giúp các neuron luôn hoạt động trong suốt quá trình huấn luyện.
Trong bài viết này, bạn sẽ biết Softplus là gì, so sánh toán học với ReLU ra sao và khi nào nên chọn nó thay cho các hàm kích hoạt khác.
Trong đó σ(x) là hàm sigmoid mà bạn có lẽ đã từng thấy.
Tính chất đạo hàm này khiến Softplus hữu ích khi bạn cần dòng gradient mượt mà trong quá trình lan truyền ngược. Gradient không bao giờ rơi về 0. Điều này có nghĩa là các neuron luôn có thể cập nhật trọng số và tiếp tục học.
Hành vi ở các cực trị
Softplus có hành vi khác nhau tùy thuộc vào đầu vào lớn và dương hay lớn và âm.
Với các giá trị dương lớn:
Với các giá trị âm lớn:
Đó là lý do Softplus xấp xỉ ReLU rất tốt. Khi x dương và lớn, cả hai hàm trả về xấp xỉ cùng một giá trị.
Khác biệt thể hiện ở đầu vào âm. ReLU cho ra đúng 0 với đầu vào âm, còn Softplus cho ra các giá trị dương nhỏ.
Chính khác biệt nhỏ đó ngăn vấn đề neuron chết. Neuron dùng Softplus có thể hồi phục từ các kích hoạt âm vì gradient của chúng không bao giờ triệt tiêu hoàn toàn.
Thuộc tính toán học và tính toán
Softplus có những thuộc tính toán học bạn cần biết. Chúng khiến nó không chỉ là phiên bản mượt của ReLU.
Tính mượt và khả vi
Softplus khả vi vô hạn tại mọi điểm.
Nghĩa là bạn có thể lấy đạo hàm bao nhiêu lần tùy ý và hàm vẫn mượt. Về mặt toán học, nó là một hàm giải tích.
Trong khi đó, ReLU có một điểm gãy tại 0 - một góc nhọn nơi đạo hàm không tồn tại. Điểm không khả vi này có thể gây vấn đề cho các thuật toán tối ưu hóa giả định gradient mượt.
Trong học sâu, tối ưu hóa mượt hoạt động tốt hơn khi bề mặt hàm mất mát mượt. Nếu bạn dùng các phương pháp tối ưu hóa bậc hai hoặc thuật toán dựa vào chuyển tiếp gradient mượt, Softplus cung cấp cho bạn độ mượt đó.
Ổn định số
Tính hàm mũ có thể gây tràn số khi đầu vào lớn.
Các framework học sâu xử lý điều này bằng tham số threshold. Khi đầu vào vượt ngưỡng này, hàm sẽ chuyển từ tính logarit sang trả về đầu vào theo dạng tuyến tính.
Cách hoạt động như sau:
Với đầu vào nhỏ: tính Softplus trực tiếp
Với đầu vào lớn vượt ngưỡng: trả về trực tiếp giá trị đầu vào
Điều này ngăn tràn số trong khi vẫn giữ hành vi bạn cần. Với đầu vào dương lớn, Softplus vốn đã xấp xỉ một hàm tuyến tính, nên việc chuyển đổi không ảnh hưởng đáng kể đến đầu ra.
Mối liên hệ với các hàm khác
Softplus liên quan đến một số hàm kích hoạt và hàm xác suất khác. Cụ thể như sau:
Sigmoid: Như bạn đã thấy, đạo hàm của Softplus là hàm sigmoid. Điều này có nghĩa Softplus là tích phân của sigmoid, điều khá hợp lý nếu nhìn vào hình dạng của chúng.
LogSumExp: Softplus thực ra là một trường hợp đặc biệt của hàm LogSumExp. Với hai đầu vào, LogSumExp(0, x) = ln(1 + e^x) = Softplus(x). Điều này liên kết Softplus với các kỹ thuật ổn định số dùng trong học máy.
Softmax: LogSumExp là nền tảng của Softmax, nên Softplus cũng chung nguồn gốc. Cả hai đều dùng mẹo log-exp để ổn định số.
Hàm logit: Logit là nghịch đảo của sigmoid. Vì sigmoid là đạo hàm của Softplus, ba hàm này tạo thành một họ liên quan trong lý thuyết xác suất.
Liên hợp lồi: Trong phân tích lồi, liên hợp lồi của Softplus là entropy nhị phân âm. Điều này kết nối Softplus với các nguyên lý tối đa hóa entropy dùng trong lý thuyết thông tin và mô hình xác suất.
Nếu bạn làm việc với các mô hình xác suất hoặc khung Bayesian, mối liên hệ về entropy này khiến Softplus trở thành lựa chọn tự nhiên để đảm bảo kích hoạt phù hợp với nguyên lý entropy tối đa.
Ưu điểm khi dùng Softplus
Softplus giải quyết những vấn đề cụ thể mà ReLU xử lý chưa tốt. Dưới đây là bốn điểm như vậy.
Mượt và khả vi
Softplus mượt tại mọi điểm trên đường cong.
Điều này có nghĩa gradient chảy liên tục trong lan truyền ngược mà không có các bước nhảy hay gãy khúc đột ngột. Khi huấn luyện mạng, dòng gradient mượt mang lại cập nhật trọng số ổn định hơn và hội tụ tốt hơn.
Góc nhọn tại 0 của ReLU có thể gây gián đoạn gradient. Softplus không gặp vấn đề này.
Ngăn neuron chết
Softplus không bao giờ cho ra đúng 0, ngay cả với đầu vào âm lớn.
Điều đó có nghĩa là mọi neuron đều có thể tiếp tục học vì gradient không bao giờ triệt tiêu hoàn toàn. Với ReLU, một neuron bắt đầu cho ra 0 có thể mắc kẹt ở đó mãi mãi - gradient của nó bằng 0 nên cập nhật trọng số không làm nó dịch chuyển.
Softplus cung cấp một lưới an toàn. Neuron có thể hồi phục từ kích hoạt âm và bắt đầu đóng góp cho mạng trở lại.
Đầu ra luôn dương
Softplus đảm bảo đầu ra không âm cho mọi đầu vào.
Điều này quan trọng khi bạn xây dựng các mô hình cần dự đoán dương. Mô hình hồi quy Poisson xử lý dữ liệu đếm (khách hàng, sự kiện, lượt nhấp) nơi giá trị âm là vô nghĩa. Các mô hình sinh cũng thường cần đầu ra dương để biểu diễn xác suất hoặc cường độ.
Phù hợp hơn cho một số tác vụ
Một số tác vụ hưởng lợi từ hành vi kích hoạt mượt, liên tục.
Các bài toán hồi quy với hàm mục tiêu mượt hoạt động tốt hơn với các kích hoạt mượt. Nếu bạn dự đoán các giá trị liên tục như nhiệt độ, giá cả hoặc khoảng cách, Softplus phù hợp hơn với độ mượt vốn có của dữ liệu.
Các mô hình Bayesian và khung xác suất cũng ưa chuộng các hàm mượt. Khi bạn mô hình hóa bất định hoặc làm việc với phân phối xác suất, đạo hàm liên tục của Softplus giúp các phép toán trở nên gọn gàng và ổn định hơn.
Nếu bạn làm việc trong các lĩnh vực này, Softplus mang lại đảm bảo lý thuyết tốt hơn và kết quả thực tế khả quan hơn so với các chuyển tiếp gắt của ReLU.
Hạn chế và đánh đổi
Có một số hạn chế bạn cần biết về Softplus trước khi bỏ hẳn ReLU. Dưới đây là ba điểm.
Chi phí tính toán cao hơn
ReLU dùng phép toán max đơn giản: max(0, x).
Softplus tính lũy thừa và logarit: ln(1 + e^x). Các phép này chậm hơn, đặc biệt khi bạn thực thi hàng triệu lần trên các mạng lớn với hàng nghìn neuron.
Sự khác biệt sẽ cộng dồn. Chi phí này có thể làm tăng thời gian huấn luyện.
Hội tụ chậm hơn
Softplus có gradient mượt hơn, nghe thì thật tốt.
Nhưng mượt không phải lúc nào cũng đồng nghĩa với nhanh. Các chuyển tiếp gắt của ReLU tạo ra kích hoạt thưa - nhiều neuron cho ra đúng 0. Tính thưa này giúp gradient lan truyền nhanh hơn qua mạng trong quá trình lan truyền ngược.
Softplus không có tính thưa này. Mỗi neuron cho ra giá trị khác 0, đồng nghĩa nhiều tính toán hơn và có thể hội tụ chậm hơn trong các kiến trúc sâu.
Ít phổ biến trong thực tế
ReLU đã thống trị học sâu suốt nhiều năm.
Điều này có nghĩa có nhiều tài liệu, vấn đề/giải pháp và tài nguyên liên quan hơn. Softplus không được ưu ái như vậy. Ít người dùng hơn, nên ít kiến thức cộng đồng, ít câu trả lời trên Stack Overflow, và ít mô hình tiền huấn luyện sử dụng nó hơn.
Khi bạn chọn Softplus, bạn đi theo con đường ít được hỗ trợ hơn và có thể phải tự gỡ lỗi nhiều hơn.
Softplus trong PyTorch
PyTorch hỗ trợ sẵn Softplus và hai tham số điều khiển hành vi, giúp sử dụng rất dễ dàng.
Tham khảo, đây là phiên bản PyTorch tôi đang dùng:
import torch
import torch.nn as nn
print(torch.__version__)Được hỗ trợ bởi
Đây là cách cài đặt cơ bản:
# Create a Softplus activation function
softplus = nn.Softplus(beta=1, threshold=20)# Apply it to some input
x = torch.tensor([-2.0,-1.0,0.0,1.0,2.0])
output = softplus(x)print(output)Được hỗ trợ bởi
Đủ đơn giản. Nhưng hai tham số đó - beta và threshold - sẽ thay đổi cách hàm hoạt động. Hãy tìm hiểu sâu hơn.
Tham số beta
Tham số beta điều khiển độ mượt của đường cong Softplus.
Khi tăng beta, hàm trở nên dốc hơn và gần với ReLU hơn. Khi giảm nó, hàm mượt hơn và chuyển tiếp nhẹ nhàng hơn. Ví dụ trong mã:
Giá trị mặc định beta=1 phù hợp với hầu hết trường hợp. Bạn chỉ nên thay đổi khi cần tinh chỉnh độ sắc của kích hoạt cho các tác vụ cụ thể.
Tham số threshold
Tham số threshold ngăn tràn số với các đầu vào lớn.
Nhớ rằng việc tính e^x có thể bùng nổ với x lớn? Khi đầu vào vượt ngưỡng, PyTorch chuyển từ tính công thức Softplus đầy đủ sang trả về trực tiếp giá trị đầu vào:
softplus = nn.Softplus(beta=1, threshold=20)# Large input bypasses the exponential
large_input = torch.tensor([25.0])print(softplus(large_input))Được hỗ trợ bởi
Giá trị mặc định threshold=20 phù hợp với hầu hết tình huống. Ở mức này, Softplus vốn đã xấp xỉ hàm tuyến tính, nên chuyển đổi không ảnh hưởng đến kết quả.
Khi nào nên dùng Softplus
Chọn Softplus khi bạn cần gradient mượt để tối ưu hóa. Nếu bạn dùng các phương pháp tối ưu hóa bậc hai hoặc thuật toán giả định bề mặt mất mát mượt, Softplus cung cấp đạo hàm liên tục mà các phương pháp đó cần.
Dùng khi mô hình của bạn cần đầu ra không âm. Dữ liệu đếm, giá trị cường độ và tham số xác suất đều cần dương. Softplus xử lý tự nhiên điều này mà không cần ràng buộc bổ sung.
Các mạng nông hưởng lợi từ Softplus nhiều hơn mạng sâu. Khi bạn chỉ có vài lớp, mất dù chỉ một neuron vì vấn đề ReLU chết cũng làm giảm hiệu năng. Softplus giữ cho tất cả neuron hoạt động và học.
Bạn cũng có thể chọn Softplus cho mô hình xác suất và khung Bayesian. Gradient mượt và mối liên hệ với entropy giúp các phép toán sạch sẽ hơn. Các mô hình dựa trên năng lượng cũng hưởng lợi từ tính liên tục của Softplus.
Những mô hình cần diễn giải gradient liên tục sẽ hoạt động tốt hơn với Softplus. Nếu bạn phân tích cách mạng phản ứng với thay đổi đầu vào hoặc nghiên cứu dòng gradient, đạo hàm mượt mang lại hiểu biết rõ ràng hơn so với các chuyển tiếp gắt của ReLU.
Khi ReLU vẫn tốt hơn
Đừng chuyển sang Softplus chỉ vì nó nghe có vẻ tốt trên lý thuyết hay vì nó mới mẻ.
Các mạng lớn, sâu huấn luyện nhanh hơn với ReLU. Chi phí tính toán của Softplus sẽ cộng dồn qua hàng trăm lớp và hàng triệu tham số. Tính thưa của ReLU cũng giúp về bộ nhớ và tốc độ.
Hệ thống sản xuất thường ưu tiên ReLU vì phần cứng được tối ưu hóa riêng cho nó. Huấn luyện của bạn có thể chậm hơn 10–20% với Softplus trên cùng phần cứng.
Các tác vụ thị giác máy tính và NLP tiêu chuẩn thường không được lợi từ Softplus. Cộng đồng đã tối ưu hóa kiến trúc quanh ReLU qua nhiều năm, và việc đổi hàm kích hoạt đồng nghĩa phải xây dựng lại kho kiến thức đó.
Hãy bắt đầu với ReLU cho hầu hết dự án. Chỉ chuyển sang Softplus khi bạn gặp vấn đề cụ thể mà các thuộc tính của nó giải quyết được.
Kết luận
Tóm lại, khi cần, Softplus cho bạn một lựa chọn mượt mà thay thế ReLU.
Nó sẽ không thay thế ReLU làm hàm kích hoạt mặc định - và cũng không cần thiết. Softplus giải quyết những vấn đề cụ thể: neuron chết ở các mạng nông, mô hình cần đầu ra không âm và các tác vụ mà dòng gradient mượt quan trọng cho tối ưu hóa.
Bạn có được các thuộc tính toán học tốt hơn với cái giá là tốc độ tính toán. Với đa số dự án học sâu, sự đơn giản và tốc độ của ReLU thắng thế. Nhưng khi làm việc với mô hình xác suất, khung Bayesian hoặc các bài toán hồi quy có mục tiêu mượt, Softplus lại là lựa chọn tốt hơn.
Hãy thử cả hai. Chạy thí nghiệm. Để vấn đề cụ thể của bạn định hướng quyết định.
Chuyên gia Khoa học Dữ liệu Cấp cao, làm việc tại Croatia. Tác giả Công nghệ Hàng đầu với hơn 700 bài viết đã xuất bản, đạt trên 10 triệu lượt xem. Tác giả cuốn sách Tự động hóa Machine Learning với TPOT.
Softplus FAQs
Hàm kích hoạt Softplus là gì?⌄
Softplus là một hàm kích hoạt mượt được định nghĩa là f(x) = ln(1 + e^x), đóng vai trò xấp xỉ khả vi của ReLU. Không giống ReLU có góc nhọn tại 0, Softplus uốn cong mượt qua điểm chuyển tiếp. Với đầu vào dương lớn, nó trả về giá trị gần với chính đầu vào, còn với đầu vào âm, nó trả về các giá trị dương nhỏ thay vì 0. Điều này giúp ngăn vấn đề neuron chết trong mạng nơ-ron.
Khi nào tôi nên dùng Softplus thay vì ReLU?⌄
Hãy chọn Softplus khi bạn cần gradient mượt để tối ưu hóa, chẳng hạn với các phương pháp tối ưu hóa bậc hai hoặc thuật toán giả định bề mặt mất mát mượt. Nó cũng lý tưởng khi mô hình yêu cầu đầu ra không âm (như dữ liệu đếm hoặc tham số xác suất) và cho các mạng nông, nơi mất dù chỉ một neuron vì vấn đề ReLU chết cũng gây hại hiệu năng. Softplus hoạt động tốt với mô hình xác suất, khung Bayesian và các bài toán hồi quy có hàm mục tiêu mượt. Tuy nhiên, hãy giữ ReLU cho các mạng lớn, sâu và các tác vụ thị giác máy tính hoặc NLP tiêu chuẩn, nơi tốc độ quan trọng hơn.
Những ưu điểm chính của Softplus so với ReLU là gì?⌄
Softplus có bốn ưu điểm chính: mượt và khả vi tại mọi điểm, ngăn gián đoạn gradient; ngăn neuron chết bằng cách không bao giờ cho ra 0 tuyệt đối, nên mọi neuron đều tiếp tục học; đảm bảo đầu ra không âm cho mọi đầu vào; và phù hợp hơn cho các tác vụ đòi hỏi hành vi kích hoạt mượt, liên tục như hồi quy và mô hình xác suất. Dòng gradient liên tục giúp cập nhật trọng số ổn định hơn và hội tụ tốt hơn trong huấn luyện.
Tham số beta và threshold trong Softplus của PyTorch hoạt động thế nào?⌄
Tham số beta điều khiển độ mượt của đường cong Softplus - tăng beta làm hàm dốc hơn và gần ReLU hơn, giảm beta làm hàm mượt và thoải hơn. Tham số threshold ngăn tràn số với đầu vào lớn bằng cách chuyển từ tính công thức Softplus đầy đủ sang trả về trực tiếp giá trị đầu vào khi đầu vào vượt ngưỡng. Các giá trị mặc định (beta=1, threshold=20) phù hợp với hầu hết tình huống.
Khác biệt chi phí tính toán giữa Softplus và ReLU là gì?⌄
Softplus tốn chi phí tính toán cao hơn ReLU vì nó tính lũy thừa và logarit (ln(1 + e^x)) thay vì phép max đơn giản của ReLU (max(0, x)). Các phép này chậm hơn, nhất là khi chạy hàng triệu lần trên các mạng lớn với hàng nghìn neuron. Chi phí này có thể tăng thời gian huấn luyện 10–20% trên cùng phần cứng, đó là lý do ReLU vẫn được ưa chuộng cho hệ thống sản xuất và các mạng lớn, sâu nơi tốc độ là then chốt.
Vì sao mạng nơ-ron cần một hàm kích hoạt?⌄
Một mạng nơ-ron cần một hàm kích hoạt để đưa phi tuyến tính vào mô hình. Không có nó, mạng chỉ thực hiện các biến đổi tuyến tính — dù có bao nhiêu lớp đi nữa — khiến nó không thể học các mẫu hay mối quan hệ phức tạp trong dữ liệu. Các hàm kích hoạt cho phép mạng nơ-ron xấp xỉ các hàm phi tuyến, giúp chúng xử lý các tác vụ như nhận diện ảnh, hiểu ngôn ngữ và ra quyết định.
Học cách xây dựng mạng nơ-ron đầu tiên của bạn, điều chỉnh các tham số siêu (hyperparameters) và giải quyết các vấn đề phân loại và hồi quy trong PyTorch.
ReLU đã là hàm kích hoạt mặc định trong học sâu suốt nhiều năm. Và có lý do chính đáng cho điều đó - nó đơn giản và hiệu quả trong hầu hết các trường hợp. Nhưng khi các neuron bắt đầu cho ra giá trị 0 trong quá trình huấn luyện, chúng ngừng học, gradient trở về 0 và lan truyền ngược không thể cập nhật trọng số của chúng. Ở các mạng sâu hơn, vấn đề này có thể ảnh hưởng đến nhiều neuron và làm giảm khả năng mô hình nắm bắt các mẫu trong dữ liệu của bạn.
Nói đơn giản: mạng của bạn ngừng học.
Softplus mang đến một lựa chọn thay thế mượt, khả vi, giải quyết vấn đề này đồng thời vẫn giữ phần lớn ưu điểm của ReLU. Nó xấp xỉ hành vi của ReLU với đầu vào dương nhưng cung cấp gradient khác 0 cho các giá trị âm. Điều này giúp các neuron luôn hoạt động trong suốt quá trình huấn luyện.
Trong bài viết này, bạn sẽ biết Softplus là gì, so sánh toán học với ReLU ra sao và khi nào nên chọn nó thay cho các hàm kích hoạt khác.
Nếu bạn hoàn toàn mới với học sâu, hãy xem hướng dẫn chi tiết của chúng tôi về hàm kích hoạt trong mạng nơ-ron.
Softplus là gì?
Softplus là một hàm kích hoạt mượt mà, đóng vai trò xấp xỉ khả vi của ReLU.
Hàm nhận mọi số thực làm đầu vào và cho ra giá trị dương. Softplus không có góc nhọn tại 0 như ReLU. Nó uốn cong mượt mà qua điểm chuyển tiếp đó.
Định nghĩa toán học như sau:
Trong đó:
Với đầu vào dương lớn, Softplus trả về giá trị xấp xỉ chính đầu vào. Với đầu vào âm, nó trả về các giá trị dương nhỏ thay vì 0.
Đạo hàm của Softplus
Đạo hàm của Softplus là hàm logistic sigmoid.
Điều này có nghĩa là:
Trong đó σ(x) là hàm sigmoid mà bạn có lẽ đã từng thấy.
Tính chất đạo hàm này khiến Softplus hữu ích khi bạn cần dòng gradient mượt mà trong quá trình lan truyền ngược. Gradient không bao giờ rơi về 0. Điều này có nghĩa là các neuron luôn có thể cập nhật trọng số và tiếp tục học.
Hành vi ở các cực trị
Softplus có hành vi khác nhau tùy thuộc vào đầu vào lớn và dương hay lớn và âm.
Với các giá trị dương lớn:
Với các giá trị âm lớn:
Đó là lý do Softplus xấp xỉ ReLU rất tốt. Khi x dương và lớn, cả hai hàm trả về xấp xỉ cùng một giá trị.
Khác biệt thể hiện ở đầu vào âm. ReLU cho ra đúng 0 với đầu vào âm, còn Softplus cho ra các giá trị dương nhỏ.
Chính khác biệt nhỏ đó ngăn vấn đề neuron chết. Neuron dùng Softplus có thể hồi phục từ các kích hoạt âm vì gradient của chúng không bao giờ triệt tiêu hoàn toàn.
Thuộc tính toán học và tính toán
Softplus có những thuộc tính toán học bạn cần biết. Chúng khiến nó không chỉ là phiên bản mượt của ReLU.
Tính mượt và khả vi
Softplus khả vi vô hạn tại mọi điểm.
Nghĩa là bạn có thể lấy đạo hàm bao nhiêu lần tùy ý và hàm vẫn mượt. Về mặt toán học, nó là một hàm giải tích.
Trong khi đó, ReLU có một điểm gãy tại 0 - một góc nhọn nơi đạo hàm không tồn tại. Điểm không khả vi này có thể gây vấn đề cho các thuật toán tối ưu hóa giả định gradient mượt.
Trong học sâu, tối ưu hóa mượt hoạt động tốt hơn khi bề mặt hàm mất mát mượt. Nếu bạn dùng các phương pháp tối ưu hóa bậc hai hoặc thuật toán dựa vào chuyển tiếp gradient mượt, Softplus cung cấp cho bạn độ mượt đó.
Ổn định số
Tính hàm mũ có thể gây tràn số khi đầu vào lớn.
Các framework học sâu xử lý điều này bằng tham số
threshold. Khi đầu vào vượt ngưỡng này, hàm sẽ chuyển từ tính logarit sang trả về đầu vào theo dạng tuyến tính.Cách hoạt động như sau:
Điều này ngăn tràn số trong khi vẫn giữ hành vi bạn cần. Với đầu vào dương lớn, Softplus vốn đã xấp xỉ một hàm tuyến tính, nên việc chuyển đổi không ảnh hưởng đáng kể đến đầu ra.
Mối liên hệ với các hàm khác
Softplus liên quan đến một số hàm kích hoạt và hàm xác suất khác. Cụ thể như sau:
Sigmoid: Như bạn đã thấy, đạo hàm của Softplus là hàm sigmoid. Điều này có nghĩa Softplus là tích phân của sigmoid, điều khá hợp lý nếu nhìn vào hình dạng của chúng.
LogSumExp: Softplus thực ra là một trường hợp đặc biệt của hàm LogSumExp. Với hai đầu vào,
LogSumExp(0, x) = ln(1 + e^x) = Softplus(x). Điều này liên kết Softplus với các kỹ thuật ổn định số dùng trong học máy.Softmax: LogSumExp là nền tảng của Softmax, nên Softplus cũng chung nguồn gốc. Cả hai đều dùng mẹo log-exp để ổn định số.
Hàm logit: Logit là nghịch đảo của sigmoid. Vì sigmoid là đạo hàm của Softplus, ba hàm này tạo thành một họ liên quan trong lý thuyết xác suất.
Liên hợp lồi: Trong phân tích lồi, liên hợp lồi của Softplus là entropy nhị phân âm. Điều này kết nối Softplus với các nguyên lý tối đa hóa entropy dùng trong lý thuyết thông tin và mô hình xác suất.
Nếu bạn làm việc với các mô hình xác suất hoặc khung Bayesian, mối liên hệ về entropy này khiến Softplus trở thành lựa chọn tự nhiên để đảm bảo kích hoạt phù hợp với nguyên lý entropy tối đa.
Ưu điểm khi dùng Softplus
Softplus giải quyết những vấn đề cụ thể mà ReLU xử lý chưa tốt. Dưới đây là bốn điểm như vậy.
Mượt và khả vi
Softplus mượt tại mọi điểm trên đường cong.
Điều này có nghĩa gradient chảy liên tục trong lan truyền ngược mà không có các bước nhảy hay gãy khúc đột ngột. Khi huấn luyện mạng, dòng gradient mượt mang lại cập nhật trọng số ổn định hơn và hội tụ tốt hơn.
Góc nhọn tại 0 của ReLU có thể gây gián đoạn gradient. Softplus không gặp vấn đề này.
Ngăn neuron chết
Softplus không bao giờ cho ra đúng 0, ngay cả với đầu vào âm lớn.
Điều đó có nghĩa là mọi neuron đều có thể tiếp tục học vì gradient không bao giờ triệt tiêu hoàn toàn. Với ReLU, một neuron bắt đầu cho ra 0 có thể mắc kẹt ở đó mãi mãi - gradient của nó bằng 0 nên cập nhật trọng số không làm nó dịch chuyển.
Softplus cung cấp một lưới an toàn. Neuron có thể hồi phục từ kích hoạt âm và bắt đầu đóng góp cho mạng trở lại.
Đầu ra luôn dương
Softplus đảm bảo đầu ra không âm cho mọi đầu vào.
Điều này quan trọng khi bạn xây dựng các mô hình cần dự đoán dương. Mô hình hồi quy Poisson xử lý dữ liệu đếm (khách hàng, sự kiện, lượt nhấp) nơi giá trị âm là vô nghĩa. Các mô hình sinh cũng thường cần đầu ra dương để biểu diễn xác suất hoặc cường độ.
Phù hợp hơn cho một số tác vụ
Một số tác vụ hưởng lợi từ hành vi kích hoạt mượt, liên tục.
Các bài toán hồi quy với hàm mục tiêu mượt hoạt động tốt hơn với các kích hoạt mượt. Nếu bạn dự đoán các giá trị liên tục như nhiệt độ, giá cả hoặc khoảng cách, Softplus phù hợp hơn với độ mượt vốn có của dữ liệu.
Các mô hình Bayesian và khung xác suất cũng ưa chuộng các hàm mượt. Khi bạn mô hình hóa bất định hoặc làm việc với phân phối xác suất, đạo hàm liên tục của Softplus giúp các phép toán trở nên gọn gàng và ổn định hơn.
Nếu bạn làm việc trong các lĩnh vực này, Softplus mang lại đảm bảo lý thuyết tốt hơn và kết quả thực tế khả quan hơn so với các chuyển tiếp gắt của ReLU.
Hạn chế và đánh đổi
Có một số hạn chế bạn cần biết về Softplus trước khi bỏ hẳn ReLU. Dưới đây là ba điểm.
Chi phí tính toán cao hơn
ReLU dùng phép toán max đơn giản:
max(0, x).Softplus tính lũy thừa và logarit:
ln(1 + e^x). Các phép này chậm hơn, đặc biệt khi bạn thực thi hàng triệu lần trên các mạng lớn với hàng nghìn neuron.Sự khác biệt sẽ cộng dồn. Chi phí này có thể làm tăng thời gian huấn luyện.
Hội tụ chậm hơn
Softplus có gradient mượt hơn, nghe thì thật tốt.
Nhưng mượt không phải lúc nào cũng đồng nghĩa với nhanh. Các chuyển tiếp gắt của ReLU tạo ra kích hoạt thưa - nhiều neuron cho ra đúng 0. Tính thưa này giúp gradient lan truyền nhanh hơn qua mạng trong quá trình lan truyền ngược.
Softplus không có tính thưa này. Mỗi neuron cho ra giá trị khác 0, đồng nghĩa nhiều tính toán hơn và có thể hội tụ chậm hơn trong các kiến trúc sâu.
Ít phổ biến trong thực tế
ReLU đã thống trị học sâu suốt nhiều năm.
Điều này có nghĩa có nhiều tài liệu, vấn đề/giải pháp và tài nguyên liên quan hơn. Softplus không được ưu ái như vậy. Ít người dùng hơn, nên ít kiến thức cộng đồng, ít câu trả lời trên Stack Overflow, và ít mô hình tiền huấn luyện sử dụng nó hơn.
Khi bạn chọn Softplus, bạn đi theo con đường ít được hỗ trợ hơn và có thể phải tự gỡ lỗi nhiều hơn.
Softplus trong PyTorch
PyTorch hỗ trợ sẵn Softplus và hai tham số điều khiển hành vi, giúp sử dụng rất dễ dàng.
Tham khảo, đây là phiên bản PyTorch tôi đang dùng:
Đây là cách cài đặt cơ bản:
Đủ đơn giản. Nhưng hai tham số đó -
betavàthreshold- sẽ thay đổi cách hàm hoạt động. Hãy tìm hiểu sâu hơn.Tham số beta
Tham số
betađiều khiển độ mượt của đường cong Softplus.Khi tăng
beta, hàm trở nên dốc hơn và gần với ReLU hơn. Khi giảm nó, hàm mượt hơn và chuyển tiếp nhẹ nhàng hơn. Ví dụ trong mã:Giá trị mặc định
beta=1phù hợp với hầu hết trường hợp. Bạn chỉ nên thay đổi khi cần tinh chỉnh độ sắc của kích hoạt cho các tác vụ cụ thể.Tham số threshold
Tham số
thresholdngăn tràn số với các đầu vào lớn.Nhớ rằng việc tính
e^xcó thể bùng nổ với x lớn? Khi đầu vào vượt ngưỡng, PyTorch chuyển từ tính công thức Softplus đầy đủ sang trả về trực tiếp giá trị đầu vào:Giá trị mặc định
threshold=20phù hợp với hầu hết tình huống. Ở mức này, Softplus vốn đã xấp xỉ hàm tuyến tính, nên chuyển đổi không ảnh hưởng đến kết quả.Khi nào nên dùng Softplus
Chọn Softplus khi bạn cần gradient mượt để tối ưu hóa. Nếu bạn dùng các phương pháp tối ưu hóa bậc hai hoặc thuật toán giả định bề mặt mất mát mượt, Softplus cung cấp đạo hàm liên tục mà các phương pháp đó cần.
Dùng khi mô hình của bạn cần đầu ra không âm. Dữ liệu đếm, giá trị cường độ và tham số xác suất đều cần dương. Softplus xử lý tự nhiên điều này mà không cần ràng buộc bổ sung.
Các mạng nông hưởng lợi từ Softplus nhiều hơn mạng sâu. Khi bạn chỉ có vài lớp, mất dù chỉ một neuron vì vấn đề ReLU chết cũng làm giảm hiệu năng. Softplus giữ cho tất cả neuron hoạt động và học.
Bạn cũng có thể chọn Softplus cho mô hình xác suất và khung Bayesian. Gradient mượt và mối liên hệ với entropy giúp các phép toán sạch sẽ hơn. Các mô hình dựa trên năng lượng cũng hưởng lợi từ tính liên tục của Softplus.
Những mô hình cần diễn giải gradient liên tục sẽ hoạt động tốt hơn với Softplus. Nếu bạn phân tích cách mạng phản ứng với thay đổi đầu vào hoặc nghiên cứu dòng gradient, đạo hàm mượt mang lại hiểu biết rõ ràng hơn so với các chuyển tiếp gắt của ReLU.
Khi ReLU vẫn tốt hơn
Đừng chuyển sang Softplus chỉ vì nó nghe có vẻ tốt trên lý thuyết hay vì nó mới mẻ.
Hãy bắt đầu với ReLU cho hầu hết dự án. Chỉ chuyển sang Softplus khi bạn gặp vấn đề cụ thể mà các thuộc tính của nó giải quyết được.
Kết luận
Tóm lại, khi cần, Softplus cho bạn một lựa chọn mượt mà thay thế ReLU.
Nó sẽ không thay thế ReLU làm hàm kích hoạt mặc định - và cũng không cần thiết. Softplus giải quyết những vấn đề cụ thể: neuron chết ở các mạng nông, mô hình cần đầu ra không âm và các tác vụ mà dòng gradient mượt quan trọng cho tối ưu hóa.
Bạn có được các thuộc tính toán học tốt hơn với cái giá là tốc độ tính toán. Với đa số dự án học sâu, sự đơn giản và tốc độ của ReLU thắng thế. Nhưng khi làm việc với mô hình xác suất, khung Bayesian hoặc các bài toán hồi quy có mục tiêu mượt, Softplus lại là lựa chọn tốt hơn.
Hãy thử cả hai. Chạy thí nghiệm. Để vấn đề cụ thể của bạn định hướng quyết định.
Muốn học thêm? Xem các tài nguyên sau: