Tại sao dữ liệu phải được xáo trộn cho các nhiệm vụ học máy


30

Trong các tác vụ học máy, người ta thường xáo trộn dữ liệu và chuẩn hóa nó. Mục đích của chuẩn hóa là rõ ràng (vì có cùng phạm vi giá trị tính năng). Nhưng, sau khi vật lộn rất nhiều, tôi không tìm thấy bất kỳ lý do có giá trị nào cho việc xáo trộn dữ liệu.

Tôi đã đọc bài đăng này ở đây để thảo luận khi chúng ta cần xáo trộn dữ liệu, nhưng không rõ tại sao chúng ta nên xáo trộn dữ liệu. Hơn nữa, tôi thường thấy trong các thuật toán như Adam hoặc SGD nơi chúng tôi cần giảm độ dốc theo lô (dữ liệu phải được tách thành các lô nhỏ và kích thước lô phải được chỉ định). Điều quan trọng là theo bài đăng này để xáo trộn dữ liệu cho mỗi kỷ nguyên để có dữ liệu khác nhau cho mỗi lô. Vì vậy, có lẽ dữ liệu bị xáo trộn và quan trọng hơn là thay đổi.

Tại sao chúng ta làm việc này?


1
Có thể hữu ích để nêu chính xác lý do tại sao câu trả lời trong liên kết đầu tiên không giúp bạn. Mặt khác, chúng tôi có nguy cơ lặp lại nội dung đã nói ở đó với rất ít cải tiến.
E_net4 nói Phục hồi

Như tôi đã nói tôi muốn biết tại sao không khi nào, bạn có biết tại sao không? điều đó thực sự được giải thích ở đó? Tôi chưa thấy bất kỳ bài báo nào cho việc này cả
Truyền thông

1
Để biết thêm thông tin về tác động của việc đặt hàng ví dụ, hãy đọc Chương trình giảng dạy [pdf].
Emre

1
Tôi đã đăng bài này lên CrossValidated và tôi nghĩ nó có liên quan. stats.stackexchange.com/a/311318/89653
Josh

@Emre thực sự bài báo này chống lại sự xáo trộn, cảm ơn, tôi đã không nghe về kiểu học này.
Truyền thông

Câu trả lời:


18

Dựa trên những gì chúng ta nên làm khi một câu hỏi được đăng trên DataScience là một bản sao của một câu hỏi được đăng trên CrossValidated? , Tôi đang đăng lại câu trả lời của mình cho cùng một câu hỏi được hỏi trên CrossValidated ( https://stats.stackexchange.com/a/311318/89653 ).

Lưu ý: trong suốt câu trả lời này, tôi đề cập đến việc giảm thiểu tổn thất đào tạo và tôi không thảo luận về các tiêu chí dừng như mất xác nhận. Việc lựa chọn tiêu chí dừng không ảnh hưởng đến quá trình / khái niệm được mô tả dưới đây.

Quá trình đào tạo mạng nơ-ron là tìm giá trị tối thiểu của hàm mất , trong đó đại diện cho một ma trận (hoặc một số ma trận) trọng số giữa các nơ-ron và đại diện cho tập dữ liệu huấn luyện. Tôi sử dụng một subscript cho để chỉ ra rằng giảm thiểu của chúng ta về chỉ xảy ra trên các trọng số (có nghĩa là, chúng tôi đang tìm kiếm mà được giảm thiểu) trong khi là cố định.WXX(W)WX W W XXWWX

Bây giờ, nếu chúng ta giả định rằng chúng ta có yếu tố trong (có nghĩa là, có trọng trong mạng), là một bề mặt trong một không gian ba chiều. Để đưa ra một sự tương tự trực quan, hãy tưởng tượng rằng chúng ta chỉ có hai trọng lượng nơ-ron ( ). Sau đó có một giải thích hình học đơn giản: đó là một bề mặt trong một không gian 3 chiều. Điều này xuất phát từ thực tế là đối với bất kỳ ma trận có trọng số , hàm mất có thể được đánh giá trên và giá trị đó trở thành độ cao của bề mặt.W P P + 1 P = 2 W XPWPP+1P=2WX

Nhưng có vấn đề không lồi lõm; bề mặt tôi mô tả sẽ có rất nhiều cực tiểu cục bộ, và do đó các thuật toán giảm độ dốc dễ bị "kẹt" trong các cực tiểu đó trong khi giải pháp sâu hơn / thấp hơn / tốt hơn có thể nằm gần đó. Điều này có thể xảy ra nếu không thay đổi trên tất cả các lần lặp đào tạo, bởi vì bề mặt được cố định cho một cho trước ; tất cả các tính năng của nó là tĩnh, bao gồm các cực tiểu khác nhau của nó.XXX

Một giải pháp cho vấn đề này là đào tạo theo đợt nhỏ kết hợp với xáo trộn. Bằng cách xáo trộn các hàng và chỉ đào tạo một tập hợp con trong số lần lặp đã cho, thay đổi theo mỗi lần lặp và thực tế là không có hai lần lặp nào trong toàn bộ chuỗi lặp và đào tạo sẽ được thực hiện trên cùng một chính xác . Hiệu quả là bộ giải có thể dễ dàng "bật" ra khỏi mức tối thiểu cục bộ. Hãy tưởng tượng rằng bộ giải bị kẹt ở mức tối thiểu cục bộ khi lặp với đào tạo mini-batch . Mức tối thiểu cục bộ này tương ứng với đánh giá ở một giá trị trọng lượng cụ thể; chúng tôi sẽ gọi nó làX i X i X i ( W i ) X i + 1 X i + 1 ( W i ) X i ( W i ) X i + 1X i X W WXXiXiXi(Wi). Ở lần lặp lại tiếp theo, hình dạng bề mặt mất mát của chúng ta thực sự thay đổi bởi vì chúng ta đang sử dụng , nghĩa là, có thể mang một giá trị rất khác so với và hoàn toàn có thể là nó không tương ứng với mức tối thiểu cục bộ! Bây giờ chúng ta có thể tính toán một bản cập nhật gradient và tiếp tục đào tạo. Để rõ ràng: hình dạng của sẽ - nói chung - sẽ khác với hình dạng của . Lưu ý rằng ở đây tôi đề cập đến hàm tổn thất đánh giá trên tập huấn luyện ; nó là một bề mặt hoàn chỉnh được xác định trên tất cả các giá trị có thể có củaXi+1Xi+1(Wi)Xi(Wi)Xi+1XiXW, Chứ không phải là việc đánh giá thiệt hại đó (mà chỉ là một vô hướng) cho một giá trị cụ thể của . Cũng lưu ý rằng nếu các lô nhỏ được sử dụng mà không xáo trộn thì vẫn có một mức độ "đa dạng hóa" các bề mặt tổn thất, nhưng sẽ có một số lượng hữu hạn (và tương đối nhỏ) các bề mặt lỗi duy nhất mà người giải quyết nhìn thấy (cụ thể, nó sẽ thấy cùng một bộ chính xác của các lô nhỏ - và do đó làm mất bề mặt - trong mỗi kỷ nguyên).W

Một điều tôi cố tình tránh là một cuộc thảo luận về kích thước lô nhỏ, bởi vì có hàng triệu ý kiến ​​về điều này và nó có ý nghĩa thực tiễn quan trọng (có thể đạt được sự song song lớn hơn với các lô lớn hơn). Tuy nhiên, tôi tin rằng sau đây là đáng nói. Bởi vì được đánh giá bằng cách tính toán giá trị cho mỗi hàng của (và tổng hợp hoặc lấy trung bình; ví dụ, một nhà điều hành giao hoán) cho một tập hợp các ma trận trọng lượng , sự sắp xếp của các hàng của không có tác dụng khi sử dụng full- giảm độ dốc hàng loạt (nghĩa là khi mỗi lô là đầy đủ , và các lần lặp và kỷ nguyên là cùng một thứ). X W X XXWX X


+1. Câu trả lời này được giải thích tốt hơn về mặt kỹ thuật so với câu trả lời khác có số lượng upvote cao hơn.
Gokul NC

29

Dữ liệu xáo trộn phục vụ mục đích giảm phương sai và đảm bảo rằng các mô hình vẫn chung và ít phù hợp hơn.

Trường hợp rõ ràng khi bạn xáo trộn dữ liệu của mình là nếu dữ liệu của bạn được sắp xếp theo lớp / mục tiêu của họ. Tại đây, bạn sẽ muốn xáo trộn để đảm bảo rằng các bộ đào tạo / kiểm tra / xác nhận của bạn là đại diện cho phân phối tổng thể của dữ liệu.

Đối với việc giảm độ dốc hàng loạt, logic tương tự được áp dụng. Ý tưởng đằng sau việc giảm độ dốc hàng loạt là bằng cách tính toán độ dốc trên một lô, bạn thường sẽ có được ước tính khá tốt về độ dốc "thực". Bằng cách đó, bạn tiết kiệm thời gian tính toán bằng cách không phải tính toán độ dốc "thực" trên toàn bộ tập dữ liệu mỗi lần.

Bạn muốn xáo trộn dữ liệu của mình sau mỗi kỷ nguyên vì bạn sẽ luôn gặp rủi ro khi tạo các lô không đại diện cho tập dữ liệu tổng thể, và do đó, ước tính độ dốc của bạn sẽ bị tắt. Xáo trộn dữ liệu của bạn sau mỗi kỷ nguyên đảm bảo rằng bạn sẽ không bị "mắc kẹt" với quá nhiều lô xấu.

Trong việc giảm độ dốc ngẫu nhiên thông thường, khi mỗi lô có kích thước 1, bạn vẫn muốn xáo trộn dữ liệu của mình sau mỗi kỷ nguyên để giữ cho việc học chung của bạn. Thật vậy, nếu điểm dữ liệu 17 luôn được sử dụng sau điểm dữ liệu 16, thì độ dốc của chính nó sẽ bị sai lệch với bất kỳ cập nhật nào mà điểm dữ liệu 16 đang thực hiện trên mô hình. Bằng cách xáo trộn dữ liệu của bạn, bạn đảm bảo rằng mỗi điểm dữ liệu sẽ tạo ra một thay đổi "độc lập" trên mô hình, mà không bị sai lệch bởi các điểm giống nhau trước chúng.


1
Như tôi đã giải thích, bạn xáo trộn dữ liệu của mình để đảm bảo rằng các bộ huấn luyện / kiểm tra của bạn sẽ là đại diện. Trong hồi quy, bạn sử dụng xáo trộn vì bạn muốn đảm bảo rằng bạn không chỉ đào tạo về các giá trị nhỏ chẳng hạn. Xáo trộn chủ yếu là một biện pháp bảo vệ, trường hợp xấu nhất, nó không hữu ích, nhưng bạn không mất gì khi làm điều đó. Đối với phần gốc dốc ngẫu nhiên, một lần nữa bạn muốn chắc chắn rằng mô hình không giống như vậy vì thứ tự bạn đã cung cấp dữ liệu, vì vậy để đảm bảo tránh điều đó, bạn hãy xáo trộn
Valentin Calomme

2
Tôi nghĩ việc xáo trộn làm giảm phương sai và có khả năng làm tăng độ lệch (nghĩa là nó làm giảm xu hướng phù hợp với dữ liệu). Hãy tưởng tượng chúng ta đang thực hiện giảm dần độ dốc toàn bộ, sao cho các epoch và lặp lại là cùng một thứ. Sau đó, tồn tại một mức tối thiểu toàn cầu (không phải là chúng ta có thể tìm thấy nó) mà người giải quyết của chúng ta đang cố gắng xác định. Nếu chúng tôi đang sử dụng mất MSE, thì chúng tôi sẽ giảm thiểu sai lệch nếu chúng tôi có thể đạt được giải pháp này mọi lúc. Nhưng vì mức tối thiểu toàn cầu này có thể được tìm thấy ở một nơi khác cho các bộ huấn luyện khác nhau, giải pháp này sẽ có xu hướng có phương sai cao.
Josh

2
Bằng cách xáo trộn, chúng ta ít có khả năng hội tụ một giải pháp nằm trong mức tối thiểu toàn cầu cho toàn bộ tập huấn (độ lệch cao hơn), nhưng nhiều khả năng tìm ra giải pháp tổng quát hóa tốt hơn (phương sai thấp hơn).
Josh

7

Giả sử dữ liệu được sắp xếp theo thứ tự xác định. Ví dụ, một tập dữ liệu được sắp xếp dựa trên lớp của chúng. Vì vậy, nếu bạn chọn dữ liệu để đào tạo, xác nhận và kiểm tra mà không xem xét chủ đề này, bạn sẽ chọn từng lớp cho các nhiệm vụ khác nhau và nó sẽ thất bại trong quá trình này.

Do đó, để ngăn chặn các loại vấn đề này, một giải pháp đơn giản là xáo trộn dữ liệu để có được các bộ dữ liệu huấn luyện, xác nhận và kiểm tra khác nhau.

Về mini-batch, câu trả lời cho bài đăng này có thể là một giải pháp cho câu hỏi của bạn.


1
@Media Câu trả lời liên quan nhất trong liên kết được cung cấp là: "Xáo trộn các lô nhỏ làm cho độ dốc thay đổi nhiều hơn, điều này có thể giúp hội tụ vì nó làm tăng khả năng đạt được hướng tốt"
OmG

Thật ra tôi đã thấy điều này trong bài báo của SGD nhưng nó như các tác giả của bài báo tuyên bố đó là lý do của sự hội tụ không phải là sự xáo trộn. Tôi thấy liên kết và tôi nghi ngờ một chút. để rõ ràng hơn nhìn vào bài báo tuyệt vời này. Các tác giả đã đề cập đến vấn đề ở đó, nhưng như bạn sẽ thấy không có lý do chính xác cho việc xáo trộn
Truyền thông

1

Chúng tôi chỉ cần xáo trộn cho xe buýt nhỏ / SGD, không cần giảm độ dốc hàng loạt.

Nếu không xáo trộn dữ liệu, dữ liệu có thể được sắp xếp hoặc các điểm dữ liệu tương tự sẽ nằm cạnh nhau, dẫn đến tốc độ hội tụ chậm:

  • Các mẫu tương tự sẽ tạo ra các bề mặt tương tự (1 bề mặt cho chức năng mất cho 1 mẫu) -> độ dốc sẽ chỉ theo các hướng tương tự nhưng hướng này hiếm khi chỉ đến mức tối thiểu-> nó có thể điều chỉnh độ dốc rất xa so với mức tối thiểu
  • Hướng tốt nhất Hướng tới: trung bình của tất cả độ dốc của tất cả các bề mặt (độ dốc giảm dần theo lô) chỉ trực tiếp đến cực tiểu
  • Hướng đi của Minibatch Sắp xếp: trung bình của một loạt các hướng sẽ chỉ gần đến mức tối thiểu, mặc dù không phải hướng nào cũng chỉ đến mức tối thiểu
  • Hướng 1 mẫu của người khác: điểm xa hơn đến mức tối thiểu so với xe buýt nhỏ

Tôi đã vẽ sơ đồ của hàm mất L-2 cho hồi quy tuyến tính y=2x ở đây


1

Bởi vì được đánh giá bằng cách tính toán giá trị cho mỗi hàng của (và tổng hợp hoặc lấy trung bình; ví dụ, một nhà điều hành giao hoán) cho một tập hợp các ma trận trọng lượng , sự sắp xếp của các hàng của không có tác dụng khi sử dụng full- giảm độ dốc hàng loạtXWX

Bổ sung cho câu trả lời của @ Josh, tôi muốn nói thêm rằng, vì lý do tương tự, việc xáo trộn cần phải được thực hiện trước khi đưa vào lô. Mặt khác, bạn đang có cùng số lượng bề mặt hữu hạn.


Cảm ơn bạn và chào mừng đến với cộng đồng của chúng tôi.
Truyền thông

1

Để có độ chính xác tốt nhất của mô hình, chúng tôi luôn khuyến nghị rằng dữ liệu huấn luyện nên có tất cả các hương vị của dữ liệu.

Xáo trộn dữ liệu đào tạo giúp chúng tôi đạt được mục tiêu này.


1

Bằng cách xáo trộn các hàng và chỉ đào tạo một tập hợp con của chúng trong một lần lặp nhất định, 𝑋 thay đổi với mỗi lần lặp và thực tế là không có hai lần lặp nào trong toàn bộ chuỗi lặp và đào tạo sẽ được thực hiện trên cùng một chính xác

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.