در علم داده و یادگیری ماشین، تانسور یک آرایهٔ چندبُعدی از عددهاست. تعداد ابعادش را مرتبه و هر بُعد را یک مُد مینامیم: بردار تانسور مرتبهٔ یک است، ماتریس تانسور مرتبهٔ دو و یک ویدیوی سیاهوسفید با سه بُعد ارتفاع، عرض و فریم، تانسور مرتبهٔ سه. وقتی مستقیم با خود تانسور کار کنیم و آن را در یک بردار بلند صاف نکنیم، ساختاری که مقدارهای همسایه را به هم وصل میکند سالم میماند.
مرتبه و مُد
در ریاضی و فیزیک، تانسور بار معنایی بیشتری دارد: علاوه بر عددها، قاعدهٔ تغییرشان با عوض شدن دستگاه مختصات هم جزو تعریف است. در کار با داده میشود این بخش را کنار گذاشت و تانسور مرتبهٔ N را آرایهای با N اندیس دانست. یک عدد تنها مرتبهٔ صفر دارد.
یک مثال ملموس: ویدیوی سیثانیهای سیاهوسفید با ۲۵ فریم در ثانیه و ابعاد ۷۶۸ در ۵۷۶ پیکسل، تانسوری به ابعاد ۵۷۶×۷۶۸×۷۵۰ است. مُد اول ارتفاع است، مُد دوم عرض و مُد سوم زمان، و هرکدام از ۷۵۰ فریم ۴۴۲٬۳۶۸ عدد دارد. اگر کانالهای رنگ را هم نگه داریم، همین ویدیو تانسوری مرتبهٔ چهار میشود.
فیبر
اگر همهٔ اندیسها جز یکی را ثابت نگه داریم، یک فیبر به دست میآید که یک بردار است. تانسور مرتبهٔ سه، سه نوع فیبر دارد: فیبر ستونی در راستای مُد اول، فیبر سطری در راستای مُد دوم و فیبر تیوبی در راستای مُد سوم. در مثال ویدیو، فیبر تیوبی یعنی یک پیکسل که در طول زمان دنبالش میکنیم؛ دقیقاً همان رابطهای که برداریسازی از هم میپاشد.
اسلایس
اگر همهٔ اندیسها جز دوتا را ثابت نگه داریم، یک اسلایس داریم که یک ماتریس است. برای ویدیو، اسلایسهای روبهرو طبیعیترین انتخاباند، چون هرکدام یک فریم است. اسلایسهای افقی و جانبی همان بلوک داده را از دو جهت دیگر برش میزنند.

اسلایسهای افقی (راست) و جانبی (چپ) یک تانسور.
اسلایس جانبی بعدتر به کار میآید. وقتی در پایاننامهام تصویرها را با t-SVD و tc-SVD طبقهبندی کردم، هر تصویر یک اسلایس جانبی از تانسور داده بود؛ پس مُد دوم اندیس نمونهها بود و هر تصویر شکل دوبُعدیاش را حفظ میکرد.
ماتریسیسازی
ماتریسیسازی، یا باز کردن تانسور، فیبرهای مُد n را بهعنوان ستونهای یک ماتریس کنار هم میچیند؛ این ماتریس را با X(n) نشان میدهیم. برای تانسوری با ابعاد I1×I2×I3، ماتریس X(1) ابعاد I1×I2I3 دارد، X(2) ابعاد I2×I1I3 و X(3) ابعاد I3×I1I2.
مثلاً تانسوری ۳×۴×۲ اگر در راستای مُد اول باز شود، ماتریسی ۳×۸ میشود: دو اسلایس روبهرو کنار هم. در راستای مُد دوم ماتریسی ۴×۶ به دست میآید که از ترانهادهٔ اسلایسها ساخته شده است. هیچ عددی دور ریخته نمیشود؛ هر ماتریسیسازی فقط نمای دیگری از همان داده است و راهی برای سپردن کار به ابزارهای ماتریسی آشنا، مثل SVD. کتابخانهها ستونها را با ترتیبهای متفاوتی میچینند، پس پیش از مقایسهٔ خروجی دو کد، قرارداد هرکدام را بررسی کنید.
ضرب مُد n
ضرب مُد n همهٔ فیبرهای مُد n یک تانسور را در یک ماتریس ثابت ضرب میکند. اگر X ابعاد I1×…×IN داشته باشد و U ماتریسی J×In باشد، حاصل همان ابعاد X را دارد، با این تفاوت که In جایش را به J میدهد. در شکل ماتریسیشده، این فقط یک ضرب ماتریسی است:
Y = X ×n U ⇔ Y(n) = U X(n)
اگر J از In کوچکتر باشد، مُد n کوچک میشود و بقیهٔ مُدها دستنخورده میمانند؛ در پایاننامه این را با کاهش مُد دوم یک تانسور از ۸ به ۲ نشان دادهام. اگر سطرهای U متعامد یکه باشند، هر فیبر مُد n روی J جهت تصویر میشود؛ یعنی همتای تانسوری تصویر کردن داده روی مؤلفههای اصلی در PCA. تجزیهٔ تاکر و HOSVD از همین یک عملیات ساخته شدهاند.
چرا داده را صاف نکنیم؟
صاف کردن تانسور در قالب بردار دو هزینهٔ جدا دارد.
- ساختار از دست میرود. دو پیکسل کنار هم در تصویر ممکن است در بردار صدها خانه از هم فاصله بگیرند و یک پیکسل در دو فریم پشتسرهم از این هم دورتر بیفتد. مدل باید رابطههایی را از نو یاد بگیرد که آرایه از اول مجانی در اختیارش گذاشته بود.
- برای هر بُعد هزینه میدهیم. بردار بلند یعنی فضای ویژگی بزرگ. اگر تعداد نمونههای آموزشی ثابت بماند، از جایی به بعد اضافه کردن ویژگی پیشبینی را بدتر میکند؛ این همان پدیدهٔ هیوز (۱۹۶۸) است و یکی از چهرههای چیزی که بلمن «نفرین ابعاد» نامید. هزینهٔ محاسبه هم پشت سرش میآید: آموزش SVM کرنلی برای m نمونه تقریباً O(m³) زمان و O(m²) حافظه میگیرد و PCA یا رگرسیون خطی برای n ویژگی حدود O(mn² + n³).
نگه داشتن داده به شکل تانسور ساختار را حفظ میکند، اما بهتنهایی صرفهجوییای به همراه ندارد. صرفهجویی وقتی به دست میآید که تانسور را تجزیه کنیم، همانطور که SVD یک ماتریس را تجزیه میکند، و فقط بخشهایی را نگه داریم که اطلاعات دارند.
قدم بعدی
در مقایسهٔ CP، تاکر و t-SVD میبینید هر تجزیه با این قطعهها چه میکند و راهنمای t-SVD تجزیهای را توضیح میدهد که پایاننامهام روی آن بنا شد. اگر توضیح مفصلتری با همان مثال ویدیو و کد NumPy برای ماتریسیسازی و ضرب مُد n میخواهید، قسمت اول یادداشتهای تانسوری را بخوانید.
پرسشهای رایج
آیا تانسور همان آرایهٔ چندبُعدی است؟
در علم داده و یادگیری ماشین بله: تانسور آرایهای با N اندیس است و N مرتبهٔ آن است. در ریاضی و فیزیک، تانسور قاعدهٔ تغییرش با عوض شدن دستگاه مختصات را هم با خودش دارد.
فرق فیبر و اسلایس چیست؟
فیبر همهٔ اندیسها جز یکی را ثابت نگه میدارد و یک بردار است، مثل یک پیکسل در طول همهٔ فریمهای ویدیو. اسلایس همهٔ اندیسها جز دوتا را ثابت نگه میدارد و یک ماتریس است، مثل یک فریم.
ماتریسیسازی تانسور یعنی چه؟
ماتریسیسازی فیبرهای مُد n را بهعنوان ستونهای یک ماتریس کنار هم میچیند. هیچ مقداری از دست نمیرود و نتیجه را میشود به ابزارهای ماتریسی مثل SVD سپرد.
ضرب مُد n به چه کاری میآید؟
ضرب مُد n همهٔ فیبرهای مُد n را در یک ماتریس ثابت ضرب میکند و فقط اندازهٔ همان مُد را تغییر میدهد. این عملیات سنگبنای تجزیهٔ تاکر و HOSVD است.
چرا تصویر یا ویدیو را به بردار تبدیل نکنیم؟
برداریسازی مقدارهایی را که کنار هماند، مثل پیکسلهای همسایه یا یک پیکسل در فریمهای پشتسرهم، از هم دور میکند و فضای ویژگی را بیجهت بزرگ میکند. روشهای تانسوری این ساختار را نگه میدارند و ویژگیهای فشردهتری میدهند.
مهدی مولوی