docs/si/uncertainty/evidence/index.html
[View code on Github](https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/uncertainty/evidence/ init.py)
මෙය වර්ගීකරණ අවිනිශ්චිතතාව ප්රමාණ කිරීම සඳහා පැහැදිලි ගැඹුරු ඉගෙනුම් කඩදාසි ක්රියාත්මක කිරීම PyTorch ක්රියාත්මක කිරීමයි.
Dampster-Shafer Theory of Evidence of Dampster-Shafer Theory of Dampster-Shafer Theory of Evidence සියලු උප කුලවල ස්කන්ධයන්ගේ එකතුව වේ 1. තනි පුද්ගල පන්ති සම්භාවිතාවන් (plausibilities) මෙම ස්කන්ධයන්ගෙන් ලබා ගත හැකිය.
සියලුමපංතිවල කට්ටලයට ස්කන්ධයක් පැවරීම යන්නෙන් අදහස් කරන්නේ එය ඕනෑම පන්තියක් විය හැකි බවයි; එනම් “මම නොදනිමි” යැයි පැවසීම.
K පංති තිබේ නම්, අපි එක් එක් bk≥0 පංතිවලට ස්කන්ධයන් සහ සියලු පංතිවලට සමස්ත අවිනිශ්චිත ස්කන්ධයක් u≥0 පවරමු.
u+k=1∑Kbk=1
විශ්වාසජනතාව bk සහ සාක්ෂි වලින් ගණනය u කළ හැකිය ek≥0, ලෙස bk=Sek සහ u=SK කොතැනද S=∑k=1K(ek+1). යම් පන්තියකට වර්ගීකරණය කිරීම සඳහා නියැදියකට පක්ෂව දත්ත වලින් එකතු කරන ලද ආධාරක ප්රමාණය මැනීමක් ලෙස කඩදාසි කාලීන සාක්ෂි භාවිතා කරයි.
මෙයපරාමිතීන් සහිත ඩයිරිච්ලට් ව්යාප්තියට අනුරූප αk=ek+1වන අතර α0=S=∑k=1Kαk එය ඩයිරිච්ලට් ශක්තිය ලෙස හැඳින්වේ. ඩයිරිච්ලට් බෙදා හැරීම D(p∣α) යනු වර්ගීකරණ බෙදාහැරීමකට වඩා බෙදා හැරීමකි; i.e. ඔබට ඩයිරිච්ලට් බෙදාහැරීමෙන් පන්ති සම්භාවිතාව සාම්පල ලබා ගත හැකිය. පන්තිය සඳහා අපේක්ෂිත සම්භාවිතාව k වේ p^k=Sαk.
දීඇති ආදානයක් e=α−1=f(x∣Θ) සඳහා සාක්ෂි ප්රතිදානය කිරීමේ ආකෘතිය අපට xලැබේ. ලබා ගැනීම සඳහා අපි අවසාන ස්ථරයේ RelU හෝ සොෆ්ට්ප්ලස් වැනි ශ්රිතයක් භාවිතා කරමු f(x∣Θ)≥0.
අපිපහත ක්රියාත්මක කර ඇති ආකෘතිය පුහුණු කිරීම සඳහා පාඩු කාර්යයන් කිහිපයක් පත්රිකාව යෝජනා කරයි.
MNISTදත්ත කට්ටලයේ ආකෘතියක් පුහුණු experiment.py කිරීම සඳහා පුහුණු කේතය මෙන්න.
54importtorch5556fromlabmlimporttracker57fromlabml\_helpers.moduleimportModule
බෙදාහැරීම සම්භාවිතාව මත පෙර D(p∣α) වන අතර Multi(y∣p), සෘණ ලඝු-සටහන ආන්තික සම්භාවිතාව පන්ති සම්භාවිතාව කට ඒකාබද්ධ විසින් ගණනය කරනු ලැබේ p.
ඉලක්කසම්භාවිතාවන් (එක්-උණුසුම් ඉලක්ක) දී ඇති නියැදියක් yk සඳහා නම් අලාභය නම්,
L(Θ)=−log(∫k=1∏KpkykB(α)1k=1∏Kpkαk−1dp)=k=1∑Kyk(logS−logαk)
60classMaximumLikelihoodLoss(Module):
evidence හැඩය e≥0 සමඟ ඇත [batch_size, n_classes]target හැඩය y සමඟ ඇත [batch_size, n_classes]85defforward(self,evidence:torch.Tensor,target:torch.Tensor):
αk=ek+1
91alpha=evidence+1.
S=∑k=1Kαk
93strength=alpha.sum(dim=-1)
පාඩු L(Θ)=∑k=1Kyk(logS−logαk)
96loss=(target\*(strength.log()[:,None]-alpha.log())).sum(dim=-1)
කණ්ඩායමටවඩා මධ්යන්ය අලාභය
99returnloss.mean()
බේස්අවදානම යනු වැරදි ඇස්තමේන්තු සකස් කිරීමේ සමස්ත උපරිම පිරිවැයයි. වැරදි තක්සේරුවක් කිරීමේ පිරිවැය පිරිවැය ලබා දෙන පිරිවැය ශ්රිතයක් ගන්නා අතර සම්භාවිතා ව්යාප්තිය මත පදනම්ව හැකි සෑම ප්රති come ලයකටම වඩා එය සාරාංශ කරයි.
මෙන්නපිරිවැය ශ්රිතය හරස් එන්ට්රොපි අලාභයයි, එක්-උණුසුම් කේතනය කර ඇත y k=1∑K−yklogpk
අපිමෙම පිරිවැය සියල්ලටම වඩා ඒකාබද්ධ කරමු p
L(Θ)=−log(∫[k=1∑K−yklogpk]B(α)1k=1∏Kpkαk−1dp)=k=1∑Kyk(ψ(S)−ψ(αk))
ψ(⋅) digamma ශ්රිතය කොහේද?
102classCrossEntropyBayesRisk(Module):
evidence හැඩය e≥0 සමඟ ඇත [batch_size, n_classes]target හැඩය y සමඟ ඇත [batch_size, n_classes]132defforward(self,evidence:torch.Tensor,target:torch.Tensor):
αk=ek+1
138alpha=evidence+1.
S=∑k=1Kαk
140strength=alpha.sum(dim=-1)
පාඩු L(Θ)=∑k=1Kyk(ψ(S)−ψ(αk))
143loss=(target\*(torch.digamma(strength)[:,None]-torch.digamma(alpha))).sum(dim=-1)
කණ්ඩායමටවඩා මධ්යන්ය අලාභය
146returnloss.mean()
මෙහිපිරිවැය ශ්රිතය කොටු දෝෂයකි, k=1∑K(yk−pk)2=∥y−p∥22
අපිමෙම පිරිවැය සියල්ලටම වඩා ඒකාබද්ධ කරමු p
L(Θ)=−log(∫[k=1∑K(yk−pk)2]B(α)1k=1∏Kpkαk−1dp)=k=1∑KE[yk2−2ykpk+pk2]=k=1∑K(yk2−2ykE[pk]+E[pk2])
ඩයිරිච්ලට්ව්යාප්තියෙන් නියැදි කළ විට අපේක්ෂිත සම්භාවිතාව E[pk2]=E[pk]2+Var(pk) කොතැනද සහ Var(pk)=S2(S+1)αk(S−αk)=S+1p^k(1−p^k) විචලතාව කොහේද? E[pk]=p^k=Sαk
මෙයලබා දෙයි,
L(Θ)=k=1∑K(yk2−2ykE[pk]+E[pk2])=k=1∑K(yk2−2ykE[pk]+E[pk]2+Var(pk))=k=1∑K((yk−E[pk])2+Var(pk))=k=1∑K((yk−p^k)2+S+1p^k(1−p^k))
සමීකරණයේමෙම පළමු කොටස දෝෂ පදය (yk−E[pk])2 වන අතර දෙවන කොටස විචලනය වේ.
149classSquaredErrorBayesRisk(Module):
evidence හැඩය e≥0 සමඟ ඇත [batch_size, n_classes]target හැඩය y සමඟ ඇත [batch_size, n_classes]195defforward(self,evidence:torch.Tensor,target:torch.Tensor):
αk=ek+1
201alpha=evidence+1.
S=∑k=1Kαk
203strength=alpha.sum(dim=-1)
p^k=Sαk
205p=alpha/strength[:,None]
දෝෂයකි (yk−p^k)2
208err=(target-p)\*\*2
විචලතාව Var(pk)=S+1p^k(1−p^k)
210var=p\*(1-p)/(strength[:,None]+1)
ඒවායේඑකතුව
213loss=(err+var).sum(dim=-1)
කණ්ඩායමටවඩා මධ්යන්ය අලාභය
216returnloss.mean()
නියැදියනිවැරදිව වර්ගීකරණය කළ නොහැකි නම් සම්පූර්ණ සාක්ෂි ශුන්යයට හැකිලීමට මෙය උත්සාහ කරයි.
පළමුවඅපි නිවැරදි සාක්ෂි ඉවත් කිරීමෙන් පසු ඩයිරිච්ලට් පරාමිතීන් ගණනය α~k=yk+(1−yk)αk කරමු.
KL[D(p∣α~)∥∥D(p∣<1,…,1>]=log(Γ(K)∏k=1KΓ(αk)Γ(∑k=1Kαk))+k=1∑K(αk−1)[ψ(αk)−ψ(S~)]
ගැමා Γ(⋅) ශ්රිතය කොහෙද, ψ(⋅) digamma ශ්රිතය සහ S~=∑k=1Kα~k
219classKLDivergenceLoss(Module):
evidence හැඩය e≥0 සමඟ ඇත [batch_size, n_classes]target හැඩය y සමඟ ඇත [batch_size, n_classes]243defforward(self,evidence:torch.Tensor,target:torch.Tensor):
αk=ek+1
249alpha=evidence+1.
පන්තිගණන
251n\_classes=evidence.shape[-1]
නොමඟයවන සාක්ෂි ඉවත් කරන්න α~k=yk+(1−yk)αk
254alpha\_tilde=target+(1-target)\*alpha
S~=∑k=1Kα~k
256strength\_tilde=alpha\_tilde.sum(dim=-1)
පළමුපදය
log(Γ(K)∏k=1KΓ(αk)Γ(∑k=1Kαk))=logΓ(k=1∑Kαk)−logΓ(K)−k=1∑KlogΓ(αk)
267first=(torch.lgamma(alpha\_tilde.sum(dim=-1))268-torch.lgamma(alpha\_tilde.new\_tensor(float(n\_classes)))269-(torch.lgamma(alpha\_tilde)).sum(dim=-1))
දෙවනවාරය k=1∑K(αk−1)[ψ(αk)−ψ(S~)]
274second=(275(alpha\_tilde-1)\*276(torch.digamma(alpha\_tilde)-torch.digamma(strength\_tilde)[:,None])277).sum(dim=-1)
කොන්දේසිඑකතුව
280loss=first+second
කණ්ඩායමටවඩා මධ්යන්ය අලාභය
283returnloss.mean()
මෙමමොඩියුලය සංඛ්යාලේඛන ගණනය කර ඒවා ලැබ්මිලිසමඟ නිරීක්ෂණය කරයි tracker .
286classTrackStatistics(Module):
294defforward(self,evidence:torch.Tensor,target:torch.Tensor):
පන්තිගණන
296n\_classes=evidence.shape[-1]
ඉලක්කයසමඟ නිවැරදිව ගැලපෙන අනාවැකි (වැඩිම සම්භාවිතාව මත පදනම්ව කෑදර නියැදීම්)
298match=evidence.argmax(dim=-1).eq(target.argmax(dim=-1))
ලුහුබැඳීමේනිරවද්යතාවය
300tracker.add('accuracy.',match.sum()/match.shape[0])
αk=ek+1
303alpha=evidence+1.
S=∑k=1Kαk
305strength=alpha.sum(dim=-1)
p^k=Sαk
308expected\_probability=alpha/strength[:,None]
තෝරාගත්(කෑදර හයිසෙට් සම්භාවිතාව) පන්තියේ අපේක්ෂිත සම්භාවිතාව
310expected\_probability,\_=expected\_probability.max(dim=-1)
අවිනිශ්චිතතාස්කන්ධය u=SK
313uncertainty\_mass=n\_classes/strength
නිවැරදිවඅනාවැකි u සඳහා ලුහුබඳින්න
316tracker.add('u.succ.',uncertainty\_mass.masked\_select(match))
වැරදිඅනාවැකි u සඳහා ලුහුබඳින්න
318tracker.add('u.fail.',uncertainty\_mass.masked\_select(~match))
නිවැරදිවඅනාවැකි p^k සඳහා ලුහුබඳින්න
320tracker.add('prob.succ.',expected\_probability.masked\_select(match))
වැරදිඅනාවැකි p^k සඳහා ලුහුබඳින්න
322tracker.add('prob.fail.',expected\_probability.masked\_select(~match))