ماشین لرنینگ
تکنولوژی ، امروزه به عضو جدا ناپذیری از زندگی ما تبدیل شده است ، به گونه ای که می توان حضور آن را در کوچک ترین و بزرگ ترین کار های بشر مشاهده کرد ؛ یکی از تکنولوژی هایی که محققان و دانشمندان به دنبال پیشرفت در آن هستند ، هوش مصنوعی است ؛ به بیان ساده ، علمی که در آن قصد داریم از علوم مختلف برای هوشمند ساختن ابزار ها و ماشین ها استفاده کنیم . ما در این مقاله قصد داریم به یک جز از این هوش مصنوعی بپردازیم ، بخشی که پیشرفت در آن می تواند درهای جدیدی از تکنولوژی را بر روی ما بگشاید ؛ این زیر مجموعه از هوش مصنوعی ماشین لرنینگ (Machine learning) نام دارد .
ماشین لرنینگ را به زبان ساده می توان این گونه بیان کرد : ماشینی است که به ماشین های دیگر یاد می دهد ، چگونه اطلاعات و کارکرد های جدید را بیاموزند .
برای درک بهتر این تعریف باید ابتدا ساختار کلی یک ماشین را در نظر بگیریم ؛ ماشین ها و کامپیوترهایی که ما از آن ها استفاده می کنیم ، مجموعه ای از قطعات الکترونیکی هستند که هر کدام وظیفه خاصی را بر عهده داشته و هماهنگ با یکدیگر عمل می کنند .برای مثال ، امروزه اکثر ما گوشی های هوشمند داریم و این گوشی ها از بخش های مختلفی نظیر Ram ، Hard disk ، Graphic card ، Cpu و ... تشکیل شده اند ؛ هر یک از این بخش ها چیزی جز مدار های الکترونیکی نیستند و ماشین لرنینگ نیز همانند تمامی این قسمت ها ، یک قطعه الکترونیکی است .
حال که با تعریف کلی ماشین لرنینگ آشنا شدیم بیایید باهم نگاهی کلی به قسمت های مختلف این ماشین بیندازیم . ماشین لرنینگ سه قسمت اصلی دارد :
- مرکز اطلاعات
- موتور جستجو
- توانایی اضافه کردن یافته های جدید به مرکز اطلاعات بر اساس تجربه
مرکز اطلاعات در واقع بخشی از ماشین لرنینگ است که ما در زمان طراحی - با توجه به کارکرد کلی که از سیستم می خواهیم - اطلاعات و داده هایی را به ماشین لرنینگ می دهیم .
موتور جستجو در ماشین لرنینگ بدین دلیل طراحی شده تا ماشین داده های دریافتی از محیط را با داده های موجود در مرکز اطلاعات خود مقایسه کرده ، سپس تطابق های لازم را انجام دهد و در نهایت تصمیم گیری کند .
بخش سوم ، وظیفه افزایش اطلاعات و داده های ماشین لرنینگ را بر عهده دارد ؛ بخشی که وجه تمایز ماشین لرنینگ بوده و در بسیاری از دستگاه هایی که پیش تر از آن ها استفاده می کردیم ، وجود نداشته است ؛ به عنوان مثال ، اگر اطلاعاتی به ماشین لرنینگ داده شود اما ماشین هیچ تطابقی بین این داده ها با مرکز اطلاعات خود پیدا نکند ، پیامی با این مضمون به کاربر نشان داده می شود : "داده دریافتی در مرکز اطلاعات وجود ندارد" ، حال در صورتی که کاربر اطلاعات جدیدی را به ماشین لرنینگ دهد ، این ماشین اطلاعات را دریافت و به مرکز اطلاعات خود اضافه می کند .
امروزه ماشین های لرنینگی را در اختیار داریم که حتی در صورت عدم تطابق کامل داده های دریافتی با مرکز اطلاعات ، توانایی بررسی شباهت های موجود را داشته و در صورت وجود ، از کاربر خواسته می شود تا صحت شباهت های یافت شده را تائید یا رد کند و در صورت تائید ، داده های جدید به مرکز اطلاعات ماشین لرنینگ اضافه می شود . حال ممکن است این سوال مطرح شود که ...
ماشین لرنینگ چه کمکی به ما می کند ؟
برای مثال ، بیماران مبتلا به صرع ممکن است هر از چند گاهی دچار تشنج شوند ، این امر به تنهایی خطر چندانی ندارد اما بسته به شرایطی که فرد بیمار در آن قرار دارد ، گاهی تشنج منجر به یک حادثه شده و جان بیمار را تهدید می کند ؛ ما می توانیم دستگاهی را طراحی کنیم که سیگنال های مغزی بیمار را دریافت کرده و سپس با برسی و مقایسه آن با شرایط تشنج ، قبل از اینکه فرد دچار تشنج شود به او هشدار دهد ؛ این دستگاه برای انجام چنین کاری باید تحلیل و مقایسه سیگنال مغزی را یاد بگیرد - که در واقع این امر نیازمند استفاده از ماشین لرنینگ است!
تا این قسمت از مقاله متوجه کاربرد ماشین لرنینگ شدیم ، اما یک سوال اینجا مطرح است که چگونه دستگاهی که از قطعات الکترونیکی تشکیل شده است ، توانایی انجام چنین کارهایی را دارد ؟ آیا نحوه کارکرد ماشین لرنینگ مشابه مغز انسان است ؟
این دستگاه و تمامی دستگاه های دیگر ، از قطعات الکترونیکی ساخت بشر تشکیل شده اند ، بنابراین مانند انسان توانای درک و فکر کردن را نداشته و برای انجام این کار نیازمند علم برنامه نویسی کامپیوتر هستند ؛ علمی که در ادامه قصد داریم شما را با نقش آن در توسعه و عملکرد ماشین لرنینگ آشنا کنیم .
برنامه نویسی کامپیوتر چیست ؟
به طور کلی می توان برنامه نویسی را به صورت مجموعه کد ها و دستوراتی تعریف کرد که ما آن ها را در اختیار کامپیوتر قرار داده و سیستم آن ها را به اجرا در می آورد .
در ابتدای مقاله بیان شد که کامپیوتر از قسمت های مختلفی تشکیل شده و تمامی این قسمت ها یا الکترونیکی هستند و یا با الکترونیک سرو کار دارند ؛ در نتیجه اجزایی که کامپیوتر از آن ها تشکیل شده است ، باید تماما از قوانین الکترونیک تبعیت کنند .
در علم الکترونیک مهم ترین موضوع "ولتاژ داشتن" یا "ولتاژ نداشتن" است و بر همین اساس ما ساختاری را تهیه و تولید می کنیم که بر اساس وجود یا عدم وجود ولتاژ ، کار های مختلفی را انجام دهد . در برنامه نویسی ، ولتاژ داشتن را با عدد 1 و ولتاژ نداشتن را با عدد 0 بیان می کنیم ؛ به این دو عدد ، اعداد باینری گفته می شود ، یعنی اعداد قابل فهم برای کامپیوتر .
در نتیجه می توان برنامه نویسی را این گونه تعریف کرد :
" مجموعه ای از دستورات به زبان کامپیوتر (باینری) که اجرای آن باعث وجود ولتاژ یا عدم وجود ولتاژ در قسمتی از کامپیوتر می شود ؛ در نهایت مجموعه ای از وجود یا عدم وجود ولتاژ ها باعث می شود تا کامپیوتر یک برنامه خاص را اجرا کند . "
حال که به طور مختصر متوجه برنامه نویسی و نحوه عملکرد آن در کامپیوتر شدیم ، باید بدانید که زبان های برنامه نویسی متعددی وجود دارد ، با این حال اساس اکثر این زبان ها با یکدیگر مشابه اند ؛ از این رو می توانیم به طور کلی نگاهی به ساختار ماشین لرنینگ بیندازیم .
برنامه نویسی ماشین لرنینگ
به طور کلی برنامه نویسی ماشین لرنینگ مبتنی بر سه اصل زیر است :
- متغیر های منطقی : متغیر هایی که تنها دو حالت دارند ، یا "صدق می کنند" یا "صدق نمی کنند" . در واقع عملکردی مشابه 0 و 1 دارند : صدق کردن = 1 صدق نکردن = 0
- ساختار شرط : ساختار شرط این امکان را به ماشین لرنینگ می دهد که قبل از اجرای برنامه ، حالت های مختلف را بررسی کند . در این ساختار ابتدا ماشین داده ای را دریافت کرده ، سپس آن را با حالت های مختلفی که از پیش برایش تعریف شده است ، مقایسه می کند ؛ حال در صورت وجود شباهت و تطابق ، برنامه کار خاصی را اجرا کرده و در غیر این صورت برنامه اجرا نمی شود .
به بیان ساده تر ، ماشین برای آن که بتواند کاری را انجام دهد ، ابتدا باید بررسی کند که آیا داده ها در شرط های موجود صدق می کنند یا خیر . - ساختار حلقه : ساختاری که به بر اساس ساختار شرط ، یک عمل خاص را بار ها انجام می دهد .
یادگیری ماشین لرنینگ
تا به اینجا ، اندکی با نحوه فعالیت ماشین لرنینگ آشنا شدیم . در ادامه قصد داریم نگاهی به روش هایی که سیستم به وسیله آن ها "یادگیری" را انجام می دهد بیندازیم :
یادگیری با نظارت
این یادگیری بر اساس داده های از قبل آماده شده عمل می کند ، یعنی ماشین باید ابتدا داده های را در اختیار داشته باشد تا بتواند داده های دریافت شده را با آن ها مقایسه کرده و سپس تصمیم گیری را انجام دهد .
یادگیری بدون نظارت
در این یادگیری ، دیگر ماشین نیازی به الگو و داده های از قبل آماده شده ندارد ؛ بلکه خود ماشین توانایی این را دارد تا بین داده های گرفته شده از محیط ارتباط بر قرار کرده و سپس روابط حاکم بین آن ها را درک کند .
یادگیری تقویتی
در این یادگیری سیستم دائما خود را تقویت می کند و در ارتباط با یک عامل یا محیط ، مطالب جدیدی را فرا می گیرد - اساس این یادگیری همان آزمون و خطا است .
فرق ماشین لرنینگ با سیستم های اتوماتیک چیست ؟
بیشتر سیستم های اتوماتیک بر اساس یک الگوریتم مشخص عمل کرده و کاری خارج از این الگوریتم انجام نمی دهند ؛ ولی ماشین لرنینگ توانایی این را دارد که داده های مختلفی را دریافت کند ، رابطه بین آن ها را درک کرده و بین داده های دریافتی و اطلاعات از پیش تعریف شده مقایساتی را انجام دهد . علاوه بر این موارد ماشین لرنینگ می تواند از فعالیت های قبلی خود بیاموزد و خود را تقویت کند .
و در نهایت ماشین لرنینگ ، ماشینی است که بر خلاف سیستم های اتوماتیک ، توانایی دریافت داده ها ، مقایسه داده ها با مرکز اطلاعات ، تصمیم گیری در شرایط مختلف و حتی افزایش اطلاعات را دارد .
نظرات 1