شبکهی عصبی چندلایه چیه
جواب کوتاه
شبکهی عصبی چندلایه یعنی نورونها رو لایه لایه پشت سر هم بچینیم: یه لایهی ورودی، یه یا چند لایهی پنهان، و یه لایهی خروجی. هر نورون به همهی نورونهای لایهی بعد وصله، و بعد از هر نورون یه تابع فعالسازی غیرخطی هست. هر لایه از خروجی لایهی قبل یه چیز پیچیدهتر میسازه؛ مثلا توی یه عکس، لایهی اول خطها رو پیدا میکنه، لایههای بعد چشم و بینی، و آخری صورت رو. همین لایههای پنهان باعث میشن شبکه بتونه کارهایی بکنه که یه نورون تنها نمیتونست، مثل XOR. وقتی لایهها زیاد باشن، بهش میگن یادگیری عمیق.
از نقطه تا صورت
برای کامپیوتر، یه عکس فقط یه عالمه نقطهی رنگیه. چطوری از این نقطهها میفهمه توی عکس یه صورت هست؟
پله پله. لایهی اول نورونها از روی نقطهها، خطها و لبههای ساده رو پیدا میکنه. لایهی بعد از کنار هم گذاشتن خطها، شکلهایی مثل چشم و بینی رو. و لایهی آخر از کنار هم گذاشتن چشم و بینی و دهن، میگه «این یه صورته».
به این چیدن نورونها توی لایههای پشت سر هم میگن شبکهی عصبی چندلایه. جالبش اینه که هیچکس به شبکه نمیگه لایهی اول دنبال خط بگرده؛ خودش موقع آموزش یاد میگیره.
لایهها
یه شبکهی کوچیک با سه تا ورودی، دو لایهی چهارتایی و یه خروجی این شکلیه:
- لایهی ورودی: خود داده؛ اینجا سه تا عدد. خودش حسابی نمیکنه.
- لایههای پنهان: نورونهایی که وسطن. بهشون میگن «پنهان» چون نه ورودیان نه جواب؛ ما مستقیم نمیبینیمشون.
- لایهی خروجی: جواب آخر؛ اینجا یه عدد.
هر خط یه وزنه. هر نورون به همهی نورونهای لایهی بعد وصله؛ به این میگن «کاملا متصل». و بعد از هر نورون هم یه تابع فعالسازی غیرخطی هست، وگرنه همهی این لایهها با یه لایه فرقی نداشتن.
XOR بالاخره حل شد
یادتونه پرسپترون نتونست «فقط یکی از ما» رو یاد بگیره؟ با یه لایهی پنهان دونورونه، حل میشه:
نورون بالایی میپرسه «دستکم یکی رفته؟» و پایینی «هر دو رفتن؟». هر کدوم یه خط صاف بلده، ولی با هم دو تا خط دارن. نورون آخر میگه «یکی آره، ولی هر دو نه». چهار حالت رو ببینید:
دقیقا همون XOR. چیزی که یه نورون تنها هیچوقت نمیتونست، با یه لایهی پنهان کوچیک حل شد. قدرت لایههای پنهان همینه: هر لایه از جوابهای سادهی لایهی قبل، یه جواب پیچیدهتر میسازه.
چند تا وزن؟
بیایم وزنهای همون شبکهی ۳، ۴، ۴، ۱ رو بشمریم. از ورودی به لایهی اول: ۳ ضرب در ۴، میشه ۱۲ تا وزن، بهعلاوهی ۴ تا بایاس. از لایهی اول به دوم: ۴ ضرب در ۴، ۱۶ وزن و ۴ بایاس. از دوم به خروجی: ۴ وزن و ۱ بایاس. جمعا ۴۱ تا عدد که شبکه باید یاد بگیره.
حالا فکر کنید ورودی یه عکس کوچیک صد در صد نقطهای باشه، یعنی ده هزار ورودی. فقط لایهی اول با صد تا نورون، یه میلیون وزن داره! برای همین شبکهها خیلی سریع خیلی بزرگ میشن، و آموزش دادنشون حساب زیادی میخواد.
عمیق یعنی چی؟
وقتی تعداد لایهها زیاد باشه، میگن شبکه «عمیق» هست؛ از سه لایه تا صدها و حتی هزاران. به یادگیری ماشین با این جور شبکهها میگن یادگیری عمیق، و پایهی تقریبا همهی هوش مصنوعی امروزه.
فرق بزرگش با روشهای قبلی اینه که دیگه لازم نیست ما با مهندسی ویژگی بهش بگیم دنبال چی بگرده. خودش، لایه به لایه، ویژگیهای بهتر رو از دادهی خام میسازه. البته هنوز تعداد لایهها و اندازهشون رو ما انتخاب میکنیم؛ اینها ابرپارامترن.
چطوری یاد میگیره؟
توی مثال XOR، وزنها رو ما گذاشتیم. ولی توی واقعیت شبکه باید خودش پیداشون کنه. قانون سادهی پرسپترون اینجا کار نمیکنه، چون نمیدونیم اشتباه آخر تقصیر کدوم نورون پنهان بوده. راهحلش یه روشه به اسم پسانتشار خطا، که برای کار کردن به تابعهای فعالسازی نرم مثل سیگموید و ReLU نیاز داره، نه پله.
پیش از اون، درس بعد ببینیم یه شبکه دقیقا چطوری از ورودی به جواب میرسه: گذر رو به جلو.
جمعبندی. آنچه از این درس با خودتان میبرید.
- ورودی، لایههای پنهان، خروجی.
- هر نورون به همهی لایهی بعد وصله.
- هر لایه، چیز پیچیدهتر.
- لایهی پنهان XOR رو حل میکنه.
- لایههای زیاد: یادگیری عمیق.
خودتون رو بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو میبینید: چند تا درست، چند تا نادرست.