Làm thế nào để sử dụng RBM để phân loại?


12

Hiện tại tôi đang chơi với Máy Boltzmann bị hạn chế và vì tôi đang ở đó nên tôi muốn thử phân loại các chữ số viết tay với nó.

Mô hình tôi tạo bây giờ là một mô hình thế hệ khá lạ mắt nhưng tôi không biết làm thế nào để tiến xa hơn với nó.

Trong bài viết này , tác giả nói rằng, sau khi tạo ra một mô hình thế hệ tốt, một " sau đó huấn luyện một trình phân loại phân biệt (nghĩa là phân loại tuyến tính, Máy vectơ hỗ trợ) trên đầu RBM bằng cách sử dụng các mẫu được dán nhãn " và tiếp tục tuyên bố " kể từ khi bạn tuyên truyền các vectơ dữ liệu đến các đơn vị ẩn của mô hình RBM để có được các vectơ đơn vị ẩn hoặc biểu diễn dữ liệu ở mức cao hơn ". Vấn đề là tôi không chắc mình có làm đúng hay không.

Điều đó có nghĩa là tất cả những gì tôi phải làm là truyền bá đầu vào cho các đơn vị ẩn và ở đó tôi có tính năng RBM để phân loại?

Ai đó có thể giải thích quá trình này cho tôi?


Máy Boltzmann bị hạn chế là một trong những thành phần sớm nhất được sử dụng để học sâu. Trên thực tế, công việc quan trọng đầu tiên trong DNN được thực hiện bởi Hinton là mạng lưới niềm tin sâu sắc dựa trên RBM Vui lòng tìm kiếm bài báo này (mạng lưới niềm tin sâu sắc, 2007, cho Hinton) để biết thêm thông tin. Tại trang web của anh ấy, bạn có thể tìm thấy các tài nguyên rất quan trọng cũng như một thử nghiệm demo cs.toronto.edu/~hinton/digits.html
Bashar Haddad

@hbaderts Tôi bắt đầu chơi xung quanh với RBM. Câu trả lời được chấp nhận là dễ đọc. Tôi muốn yêu cầu làm rõ, lớp ẩn RBM là ngẫu nhiên sau khi lấy mẫu từ phân phối nhị phân. Để phân loại, các xác suất đơn vị ẩn được sử dụng hoặc các đơn vị ẩn được lấy mẫu từ phân phối nhị phân (1 và 0) được chuyển vào phân loại?
M3tho5

Câu trả lời:


15

Đánh giá về các máy Boltzmann bị hạn chế

v

p(v|h)= =ΠTôi= =0Vp(vTôi|h),
p(vTôi|h)= =σ(mộtTôi+Σj= =0HwjTôihj)
σmộtTôiTôiwjTôihjvTôip(v|h)hv

Sử dụng RBM để phân loại

h

Vectơ ẩn này chỉ là một phiên bản được chuyển đổi của dữ liệu đầu vào - điều này không thể tự phân loại bất cứ thứ gì. Để thực hiện phân loại, bạn sẽ huấn luyện bất kỳ trình phân loại nào (phân loại tuyến tính, SVM, mạng thần kinh tiếp liệu hoặc bất cứ thứ gì khác) với vectơ ẩn thay vì dữ liệu huấn luyện "thô" làm đầu vào.

Nếu bạn đang xây dựng một mạng lưới niềm tin sâu sắc (DBN) - được sử dụng để huấn luyện trước các mạng thần kinh chuyển tiếp thức ăn sâu theo kiểu không giám sát - bạn sẽ lấy vectơ ẩn này và sử dụng nó làm đầu vào cho RBM mới, mà bạn xếp chồng trên nó Bằng cách đó, bạn có thể huấn luyện từng lớp mạng cho đến khi đạt được kích thước mong muốn mà không cần bất kỳ dữ liệu được dán nhãn nào. Cuối cùng, bạn sẽ thêm ví dụ: một lớp softmax lên trên cùng và huấn luyện toàn bộ mạng với việc sao lưu trong nhiệm vụ phân loại của bạn.


Cảm ơn bạn đã chỉnh sửa @ Seanny123, điều này làm cho nó dễ đọc hơn rất nhiều.
hbaderts

5

@hbaderts mô tả toàn bộ quy trình làm việc một cách hoàn hảo. Tuy nhiên, nó có thể không có ý nghĩa gì trong trường hợp bạn hoàn toàn mới với ý tưởng này. Do đó, tôi sẽ giải thích nó theo cách của giáo dân (do đó, tôi sẽ bỏ qua chi tiết):

Hãy nghĩ về các mạng sâu như một chức năng để chuyển đổi dữ liệu của bạn. Ví dụ về các phép biến đổi bao gồm chuẩn hóa, lấy nhật ký dữ liệu, vv Các mạng sâu bạn đang đào tạo có nhiều lớp. Mỗi lớp được đào tạo bằng cách sử dụng một số loại thuật toán học tập. Đối với lớp đầu tiên, bạn chuyển dữ liệu gốc làm đầu vào và cố gắng lấy một hàm sẽ trả lại cho bạn "cùng dữ liệu gốc" đó làm đầu ra. Tuy nhiên, bạn không có được đầu ra hoàn hảo. Do đó, bạn sẽ nhận được một phiên bản chuyển đổi của đầu vào của bạn là đầu ra của lớp đầu tiên.

Bây giờ, đối với lớp thứ hai, bạn lấy những "dữ liệu được chuyển đổi" đó và chuyển chúng làm đầu vào và lặp lại toàn bộ quá trình học tập. Bạn tiếp tục làm điều đó cho tất cả các lớp trong mạng lưới sâu của bạn.

Ở lớp cuối cùng, những gì bạn nhận được là một "phiên bản được chuyển đổi" của dữ liệu đầu vào ban đầu của bạn. Điều này có thể được coi là mức độ trừu tượng cao hơn của dữ liệu đầu vào ban đầu của bạn. Lưu ý rằng, bạn chưa sử dụng nhãn / đầu ra trong mạng sâu của mình. Do đó, tất cả mọi thứ cho đến thời điểm này là học tập không giám sát. Điều này được gọi là đào tạo trước lớp khôn ngoan.

Bây giờ, bạn muốn đào tạo một mô hình phân loại / hồi quy và đây là một vấn đề học tập có giám sát. Cách bạn đạt được mục tiêu đó là bằng cách lấy "phiên bản biến đổi cuối cùng" của đầu vào ban đầu của bạn từ lớp cuối cùng trong mạng sâu của bạn và sử dụng chúng làm đầu vào cho bất kỳ trình phân loại nào (ví dụ: phân loại knn / phân loại mềm / hồi quy logistic, v.v.). Điều này được gọi là xếp chồng.

Khi bạn đang đào tạo trình phân loại / người học bước cuối cùng này, bạn tuyên truyền tất cả việc học của bạn trong mạng hoàn chỉnh. Điều này đảm bảo rằng bạn có thể học hỏi từ các nhãn / đầu ra và sửa đổi các tham số khôn ngoan của lớp đã học cho phù hợp.

Vì vậy, một khi bạn đã đào tạo mô hình thế hệ của mình, hãy lấy đầu ra của mô hình thế hệ của bạn và sử dụng mô hình đó làm đầu vào cho trình phân loại / người học. Hãy để lỗi chảy qua toàn bộ mạng khi quá trình học tiếp tục để bạn có thể sửa đổi tham số lớp khôn ngoan đã học trong các bước trước.


0

Bạn có thể huấn luyện các RBM xếp chồng lên nhau trên hình ảnh của mình và sau đó huấn luyện RBM cuối cùng về cách ghép đầu ra từ ngăn xếp RBM và nhãn. Sau đó, bạn thực sự có thể sử dụng RBM để phân loại. Bài viết này của Hinton ++ giải thích cách tiếp cận này Thuật toán học nhanh cho Deep Belief Nets , bạn cũng có thể xem bản demo này

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.