Professional Documents
Culture Documents
یادگیری ماشینی چیست
یادگیری ماشینی چیست
بوده و این در حالی )هوش مصنوعی( Artificial Intelligenceیکی از زیرشاخههای )یادگیری ماشینی( Machine Learning
است که یکی از اهداف یادگیری ماشینی درک ساختار دیتا و سپس قرار دادن دیتا در مدلهایی است که برای سیستم قابلفهم و استفاده
باشد .در واقع ،اگر سیستمی بتواند به صورت خودکار از محیط پیرامونش درس گرفته و عملکرد خود را بهبود بخشد،
.میگوییم یادگیری توسط آن سیستم صورت گرفته است
امروزه در اغلب تکنولوژیها از یادگیری ماشینی استفاده میشود .برای مثال ،میتوان به تکنولوژی تشخیص چهره ،تکنولوژی تبدیل
تصویر به متن و … اشاره نمود و به عنوان نمونه کاربردهای پیشرفتهتر هم میتوان به خودروهای خودران (بدون راننده) اشاره
.کرد که قادر هستند با استفاده از یادگیری ماشینی مسیریابی انجام دهند و در حین رانندگی تصمیمی درست اتخاذ کنند
یادگیری ماشینی یک حوز ٔه همواره در حال گسترش است و آنچه در این مقاله مد نظر خواهیم داشت ،نگاهی به روشهای رایج در
و )نظارتنشده( )، Unsupervisedنظارتشده( Supervisedیادگیری ماشینی خواهیم انداخت که در سه بخش یادگیری
تقسیمبندی میشوند و پس از آن رویکردهای الگوریتمی معمول در یادگیری ماشینی را مورد بررسی )تقویت شده( Reinforcement
قرار میدهیم و در انتها هم نقاط قوت هر یک از معمولترین زبانهای مورد استفاده در یادگیری ماشینی را نیز مورد بررسی قرار
.خواهیم داد
در یادگیری ماشینیَ ،تسکها بر مبنای روش یادگیری و یا به عبارتی بر اساس نحؤه فیدبکدهی به سیستم در حین یادگیری در چند
:گروه عمده تقسیمبندی میشوند .به طور کلی ،سه روش اصلی در یادگیری ماشینی مورد استفاده قرار میگیرد که عبارتند از
هدف از ارائ ٔه این جفتهای ورودی/خروجی این است که الگوریتم با مقایس ٔه پاسخ درست که از پیش تعیین شده است و پاسخی که
خود پیشبینی کرده ،خطاهای موجود را شناسایی کند و به این ترتیب برای ایجاد خروجیهای بعدی آموزش دیده و مدل مورد استفاد ٔه
خود را بر اساس این آموزشها اصالح نماید و فرایند آموزش تا زمانی که مدل پیشبینی الگوریتم به دقت کافی برسد و نتایج پیشبینی
با نتیج ٔه از قبل تعیین شده یکسان باشند ادامه خواهد یافت و از همین روی در یادگیری نظارتشده سیستم پس از آموزش دیدن و با
بدون( Unlabeledاستفاده از الگوهایی که در طی آموزش ایجاد نموده ،قادر خواهد بود تا در مواجهه با دیتای به اصطالح
Regression ،Decision Treeاز جمله الگوریتمهای یادگیری نظارتشده میتوان به( خروجی مناسب Jرا پیشبینی نماید )،برچسبJ
).اشاره نمود Logistic Regressionو ،Random Forest ،KNN
به عنوان مثال ،فرض کنید در این روش الگوریتم یادگیری با تصاویری از ماهی و تصاویری از اقیانوس که به ترتیب تحت عنوان
برچسبدار شدهاند ،مورد آموزش قرار گیرد .این الگوریتم پس از آموزش دیدن با این تصاویر و برچسبها ،قادر Oceanو Fish
مورد شناسایی قرار داده و این تصاویر Oceanو Fish خواهد بود تا تصاویر بدون برچسب ماهی و اقیانوس را به ترتیب به عنوان
.را با برچسب تصاویری که با آنها آموزش دیده یکسان قلمداد کند
یکی از کاربردهای رایج یادگیری نظارتشده زمانی است که با استفاده از اطالعات گذشته قرار است اتفاقات Jآیند ٔه نزدیک مورد
پیشبینی قرار گیرند .به عنوان مثال ،با این روش میتوان اطالعات چند ماه یا چند هفت ٔه اخیر بازار سهام را برای پیشبینی نواساناتJ
بازار در هفتهها و ماههای آتی مورد استفاده قرار داد .یک نمون ٔه دیگر استفاده از این الگوریتم نیز در تشخیص ایمیلهای اسپم
(.هرزنامه) از غیر اسپم است
این روش یادگیری عمدتا ً در مورد دادههای تجاری مورد استفاده قرار میگیرد .به عنوان مثال ،ممکن است مجموعهای از اطالعات
مشتریهای یک شرکت شامل مشخصات فردی آنها و فهرست خریدهای ایشان در دسترس باشد .هر چند این اطالعات ممکن است
جامع و کامل باشند ،اما شناسایی الگوی موجود در این دادهها حداقل به راحتی امکانپذیر نیست و برای تشخیص الگوی پنهان موجود
K-و (Apriori algorithmوارد نمود Unsupervised در چنین دادههایی میتوان آنها را به یک الگوریتم یادگیری به اصطالح
).مثالهایی از الگوریتمهای یادگیری نظارتنشده هستند means
در مثال فوق ،با بهکارگیری الگوریتم یادگیری نظارتنشده ممکن است در نهایت مشخص شود که مثالً خانمهایی که در یک باز ٔه سنی
خاص قرار دارند و صابون بدونبو خریداری نمودهاند ،احتماالً باردار هستند .بدین ترتیب با شناسایی این الگو و از آنجا که این
مشتریان احتماالً به محصوالت مرتبط با دوران بارداری و پس از بارداری نیاز دارند ،اگر پیشنهادات Jمرتبط با بارداری و مراقبت
. نوزاد نیز در اختیار این دسته از مشتریان قرار گیرد ،احتمال خرید این محصوالت باالتر خواهد رفت
برای روشنتر شدن مطلب و به عنوان یک مثال کاربردی ،میتوان ربات فوتبالیستی را در نظر گرفت که با قرار گرفتن در
موقعیتهای مختلف و اتخاذ تصمیمهای متناسب با این موقعیتها و رفع تدریجی خطاهای خود ،سرانجام میآموزد که در هر
. موقعیتی درستترین تصمیم را برای شوت زدن بگیرد
عبارت است از میزان وابستگی دو متغییر نسبت به یکدیگر که با ضریبی به نام ضریب همبستگی نشان )همبستگی( Correlation
داده میشود که مقدار آن عددی مابین ۱ و -۱است .ضریب همبستگی ۰میان دو پارامتر به این معنا است که این پارامترها هیچگونه
وابستگی نسبت به یکدیگر ندارند و هر چهقدر ضریب همبستگی دو پارامتر از ۰دورتر باشد ،به معنای این است که تغییرات دو
.پارامتر وابستگی بیشتری به یکدیگر دارند
مثبت بودن ضریب همبستگی هم به این معنا است که اگر یکی از دو پارامتر افزایش یابد ،دیگری نیز افزایش خواهد یافت و اگر یکی
از آنها کاهش یابد ،دیگری نیز کاهش خواهد یافت اما منفی بودن ضریب همبستگی به معنای وابستگی معکوس میان دو پارامتر
است .به عبارت دیگر ،اگر یکی از آنها کاهش پیدا کند ،دیگری افزایش مییابد و اگر یکی افزایش پیدا کند ،دیگری کاهش خواهد
یافت .به عنوان مثال ،همبستگی میان قد و وزن انسانها معموالً یک همبستگی مثبت است و هر چه قد افراد بلندتر باشد ،وزن آنها
نیز بیشتر است (البته همواره استثناءهایی وجود خواهد داشت).
در لغت به معنای «بازگشت» است .هنگامی که دو متغیر با یکدیگر همبستگی باالیی داشته باشند ،رگرسیون پیشبینیRegression
برای آشنایی بیشتر با برخی مفاهیم آماری و آشنایی( و بیان تغییرات یک متغیر بر اساس تغییرات متغیر دیگر را امکانپذیر میسازد
و زبان NumPyبا نحو ٔه کدنویسی عملی در این خصوص ،توصیه میکنیم به مقال ٔه درآمدی بر آمار با استفاده از الیبرری
).مراجعه نمایید Python برنامهنویسی
آشنایی با الگوریتمهای کاربردی در حوز ٔه یادگیری ماشینی
الگوریتمها و رویکردهای بهکاررفته در یادگیری ماشینی همواره در حال تغییر و پیشرفت Jهستند که در ادامه چند مورد از
.مرسومترین آنها را مورد بررسی قرار دادهایم
این الگوریتم یک مدل شناسایی الگو است که هم در مورد طبقهبندی و هم در): نزدیکترین همسایه( - K-nearest Neighbor
مورد تعیین رگرسیون دادهها قابلاستفاده است .برای استفاده از این الگوریتم الزم است تا یک مجموع ٔه داده و یک معیار برای
در این الگوریتم یک عدد صحیح مثبت و معموالً .) Kنیز باید تعیین شود Kهمچنین مقدار( محاسب ٔJه شباهتها در دست داشته باشیم
مناسبتر است .برای روشنتر شدن مطلب به این Kکوچک است و این در حالی است که معموالً در نظر گرفتن مقادیر فرد برای
.مثال توجه کنید
در نمودار زیر دو دسته وجود دارد؛ یکی مربعهای آبی رنگ و دیگری ستارههای نارنجی رنگ .این اشکال در دو دست ٔه مجزا
:طبقهبندی شدهاند که این دستهها عبارتند از دست ٔه مربع و دست ٔه ستاره
فرض کنیم مانند آنچه که در نمودار زیر دیده می شود ،یک داد ٔه جدید به مجموع ٔه دادهها اضافه شود که در اینجا به شکل قلب سبز
را برابر با ۳در نظر Kاین داد ٔه جدید را در یکی از دو دست ٔه موجود قرار دهیم .اگر K-NN،حال میخواهیم با استفاده از الگوریتم
بگیریم ،این بدین معنا است که به الگوریتم گفتهایم که ۳مورد از نزدیکترین همسایههای این دادٔه جدید را شناسایی کرده و سپس با
توجه به اینکه در بین این ۳مورد اعضای کدام دسته غالب است ،داد ٔه جدید را در همان دسته قرار بدهد .با توجه به نمودار زیر
میبینیم که نزدیکترین همسایههای این داد ٔه جدید عبارتند از ۲ستاره و ۱مربع و از همین روی این دیتای جدید در دست ٔه ستاره
در کاربردهای عمومی ،درخت تصمیم به منظور نمایش دادن روند تصمیمگیری مورد استفاده): درخت تصمیم( - Decision Tree
قرار میگیرد اما این رویکرد در یادگیری ماشینی و کار با دادهها به عنوان یک مدل پیشبینی نیز به کار میرود .هدف از
بهکارگیری درخت تصمیم ایجاد مدلی است که بتواند بر مبنای دادههای ورودی ،تصمیم مورد نظر را اتخاذ نماید .به عبارتی ،در
درخت تصمیم داد ٔه اصلی بر مبنای شرایط مختلف به زیرشاخههایی تقسیم میشود و این زیرشاخهها نیز بسته به شرایط فرعیتر به
زیرشاخههای دیگری تقسیم میشوند و پروس ٔه تقسیم شدن تا زمانی ادامه مییابد که در یکی از شاخهها ،نتیج ٔه ایجاد شده با نتیج ٔه
.مورد نظر برابر شود
به مثال زیر که بسیار ساده و ابتدایی بوده و صرفا ً جهت روشن شدن مطلب ارائه شده است دقت کنید .در این مثال ،یک درخت
تصمیم ساده رسم شده است که میتواند در مورد رفتن یا نرفتن به ماهیگیری تصمیم بگیرد .این درخت بر اساس شرایط مٔوثر در
:تعیین آبوهوا به سه زیرشاخه Jو سپس به زیرشاخههای دیگری تقسیم شده است
مشخص شود ،شاخهها دیگر به شاخههای جدیدی تقسیم Noو یا Yesهمانطور که در تصویر فوق مشاهده میشود ،هنگامی که پاسخ
.نخواهند شد چرا که به هدف دست یافتهایم
پایتون :محبوبیت این زبان در زمین ٔه یادگیری ماشینی شاید به دلیل افزایش تنوع فریمورکهای مرتبط با هوش مصنوعی برای این -
اشاره کرد .همچنین دالیلی مانند سینتکس ساد ٔه زبان پایتون Kerasو TensorFlow ،PyTorchزبان باشد که از آن جمله میتوان به
در محبوب بودنش بیتٔاثیر نبوده است .از دیگر عوامل محبوبیت این زبان در زمین ٔه هوش مصنوعی میتوان به قدرت و سرعت آن
توسعه یافته Matolotlibو Numby، SciPyکه بر مبنای پکیجهای Scikit-learnدر کار با دادهها و تحلیل دادهها اشاره نمود .مثالً
است ،یکی از الیبرریهای پایتون برای استفاده در زمین ٔه یادگیری ماشینی است (برای شروع یادگیری این زبان میتوانید به دور ٔه
آموزش آنالین و رایگان پایتون در سکان آکادمی مراجعه نمایید).
جاوا :زبان برنامهنویسی جاوا نیز توسط بسیاری از برنامهنویسان در سطوح تجاری و همچنین توسط برخی از برنامهنویسان با -
هدف پیادهسازی الگوریتمهای یادگیری ماشینی در پروژههای خود مورد استفاده قرار میگیرد .هر چند این زبان برای دولوپرهایی که
به تازگی شروع به یادگیری آن نمودهاند زبان مناسبی برای اهداف یادگیری ماشینی نیست ،اما برای دولوپرهایی که تسلط خوبی بر
این زبان دارند انتخاب خوبی تلقی میگردد .زبان جاوا در برخی زمینههای یادگیری ماشینی مانند امنیت شبکه ،تشخیص تقلب و
کالهبرداری و همچنین حفاظت در مقابل حملههای سایبری کاربرد دارد و از جمله الیبرریهای این حوزه هم میتوان
اشاره کرد (برای شروع یادگیری زبان برنامهنویسی جاوا میتوانید به دور ٔه آموزش آنالین و MALLETو Deeplearning4j به
رایگان جاوا در سکان آکادمی مراجعه نمایید).
آر :زبان آر که ابتدا به ساکن با اهداف محاسبات آماری مورد استفاده قرار میگرفت به مرور در میان دولوپرها به محبوبیت رسید -
و در محافل دانشگاهی نیز محبوبیت باالیی به دست آورد .هر چند این زبان در محیطهای صنعتی کاربرد زیادی ندارد اما به دلیل
پررنگتر شدن اهمیت دادهکاوی ،شاهد کاربرد بیش از پیش آن در اپلیکیشنهای صنعتی هم هستیم .برای استفاده از این زبان در
.را به کار برد e1071 و caret ،randomForestیادگیری ماشینی میتوان پکیجهایی مانند
سیپالسپالس :این زبان نیز یکی از ابزارهای مناسب برای استفاده در حوز ٔه یادگیری ماشینی و هوش مصنوعی در زمینههایی -
ِمبدد و مهندسان الکترونیک هم به دلیل کارایی زبانهایی مانند
مانند ساخت گیم و ربات است .توسعهدهندگان سختافزار سیستمهای ا ِ
بیشتر به استفاده از این زبانها در یادگیری ماشینی عالقمندند چرا که این دو زبان به زبان ماشین (صفر و یک) ++C،و یا C
نزدیکتر بوده و میتوانند ارتباط بهتری با سختافزار ایجاد کنند .برخی از الیبریهای مورد استفاده در هوش مصنوعی مناسب
Shark.و mlpack ،Dlibهم عبارتند از ++Cبرای زبان
عالوه بر زبانهای فوقالذکر ،زبانهای دیگری هم هستند که در حوز ٔه هوش مصنوعی مورد توجه قرار گرفتهاند که برای آشنایی
بیشتر با آنها میتوانید به مقال ٔه معرفی زبانهای برنامهنویسی مناسب Jبرای یادگیری ماشینی مراجعه نمایید .همچنین جهت آشنایی با
.فریمورکهای رایج در این حوزه ،میتوانید به مقال ٔه معرفی برخی فریمورکهای یادگیری ماشینی برای پایتون مراجعه نمایید
نتیجهگیری
یادگیری ماشینی و به طور کلی فناوری هوش مصنوعی امروزه جایگاه مهمی در علوم کامپیوتر به خود اختصاص داده و روز به
روز در حال گستردهتر شدن و پیشرفت است .از آنجا که یادگیری ماشینی و جنبههای مختلف آن مقولهای بسیار گسترده است ،در این
.مقاله به ذکر خالصهای از مفاهیم ،کاربردها ،روشها ،رویکردها و زبانهای مورد استفاده در یادگیری ماشینی بسنده نمودیم
اگر عالقمند به کسب اطالعات بیشتر پیرامون هوش مصنوعی ،یادگیری ماشینی و دیگر حوزههای وابسته هستید ،توصیه میکنیم به
.پادکستهای فوق از رادیو فولاستک سکان آکادمی که با متخصصین ایرانی این حوزه ضبط شدهاند نیز مراجعه نمایید