Hàm kích hoạt

Hàm kích hoạt (tiếng Anh: Activation function) là một hàm phi tuyến được áp dụng lên tổng các trọng số của các đầu vào tại mỗi neuron trong mạng thần kinh nhân tạo, tạo ra đầu ra của neuron đó để truyền sang lớp tiếp theo. Nếu không có hàm kích hoạt, một mạng nhiều lớp dù sâu đến đâu cũng chỉ tương đương với một phép biến đổi tuyến tính duy nhất, và do đó mất đi khả năng học các mối quan hệ phức tạp trong dữ liệu.

Các hàm kích hoạt phổ biến hiện nay bao gồm hàm sigmoid (mà cụ thể là hàm logistic) được sử dụng bởi giáo sư Geoffrey Hinton và cộng sự cho một mô hình nhận diện giọng nói, hàm ReLU cho mô hình thị giác máy tính AlexNet, và các biến thể của ReLU như GELU cho các mô hình ngôn ngữ sau này trên kiến trúc Transformer như BERT.

Đặc tính 
Hai đặc tính quan trọng nhất mà một hàm kích hoạt cần có là tính phi tuyến và tính khả vi.

Tính phi tuyến (non-linearity) là lý do căn bản cho sự tồn tại của hàm kích hoạt. Trong một mạng thần kinh, mỗi lớp thực hiện một phép tính tuyến tính: nhân đầu vào với ma trận trọng số rồi cộng thêm hệ số điều chỉnh. Nếu ta xếp nhiều phép tính tuyến tính liên tiếp, kết quả vẫn chỉ là một phép tính tuyến tính khác, khiến tăng thêm số lớp ẩn cho mạng thân kinh nhân tạo không giúp tăng thêm bất kỳ sự hiệu quả nào. Hàm kích hoạt phi tuyến được chèn vào sau mỗi lớp để phá vỡ điều này, cho phép mạng tính được xấp xỉ các hàm tùy ý và học được những mối quan hệ không tuyến tính trong dữ liệu thực tế.

Tính khả vi (differentiability) là điều kiện cần để thuật toán lan truyền ngược (backpropagation) hoạt động được. Lan truyền ngược điều chỉnh trọng số của mạng bằng cách tính đạo hàm của hàm mất mát theo từng tham số, và quá trình này đòi hỏi đạo hàm của hàm kích hoạt phải xác định. Tuy nhiên, điều kiện này trong thực tế không cần phải tuyệt đối: ReLU không khả vi tại điểm 0, nhưng vẫn hoạt động tốt vì xác suất để tổng đầu vào rơi đúng vào điểm 0 là rất nhỏ, và người ta thường quy ước đạo hàm tại điểm này bằng 0.

Ngoài hai đặc tính trên, một đặc tính thực tiễn cũng đáng chú ý là tính bão hòa (saturation). Một hàm được gọi là bão hòa khi đầu ra của nó không còn thay đổi đáng kể dù đầu vào tiếp tục tăng hoặc giảm. Sigmoid và tanh đều có tính chất này ở hai đầu miền giá trị. Khi một neuron bão hòa, đạo hàm của hàm kích hoạt tại đó tiến về gần 0, khiến tín hiệu gradient gần như biến mất khi lan truyền ngược qua nhiều lớp. Đây là hiện tượng được gọi là vanishing gradient, và chính nó là nguyên nhân cho sự ra đời của ReLU, một hàm không bão hòa.

Lịch sử 

Ý tưởng cho hàm kích hoạt lấy cảm hứng từ khoa học thần kinh. Một neuron thần kinh sinh học hoạt động theo cơ chế "được ăn cả ngã về không", tức là khi tổng tín hiệu đầu vào từ các điểm tiếp hợp thần kinh (synap) vượt qua một ngưỡng nhất định, neuron sẽ phát xung điện và truyền tín hiệu sang các neuron lân cận; nếu không đạt đến ngưỡng này thì không có gì được truyền đi. Năm 1943, nhà thần kinh học Warren McCulloch và nhà toán học Walter Pitts giải thích cơ chế này thành một mô hình toán học cho mạng thân kinh nhân tạo: mỗi neuron nhận tổng có trọng số của các đầu vào, rồi áp một hàm bậc thang để quyết định đầu ra là 0 hoặc 1. Đây chính là hàm kích hoạt đầu tiên trong lịch sử. Nó phi tuyến do không phải một đường thẳng, song không thể được sử dụng trong các phương pháp tối ưu hóa của học máy vì thiếu tính khả vi.

Bước ngoặt lớn đến vào năm 1986, khi Rumelhart, Hinton và Williams công bố thuật toán lan truyền ngược. Thuật toán này đòi hỏi hàm kích hoạt phải khả vi để có thể tính đạo hàm và truyền ngược sai số qua các lớp thần kinh nhân tạo. Cộng đồng nghiên cứu vì vậy chuyển sang dùng hàm sigmoid (cụ thể là hàm logistic), một hàm khả vi với đầu ra nằm trong khoảng . Sau đó, hàm tanh (hyperbolic tangent) nổi lên như một lựa chọn phổ biến hơn vì đầu ra của nó nằm trong khoảng  và có tính đối xứng quanh 0, giúp quá trình huấn luyện ổn định hơn. Yann LeCun đã dùng tanh trong bài báo nhận dạng chữ số viết tay năm 1989, nền tảng của bộ dữ liệu MNIST. Mặc dù vậy, hàm sigmoid vẫn được dùng cho lớp cuối cùng để thể hiện xác suất của từng dự đoán trong khoảng .

Tuy nhiên, cả sigmoid lẫn tanh đều bị giới hạn bởi tính bão hòa: ở hai đầu miền giá trị, đạo hàm của chúng tiến về gần 0, khiến gradient biến mất khi lan truyền ngược qua nhiều lớp. Vấn đề này được Hochreiter mô tả vào năm 1991 và được phân tích cặn kẽ bời Giáo sư Yoshua Bengio cùng cộng sự ba năm sau đó. Đây là rào cản chính khiến các mạng sâu không thể huấn luyện hiệu quả trong suốt thập niên 1990 vì không thể cải thiện mô hình chỉ thông qua tăng thêm số lớp ẩn.

Năm 2000, Hahnloser và cộng sự giới thiệu hàm ReLU (Rectified Linear Unit) vào mạng thần kinh hồi quy, lập luận rằng hàm này phản ánh chính xác hơn mối quan hệ sinh học giữa cường độ kích thích và tốc độ phát xung của neuron. Nguyên nhân là bởi tín hiệu mà neuron chuyển đi có bị ảnh hưởng bởi tổng đầu vào, chứ không hề bị "kẹt" trong một khoảng cố định như hàm sigmoid hay tanh. Tuy nhiên phải đến năm 2011, Glorot, Bordes và Bengio mới chứng minh một cách hệ thống rằng mạng sâu huấn luyện với ReLU đạt hiệu suất ngang hoặc vượt trội so với sigmoid và tanh mà không cần giai đoạn huấn luyện không giám sát ban đầu. Thành công của AlexNet một năm sau đó tại cuộc thi ImageNet khi sử dụng ReLU xuyên suốt đã chứng minh họ đúng, chính thức đưa ReLU trở thành lựa chọn mặc định cho hầu hết các kiến trúc học sâu.

Sự thống trị của ReLU cũng kéo theo những vấn đề mới. Hiện tượng "ReLU chết"  (dying ReLU) xảy ra khi các neuron bị kẹt ở trạng thái luôn cho đầu ra bằng 0 và không còn được cập nhật nữa, vì gradient tại nửa âm của ReLU là 0 khiến kết quả truyền ngược lại cũng là 0. Để khắc phục, Maas và cộng sự đề xuất Leaky ReLU năm 2013, cho phép một độ dốc nhỏ ở vùng âm thay vì cố định về 0. Tiếp theo đó, ELU (Exponential Linear Unit) năm 2015 giới thiệu một hàm mượt hơn ở vùng âm với giá trị trung bình kích hoạt gần 0, giúp tăng tốc huấn luyện.

Năm 2016, Hendrycks và Gimpel đề xuất GELU (Gaussian Error Linear Unit) dựa theo lập luận xác suất: thay vì cắt cứng đầu vào âm như ReLU, GELU đánh trọng số mỗi đầu vào theo xác suất để nó dương dưới phân phối Gauss. Cùng năm, Gated Linear Unit (GLU) được đề xuất bởi Yann N. Dauphin và cộng sự. Thay vì sử dụng một hàm kích hoạt đơn, GLU giới thiệu cơ chế “cổng” (gate) để điều khiển luồng thông tin: đầu vào được tách thành hai nhánh tuyến tính, trong đó một nhánh được đưa qua hàm sigmoid để tạo trọng số, rồi nhân phần tử với nhánh còn lại theo công thức . Cấu trúc này cho phép mô hình học cách chọn lọc thông tin cần giữ lại hoặc loại bỏ, tương tự cơ chế trong LSTM nhưng đơn giản hơn về mặt tính toán. Một nhóm tại Google Brain đi theo hướng hoàn toàn khác: thay vì tự thiết kế, họ dùng tìm kiếm tự động trên một không gian lớn các hàm ứng viên và tìm ra hàm Swish với công thức .

Các phát kiến này hiện đang là hàm kích hoạt mặc định trong hầu hết các mô hình ngôn ngữ lớn dựa trên kiến trúc Transformer. GELU được dùng trong BERT và dòng GPT từ 1 đến 3 của OpenAI; còn hàm kích hoạt SwiGLU kết hợp GLU và Swish được sử dụng rộng rãi trong các mô hình như LLaMA và Mistral.

Các hàm kích hoạt phổ biến 
Bảng dưới đây so sánh một số hàm kích hoạt một biến :

Tham khảo 

Học máy
Trí tuệ nhân tạo
Khoa học máy tính
Mạng thần kinh nhân tạo