Học sâu là gì?

(viết bởi Nguyễn Tiến Dũng)

Phần 1:

Học sâu (deep learning, DL) là một phần của học máy (machine learning, ML), còn machine learning là thuật ngữ chung để chỉ các phương pháp, chương trình khiến cho máy tính có thể thông minh lên, tạo ra trí tuệ nhân tạo (AI).
Ngành trí tuệ nhân tạo (AI) thường được coi là chính thức ra đời vào năm 1956, và đã trải qua hai chu kỳ “boom-bust” (hay có thể gọi là: sôi sục – nguội lạnh), và hiện đang ở thời ky sôi sục mới, chính nhờ vào học sâu, nay đã trở thành phần chính, phần quan trọng nhất của lĩnh vực học máy. Rất nhiều ứng dụng tin học quan trọng nổi bật gần đây là có công đóng góp của học sâu: dịch vụ khách hàng, nhận dạng phim ảnh, chuẩn đoán bệnh, phòng chống tội phạm, xe tự lái, dịch tiếng tự động, thư ký robot, v.v. Hầu như trong bất cứ lĩnh vực nào cũng có thể hình dung các công nghệ mới trong đó AI đóng vai trò qan trọng, và AI đó chính là dựa trên học máy, và phần lớn là học sâu. Thậm chí người ta dự đoán phần lớn các công việc hiện tại sẽ bị AI thay thế trong vòng mấy chục năm tới. Nhưng đấy không phải cớ để mà bị quan, mà nên lạc quan thì tốt hơn, vì như thế có nghĩa là mức sống và chất lượng cuộc sống của con người sẽ cao lên nhiều, và những việc hiện tại mất đi thì sẽ có những việc mới khác xuất hiện.
Bản thân từ “học sâu” nghĩa là gì vậy, và tại sao lại gọi là “sâu”?
Trước khi nói đến học sâu, ta điểm qua về học máy nói chung. Một mô hình học máy (model) là một chương trình máy tính. Các chương trình máy tính “cổ điển”, một khi đã nằm trong máy tính thì không tự nó thay đổi nữa, không “tự tiến bộ” được, nó làm các công việc ra sao thì vẫn sẽ luôn làm thế thôi, trừ khi nó được người ta nâng cấp (thay chương trình cũ bằng chương trình mới tốt hơn, hay là nâng cấp phần cứng máy tính cho máy khỏe hơn). Chương trình có học máy tự nâng cấp được nó, ở một mức độ nào đó, hay có thể nói là nó tự tiến hóa được để chạy càng ngày càng tốt lên. Có thể hiểu sự tự nâng cấp đó như sau:
Trong một mô hình học máy, ngoài một phần “lõi” không thay đổi theo thời gian (trừ khi bản thân mô hình được ai đó thay đổi), thì có một phần gọi là các tham số có thể thay đổi. Quá trình học máy (hay nói chính xác hơn, là “máy học”) là quá trình mà các tham số đó được điều chỉnh để tối ưu hóa chương trình, làm cho nó thích hợp hơn cho vấn đề cần giải quyết. Trong quá trình mà chương trình chạy, thì đồng thời nó “tích lũy kinh nghiệm”, và cái kinh nghiệm đó được dùng để học, để mà làm cho nó tiến hóa, tối ưu hóa.
Cùng một mô hình học máy chung có thể dùng cho nhiều vấn đề khác nhau, ví dụ như mô hình dùng để đoán chữ viết tay tiếng Việt cũng có thể dùng để đoán chữ tiếng Hàn. Nhưng qua quá trình học thì các thông số trong mô hình sẽ trở nên thích nghi với vấn đề cụ thể mà mô hình muốn xử lý, và như vậy tất nhiên chương trình để nhận biết tiếng Việt sẽ có các tham số khác với mô hình nhận biết tiếng Hàn. Điều đó cũng tương tự như người Việt và người Hàn khi sinh ra có óc giống nhau (“lõi” giống nhau), nhưng được học các thứ tiếng khác nhau nên thông tin về tiếng chứa trong đầu khác nhau (“tham số” khác nhau).
Vậy làm sao để tạo ra các mô hình học máy thích hợp, và làm sao để mô hình biết tự điều chỉnh các tham số sao cho tối ưu? Hồi sau sẽ rõ :D
aye_aye(Trong ảnh: bàn tay của con thú aye-aye có một ngón rất đặc biệt dài và thon hơn hẳn các ngón khác. Đó là kết quả của quá trình tiến hóa cho thích nghi dễ tồn tại, vì nó dùng ngón tay đó để moi các con mọt gỗ từ các cây ra, là thức ăn chính của nó. Ý tưởng học máy cũng tương tự như vậy, tiến hóa thay đổi các tham số (ở con aye-aye là độ dài và độ to ngang của ngón tay) cho thích nghi nhất với nhiệm vụ đề ra)