Tại sao kích thước lô nhỏ tốt hơn một lô ĐỔI đơn lẻ với tất cả dữ liệu đào tạo?


40

Tôi thường đọc rằng trong trường hợp các mô hình Deep Learning, thực tế thông thường là áp dụng các đợt nhỏ (thường là một đợt nhỏ, 32/64) trong một số kỷ nguyên đào tạo. Tôi thực sự không thể hiểu được lý do đằng sau này.

Trừ khi tôi nhầm, kích thước lô là số lượng các trường hợp đào tạo được mô hình nhìn thấy trong một lần lặp đào tạo; và epoch là một lượt đầy đủ khi từng mô hình đào tạo đã được mô hình nhìn thấy. Nếu vậy, tôi không thể thấy lợi thế của việc lặp lại so với một tập hợp con gần như không đáng kể của các trường hợp đào tạo nhiều lần trái ngược với việc áp dụng "lô tối đa" bằng cách hiển thị tất cả các trường hợp đào tạo có sẵn trong mỗi lượt cho mô hình (tất nhiên, giả sử là đủ kí ức). Ưu điểm của phương pháp này là gì?


1
Kiểm tra câu trả lời này .
Icyblade



Câu trả lời:


46

Lợi thế chính của việc sử dụng xe buýt nhỏ trái ngược với bộ dữ liệu đầy đủ quay trở lại ý tưởng cơ bản về độ dốc dốc ngẫu nhiên 1 .

Trong việc giảm độ dốc hàng loạt, bạn tính toán độ dốc trên toàn bộ tập dữ liệu, tính trung bình trên tiềm năng một lượng thông tin khổng lồ. Phải mất rất nhiều bộ nhớ để làm điều đó. Nhưng điểm chấp thực sự là quỹ đạo độ dốc hàng loạt đưa bạn vào một điểm xấu (điểm yên ngựa).

Trong SGD tinh khiết, mặt khác, bạn nên cập nhật các thông số của bạn bằng cách thêm (dấu trừ) gradient tính trên một đơn thể hiện của các tập dữ liệu. Vì nó dựa trên một điểm dữ liệu ngẫu nhiên, nó rất ồn và có thể đi theo hướng khác xa với độ dốc hàng loạt. Tuy nhiên, độ ồn chính xác là những gì bạn muốn trong tối ưu hóa không lồi, bởi vì nó giúp bạn thoát khỏi các điểm yên ngựa hoặc cực tiểu địa phương (Định lý 6 trong [2]). Nhược điểm là nó không hiệu quả khủng khiếp và bạn cần lặp lại toàn bộ tập dữ liệu nhiều lần để tìm ra giải pháp tốt.

Phương pháp của xe buýt nhỏ là một sự thỏa hiệp giúp truyền đủ tiếng ồn cho mỗi lần cập nhật độ dốc, đồng thời đạt được sự hội tụ nhanh tương đối.

1 chai, L. (2010). Học máy quy mô lớn với độ dốc dốc ngẫu nhiên. Trong Kỷ yếu của COMPSTAT'2010 (trang 177-186). Physica-Verlag HD.

[2] Ge, R., Huang, F., Jin, C., & Yuan, Y. (2015, tháng 6). Thoát khỏi điểm yên ngựa - Độ dốc ngẫu nhiên trực tuyến để phân rã. Trong COLT (trang 797-842).

BIÊN TẬP :

Tôi vừa thấy bình luận này trên facebook của Yann LeCun, đưa ra một góc nhìn mới về câu hỏi này (xin lỗi không biết cách liên kết với fb.)

Tập luyện với xe buýt nhỏ có hại cho sức khỏe của bạn. Quan trọng hơn, nó không tốt cho lỗi kiểm tra của bạn. Bạn bè không cho phép bạn bè sử dụng xe buýt nhỏ hơn 32. Hãy đối mặt với điều đó: những người duy nhất đã chuyển sang kích thước xe buýt nhỏ hơn một lần kể từ năm 2012 là do GPU không hiệu quả đối với kích thước lô nhỏ hơn 32. Đó là một lý do khủng khiếp. Nó chỉ có nghĩa là phần cứng của chúng tôi hút.

Ông đã trích dẫn bài báo này vừa được đăng trên arXiv vài ngày trước (tháng 4 năm 2018), rất đáng để đọc,

Dominic Masters, Carlo Luschi, Xem xét lại chương trình đào tạo hàng loạt nhỏ cho mạng lưới thần kinh sâu , arXiv: 1804.07612v1

Từ trừu tượng,

Trong khi việc sử dụng các lô nhỏ lớn làm tăng tính song song tính toán có sẵn, thì việc đào tạo lô nhỏ đã được chứng minh là mang lại hiệu quả tổng quát hóa cao hơn ...

Hiệu suất tốt nhất đã đạt được một cách nhất quán cho các kích thước lô nhỏ giữa m = 2 và m = 32, tương phản với công việc gần đây ủng hộ việc sử dụng kích thước lô nhỏ trong hàng ngàn.


2
Tại sao nên giảm độ dốc theo lô nhỏ có nhiều khả năng tránh cực tiểu cục bộ xấu hơn so với giảm dần theo lô? Bạn có bất cứ điều gì để ủng hộ yêu cầu đó?
Martin Thoma

@MartinThoma Xem Định lý 6 trong [2], một bài báo gần đây về JMLR.
horaceT

2
ϕ(w,X)

2
@MartinThoma Cho rằng có một cực tiểu toàn cầu cho tập dữ liệu mà chúng tôi được cung cấp, đường dẫn chính xác đến cực tiểu toàn cầu đó phụ thuộc vào những điều khác nhau cho mỗi phương thức GD. Đối với lô, khía cạnh ngẫu nhiên duy nhất là các trọng số khi khởi tạo. Đường dẫn gradient sẽ giống nhau nếu bạn huấn luyện NN một lần nữa với cùng trọng số và tập dữ liệu ban đầu. Đối với lô nhỏ và SGD, đường dẫn sẽ có một số khía cạnh ngẫu nhiên giữa mỗi bước từ lấy mẫu ngẫu nhiên các điểm dữ liệu để đào tạo ở mỗi bước. Điều này cho phép mini-batch và SGD thoát khỏi tối ưu cục bộ nếu chúng đang trên đường.
Wesley

8

Bộ nhớ không thực sự là lý do để làm điều này, bởi vì bạn chỉ có thể tích lũy độ dốc khi bạn lặp qua tập dữ liệu và áp dụng chúng ở cuối, nhưng vẫn ở SGD, bạn áp dụng chúng ở mỗi bước.

Những lý do mà SGD được sử dụng rộng rãi là:

1) Hiệu quả. Thông thường, đặc biệt là sớm trong đào tạo, độ dốc tham số cho các tập hợp con khác nhau của dữ liệu sẽ có xu hướng chỉ theo cùng một hướng. Vì vậy, độ dốc được đánh giá vào 1/100 của dữ liệu sẽ chỉ gần đúng theo hướng chung như trên tập dữ liệu đầy đủ, nhưng chỉ yêu cầu 1/100 tính toán. Do việc hội tụ trên một mạng sâu phi tuyến tính thường đòi hỏi hàng nghìn hoặc hàng triệu lần lặp cho dù độ dốc của bạn tốt đến mức nào, nên thực hiện nhiều cập nhật dựa trên ước tính giá rẻ của gradient thay vì vài cập nhật dựa trên những điều tốt.

2) Tối ưu hóa: Các cập nhật ồn ào có thể cho phép bạn thoát khỏi tối ưu cục bộ xấu (mặc dù tôi không có nguồn cho thấy điều này quan trọng trong thực tế).

3) Khái quát hóa. Dường như (xem Zhang et al: Theory of Deep Learning III: Generalization Properties of SGD ) rằng SGD thực sự giúp khái quát hóa bằng cách tìm cực tiểu "phẳng" trên tập huấn luyện, nhiều khả năng cũng là cực tiểu trên tập kiểm tra. Theo trực giác, chúng ta có thể nghĩ về SGD như một cách đóng gói - bằng cách tính toán các tham số của chúng tôi dựa trên nhiều dữ liệu nhỏ, chúng tôi áp dụng các quy tắc khái quát hóa trên các xe buýt nhỏ và hủy bỏ các quy tắc không làm cho chúng tôi ít bị quá tải tập huấn luyện.


3

Trừ khi tôi nhầm, kích thước lô là số lượng phiên bản đào tạo mà mô hình nhìn thấy trong một lần lặp đào tạo

Đúng (mặc dù tôi sẽ gọi nó là "bước cập nhật trọng lượng")

và epoch là một lượt đầy đủ khi từng mô hình đào tạo đã được nhìn thấy bởi mô hình

Chính xác

Nếu vậy, tôi không thể thấy lợi thế của việc lặp lại so với một tập hợp con gần như không đáng kể của các trường hợp đào tạo nhiều lần trái ngược với việc áp dụng "lô tối đa" bằng cách hiển thị tất cả các trường hợp đào tạo có sẵn trong mỗi lượt cho mô hình (tất nhiên, giả sử là đủ kí ức). Ưu điểm của phương pháp này là gì?

Chà, khá nhiều đó. Bạn thường không có đủ bộ nhớ. Hãy nói rằng chúng ta đang nói về phân loại hình ảnh. ImageNet là một bộ dữ liệu rất phổ biến. Trong một thời gian dài, VGG-16D là một trong những mod.els phổ biến nhất. Nó cần tính toán 15 245 800 phao (trong các bản đồ đặc trưng) cho một hình ảnh 224x224. Điều này có nghĩa là khoảng 61 MB cho mỗi hình ảnh. Đây chỉ là một giới hạn thấp hơn về mức độ bộ nhớ bạn cần trong quá trình đào tạo cho mỗi hình ảnh. ImageNet chứa vài nghìn (tôi nghĩ khoảng 1,2 triệu?) Hình ảnh. Mặc dù bạn có thể có nhiều bộ nhớ chính nhưng chắc chắn bạn không có nhiều bộ nhớ GPU đó. Tôi đã thấy GPU tăng tốc mọi thứ lên khoảng 21 lần. Vì vậy, bạn chắc chắn muốn sử dụng GPU.

Ngoài ra: Thời gian cho một lô nhỏ thấp hơn nhiều. Vì vậy, câu hỏi là: Bạn có muốn thực hiện n bước cập nhật với mini-batch mỗi giờ trên GPU hoặc m cập nhật các bước với đợt không có GPU, trong đó n >> m.


Đó thực sự không phải là vấn đề của bộ nhớ hạn chế. Bạn luôn có thể tính toán độ dốc trên tập dữ liệu của mình theo một số lô với các tham số mô hình cố định (có chức năng tương đương với tính toán độ dốc trong một lô khổng lồ). Trên thực tế, đó là về các đặc tính tổng quát gây ra bởi tính ngẫu nhiên / tiếng ồn của SGD / MBGD và thực tế là cần ít epoch hơn thông qua tập dữ liệu của bạn để đạt được sự hội tụ. Việc cập nhật các tham số mô hình trong một kỷ nguyên duy nhất dẫn đến các tham số trung gian tốt hơn giúp cho việc tính toán độ dốc tiếp theo trong kỷ nguyên có nhiều thông tin hơn.
Madison ngày

1

Ngoài các câu trả lời khác, tôi nghĩ rằng đáng để chỉ ra rằng có hai đại lượng riêng biệt nhưng thường được kết hợp:

  1. Số lượng đầu vào được sử dụng để tính toán độ dốc của các tham số trong mỗi bước.

Như những người khác đã chỉ ra, độ dốc đối với xe buýt nhỏ là một xấp xỉ của độ dốc thực sự. Xe buýt nhỏ càng lớn, xấp xỉ càng tốt.

  1. Số lượng đầu vào được thu thập vào một mảng và được tính toán "cùng một lúc"

Sự đánh đổi ở đây hoàn toàn là về hiệu suất (bộ nhớ / chu kỳ).

Các đại lượng này thường giống nhau, tức là kích thước xe buýt nhỏ, nhưng về nguyên tắc chúng có thể được tách rời.

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.