Học sâu không phải lúc nào cũng là công cụ đúng cho công việc – đôi khi không đủ dữ liệu để áp dụng học sâu và đôi khi vấn đề có thể được giải quyết tốt hơn bằng một thuật toán khác. Các bạn có thể đọc bài viết này để hiểu hơn về nguyên lý cơ bản của deep learning.
Mô hình thống kê
Mô hình xác suất là việc áp dụng nguyên tắc của thống kê vào phân tích dữ liệu. Đây là một trong những hình thức sớm nhất của học máy và vẫn được sử dụng rộng rãi cho đến ngày nay. Một trong những thuật toán nổi tiếng nhất trong loại này là thuật toán Naive Bayes.
Naive Bayes là một loại bộ phân loại học máy dựa trên việc áp dụng định lý Bayes trong khi giả định rằng các đặc trưng trong dữ liệu đầu vào độc lập với nhau (một giả định mạnh, hay “ngây thơ“, đó là nguồn gốc của tên gọi). Hình thức phân tích dữ liệu này đã xuất hiện trước sự xuất hiện của máy tính và đã được áp dụng bằng tay từ nhiều thập kỷ trước khi có sự triển khai máy tính đầu tiên (rất có thể từ thập kỷ 1950).
Một mô hình liên quan mật thiết khác là hồi quy logistic (gọi tắt là logreg), mà đôi khi được coi là “Hello World” của học máy hiện đại. Logreg là một thuật toán phân loại thay vì một thuật toán hồi quy. Giống như Naive Bayes, logreg đã tồn tại trước khi máy tính phổ biến, nhưng vẫn hữu ích đến ngày nay nhờ vào tính đơn giản và linh hoạt của nó.
Mạng neural đời đầu
Các phiên bản sớm của mạng nơ-ron đã bị hoàn toàn thay thế bởi các biến thể hiện đại được covered trong các trang này, nhưng có ích khi hiểu về cách học sâu bắt nguồn từ đâu. Mặc dù ý tưởng cơ bản của mạng nơ-ron đã được nghiên cứu trong các hình thức đồ chơi từ những năm 1950, nhưng phương pháp này mất nhiều thập kỷ để phát triển. Giữa thập kỷ 1980, khi nhiều người độc lập khám phá lại thuật toán Backpropagation – một cách để huấn luyện chuỗi các hoạt động tham số sử dụng tối ưu hóa gradient descent và bắt đầu áp dụng nó vào mạng nơ-ron.
Ứng dụng thực tế đầu tiên thành công của mạng nơ-ron xuất hiện vào năm 1989 tại Bell Labs, khi Yann LeCun kết hợp các ý tưởng trước đó của mạng nơ-ron tích chập và backpropagation để áp dụng chúng vào vấn đề phân loại chữ số viết tay. Mạng kết quả, được đặt tên là LeNet, đã được Cục Bưu điện Hoa Kỳ sử dụng trong những năm 1990 để tự động hóa việc đọc các mã ZIP trên phong bì thư.
Phương pháp kernel
Khi mạng nơ-ron bắt đầu tiến triển trong thập kỷ 1990, nhờ vào thành công đầu tiên này, một phương pháp học máy mới nổi lên và nhanh chóng đẩy mạng nơ-ron quay trở lại quên lãng: phương pháp nhân (kernel methods). Phương pháp kernel là một nhóm thuật toán phân loại, trong đó thuật toán nổi tiếng nhất là Support Vector Machine (SVM). Hình thức hiện đại của SVM đã được Vladimir Vapnik và Corinna Cortes phát triển vào đầu những năm 1990 tại Bell Labs và được công bố vào năm 1995, mặc dù một hình thức tuyến tính cũ hơn đã được Vapnik và Alexey Chervonenkis công bố ngay từ năm 1963.
SVM là một thuật toán phân loại hoạt động bằng cách tìm “ranh giới quyết định” phân chia hai lớp. SVM tiến hành tìm ranh giới này trong hai bước:
- Dữ liệu được ánh xạ sang một biểu diễn chiều cao mới, nơi ranh giới quyết định có thể được biểu diễn dưới dạng một hyperplane (nếu dữ liệu là hai chiều thì hyperplane sẽ là một đường thẳng).
- Một ranh giới quyết định tốt (một hyperplane phân chia) được tính toán bằng cách cố gắng tối đa hóa khoảng cách giữa hyperplane và điểm dữ liệu gần nhất từ mỗi lớp, một bước được gọi là tối đa hóa lề (margin). Điều này cho phép ranh giới tổng quát tốt đối với các mẫu mới nằm ngoài tập dữ liệu huấn luyện.
Decision trees, random forests, và gradient boosting machines
Cây quyết định (Decision trees) là các cấu trúc giống như biểu đồ giúp bạn phân loại các điểm dữ liệu đầu vào hoặc dự đoán các giá trị đầu ra dựa trên đầu vào giúp chúng dễ dàng để trực quan hóa và hiểu. Cây quyết định được học từ dữ liệu bắt đầu nhận được sự quan tâm nghiên cứu đáng kể vào những năm 2000, và đến năm 2010 chúng được ưa chuộng hơn so với phương pháp kernel.
Đặc biệt, thuật toán Random Forest giới thiệu một cách tiếp cận mạnh mẽ, bao gồm việc xây dựng một số lượng lớn cây quyết định chuyên biệt và sau đó kết hợp kết quả của chúng. Random forests có thể áp dụng cho nhiều vấn đề khác nhau – chúng hầu như luôn là thuật toán thứ hai tốt nhất cho bất kỳ nhiệm vụ học máy nào. Khi Kaggle (http://kaggle.com) bắt đầu vào năm 2010, random forests nhanh chóng trở thành một lựa chọn phổ biến trên nền tảng này – cho đến năm 2014, khi gradient boosting machine chiếm ưu thế. Gradient boosting machine, tương tự như random forest, là một kỹ thuật máy học dựa trên việc kết hợp các mô hình dự đoán yếu, chủ yếu là cây quyết định. Nó sử dụng gradient boosting, một cách để cải thiện bất kỳ mô hình học máy nào bằng cách lặp lại việc huấn luyện các mô hình mới chuyên biệt trong việc giải quyết những điểm yếu của các mô hình trước đó.
Áp dụng cho cây quyết định, việc sử dụng kỹ thuật gradient boosting dẫn đến các mô hình thường vượt trội hầu hết thời gian so với random forests, trong khi vẫn giữ nguyên các đặc tính tương tự. Nó có thể là một trong những, nếu không phải là thuật toán tốt nhất, để xử lý dữ liệu không nhận thức hiện nay. Cùng với học sâu, nó là một trong những kỹ thuật phổ biến nhất được sử dụng trong các cuộc thi Kaggle.
Neural networks
Khoảng năm 2010, mặc dù mạng nơ-ron gần như bị lãng quên hoàn toàn bởi cộng đồng khoa học, một số người vẫn đang làm việc với mạng nơ-ron đã bắt đầu đạt được những đột phá quan trọng: các nhóm nghiên cứu của Geoffrey Hinton tại Đại học Toronto, Yoshua Bengio tại Đại học Montreal, Yann LeCun tại Đại học New York và IDSIA tại Thụy Sĩ.
Năm 2011, Dan Ciresan từ IDSIA bắt đầu chiến thắng các cuộc thi phân loại hình ảnh học thuật với các mạng nơ-ron sâu được huấn luyện bằng GPU – thành công thực tế đầu tiên của học sâu hiện đại. Nhưng thời điểm quan trọng nhất đến vào năm 2012, với sự tham gia của nhóm của Hinton trong thách thức phân loại hình ảnh quy mô lớn hàng năm ImageNet (ImageNet Large Scale Visual Recognition Challenge – ILSVRC). Thách thức ImageNet lúc đó được biết đến với độ khó cao, bao gồm việc phân loại hình ảnh màu có độ phân giải cao thành 1.000 danh mục khác nhau sau khi được huấn luyện trên 1,4 triệu hình ảnh. Năm 2011, độ chính xác top-five của mô hình chiến thắng, dựa trên các phương pháp cổ điển của thị giác máy tính, chỉ là 74,3%.
Sau đó, vào năm 2012, một đội dẫn đầu bởi Alex Krizhevsky và được tư vấn bởi Geoffrey Hinton đã đạt được độ chính xác top-five là 83,6% – một đột phá đáng kể. Từ đó, mỗi năm cuộc thi đã bị chi phối bởi các mạng nơ-ron tích chập sâu. Đến năm 2015, người chiến thắng đạt được độ chính xác 96,4%, và nhiệm vụ phân loại trên ImageNet được coi là một vấn đề được giải quyết hoàn toàn.
Từ năm 2012 trở đi, mạng nơ-ron tích chập sâu (convnets) đã trở thành thuật toán chính cho tất cả các nhiệm vụ thị giác máy tính; nói chung, chúng hoạt động trên tất cả các nhiệm vụ nhận thức. Tại bất kỳ hội nghị thị giác máy tính lớn nào sau năm 2015, gần như không thể tìm thấy bài thuyết trình nào không liên quan đến convnets. Đồng thời, học sâu cũng đã được ứng dụng vào nhiều loại vấn đề khác nhau, như xử lý ngôn ngữ tự nhiên. Nó đã hoàn toàn thay thế SVMs và cây quyết định trong nhiều ứng dụng.
Mạng học sâu hiện đại
Lý do chính khiến học sâu phát triển nhanh chóng là nó mang lại hiệu suất tốt hơn cho nhiều vấn đề. Tuy nhiên, đó không phải là lý do duy nhất. Học sâu cũng làm cho việc giải quyết vấn đề dễ dàng hơn vì nó hoàn toàn tự động hóa điều trước đây là bước quan trọng nhất trong quy trình làm máy học đó là kỹ thuật trích xuất đặc trưng.
Các kỹ thuật máy học trước đó – học máy nông – chỉ liên quan đến việc chuyển đổi dữ liệu đầu vào thành một hoặc hai không gian biểu diễn liên tiếp, thường thông qua các biến đổi đơn giản như ánh xạ phi tuyến tính có chiều cao (SVMs) hoặc cây quyết định. Con người đã phải nỗ lực lớn để làm cho dữ liệu đầu vào ban đầu thuận tiện hơn để xử lý bằng cách xây dựng thủ công các tầng biểu diễn tốt cho dữ liệu của họ. Điều này được gọi là kỹ thuật trích xuất đặc trưng. Ngược lại, học sâu hoàn toàn tự động hóa bước này: với học sâu, nó sẽ học tất cả các đặc trưng trong một lần chạy thay vì phải tự xây dựng riêng lẻ. Điều này đã đơn giản hóa đáng kể quy trình làm máy học, thường thay thế các pipeline nhiều bước phức tạp bằng một mô hình học sâu đơn giản, toàn diện từ đầu đến cuối.
Vậy có thể áp dụng các phương pháp học máy nông một cách lặp đi lặp lại để mô phỏng hiệu ứng của học sâu không? Trong thực tế, các ứng dụng liên tiếp của các phương pháp học máy nông thường dẫn đến sự giảm giá trị nhanh chóng, vì tầng biểu diễn đầu tiên tối ưu trong một mô hình ba tầng không phải là tầng đầu tiên tối ưu trong mô hình một tầng hoặc hai tầng. Điều làm thay đổi đối với học sâu là nó cho phép mô hình học tất cả các tầng biểu diễn cùng một lúc thay vì theo thứ tự. Với việc học đặc trưng chung mỗi khi mô hình điều chỉnh một trong những đặc trưng nội tại của nó, tất cả các đặc trưng khác phụ thuộc vào nó sẽ tự động điều chỉnh theo sự thay đổi, mà không cần sự can thiệp của con người.
Why deep learning?
Thiết bị phần cứng
Từ năm 1990 đến 2010, CPU có sẵn trên thị trường đã trở nên nhanh hơn gấp khoảng 5.000 lần. Do đó, ngày nay có thể chạy các mô hình học sâu nhỏ ngay chính trên laptop, đây là vấn đề khó khăn cách đây 25 năm.
Tuy nhiên, các mô hình học sâu điển hình được sử dụng trong thị giác máy tính hoặc nhận dạng giọng nói đòi hỏi công suất tính toán nhiều lần lớn hơn so với laptop. Suốt thập kỷ 2000, các công ty như NVIDIA và AMD đã đầu tư hàng tỷ đô la vào việc phát triển chip nhanh, đa lõi (GPU) để cung cấp năng lực đồ họa cho game. Sự đầu tư này đã mang lại lợi ích cho cộng đồng khoa học khi vào năm 2007, NVIDIA giới thiệu CUDA (https://developer.nvidia.com/about-cuda), một giao diện lập trình cho dòng GPU của họ. Một số lượng nhỏ GPU bắt đầu thay thế các cụm CPU lớn trong các ứng dụng có khả năng song song cao, bắt đầu với mô phỏng vật lý. Mạng nơ-ron sâu, chủ yếu bao gồm nhiều phép nhân ma trận nhỏ, cũng rất có khả năng song song, và vào khoảng năm 2011, một số nghiên cứu viên đã bắt đầu viết các triển khai CUDA của mạng nơ-ron – Dan Ciresan và Alex Krizhevsky là một số trong những người đầu tiên.
Dữ liệu
Trí tuệ nhân tạo đôi khi được ca ngợi như là Cuộc Cách mạng Công nghiệp mới. Nếu học sâu được xem như động cơ hơi nước của cuộc cách mạng này, thì dữ liệu chính là than đá: nguyên liệu nguyên thủy làm cho máy thông minh của chúng ta hoạt động, không có nó không có gì là khả thi. Khi nói đến dữ liệu, ngoài sự tiến triển mạnh mẽ trong phần cứng lưu trữ trong 20 năm qua (tuân theo định luật Moore), người chơi quan trọng đã là sự gia tăng của internet, làm cho việc thu thập và phân phối các bộ dữ liệu rất lớn cho học máy trở nên khả thi. Ngày nay, các công ty lớn làm việc với các bộ dữ liệu hình ảnh, video và ngôn ngữ tự nhiên mà trước đây không thể được thu thập nếu không có internet. Ví dụ, các nhãn hình ảnh do người dùng tạo ra trên Flickr đã là một kho tàng dữ liệu quý giá cho thị giác máy tính. Đồng thời, video trên YouTube và Wikipedia cũng là bộ dữ liệu chính cho xử lý ngôn ngữ tự nhiên.
Nếu có một bộ dữ liệu đã làm động lực cho sự phát triển của học sâu, đó là bộ dữ liệu ImageNet, gồm 1,4 triệu hình ảnh đã được chú thích bằng tay với 1,000 danh mục hình ảnh (một danh mục cho mỗi hình ảnh). Nhưng điều làm cho ImageNet trở nên đặc biệt không chỉ là kích thước lớn của nó, mà còn là cuộc thi hàng năm đi kèm. Như Kaggle đã chứng minh từ năm 2010, các cuộc thi công cộng là một cách xuất sắc để thúc đẩy các nhà nghiên cứu và kỹ sư đẩy mạnh ranh giới. Việc có các bài kiểm tra chung mà các nhà nghiên cứu cạnh tranh để vượt qua đã giúp đỡ đáng kể cho sự phát triển của học sâu, bằng cách làm nổi bật thành công của nó so với các phương pháp học máy cổ điển.