بردار، فهرستی مرتب از مؤلفهها و ماتریس، جدولی با ردیف و ستونِ مشخص است. در هوش مصنوعی میتوان چند نمونه و چند ویژگی را در یک ماتریس نگه داشت؛ اما صرفِ عددیبودن، به آنها معنایِ embedding یا احتمال نمیدهد. در این تمرین دو نمونهٔ سهویژگی را با یک ماتریسِ وزن به دو خروجی تبدیل میکنیم و ابعاد را قدمبهقدم کنترل میکنیم.
ردیف و ستون در قراردادِ ما چه هستند؟
ماتریسِ X دو ردیف دارد: [۱،۲،۰] و [−۱،۰،۳]. هر ردیف یک نمونهٔ ساختگی و هر ستون یک ویژگیِ آموزشی است. این عددها از متن، صدا یا مشتری استخراج نشدهاند. ترتیبِ ویژگیها بخشی از قرارداد است؛ جابهجاکردنِ دو ستون بدونِ جابهجاییِ متناظرِ وزنها، همان محاسبه نیست.
ماتریسِ W سه ردیف و دو ستون دارد: [۲،۱]، [۰،−۱] و [۱،۲]. هر ستونِ W مشخص میکند سه ویژگی چگونه در یک خروجی جمع شوند. بنابراین X با شکلِ ۲×۳ در W با شکلِ ۳×۲ ضرب میشود و حاصلِ ۲×۲ میدهد. دو بُعدِ داخلی باید برابر باشند؛ ابعادِ بیرونی شکلِ خروجی را میسازند.
هر خانه، یک ضربِ داخلی است
خانهٔ نخستِ خروجی از ردیفِ نخستِ X و ستونِ نخستِ W میآید: ۱×۲+۲×۰+۰×۱ برابرِ دو است. خانهٔ دومِ همان ردیف از ۱×۱+۲×(−۱)+۰×۲ برابرِ منفیِ یک میشود. برایِ ردیفِ دوم، دو خروجی یک و پنجاند. کد حلقهٔ جمعِ حاصلضرب را واقعاً اجرا میکند؛ جدولِ جواب بهجایِ اجرایِ تابع وارد نشده است.
| ردیفِ نمونه | خروجیِ اولِ XW | خروجیِ دومِ XW |
|---|---|---|
| ۱ | ۲ | منفیِ ۱ |
| ۲ | ۱ | ۵ |
ضربِ خانهبهخانه با این جمعِ ردیف و ستون فرق دارد. همچنین تعدادِ عنصرهایِ دو آرایه یا شباهتِ نامِ متغیرها، سازگاریِ ابعاد را ثابت نمیکند. تابعِ کوچکِ این فایل، ماتریسِ خالی و ردیفهایِ نابرابر را پیش از حساب رد میکند.
بایاس را در مرحلهٔ جدا اضافه کنیم
بردارِ بایاس را [۰٫۵،−۰٫۵] میگذاریم؛ هر خروجی بایاسِ خودش را دارد و همان بردار به هر دو ردیف اضافه میشود. نتیجهٔ نهایی برایِ ردیفِ نخست [۲٫۵،−۱٫۵] و برایِ ردیفِ دوم [۱٫۵،۴٫۵] است. این کار در کد بهصراحت با حلقه انجام شده، نه با فرضِ پنهانِ broadcasting یک کتابخانه.
این تبدیلِ خطی بهاضافهٔ بایاس، یک تبدیلِ affine است. تابعِ فعالسازی یا نرمالسازیِ احتمال رویِ آن اجرا نکردهایم. منفیبودنِ یک خروجی هم در این قرارداد خطا نیست؛ این دو عدد را احتمالِ دو کلاس نمینامیم و جمعشان لازم نیست یک باشد.
چرا ترتیب و transpose مهماند؟
W×X در همین مثال از نظرِ بُعد معتبر است، اما خروجیِ ۳×۳ دارد؛ با حاصلِ ۲×۲ قبلی یکی نیست. پس «هر دو ضرب مجازند» به معنی جابهجاییپذیری نیست. از سویِ دیگر، اگر W را transpose کنیم، شکلش ۲×۳ میشود و X×Wᵀ با قراردادِ ما ناسازگار است؛ کد آن را رد میکند.
مستندِ اصلیِ matmul هم سازگاریِ ابعادِ داخلی را لازم میداند. مثالِ حاضر TensorFlow، ضربِ batch، عددِ مختلط یا tensor با رتبهٔ بالاتر را اجرا نمیکند. نقشِ فایل، روشنکردنِ قراردادِ دو ماتریسِ مستطیلی با کسرِ دقیق است، نه مقایسهٔ سرعتِ CPU و GPU.
این مبنا در ادامهٔ یادگیری به چه کار میآید؟
در شباهتِ کسینوسی ضربِ داخلی برایِ مقایسهٔ دو جهت استفاده میشود؛ اینجا چند نمونه به چند خروجی تبدیل شدند. ضربِ درست هم صحتِ معنایِ ویژگی یا مناسببودنِ مدل را تضمین نمیکند. نامِ ستون، ترتیب، واحد و نسخهٔ نمایش باید کنارِ عدد حفظ شوند.
برایِ مسئلهٔ واقعی، ابتدا ورودی و خروجیِ مطلوب را در بررسیِ نیاز با اپرا مشخص کنید. این محاسبه، آموزشِ مدلِ اپرا یا نتیجهٔ یک خدمت نیست. فایلِ قابلِ دریافت برایِ بازتولیدِ همین چهار خانه و خطاهایِ بُعد است.
فایل تمرین و منبع
ضربِ مستطیلیِ واقعی، بایاسِ هر خروجی و ردِ بُعدِ ناسازگار · ماتریسهایِ ورودی، وزن، حاصلِ دو ترتیب و نتیجهٔ بایاس
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.