Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Tìm hiểu Activation Functions trong PyTorch
Trong phần này, sẽ cùng tìm hiểu về chức năng kích hoạt – một thành phần cực kỳ quan trọng trong mạng nơ-ron nhân tạo (neural nets). Chức năng kích hoạt không chỉ giúp mạng học được các đặc tính phi tuyến mà còn giúp tối ưu hóa và cải thiện hiệu suất của mô hình học sâu. Mình sẽ lần lượt tìm hiểu các khía cạnh sau:
Chức năng kích hoạt là gì và tại sao chúng quan trọng.Cách áp dụng chúng trong PyTorch.Tổng quan về các loại chức năng kích hoạt phổ biến:
- Binary Step (Bước nhị phân)
- Sigmoid
- Tanh (Hyperbolic Tangent)
- ReLU (Rectified Linear Unit)
- Leaky ReLU
- Softmax
Chi tiết về từng Activation Function trong PyTorch
Binary Step (Bước nhị phân)
Đây là chức năng kích hoạt cơ bản nhất, thường được dùng trong các hệ thống logic. Kết quả trả về chỉ là 0 hoặc 1, dựa trên ngưỡng xác định.
Tuy nhiên, do không có gradient (đạo hàm), chức năng này không được sử dụng phổ biến trong học sâu.
Sigmoid
Hàm Sigmoid nén đầu vào xuống khoảng giá trị giữa 0 và 1. Điều này giúp chuyển đổi kết quả thành xác suất.
output = torch.sigmoid(x) print(output) s = nn.Sigmoid() output = s(x) print(output)
Tanh (Hyperbolic Tangent)
Tương tự như Sigmoid, nhưng Tanh đưa kết quả vào khoảng từ -1 đến 1, giúp dữ liệu trung bình được đặt gần 0.
Bài viết này được đăng tại [free tuts .net]
output = torch.tanh(x) print(output) t = nn.Tanh() output = t(x) print(output)
ReLU (Rectified Linear Unit)
ReLU là hàm kích hoạt phổ biến nhất, đặc biệt trong các lớp ẩn của mạng nơ-ron. Hàm này giữ nguyên giá trị dương và thay các giá trị âm thành 0, giúp giảm vấn đề "vanishing gradient".
output = torch.relu(x) print(output) relu = nn.ReLU() output = relu(x) print(output)
Leaky ReLU
Một biến thể của ReLU, Leaky ReLU cho phép gradient có giá trị nhỏ đối với đầu vào âm thay vì thay thế bằng 0 hoàn toàn.
output = F.leaky_relu(x) print(output) lrelu = nn.LeakyReLU() output = lrelu(x) print(output)
Softmax
Hàm Softmax chuyển đổi đầu ra thành xác suất, đặc biệt hữu ích trong bài toán phân loại đa lớp. Kết quả tổng của tất cả xác suất sẽ là 1.
output = torch.softmax(x, dim=0) print(output) sm = nn.Softmax(dim=0) output = sm(x) print(output)