Khác biệt giữa bản sửa đổi của “Thành viên:Qesefe/nháp”
nháp activation function | Không có tóm lược sửa đổi | ||
| Dòng 2: | Dòng 2: | ||
'''Hàm kích hoạt''' (tiếng Anh: ''Activation function'') là một hàm [[Hệ thống phi tuyến|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.<ref name=":0">{{Chú thích sách |last=Goodfellow |first=Ian |title=Deep learning |last2=Bengio |first2=Yoshua |last3=Courville |first3=Aaron |date=2016 |publisher=The MIT press |isbn=978-0-262-03561-3 |series=Adaptive computation and machine learning |location=Cambridge, Mass}}</ref> | '''Hàm kích hoạt''' (tiếng Anh: ''Activation function'') là một hàm [[Hệ thống phi tuyến|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.<ref name=":0">{{Chú thích sách |last=Goodfellow |first=Ian |title=Deep learning |last2=Bengio |first2=Yoshua |last3=Courville |first3=Aaron |date=2016 |publisher=The MIT press |isbn=978-0-262-03561-3 |series=Adaptive computation and machine learning |location=Cambridge, Mass}}</ref> | ||
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 | 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 dạng tiếng nói|nhận diện giọng nói]],<ref>{{Chú thích tạp chí |last=Hinton |first=Geoffrey |last2=Deng |first2=Li |last3=Yu |first3=Dong |last4=Dahl |first4=George |last5=Mohamed |first5=Abdel-rahman |last6=Jaitly |first6=Navdeep |last7=Senior |first7=Andrew |last8=Vanhoucke |first8=Vincent |last9=Nguyen |first9=Patrick |date=2012-11 |title=Deep Neural Networks for Acoustic Modeling in Speech Recognition: The Shared Views of Four Research Groups |url=http://ieeexplore.ieee.org/document/6296526/ |magazine=IEEE Signal Processing Magazine |pages=82–97 |volume=29 |issue=6 |doi=10.1109/MSP.2012.2205597 |issn=1053-5888}}</ref> hàm [[ReLU]] cho mô hình [[thị giác máy tính]] [[AlexNet]],<ref name=":1">{{Chú thích tạp chí |last=Krizhevsky |first=Alex |last2=Sutskever |first2=Ilya |last3=Hinton |first3=Geoffrey E. |date=2017-05-24 |title=ImageNet classification with deep convolutional neural networks |url=https://dl.acm.org/doi/10.1145/3065386 |magazine=Communications of the ACM |pages=84–90 |language=en |volume=60 |issue=6 |doi=10.1145/3065386 |issn=0001-0782}}</ref> 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 (mô hình học máy)|Transformer]] như [[BERT (mô hình ngôn ngữ)|BERT]].<ref name=":2">Hendrycks, D., & Gimpel, K. (2016). Gaussian error linear units (gelus). ''arXiv preprint arXiv:1606.08415''.</ref> | ||
== Đặc tính == | == Đặ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. | 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ập tin:XOR linearly inseparable.svg|thế=Bài toán XOR trong học máy. Không thể vẽ một đường thẳng tuyến tính duy nhất chia tách hai nhóm dữ liệu trong hàm XOR với nhau.|nhỏ|Bài toán [[Tuyển loại|XOR]] trong [[học máy]]. Không thể vẽ một đường thẳng tuyến tính duy nhất chia tách hai nhóm dữ liệu trong hàm XOR với nhau.]] | |||
'''[[Hệ thống phi tuyến|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.<ref name=":0" /> 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ệ [[Hệ thống phi tuyến|không tuyến tính]] trong dữ liệu thực tế. | '''[[Hệ thống phi tuyến|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.<ref name=":0" /> 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ệ [[Hệ thống phi tuyến|không tuyến tính]] trong dữ liệu thực tế. | ||
'''[[Hàm số khả vi|Tính khả vi]] (differentiability)''' là điều kiện cần để thuật toán [[Truyền ngược|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.<ref name=":0" /> 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. | '''[[Hàm số khả vi|Tính khả vi]] (differentiability)''' là điều kiện cần để thuật toán [[Truyền ngược|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.<ref name=":0" /> 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à [[Hàm hyperbol|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.<ref>Hochreiter, S. (1991). Untersuchungen zu dynamischen neuronalen Netzen. ''Diploma, Technische Universität München'', ''91''(1), 31.</ref><ref>{{Chú thích tạp chí |last=Bengio |first=Y. |last2=Simard |first2=P. |last3=Frasconi |first3=P. |date=1994-03 |title=Learning long-term dependencies with gradient descent is difficult |url=https://ieeexplore.ieee.org/document/279181/;jsessionid=400214C9A8B82113E93DDCB99A1923C0 |magazine=IEEE Transactions on Neural Networks |pages=157–166 |volume=5 |issue=2 |doi=10.1109/72.279181 |issn=1941-0093}}</ref> Đây là hiện tượng được gọi là vanishing gradient, và chính nó là nguyên nhân | 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à [[Hàm hyperbol|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.<ref name=":3">Hochreiter, S. (1991). Untersuchungen zu dynamischen neuronalen Netzen. ''Diploma, Technische Universität München'', ''91''(1), 31.</ref><ref name=":4">{{Chú thích tạp chí |last=Bengio |first=Y. |last2=Simard |first2=P. |last3=Frasconi |first3=P. |date=1994-03 |title=Learning long-term dependencies with gradient descent is difficult |url=https://ieeexplore.ieee.org/document/279181/;jsessionid=400214C9A8B82113E93DDCB99A1923C0 |magazine=IEEE Transactions on Neural Networks |pages=157–166 |volume=5 |issue=2 |doi=10.1109/72.279181 |issn=1941-0093}}</ref> Đâ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ập tin:Dirac distribution CDF.svg|thế=Hàm bước Heaviside cho kết quả bằng 0 với đầu vào âm và 1 với đầu vào dương|nhỏ|[[Hàm bước Heaviside]] cho kết quả bằng 0 với đầu vào âm và 1 với đầu vào dương]] | |||
Ý 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|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 [[Synap|điểm tiếp hợp thần kinh]] (synap) vượt qua một ngưỡng nhất định, neuron sẽ phát [[Điện thế hoạt động|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.<ref>{{Chú thích sách |last=Seifter |first=Julian |title=Concepts in medical physiology |last2=Ratner |first2=Austin |last3=Sloane |first3=David |date=2005 |publisher=Lippincott Williams & Wilkins |isbn=978-0-7817-4489-8 |location=Philadelphia, Pa.}}</ref> 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|hàm]] [[Hàm bước|bậc thang]] để quyết định đầu ra là 0 hoặc 1.<ref>{{Chú thích tạp chí |last=McCulloch |first=Warren S. |last2=Pitts |first2=Walter |date=1943-12 |title=A logical calculus of the ideas immanent in nervous activity |url=http://link.springer.com/10.1007/BF02478259 |magazine=The Bulletin of Mathematical Biophysics |pages=115–133 |language=en |volume=5 |issue=4 |doi=10.1007/BF02478259 |issn=0007-4985}}</ref> Đâ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, [[Geoffrey Hinton|Hinton]] và Williams công bố thuật toán [[Truyền ngược|lan truyền ngược]].<ref>{{Chú thích tạp chí |last=Rumelhart |first=David E. |last2=Hinton |first2=Geoffrey E. |last3=Williams |first3=Ronald J. |date=1986-10 |title=Learning representations by back-propagating errors |url=https://www.nature.com/articles/323533a0 |magazine=Nature |pages=533–536 |language=en |volume=323 |issue=6088 |doi=10.1038/323533a0 |issn=0028-0836}}</ref> 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 <math>(0,1)</math>. 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 <math>(-1,1)</math> 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 [[Cơ sở dữ liệu MNIST|MNIST]].<ref>{{Chú thích tạp chí |last=LeCun |first=Y. |last2=Boser |first2=B. |last3=Denker |first3=J. S. |last4=Henderson |first4=D. |last5=Howard |first5=R. E. |last6=Hubbard |first6=W. |last7=Jackel |first7=L. D. |date=1989-12 |title=Backpropagation Applied to Handwritten Zip Code Recognition |url=https://direct.mit.edu/neco/article/1/4/541-551/5515 |magazine=Neural Computation |pages=541–551 |language=en |volume=1 |issue=4 |doi=10.1162/neco.1989.1.4.541 |issn=0899-7667}}</ref><ref>{{Chú thích tạp chí |last=Lecun |first=Y. |last2=Bottou |first2=L. |last3=Bengio |first3=Y. |last4=Haffner |first4=P. |date=November 1998 |title=Gradient-based learning applied to document recognition |url=http://ieeexplore.ieee.org/document/726791/ |magazine=Proceedings of the IEEE |pages=2278–2324 |volume=86 |issue=11 |doi=10.1109/5.726791}}</ref> 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 <math>(0,1)</math>. | |||
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 đó.<ref name=":3" /><ref name=":4" /> Đây là rào cản chính khiến các [[Học sâu|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.<ref>{{Chú thích tạp chí |last=Hahnloser |first=Richard H. R. |last2=Sarpeshkar |first2=Rahul |last3=Mahowald |first3=Misha A. |last4=Douglas |first4=Rodney J. |last5=Seung |first5=H. Sebastian |date=2000-06 |title=Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit |url=https://www.nature.com/articles/35016072 |magazine=Nature |pages=947–951 |language=en |volume=405 |issue=6789 |doi=10.1038/35016072 |issn=1476-4687}}</ref> 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 [[Học không có giám sát|huấn luyện không giám sát]] ban đầu.<ref>{{Chú thích tạp chí |last=Glorot |first=Xavier |last2=Bordes |first2=Antoine |last3=Bengio |first3=Yoshua |date=2011-06-14 |title=Deep Sparse Rectifier Neural Networks |url=https://proceedings.mlr.press/v15/glorot11a.html |magazine=Proceedings of the Fourteenth International Conference on Artificial Intelligence and Statistics |publisher=JMLR Workshop and Conference Proceedings |pages=315–323 |language=en}}</ref> 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,<ref name=":1" /> 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.<ref>Maas, A. L., Hannun, A. Y., & Ng, A. Y. (2013, June). Rectifier nonlinearities improve neural network acoustic models. In ''Proc. icml'' (Vol. 30, No. 1, p. 3).</ref> 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.<ref>Clevert, D. A., Unterthiner, T., & Hochreiter, S. (2015). Fast and accurate deep network learning by exponential linear units (elus). ''arXiv preprint arXiv:1511.07289'', ''4''(5), 11.</ref> | |||
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 chuẩn|phân phối Gauss]].<ref name=":2" /> Cùng năm, Gated Linear Unit (GLU) được đề xuất bởi Yann N. Dauphin và cộng sự.<ref>{{Chú thích tạp chí |last=Dauphin |first=Yann N. |last2=Fan |first2=Angela |last3=Auli |first3=Michael |last4=Grangier |first4=David |date=2017-07-17 |title=Language Modeling with Gated Convolutional Networks |url=https://proceedings.mlr.press/v70/dauphin17a.html |magazine=Proceedings of the 34th International Conference on Machine Learning |publisher=PMLR |pages=933–941 |language=en}}</ref> 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 [[Tuyển loại|nhân phần tử]] với nhánh còn lại với công thức <math>GLU(x) = (x \times W + b) \otimes \sigma (x \times V +c)</math>. 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 [[Bộ nhớ dài-ngắn hạn|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 <math>f(x) = x \times sigmoid( \beta x)</math>.<ref>Ramachandran, P., Zoph, B., & Le, Q. V. (2017). Searching for activation functions. ''arXiv preprint arXiv:1710.05941''.</ref> | |||
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<ref name=":2" /> và dòng GPT từ 1 đến 3 của OpenAI;<ref>Radford, A., Narasimhan, K., Salimans, T., & Sutskever, I. (2018). Improving language understanding by generative pre-training.</ref> còn hàm kích hoạt SwiGLU kết hợp GLU và Swish<ref>Shazeer, N. (2020). Glu variants improve transformer. ''arXiv preprint arXiv:2002.05202''.</ref> được sử dụng rộng rãi trong các mô hình như [[LLaMA]]<ref>Touvron, H., Lavril, T., Izacard, G., Martinet, X., Lachaux, M. A., Lacroix, T., ... & Lample, G. (2023). Llama: Open and efficient foundation language models. ''arXiv preprint arXiv:2302.13971''.</ref> và [[Mistral AI|Mistral]].<ref>Smith, B. (2024, November 26). ''Mistral 7B explained: Towards more efficient language models''. TDS Archive. Medium. https://medium.com/data-science/mistral-7b-explained-towards-more-efficient-language-models-7f9c6e6b7251</ref> | |||
== Tham khảo == | |||
Phiên bản lúc 06:07, ngày 7 tháng 4 năm 2026
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.[1]
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,[2] hàm ReLU cho mô hình thị giác máy tính AlexNet,[3] 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.[4]
Đặ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.[1] 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.[1] 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.[5][6] Đâ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.[7] 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.[8] Đâ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.[9] 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.[10][11] 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 đó.[5][6] Đâ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.[12] 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.[13] 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,[3] 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.[14] 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.[15]
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.[4] Cùng năm, Gated Linear Unit (GLU) được đề xuất bởi Yann N. Dauphin và cộng sự.[16] 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 với 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 .[17]
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[4] và dòng GPT từ 1 đến 3 của OpenAI;[18] còn hàm kích hoạt SwiGLU kết hợp GLU và Swish[19] được sử dụng rộng rãi trong các mô hình như LLaMA[20] và Mistral.[21]
Tham khảo
- ^ a b c Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). Deep learning. Adaptive computation and machine learning. Cambridge, Mass: The MIT press. ISBN 978-0-262-03561-3.
- ^ Hinton, Geoffrey; Deng, Li; Yu, Dong; Dahl, George; Mohamed, Abdel-rahman; Jaitly, Navdeep; Senior, Andrew; Vanhoucke, Vincent; Nguyen, Patrick (tháng 11 năm 2012). "Deep Neural Networks for Acoustic Modeling in Speech Recognition: The Shared Views of Four Research Groups". IEEE Signal Processing Magazine. Quyển 29 số 6. tr. 82–97. doi:10.1109/MSP.2012.2205597. ISSN 1053-5888.
- ^ a b Krizhevsky, Alex; Sutskever, Ilya; Hinton, Geoffrey E. (ngày 24 tháng 5 năm 2017). "ImageNet classification with deep convolutional neural networks". Communications of the ACM (bằng tiếng Anh). Quyển 60 số 6. tr. 84–90. doi:10.1145/3065386. ISSN 0001-0782.
- ^ a b c Hendrycks, D., & Gimpel, K. (2016). Gaussian error linear units (gelus). arXiv preprint arXiv:1606.08415.
- ^ a b Hochreiter, S. (1991). Untersuchungen zu dynamischen neuronalen Netzen. Diploma, Technische Universität München, 91(1), 31.
- ^ a b Bengio, Y.; Simard, P.; Frasconi, P. (tháng 3 năm 1994). "Learning long-term dependencies with gradient descent is difficult". IEEE Transactions on Neural Networks. Quyển 5 số 2. tr. 157–166. doi:10.1109/72.279181. ISSN 1941-0093.
- ^ Seifter, Julian; Ratner, Austin; Sloane, David (2005). Concepts in medical physiology. Philadelphia, Pa.: Lippincott Williams & Wilkins. ISBN 978-0-7817-4489-8.
- ^ McCulloch, Warren S.; Pitts, Walter (tháng 12 năm 1943). "A logical calculus of the ideas immanent in nervous activity". The Bulletin of Mathematical Biophysics (bằng tiếng Anh). Quyển 5 số 4. tr. 115–133. doi:10.1007/BF02478259. ISSN 0007-4985.
- ^ Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (tháng 10 năm 1986). "Learning representations by back-propagating errors". Nature (bằng tiếng Anh). Quyển 323 số 6088. tr. 533–536. doi:10.1038/323533a0. ISSN 0028-0836.
- ^ LeCun, Y.; Boser, B.; Denker, J. S.; Henderson, D.; Howard, R. E.; Hubbard, W.; Jackel, L. D. (tháng 12 năm 1989). "Backpropagation Applied to Handwritten Zip Code Recognition". Neural Computation (bằng tiếng Anh). Quyển 1 số 4. tr. 541–551. doi:10.1162/neco.1989.1.4.541. ISSN 0899-7667.
- ^ Lecun, Y.; Bottou, L.; Bengio, Y.; Haffner, P. (tháng 11 năm 1998). "Gradient-based learning applied to document recognition". Proceedings of the IEEE. Quyển 86 số 11. tr. 2278–2324. doi:10.1109/5.726791.
- ^ Hahnloser, Richard H. R.; Sarpeshkar, Rahul; Mahowald, Misha A.; Douglas, Rodney J.; Seung, H. Sebastian (tháng 6 năm 2000). "Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit". Nature (bằng tiếng Anh). Quyển 405 số 6789. tr. 947–951. doi:10.1038/35016072. ISSN 1476-4687.
- ^ Glorot, Xavier; Bordes, Antoine; Bengio, Yoshua (ngày 14 tháng 6 năm 2011). "Deep Sparse Rectifier Neural Networks". Proceedings of the Fourteenth International Conference on Artificial Intelligence and Statistics (bằng tiếng Anh). JMLR Workshop and Conference Proceedings. tr. 315–323.
- ^ Maas, A. L., Hannun, A. Y., & Ng, A. Y. (2013, June). Rectifier nonlinearities improve neural network acoustic models. In Proc. icml (Vol. 30, No. 1, p. 3).
- ^ Clevert, D. A., Unterthiner, T., & Hochreiter, S. (2015). Fast and accurate deep network learning by exponential linear units (elus). arXiv preprint arXiv:1511.07289, 4(5), 11.
- ^ Dauphin, Yann N.; Fan, Angela; Auli, Michael; Grangier, David (ngày 17 tháng 7 năm 2017). "Language Modeling with Gated Convolutional Networks". Proceedings of the 34th International Conference on Machine Learning (bằng tiếng Anh). PMLR. tr. 933–941.
- ^ Ramachandran, P., Zoph, B., & Le, Q. V. (2017). Searching for activation functions. arXiv preprint arXiv:1710.05941.
- ^ Radford, A., Narasimhan, K., Salimans, T., & Sutskever, I. (2018). Improving language understanding by generative pre-training.
- ^ Shazeer, N. (2020). Glu variants improve transformer. arXiv preprint arXiv:2002.05202.
- ^ Touvron, H., Lavril, T., Izacard, G., Martinet, X., Lachaux, M. A., Lacroix, T., ... & Lample, G. (2023). Llama: Open and efficient foundation language models. arXiv preprint arXiv:2302.13971.
- ^ Smith, B. (2024, November 26). Mistral 7B explained: Towards more efficient language models. TDS Archive. Medium. https://medium.com/data-science/mistral-7b-explained-towards-more-efficient-language-models-7f9c6e6b7251