Cách đặt kích thước lô nhỏ trong SGD trong máy ảnh


10

Tôi mới đến Keras và cần sự giúp đỡ của bạn.

Tôi đang đào tạo một mạng lưới thần kinh ở Keras và chức năng mất của tôi là Squared Difference b / w giá trị mục tiêu và sản lượng của net.

Tôi muốn tối ưu hóa điều này bằng cách sử dụng Gradient Descent. Sau khi xem qua một số liên kết trên mạng, tôi đã biết rằng có 3 loại độ dốc được sử dụng chung:

  1. Độ dốc mẫu đơn : Ở đây, độ dốc được tính từ chỉ một mẫu mỗi lần lặp -> Độ dốc có thể bị nhiễu.
  2. Độ dốc theo lô : Ở đây, độ dốc trung bình của độ dốc được tính từ TẤT CẢ các mẫu trong tập dữ liệu -> Gradient là tổng quát hơn, nhưng không thể tìm thấy đối với các bộ dữ liệu khổng lồ.
  3. Độ dốc giảm dần hàng loạt nhỏ : Tương tự như Batch GD. Thay vì sử dụng toàn bộ tập dữ liệu, chỉ một số mẫu (được xác định bởi batch_size) được sử dụng để tính toán độ dốc trong mỗi lần lặp -> Không quá ồn ào và có thể tính toán được - - Tốt nhất trong cả hai thế giới.

Câu hỏi:

  1. Tôi muốn thực hiện Mini-Gradient Gradient Descent trong Keras. Tôi có thể làm cái này như thế nào? Có nên sử dụng trình tối ưu hóa SGD?
  2. Nếu SGD được sử dụng, làm cách nào để đặt batch_size? Dường như không có tham số nào cho hàm SGD để đặt batch_size.

    optimizer = keras.optimizers.SGD(lr=0.01, decay=0.1, momentum=0.1, nesterov=False)
  3. Có một tham số batch_size trong model.fit () trong Keras.

    history = model.fit(x, y, nb_epoch=num_epochs, batch_size=20, verbose=0, validation_split=0.1)

    Đây có giống với kích thước lô trong Mini-Gradient Gradient Descent không? Nếu không, chính xác có nghĩa là đào tạo trên một loạt các đầu vào là gì? Có nghĩa là 'batch_size' không. của các chủ đề chạy song song và cập nhật các trọng số mô hình song song?

Nếu nó giúp, đây là đoạn mã trăn tôi đã viết cho đến bây giờ .

Câu trả lời:


8

Có bạn đúng. Trong Keras batch_sizeđề cập đến kích thước lô trong Giảm dần Gradient hàng loạt. Nếu bạn muốn chạy Batch Gradient Descent, bạn cần đặt batch_sizesố lượng mẫu đào tạo. Mã của bạn trông hoàn hảo ngoại trừ tôi không hiểu tại sao bạn lưu trữ model.fithàm vào lịch sử đối tượng.


3
Anh ta lưu trữ trong một đối tượng lịch sử bởi vì trong máy ảnh, chức năng "phù hợp" trả về không chỉ mô hình được đào tạo, mà còn là đối tượng Lịch sử lưu trữ mô hình được đào tạo, lịch sử đào tạo và nhiều thứ khác. Có một số ví dụ trong các ví dụ máy ảnh như thế.
Ygor de Mello Canalli

1

Bỏ qua các cân nhắc về mặt lý thuyết, đưa ra tập dữ liệu thực tế và kích thước của mạng nơ ron hiện đại điển hình, thường sẽ mất nhiều thời gian một cách vô lý để đào tạo các lô kích thước một, và bạn sẽ không có đủ RAM và / hoặc bộ nhớ GPU để đào tạo trên toàn bộ dữ liệu một lần. Vì vậy, thường không phải là câu hỏi "nếu" lô nhỏ nên được sử dụng, mà là "cỡ nào" của lô bạn nên sử dụng. Đối batch_sizesố là số lượng quan sát để đào tạo trong một bước duy nhất, thường kích thước nhỏ hơn hoạt động tốt hơn vì có hiệu lực thường xuyên. Hơn nữa, mọi người thường sử dụng các trình tối ưu hóa phức tạp hơn (ví dụ Adam, RMSprop) và các thủ thuật chính quy hóa khác, điều này làm cho mối quan hệ giữa hiệu suất mô hình, kích thước lô, tốc độ học và thời gian tính toán trở nên phức tạp hơn.


Cảm ơn bạn đã làm rõ điều này. Nhưng làm thế nào tôi có thể chuẩn hóa dữ liệu theo cách này. Tôi biết rằng tôi có thể bình thường hóa tất cả dữ liệu đào tạo và kiểm tra hoàn toàn nhưng điều này sẽ làm cho các lô nhỏ được đưa vào quá trình tối ưu hóa không còn bình thường hóa nữa.
Mr.Robot

@ Mr.Robot tại sao bạn cho rằng mỗi lô cần được chuẩn hóa độc lập?
Tim

Trước đây tôi đã đọc một bài đăng nói rằng dữ liệu đào tạo và kiểm tra nên được xử lý riêng (ví dụ: phân tách kiểm thử tàu trước, sau đó xử lý chúng riêng lẻ). Tôi nghĩ rằng điều này cũng sẽ áp dụng khi tối ưu hóa bằng cách sử dụng các lô nhỏ. Tôi đang nghi ngờ điều này có thể tốt cho sự hội tụ?
Mr.Robot

@ Mr.Robot reductio ad absurdum : với các lô nhỏ có kích thước 1, bạn có vượt qua được khi dữ liệu của bạn chỉ là 0 không? Bạn có thể hỏi nó như một câu hỏi riêng nếu bạn muốn.
Tim

Cảm ơn bạn đã chỉ ra điều này! Bây giờ tôi bây giờ các vấn đề với lý luận của tôi.
Mr.Robot
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.