Trong bài tập này, chúng ta sẽ đào tạo mạng nơron nhỏ đầu tiên. Mạng nơron sẽ cho phép chúng ta tìm hiểu các mô hình phi tuyến tính mà không cần sử dụng các tính năng rõ ràng.
Nhiệm vụ 1: Mô hình như đã kết hợp hai tính năng đầu vào của chúng ta thành một nơron. Mô hình này có học được kiến thức phi tuyến tính không? Hãy chạy ứng dụng này để xác nhận suy đoán của bạn.
Nhiệm vụ 2: Hãy thử tăng số lượng nơ-ron trong lớp ẩn từ 1 lên 2, đồng thời thử thay đổi từ trình kích hoạt Tuyến tính sang lượt kích hoạt phi tuyến tính như ReLU. Bạn có thể tạo một mô hình có thể học về tính phi tuyến tính không? Nó có thể lập mô hình dữ liệu
một cách hiệu quả không?
Nhiệm vụ 3: Hãy thử tăng số lượng nơ-ron trong lớp ẩn từ
2 lên 3, bằng cách sử dụng tính năng kích hoạt phi tuyến tính như ReLU. Nó có thể lập mô hình dữ liệu một cách hiệu quả không? Chất lượng mô hình khác nhau như thế nào giữa các lần chạy?
Nhiệm vụ 4: Tiếp tục thử nghiệm bằng cách thêm hoặc xóa các lớp và nơ-ron ẩn trên mỗi lớp. Ngoài ra, bạn cũng có thể thay đổi tỷ lệ học tập, quá trình chuẩn hoá và các chế độ cài đặt học tập khác. Số lượng tế bào thần kinh và lớp nhỏ nhất mà bạn có thể sử dụng có thể dẫn đến tổn thất thử nghiệm từ 0,177 trở xuống là bao nhiêu?
Việc tăng kích thước mô hình có cải thiện được kích thước vừa vặn hay nhanh chóng hội tụ không?
Điều này có làm thay đổi tần suất chuyển đổi thành một mô hình tốt không? Ví dụ: hãy thử cấu trúc sau:
Lớp ẩn đầu tiên có 3 nơ-ron.
Lớp ẩn thứ hai có 3 nơ-ron.
Lớp ẩn thứ ba có 2 nơ-ron.
(Câu trả lời xuất hiện ngay bên dưới bài tập.)
Nhấp vào biểu tượng dấu cộng để xem câu trả lời của Bài tập 1.
Trạng thái Kích hoạt được đặt thành Tuyến tính, vì vậy mô hình này không thể học
bất kỳ tuyến tính nào. Mức độ tổn thất rất cao và chúng tôi cho rằng mô hình không phù hợp với dữ liệu.
Nhấp vào biểu tượng dấu cộng để xem câu trả lời của Bài tập 2.
Hàm kích hoạt phi tuyến tính có thể tìm hiểu các mô hình phi tuyến tính. Tuy nhiên,
một lớp ẩn duy nhất có 2 nơ-ron không thể phản ánh tất cả độ phi tuyến tính trong
tập dữ liệu này và sẽ bị tổn thất cao ngay cả khi không có tiếng ồn: lớp này vẫn
không phù hợp với dữ liệu. Các bài tập này không xác định, vì vậy một số bài tập sẽ không tìm hiểu được một mô hình hiệu quả, trong khi các bài tập khác sẽ hoạt động khá hiệu quả.
Mô hình tốt nhất có thể không có hình dạng mà bạn mong đợi!
Nhấp vào biểu tượng dấu cộng để xem câu trả lời của Bài tập 3.
Bản chất không xác định của Playground sẽ chiếu sáng trong bài tập này. Một lớp ẩn có 3 nơ-ron đủ để mô hình hoá tập dữ liệu (khử tiếng ồn), nhưng không phải lượt chạy nào cũng hội tụ thành một mô hình tốt.
3 nơron là đủ vì hàm XOR có thể được biểu thị dưới dạng sự kết hợp của 3 nửa mặt phẳng (kích hoạt ReLU). Bạn có thể thấy điều này từ việc xem xét hình ảnh nơ-ron, cho thấy kết quả của từng nơ-ron riêng lẻ. Trong một mô hình tốt có 3 tế bào thần kinh và sự kích hoạt ReLU, sẽ có 1 hình ảnh có một đường kẻ gần như dọc, phát hiện X1 là dương (hoặc âm; dấu hiệu có thể được chuyển), 1 hình ảnh có một đường kẻ ngang, phát hiện dấu của X2 và 1 hình ảnh có một đường chéo, phát hiện thấy sự tương tác của chúng.
Tuy nhiên, không phải tất cả các lần chạy đều đến một mô hình tốt. Một số lượt chạy sẽ không tốt hơn một mô hình có 2 nơ-ron và bạn có thể thấy các nơ-ron trùng lặp trong những trường hợp này.
Nhấp vào biểu tượng dấu cộng để xem câu trả lời của Bài tập 4.
Một lớp ẩn duy nhất có 3 nơ-ron có thể tạo mô hình dữ liệu, nhưng không thừa. Một lớp có nhiều hơn 3 nơ-ron sẽ dư thừa nhiều hơn và
có nhiều khả năng hội tụ hơn cho một mô hình tốt.
Như chúng ta đã thấy, một lớp ẩn đơn chỉ có 2 nơ-ron không thể lập mô hình dữ liệu tốt. Nếu thử, bạn có thể thấy rằng tất cả các mục trong lớp đầu ra chỉ có thể là các hình dạng bao gồm các đường từ hai nút đó. Trong trường hợp này, mạng sâu hơn có thể lập mô hình tập dữ liệu tốt hơn riêng lớp ẩn đầu tiên: các nơ-ron riêng lẻ trong lớp thứ hai có thể lập mô hình các hình dạng phức tạp hơn, chẳng hạn như góc phần tư trên bên phải, bằng cách kết hợp các nơ-ron trong lớp đầu tiên. Mặc dù việc thêm
lớp ẩn thứ hai đó vẫn có thể lập mô hình tập dữ liệu tốt hơn lớp ẩn
đầu tiên, nhưng việc thêm nhiều nút vào lớp đầu tiên để
cho phép nhiều dòng hơn nằm trong bộ công cụ mà lớp thứ hai xây dựng hình dạng của nó sẽ hợp lý hơn.
Tuy nhiên, một mô hình có 1 nơ-ron trong lớp ẩn đầu tiên sẽ không thể học được một mô hình tốt bất kể độ sâu là bao nhiêu. Điều này là do đầu ra của lớp đầu tiên
chỉ khác nhau theo một chiều (thường là một đường chéo). Điều này không đủ
để mô hình hóa tập dữ liệu này tốt. Các lớp sau này không thể bù đắp cho điều này, không có vấn đề gì về độ phức tạp; thông tin trong dữ liệu đầu vào đã bị mất không thể khôi phục.
Nếu thay vì cố gắng có một mạng nhỏ, chúng ta có rất nhiều lớp với nhiều tế bào thần kinh, cho một vấn đề đơn giản như thế này? Như chúng ta đã thấy, lớp đầu tiên
sẽ có thể thử nhiều đường dốc khác nhau. Và lớp thứ hai sẽ có thể tích luỹ chúng thành nhiều hình dạng khác nhau, với rất nhiều hình dạng ở các lớp tiếp theo.
Bằng cách cho phép mô hình xem xét quá nhiều hình dạng khác nhau thông qua nhiều nơ-ron ẩn khác nhau, bạn đã tạo đủ không gian để mô hình bắt đầu dễ dàng hơn so với tiếng ồn trong tập huấn luyện, cho phép các hình dạng phức tạp này khớp với các dữ liệu đào tạo thay vì sự thật chung chung về mặt đất. Trong ví dụ này, các mô hình lớn hơn có thể có các ranh giới phức tạp để khớp với các điểm dữ liệu chính xác. Trong những trường hợp cực đoan, một mô hình lớn
có thể tìm hiểu về một hòn đảo xung quanh một điểm nhiễu riêng lẻ, được gọi là
ghi nhớ dữ liệu. Khi cho phép mô hình lớn hơn nhiều, bạn sẽ thấy mô hình đó thực sự tệ hơn so với mô hình đơn giản hơn chỉ với đủ số lượng nơron để giải quyết vấn đề.
Khởi tạo mạng nơron
Bài tập này sử dụng lại dữ liệu XOR, nhưng xem xét khả năng lặp lại của quá trình đào tạo Neural Nets và tầm quan trọng của việc khởi chạy.
Tác vụ 1: Chạy mô hình như đã được bốn hoặc năm lần. Trước mỗi lần thử, hãy nhấn nút Đặt lại mạng để khởi chạy ngẫu nhiên mới.
(Nút Đặt lại mạng là mũi tên đặt lại vòng tròn ở bên trái nút Phát.) Hãy để mỗi phiên bản dùng thử chạy trong ít nhất 500 bước để đảm bảo sự hội tụ. Mỗi mô hình xuất ra hội tụ hình dạng nào?
Điều này nói gì về vai trò của việc khởi chạy trong quá trình tối ưu hoá không phải lồi?
Nhiệm vụ 2: Hãy thử làm cho mô hình này phức tạp hơn một chút bằng cách thêm một lớp
và một vài nút bổ sung. Lặp lại các lượt thử từ Bài 1. Điều này có làm tăng thêm độ ổn định cho kết quả không?
(Câu trả lời xuất hiện ngay bên dưới bài tập.)
Nhấp vào biểu tượng dấu cộng để xem câu trả lời của Bài tập 1.
Mô hình đã tìm hiểu có các hình dạng khác nhau trong mỗi lần chạy. Tỷ lệ tổn thất thử nghiệm hội tụ khác nhau gần gấp đôi từ thấp nhất đến cao nhất.
Nhấp vào biểu tượng dấu cộng để xem câu trả lời của Bài tập 2.
Thêm lớp và các nút bổ sung sẽ tạo ra kết quả lặp lại nhiều hơn.
Trong mỗi lần chạy, mô hình thu được có giao diện gần giống nhau. Hơn nữa, tổn thất kiểm thử hội tụ cho thấy sự chênh lệch giữa số lần chạy.
Vòng xoắn ốc thần kinh
Tập dữ liệu này là một xoắn ốc nhiễu. Rõ ràng là mô hình tuyến tính sẽ không hoạt động được ở đây,
nhưng ngay cả khi các chữ thập tính năng được xác định theo cách thủ công thì cũng có thể khó xây dựng.
Nhiệm vụ 1: Đào tạo mô hình tốt nhất có thể, chỉ sử dụng X1 và
X2. Bạn có thể thêm hoặc xoá lớp và nơ-ron, thay đổi chế độ cài đặt học tập như tỷ lệ học tập, tỷ lệ chuẩn hoá và kích thước lô. Bạn có thể gặp thử nghiệm nào là tốt nhất? Giao diện đầu ra của mô hình mượt mà đến mức nào?
Nhiệm vụ 2: Ngay cả với Neural Nets, một số kỹ thuật tính năng thường cần thiết để đạt được hiệu suất tốt nhất. Hãy thử thêm các tính năng bổ sung của sản phẩm hoặc các phép biến đổi khác như
sin(X1) và sin(X2). Bạn có mô hình nào tốt hơn không? Kết quả của mô hình có mượt mà hơn không?
(Câu trả lời xuất hiện ngay bên dưới bài tập.)
Nhấp vào biểu tượng dấu cộng để xem câu trả lời có thể có.
Video sau đây sẽ hướng dẫn cách chọn siêu thông số trong Playground để đào tạo một mô hình cho dữ liệu xoắn ốc giúp giảm thiểu tổn thất kiểm thử.