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