حسن نظری
حسن نظری
خواندن ۱۳ دقیقه·۳ سال پیش

یادگیری ماشین: جرقه اولیه، مفاهیم، زبان پایتون


جرقه اولیه هوش مصنوعی

اولین جرقه هوش مصنوعی به یونان برمی گردد که می خواستند یک مغز ساختگی را در یک بدنه مکانیکی قرار بدهند و بخشی از این کارها نیز یافت شده است. در اوایل قرن 17 دانشمندان به دنبال بیان تفکر به صورت ریاضی بودند که هنوز ادامه دارد. آلن تورینگ در 1950 تاثیر زیادی روی هوش مصنوعی داشته است و تست هوشمندی به عنوان معیار هوشمندی ماشین هنوز استفاده می شود. همچنین ایشان درباره الگوریتم ژنتیک و یادگیری تقویتی یافته های مهمی داشت. در 1950 در هاروارد اولین سیستم هوش مصنوعی به کمک شبکه عصبی و نورون ها ساخته شد که از 40 نورون تشکیل شده بود. از علم تجربی می دانیم که نورون های برای انتقال پیام در مغز استفاده می شوند. در ادامه ساختار deep blue در 1996 از کاسپاروف قهرمان شطرنج شکست خورد ولی با تغییرات داده شده در سال 1997 توانست وی را شکست دهد. شبکه های عصبی جدید که برای دسته بندی تصاویر از آنها استفاده می شود دارای هزاران نورون هستند.

شکل1. ساختار نورون [blog.faradars.org]
شکل1. ساختار نورون [blog.faradars.org]

معنای هوش و یادگیری

کتاب هوش مصنوعی یک رویکرد مدرن به بررسی دو روش می پردازد که هر کدام دو حالت دارند. این 4 حالت ممکن برابرند با 1-منطقی فکر کند. 2-منطقی رفتار کند. 3-مانند انسان فکر کند. 4-مانند انسان رفتار کند. تفکر یا کار منطقی چیست؟ تفاوت کار منطقی با کار درست چیست؟ از نظر افلاطون فضیلت در اجتماع مهم است و از نظر نیچه افزایش قدرت اهمیت دارد. آیا هوش مصنوعی همان یادگیری ماشین است؟ در واقع یادگیری ماشین بخشی از مجموعه بزرگتر هوش مصنوعی است. تعریف هوش مصنوعی می تواند اینگونه بیان شود که هر برنامه‌ای که هوشمندی داشته باشد یا به نوعی رفتار انسان را تقلید کند، به عنوان هوش مصنوعی پذیرفته می‌شود. یکی از مهم‌ترین ویژگی‌های یادگیری ماشین، یادگیری با استفاده از داده و بدون استفاده از دستورات مستقیم است. در گام بعدی می توان به یادگیری عمیق اشاره کرد که سعی می کند از شبکه عصبی استفاده کند تا مانند مغز انسان بتواند مسائل مختلف را حل بکند.

تجربه کاری یا دانشگاهی؟

دکتر فروغمند: قدم اول در رابطه بین دانشگاه و صنعت این است که موضوعاتی که مقالات مرتبط با آن ها سال های گذشته نوشته شده است و در بین عموم اساتید و دانشجویان رواج دارد ولی در صنعت استفاده نمی شود در نظر گرفته شوند. پیاده سازی این موضوعات می تواند سود اقتصادی مناسب به همراه کمک به کشور در پی داشته باشد. وقتی کسی وارد صنعت یا ساختار دولتی می شد چیزی که در آنجا می دید این بود که اکثر امور روی نظم خاصی جلو می رود و مشکلی دیده نمی شد و فهم اینکه چگونه می شود یک مشکل را شناخت و برای اصلاح آن برنامه ریزی کرد اهمیت زیادی دارد. یک مثال درباره محققین دانشکده ریاضی است یک پروژه صنعت نفت را به دانشگاه آوردند و به کمک دانشجویان پردازش و حل کردند و سود اقتصادی آن به آن گروه علمی یا دانشگاه رسید. هوش مصنوعی را می توان به 2بخش تقسیم کرد هوش مصنوعی کاربردی و کارهایی که سبب بهتر شدن هوش مصنوعی می گردد. شرکت شمارا هم به بخش اول می پردازد.

زمینه های شغلی

فصل دوم به چالش های هوش مصنوعی می پردازد و حوزه های یادگیری ماشین را آموزش می دهد. همچنین شغل های مرتبط و پلتفرم های تمرین و یادگیری مبحث یادگیری ماشین را یاد می دهد. یکی از اولین کاربردهای یادگیری ماشین تشخیص و جداسازی ایمیل های اسپم بود. امروزه ماشین های بدون راننده میتوانند به کمک این مبحث در خیابان تردد کنند یا اقتصاددان ها برای تحلیل و پیش بینی بازار از یادگیری ماشین بهره می برند. زبان پایتون برای یادگیری ماشین بسیار مورد توجه قرار گرفته است همچنین زبان R هم جذابیت زیادی برای برنامه نویسان این حوزه دارد. از نقاط قوت این زبان ها وجود کتاب خانه های متنوع و قدرتمند متناظر با یادگیری ماشین است. مسابقات زیادی در زمینه یادگیری ماشین با موضوعات متن، داده های جدولی و تصویر برگزار می گردد. در ‌سایت کوئرا هم مسابقاتی در همین ارتباط برگزار می شود مثلا مسابقات علم داده کدکاپ، تحلیل داده کارگزاری مفید، تحلیل داده عدالتخانه، دیجی‌کالا کاپ و کانکت فوتبالیست‌ها.

شکل2.زمینه های کاربردی یادگیری ماشین [dataio.ir]
شکل2.زمینه های کاربردی یادگیری ماشین [dataio.ir]

شغل ها و تخصص ها

تحلیل گزارش ها و فاکتورهای فروش یا انبار لازمه اداره یک شرکت موفق است که مرتبط با این کار شغل های در زمینه تحلیل داده بوجود آمده است. افراد هم در زندگی شخصی خود علاقمند هستند اطلاعاتی مانند میزان وزن، مقدار پیاده روی روزانه و هزینه ها و درآمدها را ثبت و در آخر نتیجه گیری کنند. به هر حال شغل هایی مثل دانشمند داده، تحلیلگر داده و مهندس یادگیری ماشین در عمل چه کار می کنند؟

تحلیل‌گر داده (Data Analyst):

تحلیل گر داده وظیفه دارد که اطلاعات خام یک سازمان را آماده سازی و در قالب ها و کلاس های مختلفی قرار بدهد و در پایگاه داده از پیش طراحی شده بارگزاری کند. در مرحله دوم باید از داده های بدست آمده اطلاعات استخراج کند. این اطلاعات متناسب با زمینه کاری سازمان و اهداف مورد علاقه آن می باشد. 2 نکته برای این کار مهم است: تحلیل گر داده نباید حتما برنامه نویسی بداند بلکه می تواند از خدمات روی وب استفاده کند. همچنین باید گزارش های ساده ولی با دید نقادانه و کشف مسئله داشته باشد.

دانشمند داده (Data Scientist):

در سطح بالاتری نسبت به تحلیل گر داده فعالیت می کند و لازم است برنامه نویسی و ریاضیات این حوزه را بداند. حتی گاهی دانشمند داده با امور تخصصی سازمان ها مانند تجارت آشنایی دارند و پیشنهادهایی ارائه می کنند. داده کاوی توسط برنامه نویسی و استفاده از کتابخانه ها مفید تر از استفاده از پلتفرم های آماده است از این رو دانشمند داده بر خلاف تحلیل گر داده از روش اول استفاده می کند.

مهندس داده (Data Engineer):

وجود داده های کلان سبب شد برای مدیریت، یکپارچه سازی و ذخیره داده ها از مهندس داده استفاده شود. او با توجه به اهداف شرکت و نیاز اعضا داده های مناسب را استخراج و در اختیار شرکت قرار می دهد. پس از انتخاب منابع تولید داده، داده ها را یکپارچه می کند و برای ذخیره سازی آنها اقدام می کند.

مهندس یادگیری ماشین (Machine Learning Engineer):

در واقع نقطه اشتراک مهندسی نرم افزار و علم داده است و در وظایف اشتراکاتی هم با مهندس داده دارد. هر دو فرآیند تولید تا مدل داده نقش داده و چالش های موضوع را درک می کنند. البته دانش یادگیری ماشین برای مهندس یادگیری ماشین الزامی خواهد بود. او باید در نظر و عمل دانش یادگیری ماشین و الگوریتم ها و روش های آن را بشناسد و قبل از ایجاد ساختار تحلیل مناسب را انجام دهد و بعدا هم بر اجرای صحیح مدل، نظارت کند.

مثال. تحلیل داده در صنایع معدنی

به دو دلیل اهمیت دارد:1-عدم قطعیت بالا 2-حجم داده بسیار زیاد. مثلا یک شرکت استرالیایی از یادگیری ماشین استفاده کرد به این صورت که در سراسر دنیا اقدام به جمع آوری داده کرده و موفق به کشف معادن طلا شده است. یکی از کاربردهای یادگیری ماشین در تصاویر ماهواره ای است. بدین صورت که تصویر بدست آمده باید از نظر عوارض و پدیده های زمین شناسی تجزیه شود و به هر عارضه رنگ و علامت مخصوصی نسبت داده شود تا با این کار نقشه های قابل فهم تری بدست آید این طبقه بندی به کمک یادگیری ماشین انجام می گیرد. کاربرد بعدی پیش‌بینی متغیرهای ژئومتالورژیکی است. به دلیل عدم قطعیت در معادن بهتر است از روش های آماری برای کشف و تحلیل آزمایش ها استفاده شود.

شکل3. متغیر های موجود در صنایع معدنی [netsanews.ir]
شکل3. متغیر های موجود در صنایع معدنی [netsanews.ir]

الگوریتم SVM

این الگوریتم در این رابطه به کار می رود. اگر تعدادی نمونه از قبل اندازه گیری و تحلیل شده باشد و داده های جدیدی هم اضافه بشود می توان به کمک داده های قبلی یک پیش بینی از رفتار نمونه ها داشت تا هزینه تست روی داده های جدید کمتر بشود.

مصاحبه مهندس ستوده:

کمک به آنالیزور های تیم ها از جمله فعالیت های ایشان بوده است. یک روش جمع آوری داده استفاده از جی پی اس نصب شده روی بدن بازیکنان فوتبال است.

تعریف یادگیری ماشین:

یادگیری ماشین در اکثر کاربردهای فعلی، یک برنامه کامپیوتری است که به داده دسترسی پیدا می‌کند و از آن داده برای آموزش خود استفاده می‌کند. آرتور ساموئل اولین کسی بود که از کلمه یادگیری ماشین استفاده کرد و تعریف زیر را برای آن ارائه داد: یادگیری ماشین زمینه‌ای از تحقیقات است که به کامپیوترها توانایی یادگیری بدون برنامه‌نویسی صریح را می‌دهد. ویژگی اصلی یادگیری ماشین خود آموزشی یا (Self-learning) می‌باشد که به معنی استفاده از مدلسازی آماری و عدم استفاده از دستورات مستقیم (یا صریح) می‌باشد. دیدگاه سید محسن شجاعی درباره انواع داده: کلمات (زبان طبیعی)، تصویر و بینایی ماشین، سری های زمانی، داده های جدولی به صورت عددی و دسته ای.

تعریف تام میشل (Tom Mitchell):

اگر کارایی برنامه در انجام تکلیف Tکه با سنجه P ارزیابی می‌شود، با تجربه E افزایش یابد، می‌گوییم که برنامه یاد گرفته است از تجربه E با توجه به تکلیف Tو سنجه P استفاده کند.

یادگیری ماشین به سه دسته کلی تقسیم‌بندی می شود. یادگیری بانظارت، یادگیری بی‌نظارت، یادگیری تقویتی.

یادگیری بانظارت:

به دلیل اینکه الگوریتم مورد نظر ما با استفاده از داده‌هایی که دارای برچسب مشخصی هستند الگوهای لازم را پیدا می‌کند، به این دسته، یادگیری نظارت‌شده می‌گویند.

یادگیری ماشین بی‌نظارت:

که در آن مدل بدون دخالت انسان و با داده‌های بدون برچسب، الگوهای پنهان بین داده‌ها را پیدا می‌کند، به طور کلی به سه دسته خوشه‌بندی (clustering)، کاهش ابعاد (dimensionality reduction) و استخراج قانون وابستگی (association rule mining) تقسیم‌بندی می‌شود.

یادگیری تقویتی:

یکی از روش های یادگیری ماشین است که با ذهنیت آزمون و خطا کار می‌کند. عامل هوشمند (agent) طبق حالت جاری (state) ، حرکتی (action) انجام می‌دهد و بر اساس آن حرکت بازخورد (reward) دریافت می‌کند؛ این بازخورد ممکن است مثبت یا منفی (پاداش یا تنبیه) باشد و عامل با این بازخورد خط‌مشی (policy) خود را تغییر می‌دهد. به دادگانی که برای آموزش استفاده می‌شوند، دادگان آموزش (train) و به دادگانی که برای ارزیابی استفاده می‌شوند، دادگان آزمایش (test) می‌گوییم.

پایتون

پایتون یک زبان برنامه نویسی است که در اوایل دهه‌ی ۹۰ میلادی معرفی شد. برخلاف C که زبانی دارای کامپایلر هستند، پایتون زبانی دارای مفسر است. پایتون به نسبت زبان‌های دیگر نوشتار ساده‌تری دارد و به همین دلیل سریع قابل یادگیری است. کتابخانه مختص ذخیره‌سازی و پردازش بهینه آرایه‌های عددی در پایتون نامپای نام دارد که مخفف numeric python به معنی پایتون عددی می‌باشد. در پانداس (Pandas) ساختار اصلی داده به شکل دیتافریم (data frame) است که در واقع یک آرایه دو‌بعدی است که در آن سطر‌ها و ستون‌ها عنوان دارند. مت‌پلات‌لیب (Matplotlib) ساخت نمودارهایی که بتوانند اطلاعات را به خوبی انتقال دهند یکی از مهمترین کارها در تحلیل داده است. برای مثال، مشاهده روند داده و تشخیص داده‌های پرت از روی نمودار‌ به راحتی امکان‌پذیر است. سایکت‌لرن (scikit-learn) هدف از ساخت آن تمرکز بر مدل‌سازی داده به جای دستکاری و مرتب‌سازی و خلاصه کردن داده می‌باشد. برای مصور سازی داده می‌توان از پلاتلی (Plotly) و سیبورن (Seaborn) هم استفاده کرد. برای امور یادگیری عمیق، پایتورچ (Pytorch) ، تنسورفلو (TensorFlow) و کراس (Keras) بیشتر مورد استفاده قرار می‌گیرند. برای پردازش متن nltkو اسپیسی (Spacy) کارایی بیشتری دارند و در زمینه پردازش عکس می‌توان از کتابخانه‌های اوپن سیوی (OpenCV) و سایکت ایمیج (scikit-image) نام برد.

اثر مخرب نویز

کمیت نامناسب داده، داده بی‌کیفیت و ویژگی‌های نامربوط از جمله چالش‌هایی است که به داده مربوط می‌شوند. تعدادی هنگام وارد کردن وزن‌ به دلیل بی‌احتیاطی عدد را به همراه یک صفر اضافه در سمت راست وارد می‌کنند (وزنشان را ده برابر مقدار واقعی اعلام می‌کنند!). این اشتباهات اجازه نمی‌دهند مدل به عملکرد بالا دست پیدا کند. هدف ما در یادگیری‌ماشین این است که با مشاهده و یادگیری از داده‌های گذشته، آینده را پیش‌بینی کنیم.

شکل4. مقایسه اثر سه نوع نویز متفاوت روی یک تصویر [اسلاید درس پردازش زمان-فرکانس دکتر رشیدی دانشگاه مالک اشتر].
شکل4. مقایسه اثر سه نوع نویز متفاوت روی یک تصویر [اسلاید درس پردازش زمان-فرکانس دکتر رشیدی دانشگاه مالک اشتر].

مسئله Overfitting:

وقتی دچار Overfittingمی‌شویم در حقیقت مدل عمومیت خود را از دست داده است.

مسئله Underfitting:

این مشکل وقتی به‌وجود می‌آید که مدل نتواند به خوبی از دادگان آموزش، یاد بگیرد. این مسئله می‌تواند به دلایل مختلفی پیش بیاید. داده نامناسب یکی از چندین دلیل کم‌برازش است.

زمان در یادگیری‌ماشین از دو جهت اهمیت دارد؛ هم مدت زمانی که طول می‌کشد تا آموزش مدل تمام شود، هم زمانی که مدل برای پیش‌بینی نمونه‌ها مصرف می‌کند.

گام‌هایی که در یک پروژه یادگیری ماشین طی می‌شود: دریافت و بررسی داده، آماده‌سازی داده، انتخاب و آموزش مدل مناسب، تست و ارزیابی. این پروژه نسبت به پروژه‌های دنیای واقعی بسیار ساده‌تر است. در پروژه‌های دنیا واقعی گام‌های بیشتری باید انجام شود. علاوه بر گام‌های ذکر شده تحلیل اکتشافی داده ، مهندسی کردن ویژگی‌ها و تنظیم ابر پارامتر‌ها (Hyperparameter tuning) نمونه‌ دیگری از گام‌هایی است که در یک پروژه واقعی انجام می‌شود!

در حل مسئله یافتن وزن از روی قد و جنسیت از کتابخانه‌های scikit learn، pandas و seaborn استفاده شده است. از scikit learnبرای مدل‌سازی، از pandas برای خواندن و دستکاری داده و از seaborn برای مصورسازی استفاده شده است. سنجه P برای این سوال MAEاست. MAE یا Mean Absolute Error(میانگین خطای مطلق) میانگین قدر مطلق تفاضل مقدار واقعی با مقداری که مدل پیش‌بینی کرده را نشان می‌دهد. مسئله یادگیری نظارت شده (supervised) است.

می‌خواهیم بفهمیم چقدر کم یا زیاد شدن قد، روی افزایش یا کاهش وزن موثر است. به این منظور نمودار پراکندگی (scatter plot) داده‌ها را رسم می‌کنیم. ۲۰ درصد داده‌ها را به عنوان دادگان آزمایشی جدا کردیم؛ ۸۰ درصد باقی‌مانده در آموزش مدل استفاده خواهند شد. برای مدل کردن داده از XGBRegressor استفاده شد. پس از طی کردن گام‌های ذکر شده، دقت مدل حدودا به ۹۰ درصد می‌رسد. یعنی ما با داشتن تنها جنسیت و قد یک نفر می‌توانیم با دقت ۹۰ درصد وزن او را پیش‌بینی کنیم!

چرخه تب تکنولوژی (Technology Hype Cycle):

این چرخه را اولین بار موسسه‌ گارتنر (Gartner) در سال ۱۹۹۵ مطرح کرد. این چرخه، نمودار رشد تکنولوژی‌­های مختلف را در طی زمان نشان می‌دهد. برای مثال استفاده از واحد پردازنده گرافیکی (GPU) در هوش مصنوعی تقریبا به محدوده‌ پایانی رشد خود رسیده است. با توجه به نمودار پردازش تصویر (computer vision) شهرت خود را از دست داده است و احتمالا در 2 تا 5 سال اینده دوباره به شهرت برسد.

هوش مصنوعی محدود یا ضعیف:

امروزه کاربردهایی مانند تشخیص انسان‌های داخل تصویر یا انجام بازی شطرنج وجود دارند، به این نوع از هوش مصنوعی، هوش مصنوعی محدود یا ضعیف اطلاق می‌شود.

هوش مصنوعی قوی:

در مقابل هوش مصنوعی قوی یعنی ساختن عامل هوشمندی که مانند انسان از هوشی عمومی برخوردار باشد که توانایی آموختن در مواجهه با هر مسئله جدیدی را داشته باشد و محدود به یک زمینه یا مسئله خاص نباشد. بخشی از مسائل هوش مصنوعی قوی به فلسفه و به طور دقیق‌تر فلسفه ذهن برمی‌گردد.

هوشمندی به چه معناست؟ آگاهی داشتن به چه وضعیتی اطلاق می‌شود و خودآگاهی چیست؟ مسئله بعدی مطالعه هوش طبیعی انسان است. به راستی چه رازی پشت هوشمندی و آگاهی ما انسان‌هاست؟ جالب است بدانید که در حال حاضر یک رشته دانشگاهی نسبتا جوان وجود دارد به نام علوم شناختی که مسئله شناخت را محور تحقیقات خود قرار داده است.

نقطه تکینگی فناوری (technological singularity):

زمانی که پیشرفت تکنولوژی به نقطه‌ای غیرقابل کنترل و برگشت ‌ناپذیر برسد که تمدن انسانی را تحت تاثیر قرار دهد. هربرت سایمون که از پیشگامان هوش مصنوعی به شمار می‌رود و هم برنده جایزه تورینگ (معروف به نوبل محاسبات) و هم برنده نوبل اقتصاد است در سال ۱۹۶۵ نوشته بود: «تا بیست سال دیگر، ماشین‌ها قادر خواهند بود هر کاری که انسان انجام می‌دهد را انجام دهند». با این حال قابل ذکر است که بسیاری از صاحب نظران معتقدند تا سال‌های دههٔ ۲۰۴۰-۲۰۵۰ شاهد چنین تحولات شگرفی خواهیم بود.

شکل5. رقابت انسان و ربات [plaza.ir]
شکل5. رقابت انسان و ربات [plaza.ir]

معرفی چند شرکت مطرح:

عامل هوشمند معروف AlphaGo که موفق به شکست قهرمان جهان در بازی Go که پیچیدگی خیلی بیشتری از شطرنج دارد توسط دیپ‌مایند طراحی شد. مدل زبانی GPT-3 و مدل ساخت تصاویر از روی متن DALL.E از محصولات شرکت OpenAI هستند که سر و صدای زیادی به پا کرده‌اند. زمینه‌های تحقیقاتی این بخش شامل ابعاد مختلف یادگیری ماشین از جمله بینایی ماشین و پردازش زبان طبیعی می‌شود اما معروف‌ترین محصول Facebook یک کتابخانه متن‌باز یادگیری ماشین به نام PyTorch است. گوگل بخشی به نام Google Brain هم دارد که قدمتی طولانی‌تر دارد و به تحقیق در زمینه هوش مصنوعی مبادرت می‌ورزد. جدی‌ترین رقیب PyTorch که یکسال پیش از آن منتشر شد متعلق به Google Brain است و TensorFlow نام دارد.

معرفی یک کتاب معروف:

کتاب طراحی الگو و یادگیری ماشین آقای بیشاپ (Pattern Recognition and Machine Learning)، یکی از مهمترین منابع یادگیری ماشین و طراحی الگو در دانشگاه‌های سراسر دنیا می‌باشد. آخرین ویرایش کتاب در سال ۲۰۱۸ انجام شده است.

نویسنده: مهندس حسن نظری

منبع:

https://quera.ir/college/land/college/8522/

ماشینیادگیرینورون
شاید از این پست‌ها خوشتان بیاید