Deep Learning huấn luyện để hiểu văn bản

Language Development

Language Development

Hãy quên đi ý nghĩa của từ ngữ (words), quên đi ngữ pháp (grammar), quên đi cú pháp (syntax), quên đi cả khái niệm (concept) của từ vựng. Bây giờ hãy để máy tính tự nó tìm hiểu mọi thứ từ đầu.

Đây là câu chuyện tuyệt vời mà Xiang Zhang và Yann LeCun từ NYU trong một bài báo gần đây của họ “Text Understanding from Scratch”. Họ thừa nhận rằng deep learning có thể làm cho máy tính hiểu được văn bản (text understanding), mà không cần bất kỳ kiến thức gì về ngôn ngữ.

Deep learning trong phân loại văn bản (text classification)

Bài báo nói về cách sử dụng deep learning để phân loại văn bản, ví dụ để xác định xem ý kiến của khách hàng về một sản phẩm là tích cực hay tiêu cực.

Deep learning đã rất thành công khi áp dụng trên big data trong vài năm qua, đặc biệt là đối với dữ liệu có cấu trúc tạm thời (temporally) và không gian (spatially) như hình ảnh và video. Nhưng lại ít thành công hơn trong xử lý văn bản: văn bản thường được xem như một chuỗi các từ, vấn đề lớn ở đây đó là có quá nhiều từ trong một ngôn ngữ để có thể cài đặt trực tiếp vào các hệ thống deep learning.

Tiếng Anh có gần 200.000 từ riêng biệt, vì vậy neural networks sẽ cần 200.000 neurons tại input layer. Với số chiều dữ liệu cao như vậy, ta sẽ khó xây dựng được những mô hình (deep) networks, và ta phải mất công thiết kế các mô hình cho cấu trúc cú pháp và ngữ nghĩa (semantic structure).

Đội LeCun đã đưa ra một giải pháp cho vấn đề này:

Thay vì xem văn bản là một chuỗi các từ, ta có thể xem nó như một chuỗi các ký tự được không?

Vì chỉ có vài chục ký tự trong một ngôn ngữ nên việc xây dựng các hệ thống deep learning cho phân loại văn bản sẽ khả thi hơn.

Đây là một ý tưởng rất táo bạo, vì những gì họ đang nói ở đây đó là “Hãy quên tất cả mọi thứ chúng ta biết về ngôn ngữ: ý nghĩa của từ, khái niệm về một từ, ngữ pháp, cú pháp – chúng ta hãy làm cho hệ thống machine learning tự nó khám phá tất cả mọi thứ có liên quan đến tác vụ này”.

Và điều đáng ngạc nhiên đó là nó hoạt động rất tốt!

Phương pháp được sử dụng là ConvNets

Convolutional Networks (ConvNets) là hệ thống deep learning được sử dụng trong bài báo. Được phát minh bởi LeCun vào những năm cuối thập niên 80, ConvNets sử dụng các phép tính tích chập (convolution), áp dụng cho dữ liệu, đặc biệt hữu ích trong các tác vụ như nhận diện (recognition) hay phân loại (classification). Ý tưởng đằng sau tích chập đó là chúng có thể được dùng để mã hóa các phép biến đổi toán học khác nhau tại input layer.

Trong xử lý ảnh, tích chập thường được dùng với kernel (tiết lộ một số đặc tính của hình ảnh). Ví dụ, ta thử ứng dụng một số kernel (ma trận) khác nhau lên cùng một bức ảnh như hình minh hoạ bên dưới. Xem thêm về convolution.

Convolution

Convolution

ConvNets sử dụng ý tưởng này nhưng thay vì sử dụng các giá trị cố định cho kernel, nó để cho network suy ra một cách tự động. Vì vậy mà các phép chuyển đổi trên ảnh phù hợp với các tác vụ liên quan đến nhận diện.

Learning icml characters

Learning icml characters

Tương tự như vậy, trong bài báo này, mỗi kí tự được chuyển đổi thành binary vector (‘a’ is [1,0,…,0], ‘b’ is [0,1,0,…,0] and ‘z’ is [0,…,0,1]). Nói chung, một chuỗi kí tự giống như một bức ảnh, nhờ vậy tích chập có thể áp dụng lên.

Hệ thống được thiết kế như một deep ConvNet truyền thống, với sự tiếp nối của convolutional và pooling layer. Kết quả đầu ra của convolution giúp cho việc huấn luyện trên tập các đặc trưng được đa dạng hoá hơn, bằng cách áp dụng liên tiếp các convolution với nhau như chúng ta có thể nhìn vào sơ đồ bên dưới.

Text deep learning

Text deep learning

Làm thế nào nó hoạt động?

Như đã đề cập ở đầu bài, điều đáng ngạc nhiên đó là mọi thứ đều hoạt động. Hãy nhớ rằng, thậm chí hệ thống không biết từ ngữ được xây dựng như thế nào! Các thí nghiệm của nhóm nghiên cứu cho thấy rằng hệ thống của họ thực sự hoạt động rất tốt trên nhiều tác vụ khác nhau, bao gồm:

  • Quyết định xem các bài review trên Amazon là tích cực hay tiêu cực với độ chính xác 96%, và dự đoán con số thực tế của rating star với độ chính xác 73%.
  • Dự đoán chủ đề chính của các bài viết tiếng Anh, tiếng Trung Quốc, và các bài viết trên Yahoo với độ chính xác tương ứng là 92%, 97% và 70%.

Điều làm tôi thích ở bài báo này đó là các tác giả có khả năng suy nghĩ bên ngoài cái hộp. Đó là một ý tưởng táo bạo để phân loại văn bản mà không cần bất kỳ kiến thức về từ ngữ (Nếu là bạn, bạn có đặt cược vào sự thành công của giả thuyết này không?).

Nguồn: http://www.kdnuggets.com/2015/03/deep-learning-text-understanding-from-scratch.html

Advertisements

6 thoughts on “Deep Learning huấn luyện để hiểu văn bản

    • Hi em, DL đúng như em nói là một mảng của ML.
      Lý thuyết thì em có thể bắt đầu từ logistics regression để hiểu hàm phân lớp sigmoid hoạt động như thế nào trên tập dữ liệu đơn giản, hiểu được hàm này rồi em sẽ biết rằng thực tế người ta dùng hàm tanh là chủ yếu, sau đó bạn nghiên cứu mô hình ANN phân lớp nhị phân ra sao, từ đó nâng cao lên phân lớp cho multi-class bằng cách nào. Trong ANN, bạn nên nghiên cứu kĩ cách hoạt động của backpropagation, đây là kĩ thuật giúp bạn update tham số cho các layer lúc training và đầu ra của bạn là gì, ma trận tham số hay vector tham số. Lúc đem testing thì sử dụng model đã trained ra sao…
      Em nên cài đặt tất cả các tiến trình trên bằng ngôn ngữ bất kỳ để hiểu rõ bản chất như Python hay Matlab đều được. Đến đây, em đã có khả năng nghiên cứu các biến thể của ANN như CNN, RNN, LSTM, …
      Em có thể sử dụng các framework như Tensorflow hay Torch, Theano, Caffe,… để cài đặt khi đã hiểu nguyên lý hoạt động của mô hình này.

      Số lượt thích

      • thanks anh,
        Mà khi em bắt đầu với DL mà chưa học qua ML thì có những khái niệm, kí hiệu toán học, em không hiểu. Nếu không học qua ML thì có thể hiểu được DL không anh.
        Em hỏi thêm, em không đi sâu vào nghiên cứu thuật toán, vậy em chỉ cần hiểu thuật toán nó làm việc như thế nào, các tham số truyền vào để tinh chỉnh tùy vào từng bài toán cụ thể, vậy có ổn không anh

        Số lượt thích

        • Ký hiệu toán em có thể lật lại kiến thức đã học nên không có gì khó khăn.
          Em nên cài đặt từ đầu thì mới có thể hiểu được thuật toán. Bản chất chung của IT là input/process/output. Em có thể bỏ qua process và xem input output thế nào, nhưng tham khảo như vậy sẽ ko hiểu được cách tinh chỉnh thế nào như em mong muốn.

          Số lượt thích

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s