Chương I. CƠ SỞ LÝ THUYẾT
1.1.3. Lĩnh vực học sâu
1.1.3.2. Mạng Nơ ron truyền thẳng cho việc học sâu
Một mạng Nơ ron thực sự chỉ là một thành phần của perceptron, được kết nối trong các cách khác nhau và hoạt động trên các hàm kích hoạt khác nhau.
Hình 1.7: Mạng truyền thẳng
Khi mới bắt đầu, ta sẽ xem xét các mạng Nơ ron truyền thẳng có các thuộc tính sau:
- Một đầu vào, một đầu ra, một hoặc nhiều lớp ẩn. Hình 1.7 cho thấy một mạng với một lớp đầu vào có 3 khối (unit), lớp ẩn có 4 khối và một lớp đầu ra có 2 khối.
- Mỗi khối là một pereptron đơn lẻ như đã mô tả ở trên.
- Các khối của lớp đầu vào cung cấp đầu vào cho các khối lớp ẩn, trong khi các khối của lớp ẩn là đầu vào của khối lớp đầu ra.
- Mỗi kết nối giữa hai Nơ ron có một trọng số w (tương tự các trọng số perceptron).
- Mỗi khối của lớp t thường được kết nối đến tất cả các lớp t-1 trước đó (mặc dù vậy ta có thể ngắt kết nối chúng bằng cách đặt trọng số của chúng là 0).
- Để xử lý dữ liệu đầu vào, ta “xếp” (clamp) vector đầu vào tới lớp đầu vào, thiết lập các giá trị của các vector như là “đầu ra” cho mỗi khối đầu vào. Trong trường hợp này mạng có thể xử lý một vector đầu vào 3 chiều (vì có 3 khối đầu vào). Ví dụ,
13
nếu vector đầu vào là [7, 1, 2], ta sẽ thiết lập đầu ra của đầu vào lần lượt là 7 (đỉnh), 1 ở giữa và 2 ở cuối. Các giá trị này sau đó được truyền tiếp tới các khối ẩn sử dụng hàm truyền tổng trọng số cho mỗi khối ẩn, từ đó tính toán đầu ra (hàm kích hoạt).
- Lớp ra tính toán kết quả đầu ra tương tự như lớp ẩn. Kết quả của lớp đầu ra là đầu ra của mạng.
* Tuyến tính ngoài (Beyond Linearity)
Điều gì sẽ xảy ra nếu mỗi perceptron chỉ được phép sử dụng một hàm kích hoạt tuyến tính? Sau đó, đầu ra cuối cùng của mạng vẫn sẽ có một số hàm tuyến tính của đầu vào. Nói cách khác, một thành phần tuyến tính của một loạt các hàm tuyến tính. Nếu ta bị giới hạn các hàm kích hoạt tuyến tính, mạng Nơ ron truyền thẳng sẽ không hiệu quả hơn perceptron, dù nó có bao nhiêu lớp.
“Một thành phần tuyến tính của một loạt các hàm tuyến tính chỉ là một hàm tuyến tính, vì vậy hầu hết các mạng Nơ ron sử dụng hàm kích hoạt phi tuyến”.
Chính vì điều này, hầu hết các mạng Nơ ron sử dụng các hàm kích hoạt phi tuyến như logistic, tanh, binary hay rectifier. Nếu không có chúng mạng chỉ có các hàm học là sự kết hợp tuyến tính của các đầu vào.
* Huấn luyện Perceptron
Hầu hết các thuật toán học sâu phổ biến cho học có giám sát của perceptron đa lớp được biết đến là giải thuật lan truyền ngược. Các thủ tục cơ bản:
1. Một mẫu huấn luyện được biểu diễn và được lan truyền thẳng trên toàn mạng.
2. Lỗi đầu ra được tớnh toỏn thường là trung bỡnh bỡnh phương lỗi: E = ẵ (t - y)2 3. Ở đây t là giá trị mong muốn đạt được và y là đầu ra thực của mạng.
4. Lỗi mạng được cực tiểu hóa sử dụng một phương pháp được gọi là stochastic gradient descent.
14
Hình 1.8: Đồ thị lỗi huấn luyện
Giảm Gradient là phổ biến nhưng trong trường hợp của mạng nơ-ron, đây sẽ là đồ thị của lỗi huấn luyện như một hàm của các tham số đầu vào. Tối ưu hóa giá trị của mỗi trọng số làm cho lỗi đạt tối thiểu toàn cục (global minimum). Trong giai đoạn huấn luyện, trọng số được cập nhật trong các bước nhỏ (sau mỗi mẫu huấn luyện hoặc một đợt nhỏ của vài mẫu) trong cách mà chúng luôn cố gắng đạt được tối thiểu toàn cục nhưng nó là một nhiệm vụ không dễ dàng, như ta thường kết thúc ở cực tiểu cục bộ, như một bên phải. Ví dụ, nếu trọng số có giá trị là 0.6, nó cần phải được thay đổi đến 0.4.
Hình 1.8 thể hiện trường hợp đơn giản nhất, mà trong đó lỗi phụ thuộc vào một tham số duy nhất. Tuy nhiên, lỗi mạng phụ thuộc mọi trọng số mạng và hàm lỗi rất nhiều, phức tạp hơn nhiều.
Rất may, lan truyền ngược cung cấp một phương pháp để cập nhật mỗi một trọng số giữa hai Nơ ron liên quan đến lỗi đầu ra. Nguồn gốc của nó khá phức tạp, nhưng bản cập nhật trọng số cho một node được cho như sau:
∆𝑤𝑖 = −𝛼 𝜕𝐸
𝜕𝑤𝑖
Trong đó E là lỗi đầu ra, và wi là trọng số của đầu vào i tới nơ-ron.
15
Về cơ bản, mục tiêu di chuyển theo hướng của Gradient đối với trọng số i.
Điều kiện quan trọng là bắt nguồn lỗi thường không dễ dàng tính được: bằng cách nào ta có thể tìm được bắt nguồn cho một trọng số ngẫu nhiên của một node ẩn ngẫu nhiên ở giữa của một mạng lớn. Câu trả lời là: qua lan truyền ngược. Các lỗi được tính toán đầu tiên tại khối đầu ra là nơi mà giải pháp khá đơn giản (dựa trên sự khác nhau giữa giá trị mong đợi và các giá trị dự đoán được), và sau đó được lan truyền ngược qua mạng trong một cách thông minh, cho phép cập nhật hiệu quả trọng số trong quá trình đào tạo và đạt tối thiểu.
* Lớp ẩn
Lớp ẩn là sự quan tâm đặc biệt. Theo lý thuyết xấp xỉ chung, một mạng một lớp ẩn với một số Nơ ron hữu hạn có thể được huấn luyện để xấp xỉ một hàm ngẫu nhiên tùy ý. Nói cách khác, một lớp ẩn đơn là đủ khả năng để học bất kỳ hàm nào.
Điều đó nói rằng, chúng thường học tốt hơn trong thực tiễn với đa lớp ẩn (như mạng sâu hơn).
“Lớp ẩn là nơi mạng lưu giữ các liên kết trừu tượng của quá trình huấn luyện dữ liệu”
Lớp ẩn là nơi mạng lưu giữ các liên kết trừu tượng của quá trình huấn luyện dữ liệu, tương tự như cách mà bộ não con người có sự thể hiện bên trong của thế giới thực.
* Vấn đề với các mạng lớn
Một mạng Nơ ron có thể có nhiều lớp ẩn: trong trường hợp này các lớp cao hơn được xây dựng lên đỉnh của các lớp trước. Tăng số lượng các lớp ẩn dẫn đến hai vấn đề:
1. Gradient bị triệt tiêu: khi ta thêm nhiều lớp ẩn, lan truyền ngược trở nên ít hơn và ít hữu ích trong truyền tải thông tin tới các lớp thấp hơn. Trong thực tế, khi thông tin được truyền ngược lại, gradient bắt đầu bị triệt tiêu và trở nên nhỏ đối với các trọng số của mạng.
2. Overfitting: có lẽ là vấn đề trọng tâm trong máy học. Nói một cách ngắn gọn, overfitting mô tả hiện tượng điều chỉnh (fitting) dữ liệu huấn luyện quá chặt chẽ,
16
có lẽ với các giả thuyết là quá phức tạp. Trong trường hợp như vậy, việc học kết thúc điều chỉnh dữ liệu huấn luyện thực sự tốt, nhưng sẽ thực hiện nhiều, kém hơn nhiều trong ví dụ thực tế.
Hãy xem một vài thuật toán huấn luyện sâu để giải quyết vấn đề này.
* Autoencoders (Bộ giải mã tự động)
Hầu hết các giới thiệu về máy học dừng lại ở mạng Nơ ron truyền thẳng.
Nhưng không gian của mạng có thể phong phú hơn.
Một autoencoder là đặc trưng một mạng Nơ ron truyền thẳng nhằm mục đích học một compressed (bị nén), biểu diễn phân tán (mã hóa) cho một tập dữ liệu.
x1
x2
x3
x4
x5
x6
+1
+1 Đầu vào
Đầu ra
Lớp ẩn
AUTOENCODER
Hình 1.9: Autoencoder
Một cách khái niệm, mạng được huấn luyện để “tái tạo” đầu vào, nghĩa là đầu vào và dữ liệu đích (dữ liệu mong muốn) là giống nhau. Nói cách khác là cố gắng để đầu ra giống với đầu vào, nhưng giới hạn trong một số cách.
* Restricted Boltzmann Machines
17
Các bước logic tiếp theo là quan sát Restricted Boltzmann Machines (RBM), một mạng Nơ ron có khả năng sinh ngẫu nhiên mà có thể học một phân bố xác suất trên tập các đầu vào.
Khối nhìn thấy
Khối ẩn
RBM
Hình 1.10: Restricted Boltzmann Machines
RBMs được cấu tạo bởi một lớp ẩn, lớp có thể nhìn thấy và lớp phân cực.
Không giống như mạng truyền thẳng, các kết nối giữa lớp ẩn và lớp có thể nhìn thấy là vô hướng (các giá trị có thể được truyền theo cả hai hướng từ lớp có thể nhìn thấy đến lớp ẩn và hướng ngược lại) và được kết nối toàn bộ (mỗi khối từ lớp nhất định được kết nối tới mỗi khối trong lớp tiếp theo - nếu ta được phép kết nối bất kỳ khối nào trong bất kỳ lớp nào tới bất kỳ lớp nào, sau đó ta có một máy Boltzmann (đúng hơn là một restricted Boltzmann).
Một RBM chuẩn có khối ẩn nhị phân (binary) và khối có thể nhìn thấy, đó là khối kích hoạt là 0 hoặc 1 theo một phân phối Bernoulli, nhưng có các biến thể với các hàm không tuyến tính khác.
Trong khi các nhà nghiên cứu đã biết về RBMs một thời gian trước, giới thiệu gần đây của các thuật toán huấn luyện không giám sát phân kỳ tương phản có sự đổi mới.
* Phân kỳ tương phản (contrastive divergence)
Thuật toán phân kỳ tương phản đơn bước (CD-1) hoạt động như sau:
18 1. Giai đoạn tích cực (positive)
- Một mẫu đầu vào v được xếp vào lớp đầu vào
- v được lan truyền tới lớp ẩn trong một cách tương tự các mạng truyền thẳng.
Kết quả của sự hoạt động lớp ẩn là h.
2. Giai đoạn ngược (negative)
- Lan truyền h ngược trở lại lớp có thể nhìn thấy với kết quả v’ (sự kết nối giữa lớp ẩn và lớp có thể nhìn thấy là vô hướng và vì vậy cho phép chuyển động trong cả hai hướng).
- Lan truyền v’ mới ngược trở lại lớp ẩn cho kết quả h’.
3. Cập nhật trọng số:
w(t + 1) = w(t) + α(v hT – v’ h’T )
Ở đây α là tốc độ học và v, v’, h, h’ và w là các vector.
Trực giác (intuition) phía sau thuật toán là giai đoạn tích cực phản ánh biểu diễn bên trong của mạng của dữ liệu thực. Trong khi đó giai đoạn ngược thể hiện nỗ lực để tái tạo dữ liệu dựa trên biểu diễn bên trong. Mục tiêu chính là dữ liệu được tạo ra gần thế giới thực và điều này được phản ánh trong công thức cập nhật trọng số.
Nói cách khác, mạng có một vài sự nhận thức về cách dữ liệu đầu vào có thể được biểu diễn, vì vậy nó cố gắng để tái tạo dữ liệu dựa trên sự nhận thức này. Nếu nó mô phỏng không đủ gần với thực tế, nó sẽ tạo ra một sự điều chỉnh và thử lại lần nữa.
* Mạng sâu
Bây giờ ta đã chứng minh các lớp ẩn của autoencoders và RBMs hoạt động như bộ dò các tham số một cách hiệu quả; nhưng khó mà ta có thể sử dụng các tham số một cách trực tiếp. Trong thực tế, tập dữ liệu ở trên nhiều trường hợp ngoại lệ hơn là quy tắc. Thay vào đó, ta cần tìm cách sử dụng các tham số một cách gián tiếp.
May mắn thay, đã khám phá ra rằng các cấu trúc có thể xếp chồng lên nhau để tạo thành mạng sâu. Mạng này có thể được huấn luyện một cách tham lam (greedily), một lớp tại một thời điểm để giúp khắc phục sự triệt tiêu gradient và overfitting các vấn đề liên quan đến lan truyền ngược cổ điển.
19
Cấu trúc kết quả thường khá mạnh mẽ, tạo ra các kết quả ấn tượng. Ví dụ, bài báo “cat” nổi tiếng của Google trong đó họ sử dụng loại đặc biệt của autoencoders sâu để “học” phát hiện con người và phát hiện con mèo dựa trên dữ liệu không được gán nhãn.
Xem xét kỹ hơn
* Autoencoders được xếp chồng
Như tiêu đề gợi ý, mạng này chứa nhiều autoencoder được xếp chồng lên nhau.
x1
x2
x3
x4
x5
x6
+1 Đầu vào
Đầu ra Lớp ẩn 1
Lớp ẩn 2
Hình 1.11: Autoencoder được xếp chồng
Lớp ẩn của autoencoder t hoạt động như một lớp đầu vào tới autoencoder t+1.
Lớp đầu vào của autoencoder đầu tiên là lớp đầu vào của toàn mạng. Các tiến trình huấn luyện layer-wise tham lam hoạt động như sau:
1. Huấn luyện autoencoder đầu tiên (t = 1; hoặc các kết nối màu đỏ trong hình ở trên nhưng thêm lớp đầu ra) riêng biệt sử dụng phương pháp lan truyền ngược với tất cả dữ liệu huyện luyện có sẵn.
2. Huấn luyện autoencoder thứ hai t = 2 (các kết nối màu xanh). Từ lớp đầu vào cho t = 2 là lớp ẩn của t = 1 chúng ta không còn quan tâm đến lớp đầu ra của t = 1 và xóa nó khỏi mạng. Việc huấn luyện bắt đầu bằng cách xếp mẫu đầu vào tới lớp đầu
20
vào của t = 1, được lan truyền thẳng tới lớp đầu ra của t = 2. Tiếp theo, các trọng số (đầu vào ẩn và đầu ra ẩn) của t = 2 được cập nhật sử dụng lan truyền ngược. t = 2 sử dụng tất cả các mẫu huấn luyện, tương tự tới t = 1.
3. Lặp lại tiến trình trước cho tất cả các lớp (tức là xóa lớp đầu ra của autoencoder trước, thay nó bằng autoencoder khác, và huấn luyện với lan truyền ngược).
4. Các bước từ 1 đến 3 được gọi là tiền huấn luyện (pre-training) và để lại các trọng số được khởi tạo chính xác. Tuy nhiên không có ánh xạ giữa dữ liệu đầu vào và các nhãn đầu ra. Ví dụ, nếu mạng được huấn luyện để nhận dạng ảnh của các số được viết tay nó vẫn không thể ánh xạ các khối từ các bộ phát hiện tham số cuối cùng (tức là lớp ẩn của autoencoder cuối) tới kiểu loại số của ảnh. Trong trường hợp này, giải pháp chung nhất là thêm một hoặc nhiều lớp kết nối một cách đầy đủ tới lớp cuối (các kết nối màu đen). Lúc này toàn mạng có thể được xem như là perceptron đa lớp được huấn luyện sử dụng lan truyền ngược (bước này còn được gọi là tinh chỉnh).
Các autoencoder được xếp chồng, sau đó là việc cung cấp một giải pháp tiền huấn luyện hiệu quả cho việc khởi tạo các trọng số của mạng, để lại một hoặc nhiều perceptron đa lớp phức tạp mà đã sẵn sàng để huấn luyện (tinh chỉnh)
* Mạng Belief sâu
Như với autoencoders, ta cũng có các máy Boltzmann xếp chồng để tạo một lớp được gọi là mạng Belief sâu (DBNs)
x
RBM
h1
h2
h3
RBM
RBM
x x
h1 h1
h2
Hình 1.12: Mạng Belief sâu
21
Trong trường hợp này, lớp ẩn của RBM t hoạt động như một lớp nhìn thấy đối với RBM t+1. Lớp đầu vào của RBM đầu tiên là lớp vào của toàn mạng, và tiền huấn luyện lớp wise tham lam (greedy) làm việc như sau:
1. Huấn luyện RBM t = 1 đầu tiên, sử dụng phân kỳ tương phản (contrastive divergence) với tất cả các mẫu đang huấn luyện.
2. Huấn luyện RBM t=2 thứ hai. Từ lớp nhìn thấy với t = 2 là lớp ẩn của t = 1, huấn luyện bắt đầu bởi việc sắp xếp mẫu đầu vào tới lớp nhìn thấy t = 1, nó được truyền thẳng tới lớp ẩn của t = 1. Dữ liệu này sau đó phục vụ để khởi tạo huấn luyện phân kỳ tương phản cho t=2.
3. Lặp lại tiến trình trước cho tất cả các lớp.
4. Tương tự như autoencoder được xếp chồng, sau tiền huấn luyện mạng có thể được mở rộng bởi việc kết nối một hoặc nhiều lớp được kết nối một cách đầy đủ (fully) tới lớp ẩn RBM cuối cùng. Điều này tạo nên một perceptron đa lớp mà có thể được tinh chỉnh sử dụng lan truyền ngược.
Tiến trình này giống như autoencoder được xếp chồng, nhưng autoencoders được thay bằng RBMs và lan truyền ngược được thay bằng thuật toán phân kỳ tương phản.