دروازه ورود به یادگیری ماشین

فرآیند اندیشه، تفکر و طرز کار مغز از گذشته‌های بسیار دور مورد توجه فیلسوفان و دانشمندان در همه جای جهان بوده‌است و یونانیان در این امر پیشتاز و به دنبال ساخت یک مغز مکانیکی بودند، در ادامه ریاضی دانان نیز سعی در منطقی کردن فرآیند تفکر با استفاده از علائم ریاضی بودند. اما تولد هوش مصنوعی به سال 1950 و با مقاله معروف آلن تورینگ برمیگردد او یکی از تاثیرگذارترین افراد در حوزه هوش مصنوعی است و همچنین تست تورینگ را پیشنهاد داد که معیاری برای تشخیص هوشمندی ماشین است. یکی از اولین پروژه‌های عملی هوش مصنوعی، ایده گرفتن از مفهوم شبکه عصبی و نورون‌ها بود. که در سال 1950 در دانشگاه هاروارد انجام شد و اولین شبکه عصبی شامل 40 نورون ساخته شد (نورون‌ها واحد‌هایی یک‌شکل در مغز هستند که پیام‌های عصبی را منتقل می‌کنند)هوشمندی را از دو منظر می‌توان مورد بررسی قرار داد، از منظر اول هوشمندی یا در رفتار است یا در تفکر و از منظر دوم هوشمندی در انسان‌گونه بودن یا در منطقی بودن (rationality) است. اگر همه حالات را در نظر بگیریم به چهار تعریف زیر برای هوش مصنوعی میرسیم:منطقی فکر کند.منطقی رفتار کند.مانند انسان فکر کند.مانند انسان رفتار کند.بعد از انتخاب هوشمندی مورد نظر قدم بعدی ساخت عامل هوشمند است که می تواند سخت افزاری یا نرم افزاری باشد و بر حسب محیطی که عامل قرار است در آن مورد استفاده قرار گیرد، می‌تواند دارای اجزای مختلفی باشد. برای مثال، عاملی که با انسان در ارتباط است باید توانایی دریافت و درک زبان طبیعی را داشته باشد و عامل فیزیکی ممکن است نیازمند بازوهای حرکتی برای انجام اعمال انتخابی باشد.هم‌اکنون هوش مصنوعی حوزه‌های بسیاری را شامل می‌شود و همچنان در حال بزرگ‌تر شدن است. امروزه هر برنامه‌ای که هوشمندی داشته باشد یا به نوعی رفتار انسان را تقلید کند، به عنوان هوش مصنوعی پذیرفته می‌شود. یادگیری ماشین بعد از هوش مصنوعی موضوعیت پیدا کرد و آن را می‌توان زیر مجموعه ای از هوش مصنوعی در نظر گرفت.یکی از مهم‌ترین ویژگی‌های یادگیری ماشین، یادگیری با استفاده از داده و بدون استفاده از دستورات مستقیم است. در انواع دیگر هوش مصنوعی ممکن است شاهد نوعی از هوشمندی باشیم که از داده‌ها استفاده نمی‌کند. ویژگی دیگر یادگیری ماشین، تغییر خود با دیدن داده‌های جدید است؛ یعنی همانند انسان با کسب تجربیات جدید رفتار خود را تغییر می‌دهد.طبق صحبت های دکتر فروغی یکی از مسائلی که میتواند حاصل خوبی داشته باشد پیدا کردن مسائل عمیق هر حوزه و ایجاد ارتباط و پیشنهاد راه حل با توجه به دروس تئوری دانشگاه است به این صورت که فرد با دید پژوهشی مشکلات سیستم را حل کند.امروزه می توان در صنعت، دانشگاه، حوزه سلامت، اقتصاد و تجارت، کسب و کارها و ...، از یادگیری ماشین برای پیشبرد اهداف خود استفاده کرد، زبان پایتون و Rاز محبوب‌ترین زبان‌های قابل استفاده برای یادگیری ماشین هستند و کتابخانه‌های بسیار قدرتمندی در این زبان‌ها برای رفع نیازهای علاقه‌مندان این حوزه در حال گسترش است.یکی از سایت های مفید در حوزه یادگیری ماشین سایت Kaggle است. بیشتر شهرت این سایت به دلیل مسابقاتی است که در آن برگزار می‌شود و ارزش جوايز آن بعضاً به چندصد هزار دلار می‌رسد، از ویژگی‌های دیگر سایت Kaggle می‌توان به داشتن آموزش‌هایی ابتدایی برای شروع کار با داده، دسترسی دادن به دیتاست‌های مختلف و قابلیت مشاهده کدها و تحلیل‌های دیگران برای آموزش بهتر یادگیری ماشین اشاره کرد. پلتفرم های دیگری نیز در کنار این وب‌سایت شروع به فعالیت و برگزاری مسابقات کرده‌اند که می‌توان به CodaLab ، Signate و DrivenData اشاره کرد.موقعیت‌های شغلی مرتبط با یادگیری ماشین:تحلیل‌گر داده (Data Analyst): اهمیت اطلاعات در عصر اطلاعات در حال افزایش است، تحلیل‌گر داده معماری مناسب برای جمع‌آوری اطلاعات یک سازمان را طراحی می‌کند و پایگاه داده مناسب برای كار روي داده خام را انتخاب می‌کند؛ بعد از جمع آوري داده ها و انجام عمليات مختلف اطلاعات مفيدي از داده ها استخراج مي كند، نتيجه فعاليت ‌های تحلیل‌گر داده می‌تواند گزارش‌های کلی یا روابط بین داده‌ها باشد.دانشمند داده (Data Scientist): دانشمند داده سطح بالاتری از تحلیلگر داده دارد و نیازمند دانش آماری و ریاضیاتی و برنامه‌نویسی قوی‌تری نسبت به تحلیلگر داده استمهندس داده (Data Engineer): مهندس داده با كلان داده ها كار مي كند و پس از انتخاب منابع داده، آنها را یکپارچه كرده و برای نگهداری بهینه آن‌ها برنامه‌ریزی می‌کند.مهندس یادگیری ماشین (Machine Learning Engineer): مهندس یادگیری ماشین در واقع نقطه تلاقی مهندسی نرم‌افزار و علم داده استطبق صحبت های مهندس ستوده، داشتن دانش کافی نسبت به موضوع مورد مطالعه از اهمیت بالایی برخوردار است.یادگیری ماشین در اکثر کاربردهای فعلی، یک برنامه کامپیوتری است که به داده دسترسی پیدا می‌کند و از آن برای آموزش خود استفاده می‌کند. آرتور ساموئل تعریف دیگری برای یادگیری ماشین ارائه داده است که عبارت است از: زمینه‌ای از تحقیقات که به کامپیوترها توانایی یادگیری بدون برنامه‌نویسی صریح را می‌دهد.داده‌ها عنصر محوری یادگیری ماشین هستند و ماشین‌ها از داده‌ها یاد می‌گیرند، به این صورت که ما داده‌ها را به عنوان ورودی به الگوریتم می‌دهیم تا خروجی مورد نیازمان را دریافت کنیم.انواع داده ها:کلمات: این نوع داده میتواند به صورت نوشتاری یا صوت در اختیار الگورتیم‌های کامپیوتری قرار بگیرد.تصاویر: غنی‌ترین منبع تجربه ما انسان‌ها از واقعیت را قوای بینایی‌مان در اختیارمان قرار داده است. از این رو توانایی استخراج اطلاعات از داخل تصاویر امکان فوق‌العاده‌ای را در اختیار یک عامل هوش مصنوعی می‌گذارد و هدف معمولاً تشخیص شیء یا اشیای موجود در تصاویر است.جداول: این نوع داده ساختارمند است و در بسیاری از سیستم‌های نرم‌افزاری یافت می‌شود. برای مثال یک بانک را در نظر بگیرید که نام و کدملی افراد، موجودی حساب‌های آن‌ها و ... را در جدولی نگهداری می‌کند. بانک می‌تواند با کمک یادگیری ماشین از روی این داده‌ها پیش‌بینی کند که درخواست وام یک مشتری را قبول یا رد کند، داده های جدولی میتوانند دسته ای یا عددی باشد.سری زمانی: در مورد بعضی از انواع داده، تغییرات آن و در نتیجه مقدار آن در طول زمان اهمیت ویژه‌ای دارد. ماشین می‌تواند با دیدن تغییرات ویژگی مشخصی از یک داده در طول زمان، الگوی تغییرات آن را یاد بگیرد و به مسائلی که برحسب زمان‌اند، مثل پیش‌بینی مقدار آن ویژگی در یک زمان مشخص پاسخ دهد.الگوریتم‌های یادگیری ماشین، مثل انسان با کمک تجربه یاد می‌گیرند. داده همان تجربه‌ای است که به عنوان ورودی به الگوریتم داده می‌شود. تام میشل یادگیری ماشین را از دید مهندسی به این شکل تعریف کرده است: اگر کارایی برنامه در انجام تکلیف T که با سنجه P ارزیابی می‌شود، با تجربه E افزایش یابد، می‌گوییم که برنامه یاد گرفته است از تجربه E با توجه به تکلیف T و سنجه P استفاده کند. (تکلیف T همان مساله‌ای است که ما انتظار داریم بتوانیم با یادگیری ماشین حل کنیم، تجربه E همان نمونه های ما هستند و سنجه P عیاری برای بررسی و اندازه‌گیری میزان دقت الگوریتم ما می باشد.)انواع یادگیری ماشین:یادگیری بانظارت: در این نوع از یادگیری، نمونه‌هایی که برای آموزش الگوریتم استفاده می‌شوند، دارای برچسب هستند و مدل یادگیری‌ماشین با استفاده از داده‌هایی که از قبل برچسب مشخصی دارند، الگوهای اساسی را تا زمانی که به دقت رضایت‌بخشی برای ما برسد، پیدا می‌کند. الگوریتم‌های یادگیری نظارت‌شده، به دو دسته طبقه‌بندی (classification) و رگرسیون (regression) دسته‌بندی می‌شوند.یادگیری بی‌نظارت: تفاوت این نوع از یادگیری با یادگیری نظارت‌شده، تنها در نبودن برچسب‌ها است، الگوریتم‌های یادگیری نظارت‌شده، به سه دسته خوشه‌بندی (clustering)، کاهش ابعاد (dimensionality reduction) و استخراج قانون وابستگی (association rule mining) تقسیم‌بندی می‌شود.یادگیری تقویتی: این روش با ذهنیت آزمون و خطا کار می‌کند. عامل هوشمند طبق حالت جاری ، حرکتی انجام می‌دهد و بر اساس آن حرکت بازخورد دریافت می‌کند؛ این بازخورد ممکن است مثبت یا منفی (پاداش یا تنبیه) باشد و عامل با این بازخورد خط‌مشی خود را تغییر می‌دهد. (این روش از یادگیری نزدیک‌ترین حالت به یادگیری انسان است)پایتون یک زبان برنامه نویسی است و از زمان اختراعش تا امروز به عنوان یک زبان برنامه نویسی سطح بالا در توسعه‌ی برنامه‌های وب و موبایل و همچنین در آنالیز داده و محاسبات علمی به کار رفته است. برخلاف C و C++ که زبان‌های کامپایلری هستند، پایتون زبانی مفسری است. به غیر از پایتون زبان‌های دیگری مانند R، Scala، Julia، Matlab و SQL نیز برای علوم داده استفاده می‌شوند؛ اما پایتون به خصوص در صنعت از همه پر‌کاربرد‌تر است زیرا کتابخانه‌ها و ابزار‌هایی قوی و متعدد دارد، کد های پایتون قابل فهم است، جامعه توسعه‌دهندگان بزرگی دارد و چند پارادایمی است.پایتون و R دو زبان پرطرفدار در حوزه‌ی علم داده هستند. اشتراکات زیادی از جمله رایگان و متن باز بودن بین دو زبان وجود دارد. مستندات هر دو زبان با کمک کاربران نوشته‌ شده است و هر دو اجتماعات فعالی در اینترنت دارند. اما هرکدام برتری‌هایی نسبت به دیگری دارند: پایتون کتابخانه‌های متعدد و قوی‌ای دارد، تقریبا هر ۱۸ ماه یک بار نسخه‌ی جدید و با ثباتی از پایتون عرضه می‌شود، پایتون دارای نوشتار ساده است. R توانایی کشیدن نمودارهای با کیفیت و متنوعی را دارد، به سرعت در حال توسعه است و تقریبا برای همه‌ی تکنیک‌های آماری پکیج دارد. اما تفاوت اصلی میان این دو، کاربرد بیشتر پایتون در صنعت است. به صورتی که اکثر شرکت‌ها برای بخش production از پایتون استفاده می‌کنند و R بیشتر به استفاده‌های آکادمیک محدود شده است.پرکاربردترین کتابخانه‌های پایتون:نامپاي (Numpy): داده های در قالب های متفاوت در نهایت باید به شکل آرایه عددی در بیایند، با استفاده از نامپای، پردازش و محاسبات روی آرایه‌ها سریعتر انجام می‌شود. در نامپای اعضای یک آرایه همه از یک نوع می‌باشند و این ویژگی باعث می‌شود تا آرایه‌ها حجم کمتری در رم اشغال کنند. نامپای همچنین توابع بسیاری برای انجام انواع عملیات بر روی آرایه‌ها دارد که نسبت به توابع خود پایتون سریع‌تر اجرا می‌شوند.پانداس (Pandas): در پانداس ساختار اصلی داده به شکل دیتافریم (data frame) است که در واقع یک آرایه دو‌بعدی است که در آن سطر‌ها و ستون‌ها عنوان دارند. نامپای امکانات بسیاری در اختیار ما قرار می‌دهد که برای محاسبات سریع بر روی داده‌های جدولی می‌توان از آن استفاده کرد.مت پلات ليب (Matplotlib): ساخت نمودارهایی که بتوانند اطلاعات را به خوبی انتقال دهند یکی از مهمترین کارها در تحلیل داده است، این کتابخانه بیشتر در ساخت نمودارهای ۲ بعدی کاربرد دارد و رابط کاربری آن بسیار شبیه به متلب است. بسیاری از نمودار‌های پرکاربرد را می‌توان با مت‌پلات‌لیب ایجاد کرد و امکانات بسیاری برای شخصی‌سازی در آن گنجانده شده است.سايكت لرن (Scikit-learn): معروف‌ترین و پرکاربردترین کتابخانه یادگیری ماشین در پایتون می‌باشد، هدف از ساخت سایکت‌لرن تمرکز بر مدل‌سازی داده به جای دستکاری و مرتب‌سازی و خلاصه کردن داده می‌باشد.سایکت لرن واسط کاربری بسیار منسجمی دارد و کار با آن بسیار آسان است.علاوه بر موارد ذکر شده، کتابخانه‌های بسیار قدرتمند دیگری برای زمینه‌های دیگر کار با داده در پایتون وجود دارد. برای مصور سازی داده می‌توان از پلاتلی (Plotly) و سیبورن (Seaborn) هم استفاده کرد. برای امور یادگیری عمیق، پایتورچ (Pytorch) ، تنسورفلو (TensorFlow) و کراس (Keras) بیشتر مورد استفاده قرار می‌گیرند. برای پردازش متن nltk و اسپیسی (Spacy) کارایی بیشتری دارند و در زمینه پردازش عکس می‌توان از کتابخانه‌های اوپن سیوی (OpenCV) و سایکت ایمیج (scikit-image) نام برد.چالش های مربوط به داده: تعداد ناکافی داده – داده بی کیفیتچالش های الگوریتمی:بيش برازش (Overfitting): اگر مدل داده هاي آموزش را زياد از حد بياموزد نميتواند عملكرد خوبي روي داده هاي دنياي واقعي (تست) داشته باشد و چنين مدلي عموميت خود را از دست داده استكم برازش (Underfitting): اگر مدل نتواند از داده هاي آموزش به خوبي ياد بگيرد دچار كم برازش شده است.مسئله زمان: فرایند آموزش مدل به زمان‌بر بودن معروف است. الگوریتم‌ها برای یادگیری زمان زیادی مصرف می‌کنند؛ بنابراین باید مدلی انتخاب کنیم که پیچیدگی زمانی خوبی داشته باشد.گام‌هایی که در یک پروژه یادگیری ماشین طی می‌شود:دریافت و بررسی دادهآماده‌سازی دادهانتخاب و آموزش مدل مناسبتست و ارزیابیامروزه شاهد پیشرفت‌های بزرگی در زمینه هوش مصنوعی هستیم اما همچنان با آنچه در فیلم‌ها و داستان‌ها از یک عامل هوشمند متصوریم که در انجام کارهای گوناگون از توانایی مشابه انسان برخوردار است فاصله داریم. عامل‌های هوشمندی که امروزه ساخته می‌شوند معمولا در حل یک مسئلهٔ خاص به هوشمندی رسیده‌اند.در ادامه تحولات شگفتی که برای هوش مصنوعی پیش‌بینی می‌شود، از نقطه‌ای نام برده می‌شود که هم با شکوه و هم دلهره برانگیز است و آن نقطه تکینگی فناوری (technological singularity) است. زمانی که پیشرفت تکنولوژی به نقطه‌ای غیرقابل کنترل و برگشت‌ناپذیر برسد که تمدن انسانی را تحت تاثیر قرار دهد. البته که تخمین‌هایی که دانشمندان درباره زمان تحقق هوش مصنوعی عمومی یا تکینگی فناوری داشته‌اند بعضا خوش‌بینانه بوده است. هربرت سایمون که از پیشگامان هوش مصنوعی به شمار می‌رود و هم برنده جایزه تورینگ و هم برنده نوبل اقتصاد است در سال ۱۹۶۵ نوشته بود: «تا بیست سال دیگر، ماشین‌ها قادر خواهند بود هر کاری که انسان انجام می‌دهد را انجام دهند». با این حال قابل ذکر است که بسیاری از صاحب نظران معتقدند تا سال‌های دهه ۲۰۴۰-۲۰۵۰ شاهد چنین تحولات شگرفی خواهیم بود.شركت هاي پيش رو در حوزه هوش مصنوعي: Deep mind - OpenAI- Facebook AI- Google AIمنبع: https://quera.ir/college/land/college/8522/