Làm thế nào để diễn giải sự mất mát của tinh thần và độ chính xác của người dùng cho một mô hình học máy


201

Khi tôi huấn luyện mạng lưới thần kinh của mình với Theano hoặc Tensorflow, họ sẽ báo cáo một biến gọi là "mất" mỗi epoch.

Làm thế nào tôi nên giải thích biến này? Mất cao hơn là tốt hơn hoặc tồi tệ hơn, hoặc nó có ý nghĩa gì đối với hiệu suất cuối cùng (độ chính xác) của mạng lưới thần kinh của tôi?

Câu trả lời:


284

Mất mát càng thấp , mô hình càng tốt (trừ khi mô hình đã quá phù hợp với dữ liệu đào tạo). Mất mát được tính toán trên đào tạoxác nhận và sự can thiệp của nó là mô hình hoạt động tốt như thế nào đối với hai bộ này. Không giống như độ chính xác, mất không phải là một tỷ lệ phần trăm. Đây là tổng hợp các lỗi được tạo cho từng ví dụ trong tập huấn luyện hoặc xác nhận hợp lệ.

Trong trường hợp của các mạng thần kinh, sự mất mát thường là khả năng log âmtổng bình phương còn lại để phân loại và hồi quy tương ứng. Sau đó, một cách tự nhiên, mục tiêu chính trong mô hình học tập là giảm (giảm thiểu) giá trị của hàm mất đối với các tham số của mô hình bằng cách thay đổi các giá trị vectơ trọng lượng thông qua các phương pháp tối ưu hóa khác nhau, chẳng hạn như truyền ngược trong mạng lưới thần kinh.

Giá trị mất hàm ý một mô hình nhất định hoạt động tốt hay kém như thế nào sau mỗi lần lặp tối ưu hóa. Lý tưởng nhất, người ta sẽ mong đợi giảm tổn thất sau mỗi, hoặc một vài lần lặp (s).

Độ chính xác của một mô hình thường được xác định sau khi các tham số mô hình được học và cố định và không có việc học nào diễn ra. Sau đó, các mẫu thử được đưa vào mô hình và số lỗi (mất không một) mà mô hình tạo ra được ghi lại, sau khi so sánh với các mục tiêu thực sự. Sau đó, tỷ lệ phần trăm phân loại sai được tính toán.

Ví dụ: nếu số lượng mẫu thử là 1000 và mô hình phân loại chính xác 952 mẫu, thì độ chính xác của mô hình là 95,2%.

nhập mô tả hình ảnh ở đây

Ngoài ra còn có một số sự tinh tế trong khi giảm giá trị tổn thất. Ví dụ, bạn có thể gặp phải vấn đề về sự phù hợp quá mức trong đó mô hình "ghi nhớ" các ví dụ đào tạo và trở nên không hiệu quả đối với tập kiểm tra. Quá khớp cũng xảy ra trong trường hợp bạn không sử dụng chính quy , bạn có một mô hình rất phức tạp (số lượng tham số miễn phí Wlớn) hoặc số lượng điểm dữ liệu Nrất thấp.


2
Xin chào @Amir, cảm ơn bạn đã giải thích rất chi tiết. Tuy nhiên, tôi có một vấn đề: trong Mạng thần kinh của tôi, tổn thất luôn giảm khi tôi được đào tạo (khi thời đại tăng lên), tuy nhiên độ chính xác không tốt hơn.
mamatv

8
@mamatv Miễn là chi phí giảm, bạn nên đi. Mặc dù chi phí và độ chính xác thường có mối quan hệ tỷ lệ nghịch, nhưng bạn có thể lưu ý rằng độ chính xác là tổng của các lỗi không một trong khi chi phí là tổng của các số dấu phẩy động. Do đó, giảm 0,001% chi phí không nhất thiết có nghĩa là tăng 0,001% về độ chính xác. Tăng độ chính xác khó hơn nhiều khi chi phí giảm là vô hình (chi phí rất gần với cực tiểu địa phương)
Amir

2
@mamatv Tôi nên nói miễn là chi phí cho cả đào tạo và xác nhận đang giảm thì bạn nên đi. Bạn cũng có thể kiểm tra độ chính xác xác nhận trên mỗi kỷ nguyên. Nếu nó bắt đầu tăng lên, thì mô hình của bạn có thể đã bắt đầu quá sức và bạn nên ngừng đào tạo nó.
Amir

1
Tại sao không đào tạo mô hình để tăng độ chính xác thay vì giảm thiểu tổn thất?
bikashg

2
Độ chính xác @bikashg không khác biệt và do đó bạn không thể sao lưu vào nó.
DharmaTurtle

23

Chúng là hai số liệu khác nhau để đánh giá hiệu suất mô hình của bạn thường được sử dụng trong các giai đoạn khác nhau.

Mất mát thường được sử dụng trong quá trình đào tạo để tìm các giá trị tham số "tốt nhất" cho mô hình của bạn (ví dụ: trọng số trong mạng thần kinh). Đó là những gì bạn cố gắng tối ưu hóa trong đào tạo bằng cách cập nhật trọng lượng.

Độ chính xác là nhiều hơn từ một quan điểm ứng dụng. Khi bạn tìm thấy các tham số được tối ưu hóa ở trên, bạn sử dụng số liệu này để đánh giá mức độ chính xác của dự đoán mô hình của bạn so với dữ liệu thực.

Hãy để chúng tôi sử dụng một ví dụ phân loại đồ chơi. Bạn muốn dự đoán giới tính từ cân nặng và chiều cao của một người. Bạn có 3 dữ liệu, chúng như sau: (0 là viết tắt của nam, 1 là viết tắt của nữ)

y1 = 0, x1_w = 50kg, x2_h = 160cm;

y2 = 0, x2_w = 60kg, x2_h = 170cm;

y3 = 1, x3_w = 55kg, x3_h = 175cm;

Bạn sử dụng mô hình hồi quy logistic đơn giản đó là y = 1 / (1 + exp- (b1 * x_w + b2 * x_h))

Làm thế nào để bạn tìm thấy b1 và b2? trước tiên bạn xác định tổn thất và sử dụng phương pháp tối ưu hóa để giảm thiểu tổn thất theo cách lặp bằng cách cập nhật b1 và b2.

Trong ví dụ của chúng tôi, một mất mát điển hình cho vấn đề phân loại nhị phân này có thể là: (một dấu trừ nên được thêm vào trước dấu tổng

Chúng ta không biết b1 và b2 nên là gì. Chúng ta hãy đoán ngẫu nhiên nói b1 = 0,1 và b2 = -0,03. Vậy thì mất mát của chúng ta bây giờ là gì?

vì vậy mất mát là

Sau đó, bạn học thuật toán (ví dụ: giảm độ dốc) sẽ tìm cách cập nhật b1 và b2 để giảm tổn thất.

Điều gì xảy ra nếu b1 = 0,1 và b2 = -0,03 là b1 và b2 cuối cùng (đầu ra từ độ dốc giảm dần), độ chính xác bây giờ là bao nhiêu?

Giả sử nếu y_hat> = 0,5, chúng tôi quyết định dự đoán của chúng tôi là nữ (1). nếu không nó sẽ là 0. Do đó, thuật toán của chúng tôi dự đoán y1 = 1, y2 = 1 và y3 = 1. Độ chính xác của chúng tôi là gì? Chúng tôi dự đoán sai về y1 và y2 và đưa ra dự đoán đúng trên y3. Vì vậy, bây giờ độ chính xác của chúng tôi là 1/3 = 33,33%

PS: Trong câu trả lời của Amir , lan truyền ngược được cho là một phương pháp tối ưu hóa trong NN. Tôi nghĩ rằng nó sẽ được coi là một cách để tìm độ dốc cho trọng số trong NN. Phương pháp tối ưu hóa phổ biến trong NN là GradientDescent và Adam.


cảm ơn vì môn toán nó đã giúp làm rõ khái niệm này.
Finn Frotscher

6

@Aadnan Chỉ để làm rõ các tập dữ liệu Đào tạo / Xác thực / Kiểm tra: Tập huấn luyện được sử dụng để thực hiện đào tạo ban đầu của mô hình, khởi tạo các trọng số của mạng thần kinh.

Bộ xác nhận được sử dụng sau khi mạng thần kinh đã được đào tạo. Nó được sử dụng để điều chỉnh các siêu đường kính của mạng và so sánh mức độ thay đổi của chúng ảnh hưởng đến độ chính xác dự đoán của mô hình. Trong khi tập huấn luyện có thể được coi là được sử dụng để xây dựng trọng số cổng của mạng nơ-ron, bộ xác thực cho phép tinh chỉnh các tham số hoặc kiến ​​trúc của mô hình mạng nơ-ron. Nó hữu ích vì nó cho phép so sánh lặp lại các tham số / kiến ​​trúc khác nhau này với cùng trọng lượng dữ liệu và mạng, để quan sát sự thay đổi của tham số / kiến ​​trúc ảnh hưởng đến sức mạnh dự đoán của mạng.

Sau đó, bộ kiểm tra chỉ được sử dụng để kiểm tra độ chính xác dự đoán của mạng nơ ron được đào tạo trên dữ liệu chưa từng thấy trước đó, sau khi đào tạo và lựa chọn tham số / kiến ​​trúc với các bộ dữ liệu huấn luyện và xác nhận.

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.