Giải thích mất entropy chéo


35

Giả sử tôi xây dựng một NN để phân loại. Lớp cuối cùng là một lớp dày đặc với kích hoạt softmax. Tôi có năm lớp khác nhau để phân loại. Giả sử cho một ví dụ đào tạo duy nhất, đó true label[1 0 0 0 0]trong khi các dự đoán là [0.1 0.5 0.1 0.1 0.2]. Làm thế nào tôi có thể tính toán mất entropy chéo cho ví dụ này?

Câu trả lời:


50

Công thức entropy chéo có hai phân phối, , phân phối thực và q (x) , phân phối ước tính, được xác định qua biến rời r x và được đưa ra bởip(x)q(x)x

H(p,q)=xp(x)log(q(x))

Đối với mạng nơ ron, phép tính độc lập với các điều sau:

  • Những loại lớp đã được sử dụng.

  • Loại kích hoạt nào đã được sử dụng - mặc dù nhiều kích hoạt sẽ không tương thích với tính toán vì đầu ra của chúng không thể hiểu được vì xác suất (nghĩa là đầu ra của chúng là âm, lớn hơn 1 hoặc không tổng bằng 1). Softmax thường được sử dụng để phân loại đa lớp vì nó đảm bảo chức năng phân phối xác suất hoạt động tốt.

Đối với mạng nơ-ron, bạn thường sẽ thấy phương trình được viết dưới dạng y là vectơ chân thực và y^ (hoặc một số giá trị khác được lấy trực tiếp từ đầu ra của lớp cuối cùng) định giá. Đối với một ví dụ duy nhất, nó sẽ trông như thế này:

L=ylog(y^)

Trong đó là sản phẩm chấm vector.

Ví dụ cơ bản của bạn y đưa ra tất cả xác suất cho giá trị đầu tiên và các giá trị khác bằng 0, vì vậy chúng tôi có thể bỏ qua chúng và chỉ cần sử dụng thuật ngữ phù hợp từ ước tính của bạn y^

L=(1×log(0.1)+0×log(0.5)+...)

L=log(0.1)2.303

Một điểm quan trọng từ ý kiến

Điều đó có nghĩa là, tổn thất sẽ như nhau cho dù các dự đoán là hay ?[0.1,0.5,0.1,0.1,0.2][0.1,0.6,0.1,0.1,0.1]

Vâng, đây là một tính năng chính của logloss đa kính, nó chỉ thưởng / phạt các xác suất của các lớp chính xác. Giá trị độc lập với cách xác suất còn lại được phân chia giữa các lớp không chính xác.

Bạn sẽ thường thấy phương trình này tính trung bình trên tất cả các ví dụ dưới dạng hàm chi phí . Nó không phải luôn luôn được tuân thủ nghiêm ngặt trong các mô tả, nhưng thông thường hàm mất là mức thấp hơn và mô tả cách một cá thể hoặc thành phần xác định giá trị lỗi, trong khi hàm chi phí ở mức cao hơn và mô tả cách hệ thống hoàn chỉnh được đánh giá để tối ưu hóa. Hàm chi phí dựa trên mất nhật ký đa lớp cho tập dữ liệu có kích thước có thể trông như thế này:N

J= =-1N(Σtôi= =1Nytôiđăng nhập(y^tôi))

Nhiều triển khai sẽ yêu cầu các giá trị thật của bạn phải được mã hóa một lần (với một lớp đúng duy nhất), vì điều đó cho phép tối ưu hóa thêm. Tuy nhiên, về nguyên tắc, tổn thất entropy chéo có thể được tính toán - và tối ưu hóa - khi đây không phải là trường hợp.


1
Đuợc. Điều đó có nghĩa là, tổn thất sẽ như nhau cho dù dự đoán là [0,1 0,5 0,1 0,1 0,2] hay [0,1 0,6 0,1 0,1 0,1]?
Nain

@Nain: Đó là chính xác cho ví dụ của bạn. Mất mát entropy chéo không phụ thuộc vào giá trị của xác suất lớp không chính xác là gì.
Neil Slater

8

Câu trả lời từ Neil là chính xác. Tuy nhiên tôi nghĩ điều quan trọng là chỉ ra rằng mặc dù tổn thất không phụ thuộc vào phân phối giữa các lớp không chính xác (chỉ phân phối giữa lớp đúng và phần còn lại), độ dốc của hàm mất này không ảnh hưởng đến các lớp không chính xác khác nhau tùy thuộc vào cách họ sai rồi Vì vậy, khi bạn sử dụng liên kết chéo trong học máy, bạn sẽ thay đổi trọng số khác nhau cho [0,1 0,5 0,1 0,1 0,2] và [0,1 0,6 0,1 0,1 0,1]. Điều này là do điểm của lớp đúng được chuẩn hóa bởi điểm của tất cả các lớp khác để biến nó thành xác suất.


3
Bạn có thể xây dựng nó với một ví dụ thích hợp?
Nain

@Lucas Adams, bạn có thể cho một ví dụ xin vui lòng?
koryakinp

Đạo hàm của EACH y_i (đầu ra softmax) wrt EACH logit z (hoặc chính tham số w) phụ thuộc vào MERYI y_i. Medium.com/@aerinykim/ Kẻ
Aaron

2

Chúng ta hãy xem độ dốc của tổn thất hoạt động như thế nào ... Chúng ta có entropy chéo là một hàm mất, được đưa ra bởi

H(p,q)= =-Σtôi= =1np(xtôi)đăng nhập(q(xtôi))= =-(p(x1)đăng nhập(q(x1))+Giáo dục+p(xn)đăng nhập(q(xn))

Đi từ đây .. chúng tôi muốn biết đạo hàm liên quan đến một số : Vì tất cả các điều khoản khác bị hủy do sự khác biệt. Chúng ta có thể đưa phương trình này thêm một bước nữa để xtôi

xtôiH(p,q)= =-xtôip(xtôi)đăng nhập(q(xtôi)).
xtôiH(p,q)= =-p(xtôi)1q(xtôi)q(xtôi)xtôi.

Từ đó, chúng ta có thể thấy rằng chúng ta vẫn chỉ xử phạt các lớp thực sự (có giá trị cho ). Nếu không, chúng ta chỉ có một độ dốc bằng không.p(xtôi)

Tôi tự hỏi làm thế nào để các gói phần mềm xử lý giá trị dự đoán là 0, trong khi giá trị thực lớn hơn 0 ... Vì chúng ta đang chia cho 0 trong trường hợp đó.


Tôi nghĩ những gì bạn muốn là lấy đạo hàm wrt tham số, không phải wrt x_i.
Aaron

1

Hãy bắt đầu với việc hiểu entropy trong lý thuyết thông tin: Giả sử bạn muốn giao tiếp một chuỗi các bảng chữ cái "aaaaaaaa". Bạn có thể dễ dàng làm điều đó như 8 * "a". Bây giờ lấy một chuỗi khác "jteikfqa". Có một cách nén để truyền đạt chuỗi này? Không có ở đó. Chúng ta có thể nói rằng entropy của chuỗi thứ 2 là nhiều hơn, để truyền đạt nó, chúng ta cần nhiều "bit" thông tin hơn.

tôiog2(n)-đăng nhập2(1/số 8)

-Σtôi= =1số 81số 8đăng nhập2(1số 8)= =3

Trong "cross" -entropy, như tên cho thấy, chúng tôi tập trung vào số lượng bit cần thiết để giải thích sự khác biệt trong hai phân phối xác suất khác nhau. Kịch bản trường hợp tốt nhất là cả hai phân phối đều giống hệt nhau, trong trường hợp đó, số lượng bit ít nhất được yêu cầu tức là entropy đơn giản. Về mặt toán học,

H(y,y^)= =-Σtôiytôiđăng nhậpe(y^tôi)

y^y

Điểm mấu chốt: Theo thuật ngữ cư sĩ, người ta có thể nghĩ về entropy chéo là khoảng cách giữa hai phân phối xác suất theo lượng thông tin (bit) cần thiết để giải thích khoảng cách đó. Đó là một cách gọn gàng để xác định một mất mát đi xuống khi các vectơ xác suất tiến gần nhau hơn.


0

Tôi không đồng ý với Lucas. Các giá trị trên đã có xác suất. Lưu ý rằng bài đăng gốc chỉ ra rằng các giá trị đã kích hoạt softmax.

Lỗi chỉ được lan truyền trở lại trên lớp "nóng" và xác suất Q (i) không thay đổi nếu xác suất trong các lớp khác thay đổi lẫn nhau.


2
Lucas là chính xác. Với kiến trúc được mô tả bởi các OP, sau đó gradient tại tất cả các logits (như trái ngược với kết quả đầu ra) không phải là zero, bởi vì hàm softmax kết nối tất cả chúng. Vì vậy, lỗi [gradient của lỗi] ở lớp "nóng" lan truyền đến tất cả các nơ-ron đầu ra.
Neil Slater

+1 cho Neil và Lucas
Aaron

-1

Vấn đề là xác suất đến từ một hàm 'phức tạp' kết hợp các đầu ra khác vào giá trị đã cho. Các kết quả được liên kết với nhau, vì vậy theo cách này, chúng tôi không liên quan đến kết quả thực tế, mà bởi tất cả các đầu vào của chức năng kích hoạt cuối cùng (softmax), cho mỗi và mọi kết quả.

ptôi-ytôi

Mô tả gọn gàng khác tại gombru.github.io/2018/05/23/cross_entropy_loss .

Tôi nghĩ rằng việc sử dụng một sigmoid đơn giản làm lớp kích hoạt cuối cùng sẽ dẫn đến câu trả lời được phê duyệt, nhưng sử dụng softmax cho thấy câu trả lời khác nhau.


1
Chào mừng bạn đến với Stack Exchange. Tuy nhiên, những gì bạn viết dường như không phải là câu trả lời cho câu hỏi của OP về việc tính toán tổn thất entropy chéo.
dùng12075
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.