در اين مطالعه به بررسي مقالهي " Putting An End to End-to-End: Gradient-Isolated Learning of Representation "ميپردازيم.
روش هاي موجود براي يادگيري در شبكههاي عصبي تا الان با استفاده از backpropagation وoptimize كردن يك سيگنال ارور به صورت global صورت گرفتهاست. كه اين روشها تا الان توانسته اند به دقتهاي بسيار خوب و بالايي دست پيدا كنند.
يادگيري در موجودات زنده از سيگنال ارور و يادگيري با استفاده از backpropagation نمي باشد و يادگيري به صورت محلي صورت مي پذيرد. با الهام از اين موضوع در اين مقاله روش جديدي ارائه شده است بدين صورت كه شبكه را به ماژولهاي كوچك تقسيم كرده و سيگنال ارور backpropagate نميشود و شبكه به صورت greedy و layer-wise آموزش داده ميشود.
با استفاده از اين شيوه آموزش ميتواند به صورت disterbuted و آسنكرون صورت گيرد و مي توان از اين موضوع به عنوان يكي ازين مزاياي روش استفاده شده در اين مقاله ياد كرد.
از طرفي ديگر استفاده از ديتايي كه داراي ليبل ميباشد نيازمند هزينهي زيادي ميباشد و كودكان به هنگام يادگيري نيازي به ديتا با ليبل زياد ندارند.
روشي كه در بسياري از مقالات مرسوم بوده است supervised learning با end-to-end backpropagation ميباشد. كه داراي چندين نقطه ضعف ميباشد كه در ادامه به آن ها ميپردازيم.
آموزش به صورت supervised نيازمند ليبل ميباشد كه تهيه كردن ليبل براي ديتا بسيار پرهزينه است. زيرا داشتن ديتا به صورت ليبل زده شده مشكل ميباشد، به همين دليل داراي ريسك overfit شدن مي باشد. زيرا ممكن است به ديتاي بيشتري براي آموزش شبكه احتياج داشته باشيم.
از طرفي آموزش شبكه به صورت end-to-end backpropagation نيازمند مموري ميباشد زيرا تمام گراف محاسباتي كه تشكيل ميشود احتياج هست تمام activation ها، پارامتر ها، گراديان ها و وزنها در حافظه قرار بگيرند و ذخيره شوند.
به صورت كلي optimize كردن به صورت global ميبايست هر لايه منتظر لايههاي قبلي خود باشد، تا بتواند گراديان مربوط به خود را محاسبه نمايد. ونميتوان لايههارا به صورت مستقل از يكديگر آموزش داد.
در forward pass هر لايه بايد منتظر activation لايهي قبل باشد تا بتواند محاسبات لازم را انجام دهد. در backward pass هر لايه منتظر گراديان لايه ي قبل ميماند تا بتواند وزن خود را آپديت نمايد.
در اين قسمت به بررسي و توضيح مربوط به الگوريتم greedy infomax ميپردازيم. همانطور كه در شكل 1 ميتوان مشاهده نمود، اين روش به صورت self-supervised كار ميكند. شبكه به يك سري ماژول شكسته ميشود، به اين صورت كه عمل forward-propagate انجام ميشود ولي عمل backward-propagateانجام نميشود. و به جاي backpropagation هر ماژول به صورت greedy و با يك loss به نام InfoNCE به صورت محلي، آموزش داده ميشود كه در ادامه به توضيح آن خواهيم پرداخت.
در شكل 1 فلشهاي مشكي نشان دهندهي forward-propagate و فلشهاي قرمز نشاندهندهي backward-propagate ميباشند كه همان طور كه در شكل نشان داده شدهاست backward انجام نميپذيرد و گراديانهاي هر ماژول بلاك شده و به ماژول بعدي انتقال پيدا نميكند و گرادياني بين ماژولها انتقال پيدا نميكند و صرفا لاس محلي خود را optimize ميكند.
يكي از چالشهاي موجود در اين روش انتقال اطلاعات مفيد از يك ماژول به ماژول ديگر ميباشد. براي مطمئن شدن از انجام اين عمل به درستي، از يك لاس self-supervised استفاده ميشود.
همانطور كه گفته شد loss استفاده شده در اين مقاله به صورت محلي ميباشد. همان طور كه در شكل 2 ميتوان مشاهده نمود، هر لايه داراي چند ماژول ميباشد، و مدل به صورت autoregressive ميباشد.
همان طور كه در شكل دوم ميتوان مشاهده نمود در قسمت سمت راست شكل، loss براي يك لايه نشان داده شده است. و هر لايه از يك سري encoding module تشكيل شده است، لاس تعريف شده به صورت contrastive ميباشد و نيازمند يك جفت مثبت و يك جفت منفي ميباشد. جفت مثبت خروجي هر ماژول، خروجي نزديك ترين ماژول از نظر زماني ميباشد و جفت منفي در نظر گرفته شده خروجي ماژول هايي كه از نظر زماني دور تر ميباشند در نظر گرفته ميباشد. به طور مثال در شكل 2، zt(m) به عنوان anchor، zt+k(m) به عنوان positive pair و zj(m) به عنوان negative pair در نظر گرفته شدهاست.
روش جديد مطرح شده در اين مقاله به نام GreedyInfoMax كه الهام گرفته از بيولوژيك ميباشد از ويژگي زير برخوردار ميباشد كه در راستاي بر طرف كردن مشكلات ذكر شده در مرحلهي قبل است.
ميتوان دستاوردهاي زير را براي اين روش نام برد:
همان طور كه در قسمتهاي قبلي گفته شده، به دليل اينكه در اين روش backpropagate كزدن گراديان ها حذف شده و ماژول ها به صورت ايزوله ميباشند، با استفاده از تعريف لاس فانكشن مناسب، ميخواهيم مطمئن شويم اطلاعات مناسب به لايهها انتقال پيدا ميكند.
در اين مقاله با استفاده از InfoNCE Objective سعي دارد mutual information ميان representation هاي نزديك را ماكسيمم نمايد. بدين صورت كه، سعي بر ماكسيمم كردن mutual information بين representation هاي مربوط به ztm و zt+km را دارد. كه representationهاي مربوط به ماژول m در time-step هاي t و t+k دارد.
Max I(zmt , zmt+k)
همچنين به ماكسيمم كردن Mutual information بين input و output هر ماژول مي باشد كه input را با t+k نمايش ميدهيم و output در step t
Max I(zmt , zm-1t+k)
در واقع با تعريف لاس به اين صورت اين روش به خوبي كار ميكند بدون اين كه هيچ گرادياني بين آنها به اشتراك گذاشته شود. به دليل اينكه mutual information بين ورودي و خروجي هر ماژول را ماكسيمم ميكنيم و هر ماژول را مجبور مي كنيم كه تا ميتواند اطلاعات مفيد مربوط به input را در representation قرار دهد.
نتايج به دست آمده در اين مقاله را به صورت تصويري ميتوان در شكل 3 مشاهده نمود. هر رديف نشان دهندهي يك ماژول ميباشد و مربع قرمز نشاندهندهي پچهايي ميباشد كه نورونها بيشترين توجه را به آنها كردهاند. در لايههاي اوليه مشخص شده كه توجه نورونهاي به ويژگيهاي ساده تر ميباشد مانند orientation ها. و هر چقدر به ماژولهاي پايين تر كه در رديفهاي بعدي نشان داده شدهاست نگاه ميكنيم مشخص است كه ويژگيهاي abstract تر را استخراج مينمايند. اين اتفاق در شبكههايي كه به صورت end-to-end آموزش داده ميشود به همين صورت اتفاق ميافتند كه در لايههاي اول ويژگيهاي ساده تر و در لايههاي عميقتر ويژگيهاي abstract تر استخراج ميشوند. و اين اتفاق به همين صورت در اين روش كه ماژولها به صورت greedy و ايزوله آموزش داده ميشوند نيز اتفاق افتاده است، بدين صورت كه همان طور كه در شكل 3 ئ در رديف سوم ميتوان مشاهده نمود، ماژول سوم ميباشد كه نورون ها به ويژگيهاي abstract تري اشاره كردهاند. در واقع ميتوان گفت ماژولها به صورت سلسله مراتبي ويژگيهاي abstract تري را ياد ميگيرند.
اين روش بر روي دو نوع ديتاي تصوير و صوت اعمال شده و نتايج با چند روش ديگر مقايسه شده است.اين روش ها داراي معماري يكسان ولي روشهاي مختلف براي آموزش ميباشد كه مهم ترين آن ها روش CPC ميباشد.روش CPC به اين علت مهم ميباشد كه loss استفاده شده در اين روش، همان InfoNCE loss مي باشد با اين تفاوت كه به صورت end-to-end و با استفاده از backpropagation آموزش داده ميشود.
پس از آموزش شبكه، با استفاده از representation هاي يادگرفته شده، به حل يك مسئلهي downstream ميپردازيم. كه در ادامه به بررسي دقتهاي به دست آمده ميپردازيم.
اين روش بر روي ديتاست STL-10اعمال شده است. همانطور كه در جدول 1 مي توان مشاهده نمود، دقت به دستآمده براي روش GreedyInfoMax از بقيه روشهاي موجود به دقت بالاتري دست پيدا كرده است. مدل deep InfoMax كه روش ارائه شده در اين مقاله با آن مقايسه شده است، بسيار شبيه به روش CPC ميباشد، به اين دليل كهMutual Information ميان پچهاي مختلف از يك تصوير را سعي ميكند ماكسيمم كند، زماني كه end-to-end backpropagation استفاده ميكند.
روش predsim كه در جدول آورده شدهاست سعي ميكند به صورت layer-wise و greedy شبيه به متد استفاده شده در GreedyInfoMax ولي با استفاده از يك supervised loss اين كار را سعي ميكند انجام دهد.
اين روشها بر روي دومين تصوير نيز بررسي شده اند و نتيج آن را ميتوان در جدول 2 مشاهده نمود. در اين قسمت از ديتاست LibriSpeech استفاده شده است. در اين قسمت نيز مانند قسمت تصوير GreedyInfoMax را با يك سري از متدهاي ديگر كه معماري يكسان دارند ولي روش متفاوتي براي آموزش استفاده كردهاند مقايسه كردهايم. و مهم ترين قسمت مقايسهي GreedyInfoMax و روش CPC ميباشد.
همانطور كه در جدول شماره 2 ميتوان مشاهده كرد، دو تسك متفاوت وجود داردSpeaker Classification و Phone Classification كه در ادامه به بررسي نتايج هر كدام از آنها ميپردازيم.
در اين قسمت تسك speaker classification را مورد بررسي قرار ميدهيم، كه ميتوان مشاهده نمود كه نسبت به همهي روشها، به جز روش CPC به دقت بالاتري دست پيدا كردهاست. و دقت آن بسيار نزديك به مدل CPC ميباشد كه كه نشاندهندهي اين است كه توانايي رقابت با اين مدل را دارد. و بايد دقت نمود كه CPC از backpropagation براي آموزش شبكه خود استفاده كرده است و روش GreedyInfoMax بدون استفاده از backpropagation و صرفا با استفاده از Local Loss به اين دقت دست پيدا كردهاست.
در اين تسك ميخواهيم به تشخيص صداهاي آوايي متمايز كه تلفظ كلمات را ميسازند بپردازيم بدون اينكه به صداي افراد توجه نماييم. در اين تسك ميتوان مشاهده نمود كه CPC به دقت بهتري دست پيدا كرده است. همچنين اگر بخواهيم مقايسهاي بين روش Supervised و CPC انجام دهيم مشاهده ميشود يك فاصلهاي بين دقت به دست آمده براي روش Supervised و CPC وجود دارد كه در مقالهي CPC براي حل اين مشكل، با اضافه كرددن يك لايهي مخفي به طبقه بند خطي قابل حل ميباشد. علت آن هم اين ميباشد كه اطلاعات به دستآمده توسط CPC و GreedyInfoMax به صورت خطي بلافاصله جداپذير نباشند و توسط اين كار ميتوان دقت اين مدل هارا افزايش داد.
در اين قسمت ميخواهيم به تحليل بررسي رفتار هر لايه، براي روش هاي مختلف بپردازيم، همان طور كه در شكل 4 ميتوان مشاهده نمود، در نمودار افقي شماره لايه يا همان ماژول در روش GreedyInfoMax و در نمودار عمودي ميزان Error rateرا ميتوان مشاهده نمود.
با توجه به نمودار ميتوان نتيجه گرفت كه روش GreedyInfoMax كه به صورت layer-wise و بدون استفاده از backpropagation آموزش داده ميشود، رفتاري مشابه به روش CPC دارد. و اين تشابه رفتار براي تمام لايهها وجود دارد و لايههاي مياني نيز رفتاري شابه دارند و صرفا اين تشابه رفتار خلاصه به لايهي آخر نميشود. و اين بدين معنا ميباشد كه روش جديد ارائه شده، با رويكردي متفاوت، به حل مسئله ميپردازد و به نتايج مشابهي نيز دست پيدا كرده است.
همچنين ميتوان مشاهده نمود ميزان error-rate در لايه هاي مياني در روش GreedyInfoMax مقدار كمتري دارد نسبت به روش supervised.
در اين قسمت ميخواهيم به بررسي روش معرفي شده بپردازيم كه آيا باعث رفع مشكلات مطرح شده شده است؟
در روش معرفي شده مشكل مموري gpu حل شده است، به اسن دليل كه تمام ماژولها با يكديگر آموزش داده ميشوند و نيازي به تگهداري و ذخيرهي گراديان ها و activation function هاي تمام لايهها نميباشد.
از ديگر مزاياي اين روش ميتوان به اين ااره نمود كه، ميتوان مدل را بر روي چند دستگاه مختلف و به صورت distributed آموزش داد. كه باعث ميشود آموزش به صورت مواززي صورت بگيرد.اگر بخواهيم از روشهاي مبني بر backpropagation استفاده نمايم، ميبايست كل شبكه را بر روي چند دستگاه قرار داده، و forward pass و backward pass را بر روي تمام دستگاهها اجرا كرده و در انتها نتيجهيآن هارا aggregate كنيم. و اگر نتوان تمام نتوورك را بر روي مموري يك gpu قرار داد، اين كار امكان پذير نميباشد.
با استفاده از GreedyInfoMax به دليل اينكه loss function به صورت محلي ميباشد و گراديانهاي هر ماژول به صورت جداگانه ميباشد ميتوان هر ماژول را با يك دستگاه آموزش داد. ولي مشكلي كه وجود دارد ورودي هر ماژول از ماژول قبلي گرفته ميشود ولي براي حل اين مشكل نيز ميتوان به اين نكته اشاره نمود كه ورودي هر ماژول حتما نبايد آخرين خروجي ماژول قبلي باشد.و ميتوان خروجي هر ماژول را براي چند ايپاك ذخيره نمود و به ماژول بعدي داد.
در نهايت ميتوان نتيجه گرفت كه GreedyInfoMax به صورت Greedy و بدون backpropagation توانسته به نتايجي دست پيدا كند كه قابليت رقابت با ساير روشهارا داشته باشد.