সফটম্যাক্স / ক্রস এন্ট্রপি সহ ব্যাকপ্রসারণ


40

আমি বুঝতে চেষ্টা করছি যে কোনও সফটম্যাক্স / ক্রস-এন্ট্রপি আউটপুট স্তরটির জন্য ব্যাকপ্রসারণ কীভাবে কাজ করে।

ক্রস এনট্রপি ত্রুটি ফাংশন

(টি,)=-Σটিলগ

যথাক্রমে নিউরন জে লক্ষ্য এবং আউটপুট হিসাবে টি এবং সহ । যোগফল আউটপুট স্তরের প্রতিটি নিউরনের উপরে। জে নিজেই সফটম্যাক্স ফাংশনের ফলাফল:oj

oj=softmax(zj)=ezjjezj

আবার, যোগফল আউটপুট স্তর প্রতিটি নিউরনের উপর এবং zj নিউরন ইনপুট হয় j:

zj=iwijoi+b

এটি পূর্ববর্তী স্তরের সমস্ত নিউরনের উপর যোগফল হ'ল নিউরন জে প্লাস বায়াস বি এর দিকে তাদের সংশ্লিষ্ট আউটপুট oi এবং ওজন wijjb

এখন, একটি ওজন আপডেট করতে wij একটি স্নায়ুর সংযোগ স্থাপন করে j একটি স্নায়ুর সঙ্গে আউটপুট স্তরে i পূর্ববর্তী স্তরে, আমি চেইন নিয়ম ব্যবহার ত্রুটি ফাংশন আংশিক ডেরিভেটিভ নিরূপণ করা প্রয়োজন:

Ewij=Eojojzjzjwij

সঙ্গে zj স্নায়ুর ইনপুট হিসাবে j

শেষ শব্দটি বেশ সহজ। যেহেতু i এবং মধ্যে কেবল একটি ওজন থাকে jতাই ডেরাইভেটিভটি হ'ল:

zjwij=oi

প্রথম শব্দটি হ'ল আউটপুট আউটপুট সম্পর্কিত ত্রুটি ফাংশনটির ডেরাইভেশন :oj

Eoj=tjoj

মধ্যমেয়াদটি হ'ল সফটম্যাক্স ফাংশনটির ডায়রিভিশন যা এর ইনপুট এর সাথে সম্মতিযুক্ত :zj

ojzj=zjezjjezj

ধরা যাক আমাদের ক্লাসের সাথে সংযুক্ত তিনটি আউটপুট নিউরন রয়েছে পরে o b = s o f t m a x ( b ) হ'ল:a,b,cob=softmax(b)

ob=ezbez=ezbeza+ezb+ez

ভাগফলের নিয়ম ব্যবহার করে এবং এর ব্যয়:

=sএফটিএমx()-এসএফটিএমx2(বি)=বি

B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষরz- রB ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর=z- রB ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর*Σz- র-(z- রB ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর)2(Σz- র)2=z- রB ইংরেজী বর্ণমালার দ্বিতীয় অক্ষরΣz- র-(z- রB ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর)2(Σz- র)2
মধ্যমেয়াদীতে ফিরে যান backpropagation এই মাধ্যম:
=গুলিটিমিএকটিএক্স(B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর)-গুলিটিমিএকটিএক্স2(B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর)=B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর-B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর2=B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর(1-B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর)
z- র=(1-)

সব একসাথে রাখা আমি পেতে

Wআমি=-টি*(1-)*আমি=-টি(1-)*আমি

যার অর্থ, যদি এই শ্রেণীর জন্য লক্ষ্য তবে আমি এর জন্য ওজন আপডেট করব না। এটি ঠিক শোনাচ্ছে না।tj=0

এই আমি তদন্ত পাওয়া মানুষ softmax শিক্ষাদীক্ষা, এক যেখানে দুটি রূপের থাকার এবং অপরের জন্য আমি , মত এখানে বা এখানেi=jij

তবে আমি এ থেকে কোনও ধারণা করতে পারি না। এছাড়াও আমি নিশ্চিত না যে এটি আমার ত্রুটির কারণ কিনা, তাই আমি আমার সমস্ত গণনা পোস্ট করছি post আমি আশা করি যে আমি কোথায় কিছু মিস করছি বা ভুল হয়ে যাচ্ছি কেউ আমাকে স্পষ্ট করতে পারে।


আপনি যে লিঙ্কগুলি দিয়েছেন সেগুলি ইনপুটটির সাথে সম্পর্কিত ডেরাইভেটিভ গণনা করছে, আপনি ওজনের তুলনায় ডেরাইভেটিভ গণনা করছেন।
জেনকার

উত্তর:


35

দ্রষ্টব্য: আমি ব্যাকপ্রপ নিয়ে বিশেষজ্ঞ নই, তবে এখন কিছুটা পড়েছি বলে আমি মনে করি যে নিম্নলিখিত ক্যাভিয়েটটি উপযুক্ত। স্নায়ুবহুল জালগুলিতে কাগজপত্র বা বই পড়ার সময় , ডেরিভেটিভদের জন্য স্ট্যান্ডার্ড সংমিশ্রণ / সূচী সূচীকরণ , ম্যাট্রিক্স নোটেশন এবং বহু-সূচক স্বরলিপিটির মিশ্রণ ব্যবহার করে রচনা করা অস্বাভাবিক কিছু নয় (টেনসর-টেনসর ডেরিভেটিভসের জন্য শেষ দুটিয়ের সংকরকে অন্তর্ভুক্ত করুন) )। সাধারণত উদ্দেশ্যটি হ'ল এটি "প্রসঙ্গ থেকে বোঝা উচিত", সুতরাং আপনার যত্নবান হতে হবে!

আমি আপনার বিকাশের মধ্যে বেশ কয়েকটি অসঙ্গতি লক্ষ্য করেছি। আমি সত্যিই নিউরাল নেটওয়ার্কগুলি করি না, তাই নিম্নলিখিতগুলি ভুল হতে পারে। যাইহোক, সমস্যাটি সম্পর্কে আমি কীভাবে যাব তা এখানে।

প্রথমত, আপনাকে এর সংমিশ্রণের অ্যাকাউন্ট নেওয়া দরকার এবং আপনি প্রতিটি পদটি কেবল একটি ওজনের উপর নির্ভর করে ধরে নিতে পারবেন না। সুতরাং z এর উপাদান K এর সাথে E এর গ্রেডিয়েন্ট গ্রহণ করা আমাদের E = - j t j লগ হে জ আছেEEkz

E=jtjlogojEzk=jtjlogojzk

তারপরে, জে = 1 হিসাবে প্রকাশ করাoj আমাদের লগ আছে

oj=1Ωezj,Ω=iezilogoj=zjlogΩ
যেখানেδহয়Kronecker ব-দ্বীপ
logojzk=δjk1ΩΩzk
δjk । তারপরে সফটম্যাক্স-ডিনোমিনেটরের গ্রেডিয়েন্টটি যা দেয়
Ωzk=ieziδik=ezk
বা, লগটি প্রসারিত করা হচ্ছে
logojzk=δjkok
লক্ষ্য করুন ব্যুৎপন্ন থেকে সম্মান সঙ্গেz- র, একটিঅবাধএর কম্পোনেন্টz- র, যা দেয়δশব্দ (=1
ojzk=oj(δjkok)
zkzδjk=1 শুধুমাত্র যখন )।k=j

তাই z এর সাথে সম্মানের সাথে এর গ্রেডিয়েন্টEz তখন যেখানে τ=জেটিজে

Ezk=jtj(okδjk)=ok(jtj)tkEzk=okτtk
τ=jtj স্থির থাকে (প্রদত্ত ভেক্টরের জন্য)।t

এটি আপনার ফলাফল থেকে প্রথম পার্থক্য দেখায়: আর কে ছাড়বে না । নোট করুন যে টিপিকাল ক্ষেত্রে আমাদের কাছে টি "ওয়ান-হট" থাকেtkokt (আপনার প্রথম লিঙ্কে উল্লিখিত হিসাবে)।τ=1

দ্বিতীয় অসঙ্গতি, যদি আমি সঠিকভাবে বুঝতে পারি তবে তা হ'ল " " যা z এ ইনপুটoz "হওয়ার সম্ভবনা " যে softmax থেকে আউটপুট। আমি ভাবব যে এটি আরও বেশি বোঝায় যে এটি নেটওয়ার্ক আর্কিটেকচারে আসলে "আরও পিছনে"?o

এই ভেক্টরকে , আমাদের তখন z k = i w i k y i আছেy

zk=iwikyi+bkzkwpq=iyiwikwpq=iyiδipδkq=δkqyp

পরিশেষে, ওজন-ম্যাট্রিক্স ডব্লু সম্পর্কিত এর গ্রেডিয়েন্ট পেতে আমরা চেইন বিধি use ব্যবহার করি Ew চূড়ান্ত এক্সপ্রেশন দিচ্ছে (এক-হটটি ধরে, অর্থাৎτ=1) E

Ewpq=kEzkzkwpq=k(okτtk)δkqyp=yp(oqτtq)
tτ=1 যেখানেyহল সর্বনিম্ন স্তরের ইনপুট (আপনার উদাহরণের)।
Ewij=yi(ojtj)
y

এই শো আপনার ফলাফল থেকে একটি দ্বিতীয় পার্থক্য তাই: " " সম্ভবতঃ নিচে পর্যায় থেকে হওয়া উচিত z- র , যা আমি কল Y উপরে স্তর, বরং z- র (যা )।oizyzo

আশা করি এটি সাহায্য করবে। এই ফলাফল কি আরও সামঞ্জস্যপূর্ণ বলে মনে হচ্ছে?

আপডেট: মন্তব্যগুলিতে ওপেনের একটি প্রশ্নের জবাবে, এখানে প্রথম ধাপের সম্প্রসারণ করা হচ্ছে। প্রথমে নোট করুন যে ভেক্টর চেইন রুলের সংক্ষিপ্তসার প্রয়োজন ( এখানে দেখুন )। দ্বিতীয়ত, সমস্ত গ্রেডিয়েন্ট উপাদানগুলি পাওয়ার বিষয়ে নিশ্চিত হওয়ার জন্য , আপনাকে আংশিক ডেরাইভেটিভের ডিনোমিনেটরে সর্বদা উপাদানটির জন্য একটি নতুন সাবস্ক্রিপ্ট চিঠি প্রবর্তন করা উচিত । সুতরাং সম্পূর্ণ শৃঙ্খলা বিধি সহ গ্রেডিয়েন্টটি সম্পূর্ণরূপে লিখতে আমাদের এবং আমি

Ewpq=iEoioiwpq
so E
oiwpq=koizkzkwpq
অনুশীলন পূর্ণ summations, কমাতে কারণ আপনার অনেক পাওয়াδএকটিশর্তাবলী। যদিও এতে প্রচুর পরিমাণে "অতিরিক্ত" সংক্ষিপ্তসার এবং সাবস্ক্রিপ্ট জড়িত রয়েছে, সম্পূর্ণ চেইন নিয়মটি ব্যবহার করা আপনাকে সর্বদা সঠিক ফলাফলটি নিশ্চিত করবে।
Ewpq=i[Eoi(koizkzkwpq)]
δab

"ব্যাকপ্রপ / অটোডিফ" সম্প্রদায় কীভাবে এই সমস্যাগুলি করে তা আমি নিশ্চিত নই, তবে আমি যখনই শর্টকাট নেওয়ার চেষ্টা করি তখন আমি ত্রুটিগুলি দায়বদ্ধ। সুতরাং আমি এখানে এখানে শেষ করছি, সম্পূর্ণ সাবস্ক্রিপিং সহ সংক্ষিপ্তসারগুলির শর্তে সবকিছু লিখছি এবং প্রতিটি ডেরাইভেটিভের জন্য সর্বদা নতুন সাবস্ক্রিপ্টগুলি প্রবর্তন করছি। ( এখানে আমার উত্তরের অনুরূপ ... আমি আশা করি আমি কমপক্ষে শেষ পর্যন্ত সঠিক ফলাফল
দিচ্ছি

আমি ব্যক্তিগতভাবে দেখতে পেয়েছি যে আপনি সমস্ত কিছু লিখে রেখেছিলেন তা অনুসরণ করা আরও সহজ করে তোলে। ফলাফলগুলি আমার কাছে সঠিক দেখাচ্ছে।
জেনকার

যদিও আমি এখনও আপনার প্রতিটি পদক্ষেপের পুরোপুরি বুঝতে চেষ্টা করছি, আমি কিছু মূল্যবান অন্তর্দৃষ্টি পেয়েছি যা সামগ্রিক চিত্রটি আমাকে সাহায্য করেছিল। আমি অনুমান এবং অঙ্কের বিষয়গুলিতে আরও পড়তে হবে বলে আমার ধারণা। তবে আপনার ই
সামিটের

oj1=ezj1Ωoj1=ezj1Ω
Ω=ezj1+ezj2
E=(t1logoj1+t2logoj2)=(t1(zj1log(Ω))+t2(zj2log(Ω)))
E(zj1=(t1t1ezj1Ωt2ezj2Ω)=t1+oj1(t1+t2)

তবে আমার কাছে আরও একটি প্রশ্ন হ'ল: পরিবর্তে
Ewij=Eojojzjzjwij
Ewij=Ezjzjwij
oj

12

@ জিওম্যাট 22 এর উত্তরটি সঠিক হলেও আমি ব্যক্তিগতভাবে সমস্যাটিকে খেলনার উদাহরণে হ্রাস করতে এবং ছবি আঁকার জন্য খুব দরকারী বলে মনে করেছি:

গ্রাফিকাল মডেল।

Wটি

এল=-টি1লগ1-টি2লগ2
1=মেপুঃ(Y1)মেপুঃ(Y1)+ +মেপুঃ(Y2)
2=মেপুঃ(Y2)মেপুঃ(Y1)+ +মেপুঃ(Y2)
Y1=W111+ +W212+ +W313
Y2=W121+ +W222+ +W323

W21W

Graphical model with highlighted backwards path.

Y1W21

এল1=-টি11
এল2=-টি22
1Y1=মেপুঃ(Y1)মেপুঃ(Y1)+ +মেপুঃ(Y2)-(মেপুঃ(Y1)মেপুঃ(Y1)+ +মেপুঃ(Y2))2=1(1-1)
2Y1=-মেপুঃ(Y2)মেপুঃ(Y1)(মেপুঃ(Y1)+ +মেপুঃ(Y2))2=-21
Y1W21=2

এলW21=এল11Y1Y1W21+ +এল22Y1Y1W21=-টি11[1(1-1)]2+ +-টি22(-21)2=2(টি21-টি1+ +টি11)=2(1(টি1+ +টি2)-টি1)=2(1-টি1)

নোট করুন যে শেষ ধাপে, টি1+ +টি2=1 কারণ ভেক্টর টি এক-গরম ভেক্টর।


অবশেষে এটিই আমার পক্ষে পরিষ্কার হয়ে গেল! দুর্দান্ত এবং মার্জিত ব্যাখ্যা !!!!
সন্তোষগুপ্ত 7

2
আপনি দুজনেই আমার পোস্টটি পড়ে উপভোগ করেছেন এবং উপকৃত হয়েছেন বলে আমি আনন্দিত! এটি লিখে এবং এটি ব্যাখ্যা করা আমার পক্ষেও সহায়ক ছিল।
বিবেক সুব্রমনিয়ান

@VivekSubramanian should it be
=t1o1[o1(1o1)]h2+t2o2(o2o1)h2
instead ?
কোরিয়াকিন্প

You’re right - it was a typo! I will make the change.
Vivek Subramanian

The thing i do not understand here is that you also assign logits (unscaled scores) to some neurons. (o is softmaxed logits (predictions) and y is logits in your case). However, this is not the case normally, is not it? Look at this picture ( o_out1 is prediction and o_in1 is logits) so how is it possible in this case how can you find the partial derivative of o2 with respect to y1?
ARAT

6

In place of the {oi}, I want a letter whose uppercase is visually distinct from its lowercase. So let me substitute {yi}. Also, let's use the variable {pi} to designate the {oi} from the previous layer.

Let Y be the diagonal matrix whose diagonal equals the vector y, i.e.

Y=Diag(y)
Using this new matrix variable and the Frobenius Inner Product we can calculate the gradient of E wrt W.
z=Wp+bdz=dWpy=softmax(z)dy=(YyyT)dzE=t:log(y)dE=t:Y1dydE=t:Y1(YyyT)dz=t:(I1yT)dz=t:(I1yT)dWp=(y1TI)tpT:dW=((1Tt)ypTtpT):dWEW=(1Tt)ypTtpT

6

Here is one of the cleanest and well written notes that I came across the web which explains about "calculation of derivatives in backpropagation algorithm with cross entropy loss function".


In the given pdf how did equation 22 become equation 23? As in how did the Summation(k!=i) get a negative sign. Shouldn't it get a positive sign? Like Summation(Fn)(For All K) = Fn(k=i) + Summation(Fn)(k!=i) should be happening according to my understanding.
faizan

1

Here's a link explaining the softmax and its derivative.

It explains the reason for using i=j and i!=j.


ভবিষ্যতে এই লিঙ্কটি নষ্ট হয়ে যাওয়ার ক্ষেত্রে, একটি ন্যূনতম, একা একা উত্তর দেওয়ার পরামর্শ দেওয়া হচ্ছে। অন্যথায়, এটি ভবিষ্যতে আর ব্যবহারকারীদের আর সাহায্য করবে না।
লুচোনাচো

0

অন্যান্য উত্তরগুলি ডেরাইভেটিভ গণনা করার সঠিক উপায় সরবরাহ করেছে তবে আপনি কোথায় ভুল করেছেন তা সেগুলি নির্দেশ করে না। আসলে,টি আপনার সর্বশেষ সমীকরণে সর্বদা 1, কারণ আপনি এটি ধরে নিয়েছেন আপনার আউটপুটে লক্ষ্য 1 এর নোড নেয়; অন্যান্য নোডের সম্ভাব্যতার বিভিন্ন ধরণের ক্রিয়াকলাপ রয়েছে, সুতরাং এটি বিভিন্ন ধরণের ডেরিভেটিভের দিকে পরিচালিত করে, তাই আপনারা এখন বুঝতে হবে যে অন্যান্য লোকেরা কেন চিকিত্সা করেছে আমি= এবং ij differently.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.