آموزشیادگیری ماشین

درس ۶۷ از ۹۹، هوش مصنوعی، حدود ۷ دقیقه خواندن

گذر رو به جلو: شبکه چطور جواب می‌ده

جواب کوتاه

گذر رو به جلو یعنی مسیری که عددها از ورودی تا جواب توی شبکه طی می‌کنن. توی هر لایه، هر نورون ورودی‌هاش رو در وزن‌هاش ضرب می‌کنه، جمع می‌کنه، بایاسش رو اضافه می‌کنه و نتیجه رو از تابع فعال‌سازی رد می‌کنه؛ خروجی این لایه، ورودی لایه‌ی بعده. همین کار برای یه لایه‌ی کامل، یه ضرب ماتریسه: ماتریس وزن‌ها ضرب در بردار ورودی، به‌علاوه‌ی بردار بایاس. اسمش رو گذاشتن «رو به جلو»، چون عددها فقط یه طرف می‌رن و هیچ‌وقت برنمی‌گردن. آخرش جواب شبکه درمیاد، که با جواب درست مقایسه می‌شه تا شبکه یاد بگیره.

عددها راه میفتن

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

عدد روی هر فلش، وزن اون اتصاله. ورودی‌ها ۲ و ۱ هستن. عددهایی که روی نورون‌های بعدی می‌بینید، جواب حسابشونه: پنهان‌ها ۳ و ۰، و جواب آخر ۷. بیایم ببینیم این عددها از کجا اومدن.

به این مسیر، از ورودی تا جواب، می‌گن گذر رو به جلو.

لایه‌ی پنهان

هر نورون پنهان همون کار نورون مصنوعی رو می‌کنه: هر ورودی ضرب در وزنش، همه با هم، به‌علاوه‌ی بایاس، و آخرش ReLU.

نورون بالایی: ۲ ضرب در ۱، به‌علاوه‌ی ۱ ضرب در ۲، به‌علاوه‌ی بایاس منفی ۱، می‌شه ۳. مثبته، پس ReLU همون ۳ رو رد می‌کنه.

نورون پایینی: ۲ ضرب در منفی ۱، به‌علاوه‌ی ۱ ضرب در ۱، می‌شه منفی ۱. منفیه، پس ReLU صفرش می‌کنه. یعنی این نورون برای این ورودی خاموشه.

لایه‌ی خروجی

حالا ۳ و ۰ ورودی‌های نورون آخرن. همون حساب، یه بار دیگه:

۳ ضرب در ۲، به‌علاوه‌ی ۰ ضرب در ۳، به‌علاوه‌ی بایاس ۱، می‌شه ۷. جواب شبکه همینه. ببینید نورون خاموش (۰) هیچ اثری روی جواب نداشت.

قانون کلی همینه: خروجی هر لایه، ورودی لایه‌ی بعده. شبکه هر چقدر هم بزرگ باشه، همین کار لایه به لایه تکرار می‌شه.

همه با هم

اگه وزن‌های هر نورون رو یه ردیف بنویسیم، وزن‌های یه لایه‌ی کامل می‌شه یه جدول عدد، یعنی یه ماتریس. اون‌وقت کل لایه با یه ضرب ماتریس حساب می‌شه:

ردیف اول (۱ و ۲) در ورودی (۲ و ۱) ضرب و جمع می‌شه: ۴؛ با بایاس منفی ۱ می‌شه ۳. ردیف دوم: منفی ۱. بعد ReLU روی هر کدوم. دقیقا همون عددهای قبلی، فقط این بار همه با هم.

برای همین شبکه‌های عصبی این‌قدر به ضرب ماتریس وابسته‌ان. یه شبکه‌ی بزرگ یعنی میلیون‌ها ضرب و جمع، که به شکل ضرب ماتریس‌های بزرگ انجام می‌شن.

فقط یه طرف

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

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

حالا چی؟

شبکه گفت ۷. فرض کنید جواب درست ۱۰ بوده. اشتباه کرده؛ ولی تقصیر کدوم وزن بود؟ وزن ۲ روی خروجی؟ وزن ۱ روی ورودی؟ برای اینکه شبکه یاد بگیره، باید اندازه‌ی این اشتباه رو با یه تابع هزینه بسنجیم و بفهمیم هر وزن چقدر توش سهم داشته.

این دقیقا کار درس بعده، و قلب یادگیری همه‌ی شبکه‌های عصبی: پس‌انتشار خطا.

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

  • هر لایه: ضرب، جمع، بایاس، فعال‌سازی.
  • خروجی هر لایه، ورودی لایه‌ی بعد.
  • یه لایه = ماتریس وزن × بردار ورودی + بایاس.
  • فقط یه طرف؛ بی حلقه.
  • جواب آخر با جواب درست مقایسه می‌شه.

خودتون رو بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو می‌بینید: چند تا درست، چند تا نادرست.

خودتون رو بسنجید

۱۵ پرسش

  • هر بار پرسش‌ها و ترتیب گزینه‌ها عوض می‌شه.
  • تا آخر نمی‌گیم کدوم جواب درست بوده؛ می‌تونید برگردید و جوابتون رو عوض کنید.
  • آخرش کارنامه می‌گیرید: چند تا درست، چند تا نادرست.
  • اگه وسطش بستید، دوباره که باز کنید از همون‌جا ادامه می‌دید.

فصل‌های این درس

درس بعد