ضرب عنصری بردارها (Element-wise) | آموزش Hadamard Product در هوش مصنوعی
ضرب عنصری (Element-wise) در بردارها | مفاهیم و کاربردها در هوش مصنوعی
سلام به همگی! من امیر آویژه هستم و به جلسه هشتم از دوره جامع ریاضیات هوش مصنوعی خیلی خوش اومدید. امروز قراره یکی دیگه از عملیاتهای اصلی و پرکاربرد رو روی بردارها یاد بگیریم: ضرب عنصری یا مؤلفهای (Element-wise / Hadamard Multiplication).
تو جلسات قبلی درباره ضرب داخلی صحبت کردیم، اما ضرب عنصری منطق کاملاً متفاوتی داره و خروجی متفاوتی هم به ما میده. تو این مقاله با هم یاد میگیریم که این ضرب چطوری انجام میشه، چه فرقی با ضرب داخلی داره و تو دنیای واقعی (مثل مهندسی ویژگی و شبکههای عمیق LSTM) کجاها به دردمون میخوره.
ضرب عنصری چیست؟ (قانون طلایی)
ضرب عنصری یعنی اینکه هر عضو از بردار اول رو دقیقاً تو عضو متناظر خودش در بردار دوم ضرب کنیم و حاصل رو به عنوان یک عضو جدید تو همون جایگاه ذخیره کنیم.
⚠️ قانون طلایی ضرب عنصری
تعداد اعضای دو بردار حتماً باید برابر باشد! شما نمیتونید یک بردار ۳ عضوی رو تو یک بردار ۴ عضوی ضرب عنصری کنید، چون عضو چهارم هیچ جفتی تو بردار اول نداره. نماد این ضرب معمولاً به صورت یک دایره با یک نقطه در مرکز آن (⊙) نمایش داده میشه.
مثال عددی و بسیار ساده
فرض کنید دو بردار U = [1, 2, 3] و V = [4, 5, 6] رو داریم. ضرب عنصری آنها به این صورت محاسبه میشه:
| جایگاه | محاسبه (عنصر به عنصر) | عضو نهایی در بردار خروجی |
|---|---|---|
| عضو اول | 1 × 4 | 4 |
| عضو دوم | 2 × 5 | 10 |
| عضو سوم | 3 × 6 | 18 |
| بردار نهایی (U ⊙ V) | [4, 10, 18] | بردار جدید |
تفاوت اصلی ضرب عنصری و ضرب داخلی (Dot Product)
این مهمترین بخش این جلسهست! خیلی از دانشجویان هوش مصنوعی این دو ضرب رو با هم اشتباه میگیرن. بیاین تفاوتشون رو مرور کنیم:
| ویژگی | ضرب عنصری (Element-wise) | ضرب داخلی (Dot Product) |
|---|---|---|
| نوع خروجی | یک بردار (Vector) | یک عدد (Scalar) |
| نحوه محاسبه | عناصر متناظر تو هم ضرب میشن و تو بردار جدید قرار میگیرن. | عناصر متناظر تو هم ضرب میشن و در نهایت با هم جمع میشن. |
| مثال با [2, 3] و [5, 6] | [10, 18] | 10 + 18 = 28 |
کاربردهای ضرب عنصری در هوش مصنوعی و دیتا ساینس
شاید فکر کنید این ضرب خیلی سادهست و کاربرد مهمی نداره، اما دقیقاً برعکسه! دو تا از کاربردهای فوقالعاده حیاتی اون عبارتند از:
۱. مهندسی ویژگی (Feature Engineering)
فرض کنید تو یک پروژه فروشگاهی، یک بردار از قیمت محصولات دارید: [100, 200, 300, 400] و یک بردار از درصد تخفیفهای اعمال شده: [0.50, 0.20, 0.10, 0.15].
اگر بخواهید مبلغ دقیق تخفیف به تومان رو برای هر محصول به دست بیارید، کافیه بردار قیمتها رو در بردار درصد تخفیفها ضرب عنصری کنید! خروجی میشه بردار [50, 40, 30, 60] که میزان تخفیف هر محصول رو نشون میده.
۲. کنترل حافظه در شبکههای عصبی عمیق (LSTM)
تو مباحث یادگیری عمیق (Deep Learning)، شبکههایی مثل LSTM دارای مفهومی به اسم «گیت فراموشی» (Forget Gate) هستن. این گیتها مثل یک شیر فلکه عمل میکنن و تصمیم میگیرن چه بخشهایی از اطلاعات حافظه قبلی باید عبور کنه و چه بخشهایی باید فراموش بشه.
برای این کار، بردار حافظه قبلی در بردار گیت (که شامل عددهایی بین 0 تا 1 هست) ضرب عنصری میشه. مثلاً اگر گیت عدد 1 بده یعنی همه اطلاعات رد بشه، اگر 0.5 بده یعنی نصف اطلاعات رد بشه و اگر 0 بده یعنی اون اطلاعات کاملاً حذف بشه!
حرف آخر…
همونطور که دیدید، تمام مفاهیم ریاضیات پایه که قدم به قدم داریم با هم یاد میگیریم، خشتهای بنای اصلی الگوریتمهای پیچیده هوش مصنوعی و یادگیری عمیق هستن. فهم درست این موارد شما رو از یک کدنویس ساده به یک متخصص واقعی تبدیل میکنه.