Vấn đề gradient biến mất

Trong học máy, vấn đề gradient biến mất (tiếng Anh: vanishing gradient problem) và vấn đề gradient bùng nổ (exploding gradient problem) là hai hiện tượng xảy ra khi huấn luyện mạng neuron nhân tạo bằng thuật toán lan truyền ngược. Trong quá trình này, gradient của hàm mất mát được tính ngược từ lớp đầu ra về lớp đầu vào thông qua quy tắc dây chuyền, tức là gradient của mỗi lớp bằng tích của gradient các lớp phía sau nó. Nếu các giá trị này nhỏ hơn 1, tích của chúng giảm theo cấp số nhân khi số lớp tăng lên. Ví dụ, với các giá trị gradient  qua vài chục lớp sẽ tiệm cận về 0, khiến các lớp đầu gần như không được cập nhật trong quá trình huấn luyện. Ngược lại, nếu các giá trị này lớn hơn 1, tích của chúng tăng theo cấp số nhân, gây ra hiện tượng gradient bùng nổ. Cả hai hiện tượng đều làm chậm hoặc phá vỡ quá trình huấn luyện.

Lịch sử 

Vấn đề gradient biến mất được Sepp Hochreiter phát hiện và phân tích lần đầu trong luận văn tốt nghiệp của ông vào năm 1991, trong đó ông chỉ ra rằng các mạng neuron hồi quy huấn luyện bằng lan truyền ngược gặp khó khăn trong việc học các phụ thuộc dài hạn do gradient suy giảm theo cấp số nhân qua nhiều bước thời gian. Bengio và cộng sự năm 1994 tiếp tục phân tích vấn đề này một cách hệ thống hơn, chứng minh rằng học các phụ thuộc dài hạn bằng thuật toán suy giảm độc dốc về cơ bản là khó khăn. Pascanu và cộng sự năm 2012 mở rộng phân tích này, đưa ra điều kiện cụ thể để xác định khi nào gradient biến mất hoặc bùng nổ xảy ra trong mạng hồi quy.

Trong giai đoạn này, vấn đề gradient biến mất chủ yếu được nghiên cứu trong bối cảnh mạng hồi quy. Đến cuộc thi ImageNet 2014, VGGNet của Simonyan và Zisserman cho thấy rằng đơn giản chỉ cần tăng số lớp tích chập lên đến 16 hoặc 19 lớp đã cải thiện đáng kể độ chính xác so với các kiến trúc trước đó. Điều này thúc đẩy xu hướng xây dựng các mạng ngày càng sâu hơn. Tuy nhiên, He và cộng sự năm 2015 quan sát thấy rằng khi tiếp tục tăng số lớp lên 56, sai số huấn luyện lại cao hơn so với mạng chỉ có 20 lớp — cho thấy vấn đề không đơn thuần là quá khớp mà là bản thân quá trình tối ưu hóa bị phá vỡ bởi gradient biến mất tuơng tự như trong mạng hồi quy.

Cơ chế 

Trong quá trình huấn luyện mạng neuron bằng lan truyền ngược, gradient của hàm mất mát được tính từ lớp đầu ra ngược về lớp đầu vào. Theo quy tắc chuỗi trong tích phân, gradient tại lớp thứ  tính từ đầu ra bằng tích của gradient tất cả các lớp nằm giữa nó và đầu ra:

Nếu các thừa số trong tích này đều nhỏ hơn 1 (thường xảy ra với hàm kích hoạt sigmoid có đạo hàm nằm trong khoảng  hay tanh có đạo hàm trong khoảng ) thì tích của chúng giảm theo cấp số nhân khi mạng có nhiều lớp. Ví dụ, với một mạng 10 lớp mà mỗi lớp có đạo hàm là , gradient tại lớp đầu tiên sẽ chỉ còn  so với gradient tại lớp cuối. Với mạng 50 lớp, con số này giảm xuống còn . Hệ quả là các lớp đầu gần như không được cập nhật, khiến mạng không thể học được các đặc trưng ở mức thấp. Ngược lại, nếu các thừa số lớn hơn 1, tích của chúng tăng theo cấp số nhân, gây ra gradient bùng nổ.

Trong mạng hồi quy 
Khi huấn luyện RNN bằng lan truyền ngược theo thời gian (backpropagation through time, BPTT), mạng được triển khai thành một mạng truyền thẳng với một lớp cho mỗi bước thời gian của chuỗi đầu vào. Tại mỗi bước thời gian, trạng thái ẩn của mạng được tính bằng cách nhân trạng thái ẩn trước đó với ma trận trọng số hồi quy . Ma trận này mã hóa cách thông tin được truyền từ bước thời gian này sang bước tiếp theo và được sử dụng ở mọi bước. Với một chuỗi dài  bước, gradient phải lan truyền qua  lớp, và tích lặp của  sẽ quyết định chiều hướng của gradient:

Nếu giá trị tuyệt đối lớn nhất trong số các giá trị riêng (eigenvalue) của ma trận  nhỏ hơn 1, tích này tiệm cận về 0 khi chuỗi dài, tức là gradient biến mất. Nếu giá trị này lớn hơn 1, tích này tăng không giới hạn, tức là gradient bùng nổ. Hệ quả thực tế là RNN chỉ có thể học được các phụ thuộc ngắn hạn trong chuỗi, trong khi thông tin từ các bước thời gian xa hơn bị mất đi trong quá trình huấn luyện.

Giải pháp

Thay đổi kiến trúc 
Đối với mạng hồi quy, giải pháp trực tiếp nhất là thay thế RNN thông thường bằng mạng bộ nhớ dài-ngắn hạn (long short-term memory, LSTM) do Hochreiter và Schmidhuber đề xuất năm 1997. LSTM bổ sung các cổng kiểm soát luồng thông tin qua các cổng quên, cổng đầu vào, và cổng đầu ra; cho phép mạng duy trì gradient ổn định qua nhiều bước thời gian thay vì nhân đi nhân lại cùng một ma trận trọng số.
Đối với mạng truyền thẳng sâu, kết nối tắt (residual connection) do He và cộng sự đề xuất là giải pháp phổ biến nhất. Thay vì chỉ học ánh xạ , mỗi khối mạng học phần dư , trong đó số hạng  được truyền thẳng qua mà không qua phép biến đổi nào. Trong lan truyền ngược, gradient có thể chảy trực tiếp qua các kết nối tắt này mà không bị nhân lặp, giúp tránh được hiện tượng biến mất.

Thay đổi hàm kích hoạt 

Việc thay thế sigmoid hay tanh bằng hàm ReLU (rectified linear unit) giúp giảm đáng kể vấn đề gradient biến mất. Không giống sigmoid và tanh vốn bão hòa ở cả hai phía và có đạo hàm nhỏ hơn 1 ở mọi nơi, ReLU có đạo hàm bằng 1 với mọi đầu vào dương, do đó không làm suy giảm gradient khi lan truyền ngược qua các lớp đang hoạt động.

Kỹ thuật huấn luyện 

Đối với gradient bùng nổ, Pascanu và cộng sự đề xuất kỹ thuật hạn chế gradient (gradient clipping): nếu độ lớn của vector gradient  vượt quá ngưỡng , vector gradient được chia tỉ lệ về độ lớn  trong khi giữ nguyên hướng. Kỹ thuật này đơn giản nhưng hiệu quả và trở thành tiêu chuẩn trong huấn luyện RNN.

Chuẩn hóa theo lô (batch normalization) là kỹ thuật chuẩn hóa đầu ra của mỗi lớp về phân phối chuẩn tắc trước khi truyền sang lớp tiếp theo, giúp ổn định độ lớn của gradient trong suốt quá trình huấn luyện và giảm thiểu cả hai vấn đề gradient biến mất lẫn bùng nổ.

Khởi tạo trọng số (weight initialization) một cách hợp lý cũng giúp giảm thiểu vấn đề ngay từ đầu quá trình huấn luyện. Nếu trọng số được khởi tạo quá lớn hoặc quá nhỏ, gradient sẽ bùng nổ hoặc biến mất ngay từ các vòng lặp đầu tiên trước khi mạng có cơ hội học được gì.

Tham khảo

Khoa học máy tính
Trí tuệ nhân tạo
Học máy
Học sâu