۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

موتورهای هوش مصنوعی: الگوریتم های یادگیری ماشین توضیح داده شده است

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

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

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

الگوریتم های یادگیری ماشینی چیست؟

به یاد بیاورید که یادگیری ماشینی دسته ای از روش ها برای ایجاد خودکار مدل ها از داده ها است. الگوریتم های یادگیری ماشین موتورهای یادگیری ماشین هستند، به این معنی که این الگوریتم ها هستند که یک مجموعه داده را به یک مدل تبدیل می کنند. اینکه کدام نوع الگوریتم بهتر عمل می کند (با نظارت، بدون نظارت، طبقه بندی، رگرسیون و غیره) به نوع مشکلی که حل می کنید، منابع محاسباتی موجود و ماهیت داده ها بستگی دارد.

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

الگوریتم های برنامه نویسی معمولی به رایانه می گویند که چه کاری باید انجام دهد. برای مثال، الگوریتم‌های مرتب‌سازی داده‌های نامرتب را به داده‌هایی تبدیل می‌کنند که بر اساس برخی معیارها مرتب شده‌اند، اغلب به ترتیب عددی یا حروف الفبای یک یا چند فیلد در داده‌ها.

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

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

شیب‌ترین فرود اساساً خطای مربع و گرادیان آن را در مقادیر پارامتر فعلی محاسبه می‌کند، اندازه گام را انتخاب می‌کند (معروف به نرخ یادگیری)، جهت گرادیان “پایین تپه” را دنبال می‌کند و سپس خطای مربع و گرادیان آن را دوباره محاسبه می‌کند. در مقادیر پارامتر جدید در نهایت، با شانس، روند همگرا می شود. انواع در شیب تندترین فرود سعی در بهبود ویژگی های همگرایی دارند.

الگوریتم‌های یادگیری ماشینی حتی ساده‌تر از رگرسیون غیرخطی هستند، تا حدی به این دلیل که یادگیری ماشین محدودیت برازش را با یک تابع ریاضی خاص، مانند یک چند جمله‌ای، کنار می‌گذارد. دو دسته عمده از مشکلات وجود دارد که اغلب با یادگیری ماشین حل می شوند: رگرسیون و طبقه بندی. رگرسیون برای داده های عددی است (مثلاً درآمد احتمالی برای شخصی با آدرس و حرفه مشخص چقدر است؟) و طبقه بندی برای داده های غیر عددی است (مثلاً آیا متقاضی این وام را نکول می کند؟).

مشکلات پیش‌بینی (مثلاً قیمت افتتاحیه سهام مایکروسافت فردا چقدر خواهد بود؟) زیرمجموعه‌ای از مشکلات رگرسیون برای داده‌های سری زمانی هستند. مشکلات طبقه بندی گاهی به دودویی (بله یا خیر) و مسائل چند طبقه (حیوانی، گیاهی یا معدنی) تقسیم می شوند.

OpenAI از ChatGPT Enterprise رونمایی کرد

یادگیری تحت نظارت در مقابل یادگیری بدون نظارت

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

در یادگیری بدون نظارت، الگوریتم از خود داده ها عبور می کند و سعی می کند به نتایج معناداری برسد. نتیجه ممکن است، برای مثال، مجموعه ای از خوشه از نقاط داده باشد که می تواند در هر خوشه مرتبط باشد. وقتی خوشه‌ها روی هم قرار نگیرند، بهتر عمل می‌کند.

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

پاکسازی داده برای یادگیری ماشین

در طبیعت چیزی به نام داده های پاک وجود ندارد. برای اینکه برای یادگیری ماشین مفید باشد، داده ها باید به شدت فیلتر شوند. به عنوان مثال، شما می خواهید:

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

کارهای بیشتری می توانید انجام دهید، اما به داده های جمع آوری شده بستگی دارد. این ممکن است خسته کننده باشد، اما اگر یک مرحله پاکسازی داده را در خط لوله یادگیری ماشین خود تنظیم کنید، می توانید آن را تغییر دهید و به دلخواه تکرار کنید.

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

برای استفاده از داده‌های طبقه‌بندی شده برای طبقه‌بندی ماشین، باید برچسب‌های متنی را به شکل دیگری رمزگذاری کنید. دو رمزگذاری رایج وجود دارد.

یکی رمزگذاری برچسب است، به این معنی که هر مقدار برچسب متنی با یک عدد جایگزین می‌شود. دیگری رمزگذاری یک‌طرفه است، به این معنی که هر مقدار برچسب متنی به ستونی با مقدار باینری (۱ یا ۰) تبدیل می‌شود. اکثر چارچوب‌های یادگیری ماشینی دارای عملکردهایی هستند که تبدیل را برای شما انجام می‌دهند. به طور کلی، رمزگذاری یک‌طرفه ترجیح داده می‌شود، زیرا رمزگذاری برچسب گاهی اوقات می‌تواند الگوریتم یادگیری ماشینی را با این تصور که ستون کدگذاری شده مرتب شده است، اشتباه بگیرد.

چگونه وابستگی ها را در ASP.NET Core حل کنیم

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

ویژگی های یادگیری ماشینی چیست؟

از آنجایی که در بخش قبل به بردارهای ویژگی اشاره کردم، باید توضیح دهم که آنها چیستند. اول از همه، ویژگی یک ویژگی یا ویژگی قابل اندازه گیری فردی یک پدیده مشاهده شده است. مفهوم “ویژگی” با متغیر توضیحی مرتبط است که در تکنیک های آماری مانند رگرسیون خطی استفاده می شود. بردارهای ویژگی همه ویژگی‌های یک ردیف را در یک بردار عددی ترکیب می‌کنند.

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

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

الگوریتم های رایج یادگیری ماشین

ده‌ها الگوریتم یادگیری ماشین وجود دارد که از پیچیدگی‌های رگرسیون خطی و رگرسیون لجستیک تا شبکه‌ها و مجموعه‌های عصبی عمیق (ترکیبی از مدل‌های دیگر) متغیر است. با این حال، برخی از رایج ترین الگوریتم ها عبارتند از:

  • رگرسیون خطی، با نام رگرسیون حداقل مربعات (برای داده‌های عددی)
  • رگرسیون لجستیک (برای طبقه بندی باینری)
  • تحلیل متمایز خطی (برای طبقه‌بندی چند دسته‌ای)
  • درخت تصمیم (هم برای طبقه بندی و هم برای رگرسیون)
  • بیز ساده لوح (هم برای طبقه بندی و هم برای رگرسیون)
  • K-نزدیکترین همسایگان، با نام مستعار KNN (هم برای طبقه بندی و هم برای رگرسیون)
  • کوانتیزاسیون برداری یادگیری، با نام مستعار LVQ (هم برای طبقه بندی و هم برای رگرسیون)
  • ماشین‌های بردار پشتیبانی، با نام مستعار SVM (برای طبقه‌بندی باینری)
  • جنگل‌های تصادفی، یک نوع الگوریتم گروهی “کیسه‌بندی” (هم برای طبقه‌بندی و هم برای رگرسیون)
  • روش‌های تقویت، از جمله AdaBoost و XGBoost، الگوریتم‌های مجموعه‌ای هستند که مجموعه‌ای از مدل‌ها را ایجاد می‌کنند که در آن هر مدل جدید سعی می‌کند خطاهای مدل قبلی را تصحیح کند (هم برای طبقه‌بندی و هم برای رگرسیون)

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

برای اطلاعات بیشتر در مورد شبکه‌های عصبی و یادگیری عمیق، به «آموزش عمیق واقعاً به چه معناست» مراجعه کنید.

هدف پلتفرم وب Composable Netlify مدرن کردن معماری وب است

هایپرپارامترهای الگوریتم های یادگیری ماشین

الگوریتم های یادگیری ماشین بر روی داده ها آموزش می بینند تا بهترین مجموعه وزن ها را برای هر متغیر مستقلی که بر مقدار یا کلاس پیش بینی شده تأثیر می گذارد، بیابند. خود الگوریتم ها دارای متغیرهایی هستند که hyperparameters نامیده می شوند. آنها بر خلاف پارامترها، هایپرپارامتر نامیده می شوند، زیرا آنها به جای تعیین وزن، عملکرد الگوریتم را کنترل می کنند.

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

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

تنظیم فراپارامتر

چندین پلت فرم تولیدی یادگیری ماشینی اکنون تنظیم خودکار فراپارامتر را ارائه می دهند. اساساً، شما به سیستم می‌گویید که چه فراپارامترهایی را می‌خواهید تغییر دهید، و احتمالاً چه معیارهایی را می‌خواهید بهینه کنید، و سیستم آن ابرپارامترها را در هر تعداد اجرا که اجازه می‌دهید، جارو می‌کند. (تنظیم فراپارامتر Google Cloud معیار مناسب را از مدل TensorFlow استخراج می کند، بنابراین نیازی به تعیین آن ندارید.)

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

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

یادگیری ماشین خودکار

در مورد انتخاب الگوریتم‌ها، تنها یک راه برای دانستن اینکه کدام الگوریتم یا مجموعه الگوریتم‌ها بهترین مدل را برای داده‌های شما به شما می‌دهد وجود دارد و آن امتحان همه آنهاست. اگر همه نرمال‌سازی‌ها و انتخاب‌های ویژگی‌ها را نیز امتحان کنید، با یک انفجار ترکیبی مواجه خواهید شد.

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

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

وقتی همه اینها را مدیریت کردید و مدلی ساختید که برای داده‌های شما کار می‌کند، زمان آن فرا می‌رسد که مدل را پیاده‌سازی کنید و با تغییر شرایط آن را به‌روزرسانی کنید. با این حال، مدیریت مدل‌های یادگیری ماشین در تولید، کاملاً یک قوطی دیگر از کرم‌ها است.