तंत्रिका नेटवर्क में क्रॉस-एन्ट्रापी त्रुटि फ़ंक्शन


115

में एमएल शुरुआती के लिए MNIST वे के रूप में क्रोस एंट्रोपी को परिभाषित

Hy(y):=iyilog(yi)

वर्ग के लिए भविष्यवाणी की संभावना मूल्य है मैं और y ' मैं उस वर्ग के लिए सच संभावना है।yiiyi

प्रश्न 1

क्या यह एक समस्या नहीं है कि ( लॉग इन ( y i ) ) 0 हो सकता है? इसका मतलब यह होगा कि हमारे पास वास्तव में एक बुरा क्लासिफायर है। लेकिन हमारे डेटासेट में त्रुटि के बारे में सोचें, जैसे "स्पष्ट" लेबल । यह बस दुर्घटना होगी? क्या हमने जो मॉडल चुना (अंत में सॉफ्टमैक्स ऐक्टिवेशन) मूल रूप से सही वर्ग के लिए संभावना 0 कभी नहीं देता है?yilog(yi)13

प्रश्न 2

मैंने सीखा है कि क्रॉस-एन्ट्रॉपी के रूप में परिभाषित किया गया है

Hy(y):=i(yilog(yi)+(1yi)log(1yi))

क्या सही है? क्या आपके पास किसी भी संस्करण के लिए कोई पाठ्यपुस्तक संदर्भ है? वे कार्य उनके गुणों में कैसे भिन्न होते हैं (तंत्रिका नेटवर्क के लिए त्रुटि कार्य)?



जवाबों:


101

एक ही रास्ता क्रोस एंट्रोपी व्याख्या करने के लिए एक (ऋण) के रूप में यह देखने के लिए लॉग-संभावना डेटा के लिए है yi , एक मॉडल के तहत yi

अर्थात्, मान लीजिए कि आपके पास कुछ निश्चित मॉडल (उर्फ "परिकल्पना") है, जो n वर्गों {1,2,,n} लिए भविष्यवाणी करता है , उनकी काल्पनिक घटना संभावनाएं y1,y2,,yn । मान लीजिए कि आप अब (वास्तव में) का पालन k1 वर्ग के उदाहरण 1 , k2 वर्ग के उदाहरण 2 , kn वर्ग के उदाहरण n अपने मॉडल में हो रहा की संभावना है मुताबिक, आदि:

P[data|model]:=y1k1y2k2ynkn.
लघुगणक ले रहा है और संकेत बदल रहा है:
logP[data|model]=k1logy1k2logy2knlogyn=ikilogyi
तुम अब प्रेक्षणों की संख्या से दाएँ हाथ राशि विभाजित करतेN=k1+k2++kn , और अनुभवजन्य संभावनाओं को निरूपित के रूप मेंyi=ki/N , आप क्रोस एंट्रोपी मिल जाएगा:
1NlogP[data|model]=1Nikilogyi=iyilogyi=:H(y,y)

इसके अलावा, किसी मॉडल को दिए गए डेटासेट की लॉग-लाइक की व्याख्या "एन्कोडिंग लंबाई" के एक उपाय के रूप में की जा सकती है - यदि आप अपने एन्कोडिंग योजना आपकी परिकल्पना पर आधारित होंगे, तो इस जानकारी को एन्कोड करने के लिए आपके द्वारा खर्च की जाने वाली बिट्स की संख्या।

इस अवलोकन है कि संभावना के साथ एक स्वतंत्र घटना से इस प्रकार yi कम से कम की आवश्यकता है log2yi बिट्स यह सांकेतिक शब्दों में बदलना करने के लिए (कुशल कोडन कल्पना करते हुए), और फलस्वरूप अभिव्यक्ति

iyilog2yi,
है सचमुच की उम्मीद एन्कोडिंग की लंबाई, जहां घटनाओं के लिए एन्कोडिंग लंबाई "हाइपोथिसाइज्ड" वितरण का उपयोग करके गणना की जाती है, जबकि उम्मीद को वास्तविक पर लिया जाता है।

अंत में, "अपेक्षित एन्कोडिंग लंबाई का माप" कहने के बजाय "मैं वास्तव में अनौपचारिक शब्द" आश्चर्य का उपयोग करना पसंद करता हूं। यदि आपको किसी वितरण से अपेक्षित घटना को सांकेतिक शब्दों में बदलने के लिए बहुत सारे बिट्स की आवश्यकता है, तो वितरण आपके लिए "वास्तव में आश्चर्यजनक" है।

उन अंतर्ज्ञानों को ध्यान में रखते हुए, आपके प्रश्नों के उत्तर निम्नानुसार देखे जा सकते हैं:

  • प्रश्न 1 । हाँ। यह एक समस्या है जब भी इसी yi एक ही समय में अशून्य है । यह उस स्थिति से मेल खाता है जहां आपके मॉडल का मानना ​​है कि कुछ वर्ग में घटना की शून्य संभावना है, और फिर भी वास्तविकता में वर्ग पॉप अप होता है। नतीजतन, आपके मॉडल का "आश्चर्य" असीम रूप से महान है: आपके मॉडल ने उस घटना का हिसाब नहीं दिया था और अब इसे एनकोड करने के लिए असीम रूप से कई बिट्स की आवश्यकता है। यही कारण है कि आप अपने क्रॉस-एंट्रोपी के रूप में अनंत प्राप्त करते हैं।

    इस समस्या से बचने के लिए आपको यह सुनिश्चित करने की आवश्यकता है कि आपका मॉडल कुछ असंभव होने के बारे में जल्दबाज़ी नहीं करता है जबकि ऐसा हो सकता है। वास्तव में, लोग सिग्मॉइड या "सॉफ्टमैक्स" फ़ंक्शन का उपयोग अपने परिकल्पना मॉडल के रूप में करते हैं, जो हर विकल्प के लिए कम से कम कुछ मौका छोड़ने के लिए पर्याप्त रूप से रूढ़िवादी हैं।

    यदि आप कुछ अन्य परिकल्पना मॉडल का उपयोग करते हैं, तो यह आप (उर्फ "चिकनी") को नियमित करने के लिए है, ताकि यह शून्य को परिकल्पना न करे जहां यह नहीं होना चाहिए।

  • प्रश्न २ । इस सूत्र में, आमतौर पर yi को या तो 0 या 1 माना जाता है , जबकि yi संगत इनपुट के लिए मॉडल की संभावना परिकल्पना है। यदि आप बारीकी से देखते हैं, तो आप देखेंगे कि यह केवल एक है logP[data|model]बाइनरी डेटा के लिए m o d e l ] , इस उत्तर में दूसरे समीकरण के बराबर।

    इसलिए, सख्ती से बोलना, हालांकि यह अभी भी एक लॉग-लाइक है, यह सिंटैक्टिक रूप से क्रॉस-एंट्रोपी के बराबर नहीं है। क्या कुछ लोगों को जब इस तरह के एक अभिव्यक्ति की चर्चा करते हुए मतलब क्रोस एंट्रोपी यह है कि, वास्तव में, एक है योग : डाटासेट में अलग-अलग अंक के लिए द्विआधारी पार entropies से अधिक

    iH(yi,yi),
    जहां yi और yi है इसी द्विआधारी वितरण के रूप में व्याख्या की जा करने के लिए (yi,1yi) और(yi,1yi)


1
आप एक स्रोत है, जहां वे परिभाषित प्रदान कर सकते हैं ? यहांवे इसे वर्तमान क्लास लेबल के लिए एक-गर्म वितरण के रूप में परिभाषित करते हैं। अंतर क्या है? yi=kiN
लेनार होयट

1
MNIST TensorFlow ट्यूटोरियल में वे इसे एक गर्म वैक्टर के रूप में भी परिभाषित करते हैं।
लेनर होयट

N=1ki/N

'स्वतंत्र घटना की आवश्यकता है ... इसे सांकेतिक शब्दों में बदलना' - क्या आप कृपया इसे थोड़ा समझा सकते हैं?
एलेक्स

@ एलेक्स को ठीक से समझने के लिए लंबे समय तक स्पष्टीकरण की आवश्यकता हो सकती है - शैनन-फ़ानो कोड और शॉनॉन एन्ट्रापी समीकरण के लिए इष्टतम कोडिंग के संबंध को पढ़ें। चीजों को गूंगा करने के लिए, यदि किसी घटना में संभावना 1/2 है, तो आपका सबसे अच्छा शर्त यह है कि इसे एक बिट का उपयोग करके कोड किया जाए। यदि इसकी संभावना 1/4 है, तो आपको इसे एन्कोड करने के लिए 2 बिट्स खर्च करने चाहिए, आदि, सामान्य तौर पर, यदि आपके घटनाओं के सेट की फॉर्म 1/2 ^ k की प्रायिकता है, तो आपको उन्हें लंबाई k देनी चाहिए - इस तरह आपका कोड होगा शान्नोन इष्टतम लंबाई दृष्टिकोण।
केटी।

22

iyi

इसका मतलब है कि सूत्र केवल लक्ष्य वर्ग पर त्रुटि पकड़ता है। यह त्रुटियों की किसी भी धारणा को खारिज करता है जिसे आप "झूठे सकारात्मक" पर विचार कर सकते हैं और यह परवाह नहीं करते हैं कि भविष्यवाणी की गई संभावनाओं को सच्चे वर्ग की अनुमानित संभावना के अलावा कैसे वितरित किया जाता है।

iyi=1

प्रश्न 1

yilog(yi)

0log(yi)yi=0log( max( y_predict, 1e-15 ) )

प्रश्न 2

Hy(y):=i(yilog(yi)+(1yi)log(1yi))

ii

यदि आप इस तरह के नेटवर्क को दो विरोधी आउटपुट के लिए संशोधित करते हैं और सॉफ्टमैक्स प्लस पहली लॉगलॉस परिभाषा का उपयोग करते हैं, तो आप देख सकते हैं कि वास्तव में यह एक ही त्रुटि माप है लेकिन दो मीट्रिक को एक एकल आउटपुट में तह करना।

यदि सदस्यता की भविष्यवाणी करने के लिए एक से अधिक वर्ग हैं, और कक्षाएं अनन्य नहीं हैं , यानी एक ही समय में कोई भी उदाहरण या सभी कक्षाएं हो सकती हैं, तो आपको इस दूसरे सूत्रीकरण का उपयोग करने की आवश्यकता होगी। अंकों की मान्यता के लिए जो कि मामला नहीं है (एक लिखित अंक में केवल एक "सही" वर्ग होना चाहिए)


i

log(yi)=0yi=0log(yi)

@NeilSlater यदि कक्षाएं परस्पर अनन्य नहीं थीं, तो प्रत्येक इनपुट के लिए आउटपुट वेक्टर में 1 से अधिक हो सकते हैं, क्या हमें दूसरे सूत्र का उपयोग करना चाहिए?
मीडिया

1
@ मीडिया: वास्तव में नहीं। आप हालांकि पदानुक्रमित वर्गीकरण जैसी चीजों को देखना चाहते हैं। । ।
नील स्लेटर

1
yiyiyi

11

ytrueypredictytrue

पहला प्रश्न:

उपरोक्त उत्तर ने आपके पहले सूत्र की पृष्ठभूमि को समझाया है, सूचना सिद्धांत में परिभाषित क्रॉस एन्ट्रापी।

सूचना सिद्धांत के अलावा एक राय से:

आप अपने आप को जांच सकते हैं कि पहले सूत्र में झूठी-सकारात्मकता पर जुर्माना नहीं है (सच्चाई झूठी है लेकिन आपका मॉडल भविष्यवाणी करता है कि यह सही है), जबकि दूसरे में झूठी-सकारात्मकता पर जुर्माना है। इसलिए, पहले सूत्र या दूसरे की पसंद, आपके मेट्रिक्स को प्रभावित करेगी (उर्फ आपके मॉडल का मूल्यांकन करने के लिए आप किस सांख्यिकीय मात्रा का उपयोग करना चाहते हैं)।

आम शब्द में:

यदि आप लगभग सभी अच्छे लोगों को अपना दोस्त स्वीकार करना चाहते हैं, लेकिन कुछ बुरे लोगों को अपना दोस्त बनने के लिए तैयार करना चाहते हैं, तो कसौटी के लिए पहले सूत्र का उपयोग करें।

यदि आप अपने आप को कुछ बुरे लोगों को अपना दोस्त मानने की सज़ा देना चाहते हैं, लेकिन साथ ही साथ आपके अच्छे लोग स्वीकार करने की दर पहली शर्त से कम हो सकती है, तो दूसरे फॉर्मूले का उपयोग करें।

हालांकि, मुझे लगता है कि हम में से अधिकांश महत्वपूर्ण हैं और दूसरे को चुनना चाहेंगे (ताकि कई एमएल पैकेज मान लें कि क्रॉस एन्ट्रॉपी क्या है)।

दूसरा सवाल:

ytruelog(ypredict)

inkKytrue(k)log(ypredict(k))

इस प्रकार, जब केवल दो वर्ग होते हैं (K = 2), तो आपके पास दूसरा सूत्र होगा।


5

उन मुद्दों को सॉफ्टमैक्स के ट्यूटोरियल के उपयोग द्वारा नियंत्रित किया जाता है।

1) आप सही हैं कि सॉफ्टमैक्स एक गैर-शून्य आउटपुट की गारंटी देता है क्योंकि यह इनपुट इनपुट करता है। सक्रियण के लिए जो इस गारंटी को नहीं देते हैं (जैसे कि रिले), उस समस्या से बचने के लिए हर आउटपुट में एक बहुत छोटा सा सकारात्मक शब्द जोड़ना सरल है।

2) के रूप में, वे स्पष्ट रूप से समान नहीं हैं, लेकिन मैंने जो सॉफ्टमैक्स फॉर्मूलेशन दिया है, वह इस मुद्दे का ध्यान रखता है। यदि आप सॉफ्टमैक्स का उपयोग नहीं करते हैं, तो इससे आपको किसी भी इनपुट के लिए प्रत्येक वर्ग के लिए अनुमान लगाने वाले विशाल पूर्वाग्रह शब्द सीखने होंगे। लेकिन चूंकि वे सभी वर्गों में सॉफ्टमैक्स को सामान्य करते हैं, सही वर्ग के उत्पादन को अधिकतम करने का एकमात्र तरीका यह है कि यह गलत कक्षाओं के सापेक्ष बड़ा हो।


"आप सही हैं कि सॉफ्टमैक्स एक गैर-शून्य आउटपुट की गारंटी देता है" - मुझे पता है कि यह सैद्धांतिक रूप से मामला है। वास्तव में, क्या ऐसा हो सकता है कि (संख्यात्मक मुद्दों के कारण) यह 0 हो जाए?
मार्टिन थोमा

अच्छा प्रश्न। मुझे लगता है कि प्रतिपादक फ़ंक्शन 0.0 के आउटपुट के लिए यह पूरी तरह से संभव है यदि आपका इनपुट आपके फ्लोट की शुद्धता के लिए बहुत छोटा है। हालांकि मुझे लगता है कि अधिकांश कार्यान्वयन गैर-शून्य इनपुट की गारंटी के लिए छोटे सकारात्मक शब्द जोड़ते हैं।
jamesmf

0

yilog(yi)

log(0)log(yi+ϵ)


Hy(y):=iyilog(yi)
Hy(y):=i(yilog(yi)+(1yi)log(1yi))

(ए) मल्टी-क्लास भविष्यवाणी के लिए सही है (यह वास्तव में एक डबल समन है), (बी) दो-श्रेणी की भविष्यवाणी के लिए (ए) के समान है। दोनों क्रॉस-एंट्रोपी हैं।

उदाहरण:

xici{0,1}ci[0,1]

cici

(ci,ci)={(0,0.1),(0,0.4),(0,0.8),(1,0.8),(1,0.2)}

yiyi

  • yik:=1ci=k:=0

  • yik:=p(k|xi)xik

(yi,yi)

(yi,yi)={([1,0],[0.9,0.1]), ([1,0],[0.6,0.4]), ([1,0],[0.2,0.8]), ([0,1],[0.2,0.8]), ([0,1],[0.8,0.2])}

दोनों (ए) और (बी) के रूप में गणना की जाती है:

Hy(y)=1/5([log(0.9)+log(0.6)+log(0.2)]ci=0+[log(0.8)+log(0.2)]ci=1)=0.352

व्युत्पत्ति:

1K
(xi,ci)ci=kyi=[0,..,1,0,..]kthyik=1yik=p(k|xi)(xi,k)log(yik)yik1log(yik)0

L(yi,yi)=k=1Kyiklog(yik)

yik=1kk0log(yik)=0yim=1

L(yi,yi)=log(yim)

सभी प्रशिक्षण बिंदुओं पर अंतिम सूत्र है:

Hy(y)=(xi,yi)k=1Kyiklog(yik)

yi0=1yi1yi0=1yi1

Hy(y)=(xi,yi)yi1log(yi1)+yi0log(yi0)=(xi,yi)yi1log(yi1)+(1yi1)log(1yi1)

जो (बी) के समान है।

क्रॉस-एन्ट्रॉपी (ए) वर्गों पर (एक योग)

क्रॉस-एन्ट्रॉपी (ए) वर्गों पर है:

Hy(y)=k=1Kyklog(yk)

इस संस्करण का उपयोग वर्गीकरण कार्य के लिए नहीं किया जा सकता है। पिछले उदाहरण से डेटा का पुन: उपयोग करें:

(ci,ci)={(0,0.1),(0,0.4),(0,0.8),(1,0.8),(1,0.2)}

y0=3/5=0.6y1=0.4

y0=3/5=0.6y1=0.4

y0logy0y1logy1=0.6log(0.6)0.4log(0.4)=0.292

(0,0.8)(1,0.2)y0y1


(ci,ci)={(0,0.1),(0,0.4),(0,0.2),(1,0.8),(1,0.8)}

y0y0=3/5

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.