Ghi Chú Nhỏ Khi Học Mạng Nơ-Ron - nói dối e blog

Ghi Chú Nhỏ Khi Học Mạng Nơ-Ron

Công nghệ AI đang bùng nổ trong thời gian gần đây. Thực ra, tôi đã bắt đầu quan tâm đến AI từ thời còn ngồi trên ghế nhà trường. Vào những năm 90, tôi từng đọc một cuốn sách về mạng nơ-ron thần kinh, nhưng lúc đó chưa đủ trình độ để hiểu thấu đáo. Khi mới ra trường đầu những năm 2000, tôi lại tiếp tục tìm hiểu sâu hơn, dành thời gian nghiên cứu kỹ lưỡng. Dù tích lũy được nhiều kiến thức lý thuyết và tự tin nắm bắt được bản chất, nhưng tiếc rằng chưa từng thực hành trực tiếp.

Ngày nay, rõ ràng AI đã trở thành công cụ thực sự hữu ích trong việc nâng cao năng suất lao động. Tôi nhận ra cần phải học tập nghiêm túc. Không thể chỉ đọc vài bài viết rồi cho rằng mình hiểu rõ - kiểu hiểu hời hợt đó chỉ đủ để trò chuyện xã giao chứ chưa thể nắm bắt bản chất. Muốn thật sự thấu hiểu, phải tự tay viết code, trải nghiệm trực tiếp quá trình xây dựng và điều chỉnh mô hình.

Ban đầu, tôi bắt đầu từ bài viết về Machine Learning trên Wikipedia. Đọc suốt cả ngày, tôi nắm được dòng chảy phát triển của lĩnh vực trong những năm gần đây. Ghi chép đầy đủ các thuật ngữ, nhưng lượng thông tin quá lớn khiến tôi cảm thấy ngợp, chất đống những ghi chú lộn xộn. Khi lượng câu hỏi tích tụ ngày càng nhiều, tôi nhận ra phương pháp tiếp cận này đang trở nên kém hiệu quả. Thay vì tiếp tục theo lối mòn cũ, tôi quyết định tìm hướng đi mới.

Tôi chuyển sang đọc cuốn sách “Neural Networks and Deep Learning”. Sau hai chương đầu tiên, tôi nhận thấy việc nhận dạng chữ số viết tay là một dự án thực hành lý tưởng. Thay vì chỉ đọc lý thuyết, tôi quyết định tự tay viết code ngay lập tức. Việc xây dựng nền tảng cơ bản này sẽ giúp tôi lần theo dấu chân người đi trước, hiểu rõ hơn về bản chất các vấn đề họ đang giải quyết.

Điều kiện hiện tại vượt xa 20 năm về trước. Chỉ cần chưa đầy một phút trên chiếc máy tính cá nhân để huấn luyện một mạng nơ-ron feedforward đơn giản. Nguồn code mẫu phong phú giúp dễ dàng đối chiếu khi gặp lỗi. Dữ liệu huấn luyện cũng sẵn có qua kho MNIST DATABASE of handwritten digits. Dù con người vẫn chưa thể giải thích rõ ràng vai trò cụ thể của từng nơ-ron trong mạng, nhưng nhờ bộ dữ liệu này, chúng ta vẫn có thể đánh giá hiệu quả thông qua tỷ lệ chính xác. Đây chính là lý do khiến bài toán nhận dạng chữ số viết tay trở thành điểm khởi đầu lý tưởng.

Theo cách hiểu của tôi, mạng nơ-ron mô phỏng cách hoạt động của não bộ. Từ những đơn vị nơ-ron đơn giản kết nối với nhau, truyền tín hiệu cơ bản, cuối cùng tạo ra khả năng xử lý thông tin từ đầu vào đến đầu ra. Việc mô phỏng thế giới thực bằng code vốn là đam mê của tôi, đặc biệt trong lĩnh vực game. Chính vì vậy, việc xây dựng chương trình này mang lại cho tôi niềm vui sáng tạo đặc biệt.

Chúng ta cần xác định rõ: Chìa khóa không nằm ở việc một nơ-ron đơn lẻ thông minh thế nào, mà chính là ở cấu trúc mạng tổng thể. Khi có cấu trúc phù hợp, tín hiệu đầu vào sẽ đi qua hàng loạt kết nối (synapse) giữa các nơ-ron. Mỗi tín hiệu bị điều chỉnh bởi trọng số (weight) tương ứng, tích lũy tại nơ-ron nhận, sau đó vượt qua ngưỡng kích hoạt (threshold) để lan truyền tiếp. Có thể coi ngưỡng này như một tín hiệu hằng số kết nối đến nơ-ron. Nếu kết quả sai, vấn đề nằm ở cấu trúc mạng chứ không phải bản chất phương pháp.

Với mạng nơ-ron nhân tạo, khi đã có cấu trúc đúng, việc giải quyết bài toán trở nên đơn giản: chỉ cần mô phỏng quá trình lan truyền tín hiệu. Trong phiên bản đầu tiên của chương trình, tôi sử dụng mạng nơ-ron đã được huấn luyện sẵn, xuất dữ liệu trọng số rồi nhập vào code của mình để kiểm chứng. Cách tiếp cận này giúp tôi tập trung vào phần logic cốt lõi, tránh bị rối bởi các thành phần phức tạp khác.

Mạng nơ-ron đơn giản nhất là kiểu fully-connected - mọi nơ-ron đều kết nối với nhau. Dù không giống cấu trúc sinh học thực tế, đây là mô hình dễ tiếp cận nhất. Các cấu trúc phức tạp hơn thực chất chỉ là biến thể với một số kết nối bị vô hiệu hóa (trọng số = 0).

Thách thức thực sự nằm ở việc xác định cấu trúc mạng phù hợp - quá trình gọi là training. Nếu có vô hạn thời gian, chúng ta có thể thử mọi tổ hợp trọng số, nhưng thực tế điều này bất khả thi do khối lượng tính toán khổng lồ. Con người cũng không thể thiết lập thủ công hàng triệu kết nối. Giải pháp là sử dụng các phương pháp heuristic kết hợp rút gọn dữ liệu, như mạng CNN chia nhóm và phân tầng nơ-ron để giảm số lượng kết nối.

Với mục tiêu học tập, tôi chọn bắt đầu từ mạng feedforward đơn giản nhất: nhận diện chữ số viết tay từ ảnh xám 28x28 pixel (784 đầu vào) thành 10 đầu ra tương ứng các số 0-9. Dù về mặt

0%