در نوشته های لایه های شبکه عصبی و نمایش ریاضی شبکه عصبی گفتیم که یک شبکه چند لایه ای دارای سه لایه ورودی، پنهان و لایه خروجی است. همچنین در نوشته پیشین شناسایی شماره های دست نویس با یادگیری ژرف Keras گفتیم که یک شبکه عصبی می تواند بدون لایه پنهان باشد. توجه کنید که اگر شبکه عصبی دارای بیش از یک لایه پنهان باشد، پس یادگیری ژرف خواهیم داشت. همچنین در فریم ورک Keras و در مدل Sequential، هر لایه پی در پی، پس از دیگری درج می شود و اگر تنها دو لایه باشد، پس آن دو لایه نخست لایه ورودی و سپس لایه خروجی هستند.

ایراد مدل SLP

اصلی ترین محدودیت مدل پرسپترون تک لایه ‌(SLP) این است که این مدل بر روی داده هایی به دقت کار می کند که این داده ها آشکار به گونه خطی (Linear) از یکدیگر جدا شده باشند. بنابراین زمانی که داده ها بسیار متراکم و پیچیده تر هستند، مانند تشخیص گفتار نمی توان از مدل SLP کمک گرفت.

یکی از نمونه مسئله های ساده طبقه بندی دودویی، XOR است که در آن هر نمونه (Sample) دارای دو ویژگی است و همچنین دو کلاس 0 یا 1 نیز هست. در شکل زیر مجموعه XOR را با چهار نمونه نشان داده شده است. در عملگر XOR اگر دو ورودی یکی نباشند، پس خروجی 1 است ولی اگر دو ورودی یکی باشند، پس خروجی 0 خواهد بود.

در شکل زیر چهار مختصات نمونه های بالا رسم شده اند و می بینید که می توان این مختصات ها را با یک خط راست به دو کلاس 0 و 1 دسته بندی کرد. توجه کنید محتصات هر نقطه (X1, X2) است که Xi ها همان دو ویژگی در نمونه ها هستند. بنابراین می توان مسئله XOR را با مدل SLP مدل کنیم.

در شکل واژه Decision Boundary یا مرز تصمیم گیری خطی است که فضای بردار (داده ها) را به دو مجموعه یا دو کلاس بخش می کند. بنابراین در نمودار بالا یا هر نمودار دیگری، از دید طبقه بندی (Classification)، داده های یک سو از Decision Boundary، مربوط به یک کلاس و داده های سوی دیگر، مربوط به کلاسی دیگر هستند.

کاربرد لایه پنهان

در شبکه های عصبی زمانی که بخواهیم بدانیم که آیا یک یا چندین لایه پنهان نیاز است، یک قاعده داریم که آیا داده ها به گونه غیر خطی (Non Linear) از یک دیگر جدا شده اند؟ اگر پاسخ آری هست، پس نیاز به لایه پنهان خواهیم داشت. شکل زیر مختصات نقطه هایی را نشان می دهد که می توانید ببینید که نمی توانیم آنها را (دو کلاس سبز و قرمز) خطی از یکدیگر جدا کنیم.

بر پایه دو شکل زیر، نمی توان در شکل بالا با یک خط راست داده های سبز و قرمز را از هم جدا کنیم به گونه ای که داده های سبز در یک دسته و قرمزها نیز در دسته ای دیگر باشند. توجه کنید در شکل های زیر چون مجموعه داده های پیچیده تری داریم، پس نمی توان با یک خط آنها را از هم جدا کنیم ولی می توانیم با منحنی ساده آنها را در دو دسته بگذاریم، آنهایی که در دِل منحنی و آنهایی که بیرون منحنی هستند ولی همیشه اینگونه نیست، و در مسئله هایی که پیچیده تر هستند، کشیدن منحنی نیز سخت تر می شود. در شبکه های عصبی برای به کار گیری از لایه پنهان دو پرسش زیر را می توانیم از خودمان بپرسیم:

  • آیا نیاز درون شبکه عصبی نیاز به لایه پنهان داریم که قاعده آن را نیز پیش از این گفته ایم.
  • به چه تعدادی لایه پنهان نیاز داریم.

بنابراین مدل SLP یک مدل طبقه بندی خطی است که داده ها را در کلاس ها با یک خط راست دسته بندی می کند که این خط راست از معادله زیر بدست می آید که در آن x_i و w_i به ترتیب ورودی و وزن i ام و b و y نیز به ترتیب بایاس و خروجی معادله هستند. توجه کنید با افزودن لایه پنهان و از این رو، افزوده شده نورون های پنهان، شمار (تعداد) وزن ها نیز بیشتر می شود و بر پایه نوشته مدل های شبکه عصبی – پرسپترون چند لایه دیگر مجموعه ای از وزن ها را خواهیم داشت.

توجه کنید برآیند (نتیجه) طبقه بندی شکبه SLP را می توان با یک Decision Boundary نشان داد، زیرا داده ها به گونه خطی از یکدیگر جدا شده اند ولی در شبکه MLP بیش از یک Decision Boundary نیاز است. برای نمونه در شکل زیر می بینید که می توان با دو Decision Boundary داده ها را دسته بندی کرد.

در شکل بالا، مرز تصمیم با مجموعه ای از خط ها جایگزین می شود. خطوط از نقاطی شروع می شوند که منحنی مرز جهت آن تغییر می کند. در چنین نقطه ای، دو خط قرار داده شده است که هر یک در جهت دیگری قرار دارد. از آنجا که در شکل بالا تنها یک نقطه (خاکستری) هست پس تنها دو خط نیاز خواهد بود. به گفته دیگر، دو شبکه پرسپترون تک لایه هست که هر پرسپترون، یکی از خط ها را می سازند.

بنابراین در شکل بالا دو خط برای نمایش Decision Boundary نیاز هست و از این رو می توانیم بگوییم که لایه پنهان نخست نیاز به دو نورون دارد. بنابراین برای طبقه بندی سومین شکل نیاز به شک شبکه عصبی MLP با یک لایه پنهان با دو نورون پنهان است. هر یک از این دو نورون پنهان نقش یک طبقه بند خطی را برای کشیدن یکی از دو خط دارد.

همچنین به ازی هر یک از این دو نورون پنهان یک خروجی داریم که هر یک برای یکی از کلاس ها هستند ولی در لایه خروجی تنها یک گره (نورون) داریم که کلاس پیش بینی شده را نشان می دهد. بنابراین بر پایه یک مقدار آستانه، یکی از دو خروجی نورون ها به عنوان خروجی شبکه خواهد بود.

نمونه ای دیگر

در شکل زیر یک مجموعه داده پیچیده تر نشان داده شده است که همانند شکل های پیشین تنها دو کلاس سبز و قرمز هست ولی بر خلاف شکل پیشین (سومین شکل) دیگر نمی توان با یک منحی داده ها را دسته بندی کرد، بنابراین هر دو شکل زیر و سومین شکل با MLP حل می شوند ولی تفاوت در Decision Boundary است زیرا داده های زیر پیچیده تر هستند.

نخستین گام کشیدن Decision Boundary است که در شکل a زیر برای داده ها رسم شده است. گام دوم کشیدن خط ها است که هر کدام از این خط ها به گونه یک پرسپترون در شبکه عصبی مدل می شوند. در شکل b زیر می توانید ببنید که سه نقطه خاکستری هست، جاهایی که جهت تغییر مرزهای تصمیم گیری هستند.

اکنون پرسش این است که چه شماری (تعدادی) خط در نمودار بالا نیاز هست. از هر نقطه خاکستری باید دو خط بیرون بیاید ولی در شکل زیر تنها از نقطه های بالایی و پایینی دو خط بیرون آمده و از هر یک از آنها یک خط با نقطه میانی مشترک است. بنابراین به ازای سه نقطه خاکستری برای Decision Boundary نیاز به چهار خط است.

بنابراین چون چهار خط برای Decision Boundary نیاز است، پس لایه پنهان نخست به چهار نورون نیاز دارد و به بیان دیگر نیاز به چهار طبقه بند داریم که هر یک به کمک یک SLP پیاده سازی می شوند. در این زمان چون لایه پنهان یکم دارای چهار نورون است، و هر نورون یک خروجی ایجاد می کند، پس اکنون چهار خروجی داریم.

بنابراین برای ساخت خروجی شبکه که همان کلاس پیش بینی شده است، باید این چهار طبقه بند به یکدیگر متصل شوند، بنابراین نیاز است تا با یک لایه پنهان دیگر این خط ها به یکدیگر پیوند بخورند. توجه کنید در شکل پنجم دو خط توسط لایه خروجی به یکدیگر پیوند می خورند و نیازی به لایه پنهان دومی نیست ولی در اینجا نیاز هست تا یک لایه پنهان دومی نیز افزوده شود. به عبارت دیگر محاسبات بیشتر، لایه پنهان بیشتر می خواهد زیرا هر نورون یک واحد پردازشی است.

بنابراین در شبکه عصبی، لایه پنهان دومی نیاز داریم که دارای دو نورون است و نورون یکم، دو خط نخست را پیوند می دهد و نورون دوم، دو دیگر خط ها را به یکدیگر پیوند می دهد. نمودار شکل زیر در ناحیه های بنفش رنگ می توانید ببینید که دو پیوند انجام شده است که هر یک بدست یکی از نورون های لایه پنهان دوم انجام می شود.

اکنون دو خروجی از دومین لایه پنهان داریم و باید در لایه خروجی که داری یک تک نورون هست، دو حط ساخته شده از لایه دوم را به یکدیگر پیوند بزنیم تا خروجی شبکه پدید آید. در شکل زیر ناحیه سبز رنگ پیوند دو خروجی دو نورون واپسین لایه پنهان را نشان می دهد. بنابراین با داده های پیچیده تر، نیاز به لایه های پنهان داریم که شاید نیاز به دو یا چندین لایه پنهان باشد. هر لایه پنهان می تواند شمار (تعداد) گوناگونی نورون داشته باشد و همچنین در هر یک، تابع فعال سازی خواهد بود.