Ví dụ về cách hoạt động của thủ thuật log-sum-exp trong Naive Bayes


14

Tôi đã đọc về thủ thuật log-sum-exp ở nhiều nơi (ví dụ ở đâyở đây ) nhưng chưa bao giờ thấy một ví dụ về cách nó được áp dụng cụ thể cho trình phân loại Naive Bayes (ví dụ: với các tính năng riêng biệt và hai lớp)

Làm thế nào chính xác một người sẽ tránh được vấn đề tràn số bằng cách sử dụng thủ thuật này?


2
Có một số ví dụ về việc sử dụng nó ở đây, mặc dù không nhất thiết phải rõ ràng cho Bayes ngây thơ . Tuy nhiên, điều đó hầu như không quan trọng, vì ý tưởng về mánh khóe khá đơn giản và dễ thích nghi.
Glen_b -Reinstate Monica

Vấn đề có nhiều khả năng bị tràn hơn là tràn.
Henry

Tôi khuyên bạn nên thử tìm kiếm dưới dòng , sau đó cập nhật câu hỏi của bạn để giải quyết cụ thể hơn bất cứ điều gì chưa được đề cập.
Glen_b -Reinstate Monica

Bạn cũng có thể làm rõ - đây là Bayes ngây thơ kiểu Bernoulli? cái gì khác có lẽ?
Glen_b -Reinstate Monica

Xem ví dụ ở đây , ngay phía dưới (ngay trước 'Xem thêm' nơi họ lấy nhật ký; lũy thừa cả hai bên nhưng để RHS "nguyên trạng" (như exp của một tổng số nhật ký) sẽ là một ví dụ về nhật ký -sum-exp trick. Điều đó có cung cấp cho bạn đầy đủ thông tin liên quan đến việc sử dụng nó trong Naive Bayes để hỏi một câu hỏi cụ thể hơn không?
Glen_b -Reinstate Monica

Câu trả lời:


26

Trong

p(Y=C|x)=p(x|Y=C)p(Y=C) k=1|C|p(x|Y=Ck)p(Y=Ck)

cả mẫu số và tử số đều có thể trở nên rất nhỏ, điển hình là vì có thể gần bằng 0 và chúng ta nhân nhiều số đó với nhau. Để ngăn chặn dòng chảy bên dưới, người ta có thể chỉ cần lấy nhật ký của tử số, nhưng người ta cần sử dụng thủ thuật log-sum-exp cho mẫu số.p(xi|Ck)


Cụ thể hơn, để ngăn chặn dòng chảy:

  • Nếu chúng ta chỉ quan tâm đến việc biết lớp nào thì đầu vào rất có thể thuộc về quy tắc quyết định tối đa của posteriori (MAP), chúng ta không phải áp dụng thủ thuật log-sum-exp, vì chúng ta không phải tính toán mẫu số trong trường hợp đó. Đối với tử số, người ta có thể chỉ cần lấy nhật ký để ngăn chặn dòng chảy: . Cụ thể hơn:( x = x 1 , ... , x n ) l o g ( p ( x | Y = C ) p ( Y = C ) )(y^)(x=x1,,xn)log(p(x|Y=C)p(Y=C))

    y^=argmaxk{1,,|C|}p(Ck|x1,,xn)=argmaxk{1,,|C|} p(Ck)i=1np(xi|Ck)

    mà trở thành sau khi lấy nhật ký:

y^=argmaxk{1,,|C|}log(p(Ck|x1,,xn))=argmaxk{1,,|C|}log( p(Ck)i=1np(xi|Ck))=argmaxk{1,,|C|}(log(p(Ck))+ i=1nlog(p(xi|Ck)))
  • Nếu chúng ta muốn tính xác suất lớp , chúng ta sẽ cần tính toán mẫu số:p(Y=C|x)

    log(p(Y=C|x))=log(p(x|Y=C)p(Y=C) k=1|C|p(x|Y=Ck)p(Y=Ck))=log(p(x|Y=C)p(Y=C)numerator)log( k=1|C|p(x|Y=Ck)p(Y=Ck)denominator)

    Phần tử có thể bị tràn vì có thể rất nhỏ: đó là vấn đề tương tự như trong tử số, nhưng lần này chúng ta có một phép tính tổng bên trong logarit, điều này ngăn chúng ta chuyển đổi (có thể gần với 0) vào (âm và không gần với 0 nữa, vì ). Để khắc phục sự cố này, chúng ta có thể sử dụng thực tế là để có được:log( k=1|C|p(x|Y=Ck)p(Y=Ck))p(xi|Ck)p(xi|Ck)log(p(xi|Ck))0p(xi|Ck)1p(xi|Ck)=exp(log(p(xi|Ck)))

    log( k=1|C|p(x|Y=Ck)p(Y=Ck))=log( k=1|C|exp(log(p(x|Y=Ck)p(Y=Ck))))

    Tại thời điểm đó, một vấn đề mới phát sinh: có thể khá tiêu cực, ngụ ý rằng có thể trở nên rất gần với 0, tức là dưới dòng. Đây là nơi chúng tôi sử dụng thủ thuật log-sum-exp :log(p(x|Y=Ck)p(Y=Ck))exp(log(p(x|Y=Ck)p(Y=Ck)))

    logkeak=logkeakeAA=A+logkeakA

    với:

    • ak=log(p(x|Y=Ck)p(Y=Ck)) ,
    • A=maxk{1,,|C|}ak.

    Chúng ta có thể thấy rằng việc giới thiệu biến tránh dòng chảy bên dưới. Ví dụ: với , chúng tôi có:Ak=2,a1=245,a2=255

    • exp(a1)=exp(245)=3.96143×10107
    • exp(a2)=exp(255)=1.798486×10111

    Sử dụng thủ thuật log-sum-exp, chúng tôi tránh được dòng , với : A=max(245,255)=245logkeak=logkeakeAA=A+logkeakA=245+logkeak+245=245+log(e245+245+e255+245)=245+log(e0+e10)

    Chúng tôi đã tránh được dòng chảy vì cách xa hơn hoặc . 3,96143 × 10 - 107 1.798486 × 10 - 111e103.96143×101071.798486×10111


2

Giả sử chúng tôi muốn xác định cơ sở dữ liệu nào trong hai cơ sở có nhiều khả năng đã tạo ra một cụm từ (ví dụ: tiểu thuyết nào là cụm từ này có nhiều khả năng đến từ). Chúng ta có thể giả định tính độc lập của các từ có điều kiện trên cơ sở dữ liệu (giả định Naive Bayes).

Bây giờ hãy tìm liên kết thứ hai mà bạn đã đăng. Ở đó sẽ đại diện cho xác suất chung của việc quan sát câu đã cho một cơ sở dữ liệu và s sẽ đại diện cho xác suất quan sát từng từ trong câu.e b taebt

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.