Neural network và object recognition: hành trình 30 năm từ MNIST đến ImageNet

Update 02/11/2012: Download the “Feature-Augmented RNN Toolkit” from MS Research.
Quotes: This tool kit implements language modeling with context-dependent recurrent neural networks (RNNs). Completely general context is supported through a user-supplied feature file.

Geoffrey Hinton là một trong những tên tuổi trong cộng đồng nghiên cứu về neural network, bên cạnh các tên tuổi khác như Yann LeCun hay Jürgen Schmidhuber… Geoffrey Hinton là một trong những người tiên phong “tái sử dụng” back-propagation để huấn luyện mạng neural và đã trở thành phương pháp kinh điển trong hơn 20 năm qua. Các đóng góp khác của Hinton có thể xem ở đây.

Ngoài lề một chút thì theo bài báo này, Hinton là cháu 4 đời của George Boole – nhà toán học nổi tiếng, tác giả của Đại số Boole và cũng là nền tảng của máy tính điện tử hiện đại. Dòng họ Hinton ở Anh cũng là dòng họ danh giá, với các tên tuổi như James Hinton (ông cố 4 đời của Geoffrey Hinton), Charles Hinton… Tuy nhiên chắc không dính dáng gì đến cô đào Paris Hilton.

Geoffrey Hinton đang dạy 1 khóa về neural network trên Coursera, và với kinh nghiệm 30 năm nghiên cứu của mình, nói quá một chút thì nghe Hinton giảng về neural network có khi cũng giống như nghe Phật dạy chân kinh. Vậy nên trong bài giảng của Hinton có thể tìm thấy vài câu kiểu như:

[Multi-layer neural networks] should never have been called multi-layer perceptrons. This is partly my fault, and I’m sorry about that.

Mặc dù vậy do tập trung vào đối tượng engineer là chủ yếu, nên khóa học trên coursera trải dài lê thê qua rất nhiều ví dụ và ứng dụng cụ thể, nhưng lại thiếu chi tiết về thuật toán và các khái niệm lí thuyết quan trọng. Slides của Hinton hơi nhàm chán, và bác đọc slides là chủ yếu, như hầu hết các tutorial khác.

Mặc dù vậy khi nào có dịp ta cũng sẽ điểm lại vài chủ đề thú vị trong khóa học này. Trước hết ta sẽ nói về sự tương hợp thú vị giữa mạng neural và bài toán object recognition trong Computer Vision.

Trong “lịch sử” Computer Vision, có 2 bài toán recognition đến nay có thể xem đã giải quyết xong là nhận dạng chữ số viết tay (hand-written digit recognition) và nhận dạng mặt người (face recognition/detection). Trong đó nhận dạng chữ số viết tay có thể xem là dạng cơ bản nhất của object recognition, và là bài toán classification điển hình với các dataset phổ biến như USPSMNIST.

Thực tế MNIST đã trở thành dataset chuẩn mực cho nhiều mô hình máy học trong (quá?) nhiều năm qua. Trên website của MNIST, ta có thể thấy nỗ lực của cộng đồng, bắt đầu từ năm 1998 cho tới tận nhiều công trình công bố trong năm 2012, với nhiều loại mô hình từ đơn giản như kNN cho tới phức tạp như convolutional NN LeNet-5 hay mạng NN 6 lớp với hàng ngàn node được huấn luyện bằng GPU.

Mặc dù có lịch sử “oanh liệt” như vậy, nhưng có thể nói ngay rằng MNIST đã được giải quyết rất tốt ngay từ khi ra đời. Trong paper năm 1998, Yann LeCun đã xây dựng LeNet-5 và đạt được 0.8% độ lỗi. Mặc dù kỉ lục hiện nay là 0.32%, nhưng vì tập test chỉ có 10000 mẫu nên LeNet-5 chỉ thua khoảng 50 mẫu. Trên thực tế thì LeNet-5 đã được dùng trong công nghiệp và xử lí tự động khoảng 10% lượng thư tín, check… hàng ngày ở Mĩ. Và có lẽ cũng chính vì thế mà mạng neural đã trở thành hot topic trong khoảng 1990-2000.

Như vậy kể từ năm 1986, khi thuật toán back-propagation được tái sử dụng cho neural network, thì đến 1998, mạng neural đã cơ bản giải quyết xong bài toán hand-written digit recognition, đánh dấu một bước quan trọng trong “lịch sử” Computer Vision.

 Tuy nhiên với giới hạn phần cứng vào thời đó, việc huấn luyện mạng neural kích thước lớn gặp khó khăn. Hơn nữa sau khi  Corinna Cortes and Vladimir N. Vapnik viết bài báo năm 1995 về soft-margin SVM thì 10 năm đầu thế kỉ 21 là thời kì của kernel machine. Thậm chí tận tháng 6/2011 khi mình đi dự một trường hè về ML ở Singapore thì một lecturer đã nói 2 topic hot nhất trong ML vào thời điểm đó là kernel machine và graphical model. Tất nhiên khẳng định đó phụ thuộc vào kinh nghiệm cá nhân của người nói, nhưng có thể thấy rằng neural network không được quan tâm rộng rãi như vậy trong suốt một thời kì khá dài.

Cũng trong khoảng tháng 7/2011 thì ở bên kia bán cầu, trong IJCNN 2011, Juergen Schmidhuber đã nói về sự phục hưng lần 2 của neural network (second Neural Network ReNNaissance). Lần này NN trở lại, và cùng với việc phần cứng ngày càng rẻ hơn cũng như sự phát triển của các thư viện tính toán song song trên GPU, việc huấn luyện các mạng neural lớn đã trở nên khả thi. Khó khăn duy nhất còn lại là thuật toán back-propagation tỏ ra không hiệu quả trên các mạng lớn, nhiều lớp và ngay cả trên recurrent neural network. Nhiều giải pháp đã được đưa ra và bước đầu mang đến thành công đáng kể, chằng hạn nhóm của Juergen Schmidhuber đã huấn luyện recurrent neural network và liên tục đứng đầu trong rất nhiều competition trong khoảng 2009-2011.

Và deep learning trở thành buzzword! Tháng 6/2012, bài báo ICML2012 của nhóm Andrew Ng., do Google tài trợ, được đưa lên NYTimes với tiêu đề rất sexy, làm ta có cảm giác như cộng đồng ML sắp tìm ra “chân lí”, mặc dù bản thân Andrew Ng. cũng hết sức thận trọng trong bài báo đó.

Chưa hết. Tháng 10/2012, neural network còn gây kinh ngạc trong cuộc thi ImageNet, tổ chức cùng với PASCAL VOC 2012. Trong 2/3 task của ImageNet 2012 là classification và localization, thì nhóm của Geoffrey Hinton, dùng một mạng neural lớn, đã thắng tuyệt đối với cách biệt lên đến 10-15% so với đội đứng thứ 2. Kết quả chi tiết có thể xem ở đây.

Mạng neural này, trình bày trong một poster ở NIPS2012, có ít nhất 7 lớp ẩn, vài lớp đầu là convolutional, các lớp sau là full-connected. Hàm activation được chọn là rectified linear (ta sẽ trở lại trong một bài khác) vì chi phí tính toán thấp hơn nhiều so với hàm logistic. Tổng cộng có khoảng 500.000 neuron và 60 triệu tham số. Rất nhiều trick được dùng để ngăn overfitting. Việc huấn luyện được thực hiện trên 2 GPU NVidia GTX 580, trong 1 tuần!

Điều đáng kinh ngạc nhất là dữ liệu input của mạng này chỉ là giá trị pixel RGB thô, không hề áp dụng bất kì phương pháp rút trích đặc trưng nào. Trong khi mọi hệ thống computer vision trước đó thường gồm nhiều bước rút trích đặc trưng, các đặc trưng này được thiết kế cẩn thận, tỉ mỉ và đôi khi rất “tricky”. Qua nhiều lớp như vậy, cuối cùng mới feed vào một mô hình máy học để cho ra kết quả cuối cùng. Mạng của Hinton không có gì giống như vậy. Mọi thứ như blackbox. Người ta claim (và tin?) rằng deep neural network có khả năng tự học feature trong các lớp ẩn của nó, nhưng thực sự thì việc này chưa có cơ sở lí thuyết vững chắc nào (có lẽ ai chứng minh/phủ định được giả thuyết này sẽ thắng giải Turing). Đôi khi người ta có thể ngờ vực rằng với một mô hình 60 triệu tham số, và thật nhiều dữ liệu huấn luyện, thì mọi hàm đều có thể được tổng quát hóa, bất kể nó có phức tạp đến đâu chăng nữa… Tất nhiên không dám chắc rằng huấn luyện một SVM trên dữ liệu nhiều chiều như vậy cũng sẽ cho kết quả tương đương, nhưng giả sử có mô hình cỡ 60 triệu tham số nào đó cũng làm được việc này, thì mọi giải thích intuitive và strong claim về “năng lực” của deep neural network có lẽ sẽ phá sản…

Tuy nhiên để kết thúc bài này về mối liên quan giữa neural network và object recognition, ta phải thừa nhận rằng deep NN là hệ thống mạnh nhất tới thời điểm này cho bài toán object recognition. Gần hai mươi năm trước, NN giải quyết MNIST, và bây giờ, trong một lần phục sinh ngoạn mục, vẫn là NN giải quyết tốt ImageNet. Con đường khám phá và mô phỏng năng lực thị giác của con người có lẽ đang có những tín hiệu mới trong tương lai.

Như một chú thích cuối cùng cho bài này, ta phải nhắc đến một bài báo khác dùng deep NN để thay thế Gaussian Mixture Model trong hệ thống speech recognition. Input của mạng này là các feature vector MFCC, output là xác suất hậu nghiệm để feed vào mô hình HMM kinh điển. Trên dataset TIMIT, phương pháp này giảm độ lỗi của S0A từ 24.4% xuống 20.7%. Một số người nói kết quả này sẽ “làm thay đổi cách làm speech recognition” của cả cộng đồng. Thực  tế cả MS Research, IBM và Google đã implement phương pháp này và đạt kết quả tốt hơn nhiều so với GMM, điển hình là Google đã ứng dụng kết quả này vào chức năng nhận dạng tiếng nói trong Android 4.1.

Còn nhiều vấn đề trong deep NN cần tiếp tục khám phá, chẳng hạn phương pháp tốt để huấn luyện, hay thậm chí là các ràng buộc/đảm bảo/điều kiện về lí thuyết cho mô hình này… Hi vọng trong thời gian tới sẽ còn nhiều bước tiến mới.

Advertisements

9 comments

  1. Chào bạn,

    Bạn nói rằng vấn đề nhận dạng chữ số viết tay đã được giải quyết, bạn có thể vui lòng gửi mình các thông tin tham khảo, ví dụ như thuật toán… dc ko? Cám ơn bạn nhiều.

  2. chào anh,
    e đang tìm hiểu ve learning to classify text (bang TensorFlow), e muốn tìm y tưởng mà hk biết paper nào nên đọc, nho a giới thiệu cho e một số paper liên quan. cám ơn anh!

      1. cám ơn a!
        em tìm hiểu về classify text, nhưng chưa tìm được đề tai cho mình, nên e muốn đọc thêm paper để lấy ý tưởng cho bản thân, hoặc các vấn đề mà tiếng việt vẫn chưa giải quyết đươc.

      2. Tốt nhất là e nên tìm 1 project cụ thể, nếu thắc mắc thì a có thể giúp. Chứ mông lung thế thì a cũng ko biết giúp thế nào.

        Cheers,

  3. classify text thường dùng RNN, nhưng cũng có thể dùng CNN. CNN dùng để xử lý ảnh vì thế để xử lý được Text thì phải chuyển các từ thành các ma trận có chiều dài bằng nhau cái này gọi là Embedding.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s