زمان تخمینی مطالعه: 5 دقیقه
این سوال که یادگیری الگوریتم یادگیری ماشین در هوش مصنوعی چندین بار به ذهن من رسیده است. در این مقاله، استراتژی را با شما به اشتراک میگذارم که سالها برای یادگیری و ساختن یک توصیف ساختاریافته از یک الگوریتم بهصورت گام به گام استفاده میکردم تا بتوانم چیزهایی به آن اضافه کنم، آن را اصلاح کنم و بارها و بارها به آن مراجعه کنم. این تکنیک فقط یک استراتژی بود که من شخصاً از آن استفاده کردم و از بازخورد مثبت آن واقعاً شگفت زده شدم.
توضیحات الگوریتم کامل نیست!!
یادگیری یک الگوریتم یادگیری ماشینی میتواند کار طاقت فرسایی باشد. مقالات، کتابها و وبسایتهای زیادی وجود دارد که نحوه عملکرد این الگوریتم را به صورت ریاضی و متنی توصیف میکند. اگر واقعا خوش شانس باشید، ممکن است یک توصیف شبه کد کامل از الگوریتم را پیدا کنید. اگر واقعاً خوش شانس باشید، ممکن است راههای پیشنهادی برای پیکربندی روش برای موقعیتهای مختلف پیدا کنید. این توصیفات نادر هستند و معمولاً در اعماق مقاله اصلی یا در یادداشتهای فنی نویسندگان اصلی مدفون هستند.
واقعیت این است که وقتی میخواهید روشی را از مقالات تحقیقاتی پیادهسازی کنید، به سرعت متوجه میشوید که این الگوریتمها تقریباً هرگز با جزئیات کافی برای باز تولید آنها توضیح داده نمیشوند. دلایل متفاوت است، از تصمیمات خرد که از مقاله حذف میشوند، کل رویههایی که به طور مبهم در متن خلاصه میشوند، تا نمادهایی که به طور متناقض استفاده میشوند.
آن را با هم تکه تکه کنید
برای درک یک الگوریتم، باید درک خود را از توضیحات متفاوت جمع آوری کنید. این تنها تاکتیکی است که با آن موفق میشویم. منظور از توصیفهای متفاوت، منابعی مانند توصیفهای اصلی روش در منابع اولیه و همچنین تفاسیر ثانویه معتبری است که از توصیفات اصلی در مقالات و کتابهای مروری ساخته شده است. انتشار نمونه اولیه یک روش با منابع اولیه معمول است و خواندن این کد (معمولاً C، FORTRAN، R یا Matlab) میتواند برای جزئیاتی که برای باز تولید یک الگوریتم نیاز دارید بسیار روشنگر باشد.
توضیحات الگوریتم
یک الگوریتم جزیرهای از تحقیق است و در تمام واقعیت، تعیین تعریف متعارف ممکن است دشوار باشد. به عنوان مثال، آیا نسخهای است که در منبع اصلی توضیح داده شده یا نسخهای میباشد که شامل تمام اصلاحات و بهبودها ممکن برای “بهترین عملکرد” است. یک راه حل این است که الگوریتمی معین را از منظرهای متعدد در نظر بگیرید، که هر یک میتواند هدف متفاوتی را دنبال کند. به عنوان مثال، شرح پردازش اطلاعات انتزاعی الگوریتم را میتوان با انواع مختلف پیاده سازی محاسباتی خاص تحقق بخشید.
توضیحات زیادی وجود دارد که میتوانید بسته به نیاز خود از ویژگیهای متفاوت استفاده کنید. برخی از این موارد عبارتند از: الهام از الگوریتم، استعاره یا تشبیه برای استراتژی، اهداف پردازش اطلاعات، شبه کد و کد.
طراحی الگوی قالب الگوریتم توضیحات
یک قالب توصیف الگوریتم راهی ساختاریافته را فراهم میکند تا در مورد الگوریتم یادگیری ماشینی بیاموزید. میتوانید با یک سند خالی شروع کنید و سرفصلهای بخش را برای انواع توصیفهایی که از الگوریتم نیاز دارید، برای مثال اعمال شده، پیادهسازی، یا برگه تقلب مرجع شخصی خود، فهرست کنید. برای اینکه بفهمید چه بخشهایی را باید در قالب خود بگنجانید، سؤالاتی را که میخواهید در مورد الگوریتم پاسخ دهید، یا اگر به دنبال ایجاد یک مرجع هستید، الگوریتمهایی را فهرست کنید. برخی از سوالاتی که میتوانید استفاده کنید عبارتند از:
- استاندارد و اختصارات مورد استفاده برای الگوریتم چیست؟
- استراتژی پردازش اطلاعات الگوریتم چیست؟
- هدف یا اهداف الگوریتم چیست؟
- معمولاً از چه استعارهها یا تشبیههایی برای توصیف رفتار الگوریتم استفاده میشود؟
- تشریح شبه کد یا فلوچارت الگوریتم چیست؟
- اکتشافی یا قوانین کلی برای استفاده از الگوریتم چیست؟
- الگوریتم برای چه کلاسهایی از مسئله مناسب است؟
- معیارهای رایج یا مجموعه دادههای نمونه مورد استفاده برای نشان دادن الگوریتم چیست؟
- منابع مفید برای یادگیری بیشتر در مورد الگوریتم چیست؟
- مراجع یا منابع اولیهای که الگوریتم برای اولین بار در آنها توضیح داده شد کدامند؟
پس از حل و فصل برخی از سوالات، آنها را به عنوان بخش تبدیل کنید. برای هر عنوان بخش، الزامات بخش و شکلی را که توضیحات در آن بخش به خود میگیرد، به وضوح تعریف کنید.
از کوچک شروع کنید و آن را بسازید
زیبایی این رویکرد این است که شما نیازی به متخصص بودن در الگوریتم یا تحقیق ندارید. تا زمانی که بتوانید منابعی را بیابید که به الگوریتم اشاره میکنند، میتوانید یادداشتهایی در مورد یک الگوریتم در قالب بگیرید. شما میتوانید خیلی ساده شروع کنید و توضیحات سطح بالا از الگوریتم، نامها و اختصارات آن و منابعی که پیدا کردهاید و آنچه در مورد آنها صحبت میشود جمع آوری کنید. از اینجا میتوانید تصمیم بگیرید که توضیحات را بیشتر گسترش دهید یا نه.