Câu trả lời:
Trong thuật ngữ mạng thần kinh:
Ví dụ: nếu bạn có 1000 ví dụ đào tạo và kích thước lô của bạn là 500, thì sẽ mất 2 lần lặp để hoàn thành 1 epoch.
FYI: Kích thước lô trao đổi so với số lần lặp để đào tạo mạng lưới thần kinh
Thuật ngữ "đợt" không rõ ràng: một số người sử dụng nó để chỉ định toàn bộ tập huấn luyện và một số người sử dụng nó để chỉ số lượng ví dụ đào tạo trong một lần chuyển tiếp / lùi (như tôi đã làm trong câu trả lời này). Để tránh sự mơ hồ đó và làm rõ rằng lô tương ứng với số lượng ví dụ đào tạo trong một lần chuyển tiếp / lùi, người ta có thể sử dụng thuật ngữ mini-batch .
Đại Kỷ Nguyên và lặp lại mô tả những điều khác nhau.
Một epoch mô tả số lần thuật toán nhìn thấy toàn bộ tập dữ liệu. Vì vậy, mỗi lần thuật toán nhìn thấy tất cả các mẫu trong bộ dữ liệu, một epoch đã hoàn thành.
Một lần lặp mô tả số lần một loạt các dữ liệu được truyền qua các thuật toán. Trong trường hợp mạng thần kinh, điều đó có nghĩa là vượt qua chuyển tiếp và vượt qua ngược . Vì vậy, mỗi khi bạn chuyển một lô dữ liệu qua NN, bạn đã hoàn thành một lần lặp .
Một ví dụ có thể làm cho nó rõ ràng hơn.
Giả sử bạn có bộ dữ liệu gồm 10 ví dụ (hoặc mẫu). Bạn có kích thước lô là 2 và bạn đã chỉ định bạn muốn thuật toán chạy trong 3 epoch.
Do đó, trong mỗi kỷ nguyên, bạn có 5 đợt (10/2 = 5). Mỗi lô được chuyển qua thuật toán, do đó bạn có 5 lần lặp trên mỗi epoch. Vì bạn đã chỉ định 3 epoch, bạn có tổng cộng 15 lần lặp (5 * 3 = 15) để đào tạo.
Nhiều thuật toán đào tạo mạng thần kinh liên quan đến việc thực hiện nhiều bản trình bày của toàn bộ dữ liệu được đặt vào mạng thần kinh. Thông thường, một bản trình bày duy nhất của toàn bộ tập dữ liệu được gọi là "epoch". Ngược lại, một số thuật toán trình bày dữ liệu cho mạng thần kinh một trường hợp duy nhất tại một thời điểm.
"Lặp lại" là một thuật ngữ tổng quát hơn nhiều, nhưng vì bạn đã hỏi về nó cùng với "epoch", tôi giả sử rằng nguồn của bạn đang đề cập đến việc trình bày một trường hợp duy nhất cho một mạng lưới thần kinh.
Để hiểu sự khác biệt giữa những điều này, bạn phải hiểu Thuật toán Giảm dần Gradient và Biến thể của nó .
Trước khi tôi bắt đầu với câu trả lời thực tế, tôi muốn xây dựng một số nền tảng.
Một lô là bộ dữ liệu đầy đủ. Kích thước của nó là tổng số ví dụ đào tạo trong bộ dữ liệu có sẵn.
Kích thước lô nhỏ là số lượng ví dụ mà thuật toán học xử lý trong một lần chạy (tiến và lùi).
Một lô nhỏ là một phần nhỏ trong bộ dữ liệu có kích thước lô nhỏ nhất định .
Lặp lại là số lô dữ liệu mà thuật toán đã thấy (hoặc đơn giản là số lần vượt qua thuật toán đã thực hiện trên tập dữ liệu).
Epochs là số lần thuật toán học tập nhìn thấy bộ dữ liệu hoàn chỉnh. Bây giờ, điều này có thể không bằng số lần lặp , vì tập dữ liệu cũng có thể được xử lý theo lô nhỏ, về bản chất, một lần chuyển có thể chỉ xử lý một phần của tập dữ liệu. Trong những trường hợp như vậy, số lần lặp không bằng số lượng kỷ nguyên .
Trong trường hợp giảm dần độ dốc Batch, toàn bộ lô được xử lý trên mỗi lần đào tạo. Do đó, trình tối ưu hóa giảm dần độ dốc dẫn đến sự hội tụ mượt mà hơn so với giảm dần độ dốc Mini-batch, nhưng mất nhiều thời gian hơn. Độ dốc giảm dần hàng loạt được đảm bảo để tìm tối ưu nếu nó tồn tại.
Giảm dần độ dốc Stochastic là trường hợp đặc biệt của độ dốc giảm dần theo lô nhỏ trong đó kích thước lô nhỏ là 1 .
Bạn có một dữ liệu đào tạo mà bạn xáo trộn và chọn các đợt nhỏ từ nó. Khi bạn điều chỉnh trọng số và độ lệch của mình bằng một lô nhỏ, bạn đã hoàn thành một lần lặp. Khi bạn hết đợt hàng nhỏ, bạn đã hoàn thành một kỷ nguyên. Sau đó, bạn xáo trộn dữ liệu đào tạo của bạn một lần nữa, chọn lại các đợt nhỏ của bạn và lặp lại tất cả chúng. Đó sẽ là kỷ nguyên thứ hai của bạn.
Thông thường, bạn sẽ chia bộ kiểm tra của mình thành các đợt nhỏ để mạng học hỏi và thực hiện đào tạo từng bước qua số lớp của bạn, áp dụng giảm dần độ dốc. Tất cả các bước nhỏ này có thể được gọi là lặp .
Một kỷ nguyên tương ứng với toàn bộ tập huấn luyện đi qua toàn bộ mạng một lần. Nó có thể hữu ích để hạn chế điều này, ví dụ để chống lại quá mức.
Một epoch chứa một vài lần lặp. Đó thực sự là cái "kỷ nguyên" này. Chúng ta hãy định nghĩa 'epoch' là số lần lặp trên tập dữ liệu để huấn luyện mạng thần kinh.
Tôi tin rằng việc lặp lại tương đương với một đợt chuyển tiếp + backprop trong đợt SGD. Epoch đang đi qua toàn bộ dữ liệu một lần (như một người khác đã đề cập).
Tôi đoán trong bối cảnh thuật ngữ mạng thần kinh:
Để xác định lần lặp (còn gọi là các bước ), trước tiên bạn cần biết về kích thước lô :
Kích thước hàng loạt: Có thể bạn sẽ không muốn xử lý tất cả các trường hợp đào tạo tại một lần chuyển tiếp vì nó không hiệu quả và cần một bộ nhớ lớn. Vì vậy, những gì thường được thực hiện là chia các trường hợp đào tạo thành các tập hợp con (tức là các đợt), thực hiện một lần vượt qua tập hợp con được chọn (tức là đợt), sau đó tối ưu hóa mạng thông qua truyền ngược. Số lượng các trường hợp đào tạo trong một tập hợp con (tức là, đợt) được gọi là batch_size .
Lặp lại: (còn gọi là các bước đào tạo) Bạn biết rằng mạng của bạn phải vượt qua tất cả các trường hợp đào tạo trong một lần để hoàn thành một kỷ nguyên. Nhưng chờ đã! khi bạn chia các trường hợp đào tạo của mình thành các đợt, điều đó có nghĩa là bạn chỉ có thể xử lý một đợt (một tập hợp các trường hợp đào tạo) trong một lần chuyển tiếp, vậy còn các đợt khác thì sao? Đây là lúc thuật ngữ Iteration phát huy tác dụng:
Ví dụ: khi bạn có 1000 trường hợp đào tạo và bạn muốn thực hiện theo đợt với kích thước 10; bạn phải thực hiện 10000/10 = 1000 lần lặp để hoàn thành một kỷ nguyên.
Hy vọng điều này có thể trả lời câu hỏi của bạn!
epoch là một phép lặp của tập hợp con của các mẫu để đào tạo, ví dụ, thuật toán giảm độ dốc trong mạng trung tính. Một tài liệu tham khảo tốt là: http://neuralnetworksanddeeplearning.com/chap1.html
Lưu ý rằng trang có mã cho thuật toán giảm độ dốc sử dụng epoch
def SGD(self, training_data, epochs, mini_batch_size, eta,
test_data=None):
"""Train the neural network using mini-batch stochastic
gradient descent. The "training_data" is a list of tuples
"(x, y)" representing the training inputs and the desired
outputs. The other non-optional parameters are
self-explanatory. If "test_data" is provided then the
network will be evaluated against the test data after each
epoch, and partial progress printed out. This is useful for
tracking progress, but slows things down substantially."""
if test_data: n_test = len(test_data)
n = len(training_data)
for j in xrange(epochs):
random.shuffle(training_data)
mini_batches = [
training_data[k:k+mini_batch_size]
for k in xrange(0, n, mini_batch_size)]
for mini_batch in mini_batches:
self.update_mini_batch(mini_batch, eta)
if test_data:
print "Epoch {0}: {1} / {2}".format(
j, self.evaluate(test_data), n_test)
else:
print "Epoch {0} complete".format(j)
Nhìn vào mã. Đối với mỗi epoch, chúng tôi tạo ngẫu nhiên một tập hợp con của các đầu vào cho thuật toán giảm độ dốc. Tại sao epoch có hiệu quả cũng được giải thích trong trang. Xin vui lòng xem qua.
Một khóa đào tạo đầy đủ trên toàn bộ tập dữ liệu sao cho mỗi ví dụ đã được nhìn thấy một lần. Do đó, một epoch đại diện cho các lần lặp đào tạo kích thước N / đợt , trong đó N là tổng số ví dụ.
Một bản cập nhật duy nhất về trọng lượng của một người mẫu trong quá trình đào tạo. Lặp lại bao gồm tính toán độ dốc của các tham số liên quan đến mất mát trên một lô dữ liệu.
như tiền thưởng:
Tập hợp các ví dụ được sử dụng trong một lần lặp (nghĩa là cập nhật một độ dốc ) của đào tạo mô hình .
Xem thêm kích thước lô .
nguồn: https://developers.google.com/machine-learning/glossary/
1.Epoch là 1 chu kỳ hoàn chỉnh trong đó mạng nơ-ron đã thấy tất cả dữ liệu của anh ta.
2. Người ta có thể nói 100.000 hình ảnh để huấn luyện mô hình, tuy nhiên không gian bộ nhớ có thể không đủ để xử lý tất cả các hình ảnh cùng một lúc, do đó chúng tôi chia tách đào tạo mô hình trên các khối dữ liệu nhỏ hơn được gọi là lô. ví dụ kích thước lô là 100.
3. Chúng ta cần che tất cả các hình ảnh bằng nhiều lô. Vì vậy, chúng ta sẽ cần 1000 lần lặp để bao gồm tất cả 100.000 hình ảnh. (Kích thước 100 lô * 1000 lần lặp)
4. Một khi Mạng thần kinh xem xét toàn bộ dữ liệu, nó được gọi là 1 Epoch (Điểm 1). Người ta có thể cần nhiều kỷ nguyên để đào tạo mô hình. (chúng ta hãy nói 10 kỷ nguyên).