Mất đào tạo đi xuống và lên một lần nữa. Chuyện gì đang xảy ra vậy?


26

Mất tập luyện của tôi đi xuống và sau đó lên một lần nữa. Nó rất kỳ lạ. Mất xác nhận chéo theo dõi tổn thất đào tạo. Chuyện gì đang xảy ra vậy?

Tôi có hai LSTMS xếp chồng như sau (trên Keras):

model = Sequential()
model.add(LSTM(512, return_sequences=True, input_shape=(len(X[0]), len(nd.char_indices))))
model.add(Dropout(0.2))
model.add(LSTM(512, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(len(nd.categories)))
model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adadelta')

Tôi huấn luyện nó cho 100 Kỷ nguyên:

model.fit(X_train, np.array(y_train), batch_size=1024, nb_epoch=100, validation_split=0.2)

Đào tạo trên 127804 mẫu, xác nhận trên 31951 mẫu

Và đó là những gì mất mát trông giống như: Đồ thị tổn thất


2
Việc học của bạn có thể lớn sau kỷ nguyên thứ 25. Hãy thử thiết lập nó nhỏ hơn và kiểm tra lại tổn thất của bạn
itdxer 11/03/2016

Nhưng làm thế nào có thể đào tạo thêm làm cho mất dữ liệu đào tạo lớn hơn?
patapouf_ai 11/03/2016

3
Xin lỗi, ý tôi là tỷ lệ học tập.
itdxer 11/03/2016

Cảm ơn bạn itdxer. Tôi nghĩ những gì bạn nói phải đi đúng hướng. Tôi đã thử sử dụng "adam" thay vì "adadelta" và điều này đã giải quyết được vấn đề, mặc dù tôi đoán rằng việc giảm tốc độ học tập của "adadelta" có lẽ cũng có hiệu quả. Nếu bạn muốn viết một câu trả lời đầy đủ, tôi sẽ chấp nhận nó.
patapouf_ai

Câu trả lời:


19

Tỷ lệ học tập của bạn có thể lớn sau kỷ nguyên 25. Vấn đề này rất dễ xác định. Bạn chỉ cần thiết lập một giá trị nhỏ hơn cho tỷ lệ học tập của bạn. Nếu vấn đề liên quan đến tốc độ học tập của bạn so với NN sẽ xảy ra lỗi thấp hơn mặc dù sau đó nó sẽ tăng trở lại. Điểm chính là tỷ lệ lỗi sẽ thấp hơn trong một số thời điểm.

Nếu bạn quan sát hành vi này, bạn có thể sử dụng hai giải pháp đơn giản. Đầu tiên là một đơn giản nhất. Thiết lập một bước rất nhỏ và đào tạo nó. Thứ hai là giảm tỷ lệ học tập của bạn một cách đơn điệu. Đây là một công thức đơn giản:

α(t+1)= =α(0)1+tm

Trong đó là tốc độ học tập của bạn, là số lần lặp của bạn và là một hệ số xác định tốc độ học tập giảm tốc độ. Điều đó có nghĩa là bước của bạn sẽ giảm thiểu theo hệ số hai khi bằng .t m t mmộttmtm


7
Vì OP đang sử dụng Keras, một tùy chọn khác để thực hiện cập nhật tốc độ học tập phức tạp hơn một chút sẽ là sử dụng một cuộc gọi lại như GiảmLROnPlateau , giúp giảm tốc độ học tập khi mất khả năng xác nhận không được cải thiện cho một số kỷ nguyên nhất định.
n1k31t4
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.