یادگیری عمیق نوعی از علم یادگیری ماشین و هوش مصنوعی است که در واقع از روشی که ذهن انسان برای یادگیری موضوع خاصی به کار می گیرد، تقلید می کند. این نوع از یادگیری یکی از عناصر مهم در علم داده می باشد که شامل آمار و مدل سازی پیش بینی است. یادگیری عمیق برای محققین داده که وظیفه جمع آوری ، تجزیه و تحلیل و تفسیر مقادیر زیادی از داده ها را دارند ، بسیار مفید است و این فرایند را سریعتر و آسان تر می کند.
به نوعی می توان گفت یادگیری عمیق در واقع همان یادگیری ماشین است به گونه ای که در سطح کارهای پیچیده، نمایش یا انتزاع، یادگیری را برای ماشین انجام می دهد و به این صورت ماشین درک بهتری از واقعیت های وجودی پیدا می کند و می تواند الگو های مختلف را شناسایی کند. در ساده ترین سطح، یادگیری عمیق را می توان راهی برای خودکار سازی تجزیه و تحلیل پیش بینی ها دانست. الگوریتم های یادگیری عمیق در سلسله مراتب افزایش پیچیدگی و انتزاع قرار دارند در حالی که یادگیری ماشین سنتی بصورت خطی است.
نقش ریاضیات و جبر در حوزه یادگیری عمیق و یا Deep Learning بسیار مشهود است. در ادامه مطلب کاربرد ریاضیات را در یادگیری عمیق مورد بررسی قرار میدهیم. همچنین با بیان موضوعاتی در ریاضیات که پایه اصلی آن را تشکیل میدهند کاربرد آن در علم یادگیری عمیق را روشن میسازیم.
یادگیری بسیاری از مباحث علمی نیاز به آموختن دانشهای پایهای مرتبط با آنها است. هوش مصنوعی و یادگیری ماشین از جمله علومی هستند که این روزها علاقمندان زیادی را در بخشهای مختلف به خود جذب کردهاند. همچون دیگر حوزههای دانش، یادگیری این مباحث نیازمند آموختن پیشنیازهایی است که حتی میتوان گفت جزئی جدا نشدنی از آنها هستند. شاید اولین زمینهای که یادگیری آن به عنوان پیشنیاز و یا همنیاز مبحث هوش مصنوعی به ذهن افراد برسد، زبانهای برنامهنویسی باشد.
از همینرو در بحث یادگیری عمیق، به عنوان یکی از زیرشاخههای هوش مصنوعی مرتبط با بحث شبکههای عصبی مصنوعی، نیاز به آموختن برخی مفاهیم جبر خطی به ویژه مباحث مرتبط با بردارها، ماتریسها و عملیات روی آنها است. جبرخطی، شکل پیوسته ریاضیات گسسته است که اغلب دانشمندان علوم رایانه تجربه کار با آن را دارند. درک عمیق این علم برای آموختن و کار با الگوریتمهای یادگیری ماشین الزامی است.
آنچه در این نوشته خواهیم داشت
چرا ریاضیات در یادگیری عمیق مهم است؟
جبر خطی، احتمالات و حساب دیفرانسیل و انتگرال، زبانهایی هستند که یادگیری ماشین با استفاده از آنها رابطهسازی (فرموله) شده است. یادگیری این مباحث منجر به ایجاد درک عمیقی از ساز و کار الگوریتمهای موجود و ساخت الگوریتمهای جدید میشود. در پس الگوریتمهای یادگیری عمیق نیز مفاهیم جبر خطی نهفته است و بنابراین پیش از یادگیری و پیادهسازی آنها با زبانهای برنامهنویسی، باید این مفاهیم را آموخت. اسکالرها، بردارها، ماتریسها و تانسورها، ساختارهای پایهای موجود در یادگیری عمیق را تشکیل میدهند. در ادامه هر یک از این مفاهیم توضیح داده میشوند.
کمیت
در لغتنامه دهخدا «کمیت» را چندی و در مقابل کیفیت یا چونی تعریف کردهاند. کمیت در واقع مقدار چیزی است که سنجیده، پیموده یا شمرده شود. به عبارت دیگر، مقدار، اندازه و تعداد چیزی را کمیت آن گویند. کمیت و مقدار دو لفظ مترادف هستند. کمیتها به دو نوع نردهای (اسکالر یا عددی) و برداری تقسیم میشوند.
کمیت نردهای
کمیت نردهای یا اسکالر، با یک عدد نمایش داده میشود. برای مثال، فاصله دو نقطه (پنج متر) یک کمیت نردهای است. کمیتهای نردهای برخلاف کمیتهای برداری فاقد جهت هستند. در واقع کمیت نردهای، یک تانسور مرتبه صفر است. از دیگر کمیتهای نردهای میتوان به جرم، انرژی، دما و چگالی اشاره کرد. عبارت x ∈ ℝ حاکی از آن است که x یک کمیت اسکالر متعلق به مجموعه اعداد حقیقی ℝ است.
مجموعه دادههای گوناگونی در بحث یادگیری عمیق مورد استفاده قرار میگیرند. ℕ یک مجموعه داده از اعداد صحیح مثبت (…،۱،۲،۳) و ℤ مجموعهای از اعداد صحیح مثبت، منفی و صفر است. ℚ مجموعهای از اعداد گویا است که به صورت کسر دو عدد صحیح نشان داده میشود. از جمله اسکالرهای موجود در پایتون میتوان به نوع صحیح (int)، شناور (float)، بایت (byte) و یونیکد (Unicode) اشاره کرد. در کتابخانه NumPy پایتون، ۲۴ نوع داده پایه برای تعریف انواع اسکالرها موجود است.
کمیت برداری
یک کمیت که توسط چند اسکالر (برای مثال اندازه و جهت) تعریف شود را بردار گویند. بردارها در واقع آرایههای مرتب شدهای از اعداد هستند. یک بردار، نمونهای از تانسور مرتبه اول است. بردارها خود بخشی از چیزی هستند که با عنوان فضای برداری شناخته میشود. یک فضای برداری را میتوان به عنوان مجموعهای از همه بردارهای محتمل دارای طول مشخص (یا بُعد) در نظر گرفت. یک فضای برداری سهبُعدی مقدارگذاری شده با اعداد حقیقی، به صورت ℝ^3 نشان داده میشود و اغلب به عنوان نمایش جهان واقعی از فضای سهبعدی بهصورت ریاضی بهکار میرود.
برای تبیین مولفههای لازم جهت بیان یک بردار، iاُمین مولفه بردار به صورت [x[i نوشته میشود.
در یادگیری عمیق، معمولا از بردارها برای نمایش بردار ویژگیها که با مولفههای اصلی خود میزان مرتبط بودن یک ویژگی مشخص را نمایش میدهند، مورد استفاده قرار میگیرند. بردار ویژگی میتواند در بر گیرنده اهمیت شدت یک مجموعه از پیکسلها در یک فضای دوبُعدی، تصویر یا تاریخچه مقادیر قیمتها در ابزارهای مالی باشد.
ماتریسها
ماتریسها آرایههایی مستطیل شکل از اعداد هستند و در واقع تانسورهای مرتبه دوم محسوب میشوند. اگر m و n را اعداد صحیح مثبت در نظر بگیریم، که در آن m, n ∈ ℕ باشند، در نتیجه ماتریس m×n شامل اعداد m*n با m سطر و n ستون است.
در زبان برنامهنویسی پایتون، از کتابخانه Numpy استفاده میشود که امکان ساخت آرایههای nبُعدی که اساسا ماتریسها هستند را فراهم میکند. با استفاده از متُد لیست و پاس دادن در لیستها، میتوان یک ماتریس را تعریف کرد.
تانسورها
تانسور یک عنصر هندسی است که در ریاضیات جهت توسعه مفاهیم کمیتهای اسکالر، بردارها و ماتریسها مطرح میشود. تانسور در واقع آرایهای از اعداد است که در یک جدول قرار گرفتهاند. تانسور در سادهترین حالت یک عضو دارد که در واقع همان کمیت اسکالر است. در حالت پیشرفتهتر، تانسور مرتبه اول در واقع آرایهای از اعداد است. تانسورهای دارای دو بعد یا بیشتر، با نام ماتریس شناخته شدهاند. در یادگیری ماشین گاهی نیاز است از تانسورهایی با مرتبه بالاتر از دو استفاده شود. به جای استفاده از ماتریسهای تو در تو، میتوان از کتابخانه Tensorflow یا PyTorch برای اعلان تانسورها استفاده کرد.
جمعبندی
اگرچه زبانهای برنامهنویسی (چه محاسباتی و چه اسکریپتنویسی) بخش مهمی از مباحث هوش مصنوعی را تشکیل میدهند و برای پیادهسازی الگوریتمها و مفاهیم این علم مورد استفاده قرار میگیرند، اما یادگیری «ریاضیات و جبرخطی» از اینرو که مبنای ساخت این دانش و دیگر علوم مرتبط با آن بوده بسیار حائز اهمیت و اجتنابناپذیر است. در پس کلیه الگوریتمهای هوش مصنوعی و یادگیری عمیق، ریاضیات و جبر خطی نهفته است. بدون داشتن تسلط کافی بر مفاهیم جبر خطی، فرد قطعا در یادگیری هوش مصنوعی دچار اشکال خواهد شد.