28

trong khi tôi đang đọc trong cách xây dựng ANN trong pybrain, họ nói:Ý nghĩa của một Epoch trong Neural Networks Đào tạo

Train mạng đối với một số kỷ nguyên. Thông thường, bạn sẽ thiết lập một cái gì đó như 5 đây,

trainer.trainEpochs(1) 

Tôi nhìn cho rằng nghĩa là gì, sau đó tôi kết luận rằng chúng tôi sử dụng một kỷ nguyên của dữ liệu để cập nhật trọng lượng, Nếu tôi chọn để đào tạo các dữ liệu với 5 epochs như lời khuyên pybrain, tập dữ liệu sẽ được chia thành 5 tập hợp con và các chiến dịch sẽ cập nhật tối đa 5 lần.

Tôi quen thuộc với đào tạo trực tuyến nơi các cuộc chiến được cập nhật sau mỗi dữ liệu mẫu hoặc vectơ đặc trưng, ​​Câu hỏi của tôi là làm thế nào để đảm bảo rằng 5 kỷ nguyên sẽ đủ để xây dựng mô hình và thiết lập trọng số? lợi thế của cách này trên đào tạo trực tuyến là gì? Ngoài ra thuật ngữ "epoch" được sử dụng trên đào tạo trực tuyến, nó có nghĩa là một vector đặc trưng không?

Trả lời

65

Một kỷ nguyên bao gồm một chu trình đào tạo đầy đủ trên tập huấn luyện. Khi mỗi mẫu trong tập hợp được nhìn thấy, bạn bắt đầu lại - đánh dấu sự khởi đầu của kỷ nguyên thứ hai.

Điều này không liên quan gì đến việc thực hiện hàng loạt hoặc đào tạo trực tuyến. Hàng loạt có nghĩa là bạn cập nhật lần vào cuối thời đại (sau mỗi mẫu được nhìn thấy, ví dụ: #epoch cập nhật) và trực tuyến mà bạn cập nhật sau mỗi mẫu (#samples * cập nhật #epoch).

Bạn không thể chắc chắn nếu 5 epoch hoặc 500 là đủ cho hội tụ vì nó sẽ thay đổi từ dữ liệu sang dữ liệu. Bạn có thể ngừng đào tạo khi lỗi hội tụ hoặc thấp hơn ngưỡng nhất định. Điều này cũng đi vào lãnh thổ của việc ngăn chặn overfitting. Bạn có thể đọc trên early stoppingcross-validation về điều đó.

+0

Vì vậy, tập dữ liệu được chia thành các kỷ nguyên và mỗi kỷ nguyên bao gồm các mẫu? và mỗi kỷ nguyên được sử dụng để xây dựng một mô hình? –

+1

Đó không phải là những gì tôi nói. Tập dữ liệu không được chia thành bất kỳ thứ gì. Giả sử, tập dữ liệu có 10 mẫu (= vectơ dữ liệu). Mỗi mẫu được tuần tự hiển thị cho mạng. Sau mẫu nr. 10, bạn bắt đầu từ đầu với nr. 1, 2, 3 ...., 10, sau đó bắt đầu lại tại nr. 1, 2, 3 .... mỗi khi bạn bắt đầu từ đầu với mẫu đầu tiên, bạn thực hiện thêm một giai đoạn đào tạo. 3 kỷ nguyên được hiển thị dưới dạng dấu ngoặc vuông: [1,2,3,4 ... 10], [1 ... 10], [1 ... 10]. Kỷ nguyên là một lần truyền trên toàn bộ tập dữ liệu. – runDOSrun

+0

Có một epoch bao gồm cũng chạy các gốc gradient để tìm lỗi tối thiểu? Nếu vậy, tại sao sẽ chạy nó hơn và hơn giảm thiểu lỗi nhiều hơn? – mskw

1

xin lỗi vì đã kích hoạt lại chuỗi này. im mới với mạng neural và im điều tra tác động của đào tạo 'mini-batch'.

cho đến nay, như tôi hiểu nó, một kỷ nguyên (như runDOSrun đang nói) là thông qua việc sử dụng tất cả trong TrainingSet (không DataSet. Bởi vì DataSet = TrainingSet + ValidationSet). trong đào tạo hàng loạt nhỏ, bạn có thể chia nhỏ TrainingSet thành các Bộ nhỏ và cập nhật trọng số bên trong một kỷ nguyên. 'hy vọng' điều này sẽ làm cho mạng 'hội tụ' nhanh hơn.

một số định nghĩa về mạng nơron đã lỗi thời và, tôi đoán, phải được xác định lại.

+0

Tôi sẽ không nói định nghĩa tôi đưa ra là lỗi thời nhưng chỉ là trường hợp chuẩn. Vì lợi ích của tính toàn diện, tôi không bao gồm tất cả các ngoại lệ. Định nghĩa chung nhất của một kỷ nguyên sẽ là gọi nó là một chu kỳ lặp lại trong đó một tập hợp các mẫu đào tạo được đào tạo. – runDOSrun

+0

đúng. tôi đã liên quan đến điểm cập nhật của thời đại. nhưng yup. bạn đã đưa ra một câu trả lời tốt cho user2162652 –

12

Định nghĩa đơn giản của thời đại là,

Một kỷ nguyên là một về phía trước vượt quamột lạc hậu qua của tất cả ví dụ huấn luyện.

Lưu ý: epoch và lặp lại là hai khác nhau điều.

Ví dụ, đối với một tập hợp 1000 hình ảnh và kích cỡ lô là 10, mỗi lần lặp lại sẽ xử lý 10 hình ảnh với tổng số 100 lần lặp lại để đi qua toàn bộ tập hợp. Điều này được gọi là một epoch.Đào tạo có thể tiếp tục trong 100 năm kỷ nguyên.

Các vấn đề liên quan