Cách đào tạo lớp LSTM của mạng sâu


13

Tôi đang sử dụng mạng lstm và chuyển tiếp nguồn cấp dữ liệu để phân loại văn bản.

Tôi chuyển đổi văn bản thành các vectơ một nóng và đưa từng văn bản vào lstm để tôi có thể tóm tắt nó dưới dạng một đại diện duy nhất. Sau đó tôi cho nó vào mạng khác.

Nhưng làm thế nào để tôi đào tạo lstm? Tôi chỉ muốn phân loại trình tự văn bản tôi có nên cho nó ăn mà không cần đào tạo không? Tôi chỉ muốn biểu diễn đoạn văn dưới dạng một mục duy nhất mà tôi có thể đưa vào lớp đầu vào của trình phân loại.

Tôi sẽ đánh giá rất cao bất kỳ lời khuyên với điều này!

Cập nhật:

Vì vậy, tôi có một lstm và phân loại. Tôi lấy tất cả các kết quả đầu ra của lstm và gộp chung chúng, sau đó tôi đưa mức trung bình đó vào bộ phân loại.

Vấn đề của tôi là tôi không biết cách huấn luyện lstm hoặc bộ phân loại. Tôi biết đầu vào nên là gì đối với lstm và đầu ra của phân loại nên là gì đối với đầu vào đó. Vì chúng là hai mạng riêng biệt đang được kích hoạt tuần tự, tôi cần biết và không biết đầu ra lý tưởng nên là gì cho lstm, cũng sẽ là đầu vào cho trình phân loại. Có cách nào để làm việc này không?

Câu trả lời:


9

Nơi tốt nhất để bắt đầu với các LSTM là bài đăng trên blog của A. Karpathy http://karpathy.github.io/2015/05/21/rnn-effectively/ . Nếu bạn đang sử dụng Torch7 (mà tôi rất muốn đề xuất), mã nguồn có sẵn tại github https://github.com/karpathy/char-rnn .

Tôi cũng sẽ cố gắng thay đổi mô hình của bạn một chút. Tôi sẽ sử dụng cách tiếp cận nhiều-một để bạn nhập từ thông qua bảng tra cứu và thêm một từ đặc biệt vào cuối mỗi chuỗi, để chỉ khi bạn nhập dấu "kết thúc chuỗi", bạn mới đọc được phân loại đầu ra và tính toán lỗi dựa trên tiêu chí đào tạo của bạn. Bằng cách này, bạn sẽ đào tạo trực tiếp trong một bối cảnh được giám sát.

Mặt khác, một cách tiếp cận đơn giản hơn là sử dụng đoạn2vec ( https://radimrehurek.com/gensim/models/doc2vec.html ) để trích xuất các tính năng cho văn bản đầu vào của bạn và sau đó chạy trình phân loại trên đầu các tính năng của bạn. Trích xuất tính năng vector đoạn rất đơn giản và trong python nó sẽ là:

class LabeledLineSentence(object):
    def __init__(self, filename):
        self.filename = filename

    def __iter__(self):
        for uid, line in enumerate(open(self.filename)):
            yield LabeledSentence(words=line.split(), labels=['TXT_%s' % uid])

sentences = LabeledLineSentence('your_text.txt')

model = Doc2Vec(alpha=0.025, min_alpha=0.025, size=50, window=5, min_count=5, dm=1, workers=8, sample=1e-5)
model.build_vocab(sentences)

for epoch in range(epochs):
    try:
        model.train(sentences)
    except (KeyboardInterrupt, SystemExit):
        break

Cảm ơn vì nhắn lại. Tôi sẽ xem xét những người. Bạn có lời khuyên nào về vấn đề cụ thể trong câu hỏi của tôi không, tôi đã cập nhật nó.
wordSmith

Tôi không nghĩ rằng quy trình được mô tả của bạn sẽ tạo ra bất kỳ kết quả nào. Trong những gì bạn sẽ đào tạo chống lại LSTM? Tôi không chắc tại sao tôi lại hiểu tại sao sẽ sử dụng LSTM trong trường hợp này cho việc học tính năng không giám sát cho cả câu. Bạn có bất kỳ tài liệu liên quan về cách tiếp cận của tôi, tôi có thể giúp bạn với? Điều này cũng có thể là mối quan tâm của bạn cũng như arxiv.org/abs/1306.3584 .
Yannis Assael

Tôi sẽ huấn luyện lstm dựa trên tập dữ liệu của các đoạn văn bản trong quá khứ và các lớp của chúng. Tôi không có ý định sử dụng học tập không giám sát. Tôi muốn tự đào tạo nó, nhưng không biết làm thế nào. Đây là cách tôi thực hiện lstm và trình phân loại mà không có thư viện máy học mà tôi biết là hoạt động: pastebin.com/63Cqrnef lstm có chức năng deepActivate kích hoạt lstm và sau đó là trình phân loại như tôi đã đề cập trong câu hỏi của tôi. Đây là một cái gì đó giống như những gì tôi đang cố gắng thực hiện: deeplearning.net/tutorial/lstm.html
wordSmith

nhưng khi tôi cố gắng kích hoạt cả hai như một mạng, tôi đã không xác định được từ mỗi lớp đầu ra. Thêm vào đó là ở đây: stats.stackexchange.com/q/159922/81435
wordSmith

1
Cảm ơn rât nhiều! Bạn đã cung cấp nhiều sự giúp đỡ hơn mức cần thiết. Cảm ơn bạn đã đi trên và hơn thế nữa.
wordSmith
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.