سرگذشت هوش مصنوعی را میتوان از آنجا دانست که دانشمندان در سراسر جهان در پی کشف کردن فرآیند اندیشه، تفکر و طرز کار مغز انسان بودهاند. از دانشمندان تأثیرگذار در این حوزه، آلن تورینگ است که بسیاری مقالهی انتشار یافتهی او در سال 1950 را تولد هوش مصنوعی میدانند. تست تورینگ که بهوسیلهی او پیشنهاد شد معیاری برای تشخیص هوشمندی ماشین میباشد. از دیگر فعالیتهای مؤثر او در زمینهی یادگیری تقویتی و الگوریتمهای ژنتیک است. از اولین پروژههای عملی هوش مصنوعی، ایده گرفتن از مفهوم شبکهی عصبی و نورونها بود. نورونها واحدهایی در مغز با شکل یکسان هستند که پیامهای عصبی را منتقل میکنند. اولین شبکهی عصبی شامل 40 نورون در سال 1950 در دانشگاه هاروارد ساخته شد. هوش مصنوعی مسیر پیشرفت خود را آنقدر ادامه داد که در سال 1997، کاسپاروف قهرمان شطرنج جهان بهوسیلهی سیستم deep blue که محصول شرکت IBM است مغلوب شد. برای بیان هوش مصنوعی میتوان اینطور گفت که چیزی دارای هوش مصنوعی است که «منطقی فکر کند»، «منطقی رفتار کند»، «مانند انسان فکر کند» و «مانند انسان رفتار کند»؛ به عبارتی دیگر برای ساخت یک عامل هوشمند (Intelligent agent) باید این چهار ویژگی را درنظر گرفت. درواقع امروزه هر برنامهای که هوشمندی داشته باشد با به نوعی مانند انسان رفتار کند بهعنوان هوش مصنوعی شناخته میشود. یادگیری ماشین زیرمجموعهای از هوش مصنوعی است و در واقع از روشهای هوش مصنوعی محسوب میشود. در یادگیری ماشین، ماشین با استفاده از داده و بدون استفاده از دستورات مستقیم یاد میگیرد. همانطور که انسان با کسب تجربیات جدید رفتار خود را تغییر میدهد، در حوزهی یادگیری ماشین هم، ماشین با دریافت دادههای جدید، خود را تغییر میدهد. یادگیری ماشین خود دارای زیرمجموعهای به نام یادگیری عمیق است که از شبکهی عصبی مصنوعی استفاده میکند. شبکههای عصبی مصنوعی از ساختار ذهن انسان الگوبرداری شدهاند و دارای ساختاری لایه لایه هستند. افزایش تعداد لایههای این شبکهها با افزایش توان محاسباتی کامپیوترها، شروعی برای یادگیری عمیق بود.
دکتر فروغمند عضو هیئت علمی دانشگاه صنعتی شریف در مصاحبهای، دو رویکرد رایج رویارویی با مسائل مختلف را از سمت کارشناسان هوش مصنوعی بیان نمودند؛ رویکرد اول، رویکرد صحیح و خطاست؛ بدین معنی که کارآیی تکنیکها و الگوریتمهای مختلف برروی یک مسئله بررسی شده تا نتیجهی مطلوب بهدست آید. بهترین متخصصین هوش مصنوعی، کسانی هستند که به تکنیکهای مختلف تسلط خوبی دارند بهطوری که در مواجهه با یک مسئله میتوانند بهترین روش را برای حل آن حدس بزنند. این رویکرد یک رویکرد رایج در هوش مصنوعی است که به نوبهی خود بسیار مفید و پرکاربرد است. رویکرد دیگر میتواند پرداختن به تئوریهای مرتبط با هوش مصنوعی به منظور ارائهی روشهای جدید و نوآورانه برای حل بهتر و بهینهتر مسائل باشد.
در این بخش به بیان کاربردها و تأثیرات هوش مصنوعی بر زندگی انسانها پرداخته میشود. از یادگیری ماشین میتوان برای حل مسائل مختلف در حوزههایی مانند صنعت، دانشگاه، سلامت، اقتصاد و تجارت، کسبوکارها و موارد دیگر استفاده کرد. تشخیص ایمیل spam از اولین کاربردهای یادگیری ماشین بود. در معدن و صنایع معدنی هم به دلیل عدم قطعیت بالا و حجم بسیار زیاد اطلاعات یادگیری ماشین کاربرد دارد. نیاز جامعه به بررسی آمار و دادهها در حوزههای مختلف منجر به شکلگیری تخصصهای متعددی در این زمینه شد که عبارتاند از: «تحلیلگر داده (Data Analyst)» ، «دانشمند داده (Data Scientist)» ، «مهندس داده (Data Engineer)» و «مهندس یادگیری ماشین (Machine Learning Engineer)». تحلیلگر داده معماری مناسب برای جمعآوری اطلاعات یک سازمان را طراحی کرده و پایگاه دادهی مناسب را برای این کار انتخاب میکند؛ دادههای خام را از منابع داخلی و خارجی جمعآوری نموده و پس از آمادهسازی و انتخاب قالب مناسب، آنها را در پایگاه دادهای که طراحی کرده ذخیره میکند؛ سپس دادهها را مورد بررسی قرار داده و از داده، اطلاعات مفید را استخراج میسازد؛ نتیجهی فعالیتهای تحلیلگر داده میتواند گزارش کلی یا روابط بین دادهها باشد و معمولا در جهت اهداف سازمان است؛ تحلیلگر داده باید قدرت تحلیل بالا و دید نقادانه به مسائل داشته باشد. داشتن مهارتهای برنامهنویسی برای تحلیلگر داده ضروری نمیباشد و میتواند از نرمافزارها یا سرویسهای وب برای انجام کارهای خود استفاده کند. دانشمند داده سطح بالاتری از تحلیلگر داده دارد و نیازمند دانش آماری و ریاضیاتی و برنامهنویسی قویتری نسبت به تحلیلگر داده است. همهی اموری که تحلیلگر انجام میدهد، دانشمند هم میتواند انجام دهد و علاوه بر آن باید با مفاهیم یادگیری ماشین و دانش برنامهنویسی آشنا باشد تا بتواند ابزارهایی برای تحلیل عمیقتر داده طراحی کند. تحلیلگر با همه در ارتباط است و معمولا سوالات را دیگران برایش مطرح میکنند اما دانشمند داده خودش سوالات را طرح میکند، سوالاتی که در تصمیمات شرکت تاثیرگذار هستند. مهندس داده دادهها را از منابع و با قالبهای مختلف میگیرد و در اختیار تحلیلگران و توسعهدهندگان و دیگر مصرفکنندگان داده قرار میدهد. در یک شرکت، مهندس داده پس از مشورت با دیگر اعضا، انتخاب میکند که چه دادهای از میان سیل دادهی تولیدی در اختیار شرکت قرار بگیرد؛ پس از انتخاب منابع داده، دادههای منابع مختلف را یکپارچه کرده و برای نگهداری بهینهی آنها برنامهریزی میکند. مهندس یادگیری ماشین در واقع نقطهی تلاقی مهندسی نرمافزار و علم داده است. مهندس یادگیری ماشین داده را به مدل رسانده و در نهایت خروجی را به کاربر نهایی تحویل میدهد. او مدل تولید شده را بررسی میکند و یا پس از انجام بررسیهای لازم، مدل نظری را وارد فرآیند عملیاتی میکند. او باید پیچیدگیهای محاسباتی و حافظهای را محاسبه کند و مدل طراحی شده توسط دانشمند داده را برای کار در مقیاس بزرگ آماده کند. وظایف مهندس یادگیری ماشین جنبهی نظری و عملیاتی دارند که عبارتاند از: 1- داشتن دانش کاملی از الگوریتمها و روشهای یادگیری ماشین، 2- بررسی و تحلیل مدل قبل از استقرار آن، 3- نظارت بر فرآیند عملیاتی ساختن مدل و محاسبهی پیچیدگیها، 4- نظارت و رسیدگی به مدل بعد از استقرار آن.
یادگیری ماشین در اکثر کاربردهای فعلی، «یک برنامه کامپیوتری است که به داده دسترسی پیدا میکند و از آن برای آموزش خود استفاده میکند». آقای آرتور ساموئل یکی از مهندسان IBM یادگیری ماشین را اینطور تعریف کرد که: «یادگیری ماشین زمینهای از تحقیقات است که به کامپیوترها توانایی یادگیری بدون برنامهنویسی صریح را میدهد.». الگوریتمهای یادگیری ماشین مانند انسان با کمک تجریه یاد میگیرند. دادهها همان تجربهای است که به عنوان ورودی به الگوریتم داده میشود تا خروجی مورد نظر دریافت شود. داده در نتیجهی مشاهدات و اندازهگیریها شکل میگیرد. انواع پرکاربرد دادهها عبارتاند از: کلمات یا زبان طبیعی (که در کاربردهایی مانند تشخیص گفتار بهکار گرفته میشود)، تصویر (مورد استفاده در حوزهی بینایی ماشین که از کاربردهای آن تشخیص پلاک خودروها است)، جداول (دادههایی ساختارمند هستند که به دو نوع دادههای عددی مانند سن افراد و دادههای دستهای مانند جنسیت و شهر محل زندگی تقسیم میشوند) و سری زمانی (دادههایی مانند نوار قلب).
به طور کلی رویکرد انجام یادگیری ماشین، دارای چهار عنصر اساسی است که عبارتاند از: «یک الگوریتم (مدل) برای تصمیمگیری»، «یک معیار برای امتیازدهی به عملکرد مدل»، «بررسی خودکار کیفیت مدل بر اساس امتیاز» و «یک روش خودکار برای بهبود امتیاز بر اساس ایجاد تغییرات در مدل». یادگیری ماشین به سه دستهی کلی تقسیم میشود: «یادگیری با نظارت»، «یادگیری بدون نظارت» و «یادگیری تقویتی». در یادگیری با نظارت، نمونههایی که برای آموزش الگوریتم استفاده میشوند، دارای برچسب هستند؛ به این معنا که مدل یادگیری ماشین با استفاده از دادههایی که از قبل برچسب مشخصی دارند الگوهای اساسی را تا زمانی که یک دقت رضایتبخش بهدست آید، پیدا میکند. در یادگیری با نظارت، الگوریتمها به دو دستهی طبقهبندی (Classification) و رگرسیون (Regression) تقسیم میشوند. در طبقهبندی، مدل یادگیری ماشین با استفاده از نمونههای برچسبدار آموزش داده شده و برچسب یا دستهی مناسب برای نمونههای بدون برچسب را پیدا میکند؛ مانند دستهبندی ایمیلها به اسپم و غیراسپم.
در رگرسیون، هدف، تخمین مقدار یک ویژگی برای یک نمونه میباشد؛ مانند پیشبینی قیمت خانه.
در یادگیری بدون نظارت دادهها دارای برچسب نیستند. در این روش، مدل به تنهایی و بدون کمک برچسب باید الگوهای پنهان را پیدا کند. از الگوریتمهای یادگیری ماشین بدون نظارت میتوان به خوشهبندی (Clustering) و کاهش ابعاد (Dimensionality reduction) اشاره کرد. خوشهبندی به معنی دستهبندی اتوماتیک دادهها به خوشههای همگن است؛ به این صورت که دادههای هر خوشه ویژگیهای یکسانی داشته باشند.
روش کاهش ابعاد در سادهترین حالت، یعنی کاهش تعداد ویژگیهایی که از آنها برای آموزش مدل یادگیری ماشین استفاده میشود. یادگیری تقویتی با ذهنیت آزمون و خطا کار میکند. عامل هوشمند (Agent) طبق حالت جاری (State)، حرکتی (Action) انجام میدهد و بر اساس آن حرکت، بازخورد (Reward) دریافت میکند؛ این بازخورد ممکن است مثبت یا منفی (پاداش یا تنبیه) باشد و عامل با این بازخورد، خطمشی (Policy) خود را تغییر میدهد. یادگیری تقویتی وابسته به داده نیست بلکه به واسطهی تعامل با محیط میآموزد.
در علوم داده زبانهایی مانند Python، R، Scala، Julia، Matlab و SQL استفاده میشود؛ اما پایتون به خصوص در صنعت از همه پرکاربردتر است. پایتون به نسبت زبانهای دیگر نوشتار سادهتری دارد و به همین دلیل سریع قابل یادگیری است و این باعث میشود کار، به خصوص در پروژههای بزرگ، راحتتر شود.
برخلاف C و C++ که زبانهایی دارای کامپایلر هستند، پایتون زبانی دارای مفسر است. به دلیل متنباز بودن مفسر پایتون، نسخههای مختلفی از آن توسعه داده شدهاست که پیادهسازی اصلی آن CPython نام دارد (به این دلیل که به زبان C نوشته شده است)؛ نسخههای دیگری مانند Jython، IronPython و PyPy نیز وجود دارد که تفاوتهای کوچکی با پیادهسازی اصلی دارند. دلایل انتخاب پایتون برای علم داده عبارتاند از: «دارا بودن کتابخانهها و ابزارهایی قوی»، «قابل فهم بودن کدهای آن»، «داشتن جامعهای بزرگ از توسعهدهندگان»، «چند پارادایمی بودن (پایتون از اکثر پارادایمهای معروف برنامهنویسی مانند functional programming، object-oriented programming، structured programming و procedural programming پشتیبانی میکند)» و «کاربرد بیشتر پایتون در صنعت نسبت به زبان R». از پرکاربردترین کتابخانههای علم داده در پایتون میتوان به Numpy، Pandas، Matplotlib و Scikit-learn اشاره کرد. با استفاده از کتابخانهی Numpy پردازش و محاسبات روی آرایهها سریعتر انجام میشود؛ همچنین این کتابخانه دارای توابع بسیاری برای انجام عملیات برروی آرایهها است که نسبت به توابع خود پایتون سریعتر انجام میشوند. نکته مهم اینکه با استفاده از Numpy میتوان محاسبات را بدون استفاده از حلقههای تکرار انجام داد. کتابخانهی Pandas در درون خود از Numpy هم استفاده میکند و ساختار اصلی داده در آن به شکل data frame است که در واقع آرایهای دو بعدی میباشد. کتابخانهی Matplotlib از کتابخانههای پرکاربرد در مصورسازی داده در پایتون است. این کتابخانه بیشتر در ساخت نمودارهای دو بعدی کاربرد دارد و رابط کاربری آن بسیار شبیه به Matlab است. با توجه به گسترش کتابخانههای جدیدتر که ظاهر مدرنتری دارند و میتوان از طریق وب با آنها در تعامل بود، به تدریج استفاده از این کتابخانه در حال کاهش است. کتابخانهی Scikit-learn معروفترین و پرکاربردترین کتابخانهی یادگیری ماشین در پایتون است. Scikit-learn حاوی ابزارهای متنوعی برای یادگیری ماشین و مدلسازی آماری است و با کتابخانههای معرفی شده در بالا، هماهنگی بسیار خوبی دارد. علاوه بر کتابخانههای فوق برای کار با داده در پایتون، میتوان از Plotly و Seaborn برای مصورسازی داده، از Pytorch، Tensorflow و Keras برای امور یادگیری عمیق، از nltk و Spacy برای پردازش متن و از OpenCV و Scikit-image در زمینهی پردازش عکس استفاده کرد.
از آنجا که یادگیری ماشین به شرکتها این امکان را میدهد که کارهایی که قبلا بهوسیلهی انسانها امکانپذیر بود را با سرعتی بالاتر و دقتی بیشتر انجام دهند، در بسیاری از کسبوکارها مانند پاسخگویی به تماسهای خدمت مشتری و حسابداری وارد شدهاست. یادگیری ماشین در کاربردهایی مانند تشخیص تصاویر در اتومبیلهای خودران و پیشبینی زمان وقایای طبیعی نیز استفاده میشود. یادگیری ماشین به دلایل، «افزایش بیاندازهی دادهها»، «ذخیرهسازی مقرون به صرفهی دادهها» و «افزایش قدرت پردازندهها و کاهش هزینههای آنها» آسانتر و فراگیرتر مورد استفاده قرار میگیرد. همچنین با توجه به اینکه مدلهای یادگیری ماشین قادر به تجزیه و تحلیل دادههای بزرگ هستند میتوان از آنها در شناسایی فرصتهای سودآور یا جلوگیری از خطرات ناشناخته در یک سازمان استفاده کرد. با وجود کاربردهای بیان شده و مزیتهای مطرح شده برای یادگیری ماشین، این رویکرد دارای محدودیتها و چالشهایی هم میباشد. داده اساس یادگیریماشین است و هیچ الگوریتم و مدلی با دادهی نامطلوب نمیتواند عملکرد خوبی داشته باشد. چالشهای مربوط به داده در یادگیری ماشین عبارتاند از: «تعداد ناکافی داده»، «دادهی بیکیفیت» و «ویژگیهای نامناسب».مدلها و الگوریتمها هم در هوش مصنوعی با چالشهایی مانند «بیش برازش (Overfitting)»، «کم برازش (Underfitting)» و «زمان» رو به رو هستند.
با وجود بیشبرازش مدل عمومیت خود را از دست داده و نمیتواند جواب مطلوب مربوط به دادههای آینده را به درستی پیشبینی کند؛ علت این مسئله را میتوان اینطور بیان کرد که مدل دادههای آموزشی را بیش از حد یاد گرفتهاست. مسئلهی کمبرازش وقتی به وجود میآید که مدل نتواند از دادههای آموزشی به خوبی یاد بگیرد. دادهی نامناسب یکی از عوامل ایجاد کمبرازش است؛ منظور از دادهی نامناسب آن است که داده به قدری بیکیفیت است که اطلاعات دقیق و جامع را از هدفی که قصد مدل کردن آن وجود دارد به دست نمیدهد. مسئلهی زمان در یادگیری ماشین به دو عامل مربوط میشود؛ اول مدت زمان آموزش دیدن مدل که طول مدت توسعهی محصول را تعیین میکند و دوم زمان مورد نیاز برای پیشبینی نمونهها بهوسیلهی مدل که کاربر نهایی این زمان را تجربه میکند؛ هر دو عامل زمانی باید بهوسیلهی دانشمند داده به حداقل برسد.
گامهایی که در یک پروژهی سادهی یادگیری ماشین انجام میشود عبارتاند از: «دریافت و بررسی داده»، «آمادهسازی داده»، «انتخاب و آموزش مدل مناسب» و «تست و ارزیابی». در پروژههای دنیای واقعی گامهایی مانند «تحلیل اکتشافی داده»، «مهندسی کردن ویژگیها» و «تنظیم ابرپارامترها» علاوه بر گامهای فوق باید انجام شود. به عنوان یک مثال ساده در یادگیری ماشین، در ادامه مسئلهی پیشبینی وزن افراد با فرض دانستن قد و جنسیت آنها به صورت اجمالی مورد بررسی قرار میگیرد. فرض شود مجموعه دادهای (Dataset) از اطلاعات افراد مختلف شامل مقادیر قد، جنسیت و وزن وجود دارد؛ اطلاعات هر فرد در این مسئله در واقع یک نمونه به شمار میآید.
در اینجا نیاز است تعریف دیگری از یادگیری ماشین بیان شود. آقای تام میشل یادگیری ماشین را از دید مهندسی به این صورت تعریف کردهاست: «اگر کارایی برنامه در انجام تکلیف T که با سنجه P ارزیابی میشود، با تجربه E افزایش یابد، میگوییم که برنامه یاد گرفته است از تجربه E با توجه به تکلیف T و سنجه P استفاده کند.» تکلیف T همان مسئلهای است که یادگیری ماشین باید آن را حل کند. تجربهی E همان نمونههای ورودی است که اطلاعات مورد نیاز مسئله را در اختیار قرار میدهد. سنجهی P هم معیاری برای بررسی و اندازهگیری میزان دقت الگوریتم مورد استفاده است. با توجه به این تعریف، در این مسئله تکلیف T پیشبینی وزن افراد است. تجربهی E در این مسئله اطلاعات هر یک از افراد است که مدل با دیدن آن میتواند سنجهی P را در انجام تکلیف T بهبود دهد. همچنین میتوان میانگین خطای مطلق MAE (Mean Absolute Error) را به عنوان سنجهی P درنظر گرفت. MAE در واقع میانگین قدر مطلق تفاضل مقدار واقعی با مقداری که مدل پیشبینی کرده را نشان میدهد.
لازم به ذکر است که این مسئله از نوع یادگیری نظارت شده میباشد؛ چون همانطور که بیان شد ستون وزن بهعنوان برچسب در مجموعهی داده وجود دارد.
عاملهای هوشمندی که امروزه ساخته میشوند معمولا در حل یک مسئلهی خاص به هوشمندی رسیدهاند. مثل تشخیص انسانهای داخل تصویر یا انجام بازی شطرنج. به این نوع از هوش مصنوعی، هوش مصنوعی محدود یا ضعیف اطلاق میشود. در مقابل، آنچه هوش مصنوعی عمومی (Artificial general intelligence) و یا قوی نامیده میشود، عبارت است از ساختن عامل هوشمندی که مانند انسان از هوشی عمومی برخوردار باشد که توانایی آموختن در مواجهه با هر مسئلهی جدیدی را داشته باشد و محدود به یک زمینه یا مسئلهی خاص نباشد.
یکی از بهترین راهها برای تحقیق دربارهی هوش مصنوعی عمومی، مطالعهی هوش طبیعی است. هر چه شناخت بیشتری از مغز و نحوهی کارکرد آن بهدست آید، ابعاد بیشتری از مسئلهی هوش گشوده میشود؛ از همین روست که یکی از رویکردهای ارزشمند در این زمینه مطالعهی رشتههایی مثل علوم اعصاب و روانشناسی است که دربارهی آن چه در سر انسان میگذرد تحقیق میکنند. در حال حاضر یک رشتهی دانشگاهی نسبتا جوان به نام علوم شناختی وجود دارد که مسئلهی شناخت را محور تحقیقات خود قرار داده است و در محل تلاقی شش زمینهی فلسفه، زبانشناسی، انسانشناسی، روانشناسی، علوم اعصاب و هوش مصنوعی قرار دارد که همگی ابعادی از این مسئله را بررسی میکنند.
میتوان انتظار داشت دستاوردهای این رشتهی علمی هم متقابلا کمک شایانی به بررسی هوش مصنوعی عمومی کنند. از آنجایی که برای انجام پژوهش در زمینهی هوش مصنوعی و یادگیری ماشین، قدرت پردازشی بالا و فراوانی داده از اهمیت زیادی برخوردار است، امروزه شرکتهای فناوری همپای دانشگاهها و مراکز علمی در این امر پیشتاز هستند که DeepMind، OpenAI، FACEBOOK AI و گروه AI در Google چهار شرکت معروف در این حوزه هستند. برای مطالعهی بیشتر در حوزهی یادگیری ماشین میتوان به کتابهایی که در ادامه معرفی میشود مراجعه کرد.
کتاب «Hands-On Machine Learning with Scikit-Learn and TensorFlow» که دارای سطح مقدماتی است به جنبهی عملی کار توجه کرده و ریاضیات و نحوهی کار الگوریتمها هم در سطح مناسبی تشریح شدهاست؛ این کتاب برای یادگیری و شروع به کار در شرکتها بسیار مناسب است و دارای کدهای بسیاری به زبان پایتون است.
در کتاب «Data Science from Scratch: First Principles with Python» مفاهیم آماری لازم برای یادگیری ماشین از صفر توضیح داده شده و با استفاده از زبان پایتون به کد تبدیل شدهاند. در این کتاب الگوریتمها پس از آموزش بدون کتابخانه پیادهسازی شدهاند. این کتاب دارای سطح متوسط است.
کتاب «Pattern Recognition and Machine Learning» با سطح پیشرفته یکی از مهمترین منابع یادگیری ماشین و طراحی الگو در دانشگاههای سراسر دنیا میباشد. از ویژگیهای مثبت این کتاب میتوان به جامع بودن و زبان روان در بیان پیچیدهترین مفاهیم یادگیری ماشین اشاره کرد. در این کتاب هیچ کدی وجود ندارد و تمرکز اصلی بر آموزش دقیق مفاهیم اصلی یادگیری ماشین است.
https://quera.ir/college/land/college/8522/