**یادگیری ماشین برخط** (به انگلیسی: Online Machine Learning) یکی از زیرمجموعه‌های یادگیری ماشین است. بسیاری از برنامه‌های مبتنی بر یادگیری ماشین، داده‌های از قبل جمع‌آوری شده را به عنوان ورودی (مانند محتویات جداول پایگاه داده) از یک فایل می‌گیرند و سپس به صورت پیوسته بر روی این مجموعه داده‌ها پردازش انجام می‌دهند که در یادگیری ماشین برخط نحوه دریافت داده ورودی متفاوت است.

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

مقدمه
-----

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

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

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

تفاوت یادگیری دسته ای و یادگیری برخط
------------------------------------

مبحثِ یادگیری (چه یادگیری‌ماشین و چه داده‌کاوی) را از ابعاد گوناگون می‌توان نگاه کرد. یکی از این ابعاد می‌تواند تفاوت بین یادگیریِ دسته‌ای یا همان Batch Learning و در مقابلِ آن، یادگیریِ برخط یا همان Online Learning باشد. در واقع دانستن تفاوت این دو معماری می‌تواند به حل مسائل مختلف این حوزه کمک کند.

تفاوتِ این دو دسته یادگیری را می‌توان با یک مثال ساده توضیح داد. فرض کنید یک دانش آموز می‌خواهد آمار و احتمالات را فرا بگیرد. در نوع اول یادگیری، این دانش‌آموز می‌تواند یک مجموعه کتابِ آمار و احتمالات را تهیه کند، چند بار بخواند و یاد بگیرد. بعد از این‌که از این مجموعه کتابِ آمار، یادگیریِ خود را انجام داد، دیگر مطلبِ جدیدی یادنگیرد و از این به بعد فقط از دانسته‌های خود استفاده کند. این نوعی یادگیری، **یادگیریِ دسته‌ای (Batch Learning)** است. اما یادگیریِ دوم یا همان **یادگیریِ برخط (Online Learning)** مانندِ این است که این دانش‌آموز ابتدا کتاب‌های خود را مطالعه کند و از آن‌ها یاد بگیرد و سپس در حین استفاده از دانسته‌های خود، هر گاه کتاب جدیدی در حوزهٔ آمار و احتمالات مشاهده کرد، تهیه کرده و با خواندنِ آن، یادگیریِ خود را تجدید کند و بهبود ببخشد.

داده‌هایی که معمولاً در دوره داده‌کاوی، دوره طبقه‌بندی و دوره خوشه‌بندی، داده‌هایی از نوع **دسته ای (Batch)** بودند به این معنی که در زمانِ یادگیری(Train)، تمامی داده‌ها در اختیار الگوریتم بودند و الگوریتم به هر نحوی می‌توانست بر روی داده‌ها عملیاتِ یادگیری را انجام دهد. اما نوع دیگری از یادگیری نیز وجود دارد. برخی اوقات داده‌ها به صورت جریان‌داده می‌آیند یا اینکه نیاز دارند به صورت مرتب یادگرفته شوند. همان‌طور که گفتیم یادگیریِ دسته‌ای مانند این است که شما یک کتاب دارید و باید این کتاب را یاد بگیرید چون فردا امتحان دارید. تمام منبع شما همین کتاب است و در واقع تمامیِ داده‌ها را در اختیار دارید (یعنی **یادگیری دسته‌ای یا همان Batch Learning** دارید). اما فرض کنید در مسیر زندگی قرار دارید و روزانه با اطلاعات جدیدی که به شما داده می‌شود می‌بایستی هر روز چیزهای جدید را یادگرفته و به دانش قبلیِ خود اضافه کنید. این موردِ دوم **یادگیریِ برخط یا همان Online Learning** است، یعنی هنگامی که تمامی داده‌ها در حالِ حاضر موجود نیستند. در یادگیریِ برخط یک مدل ساخته می‌شود و بعد با رسیدن داده‌های جدیدتر، این مدل به‌روزرسانی می‌شود.

مدل یادگیری بر خط یا همان Online Learning دو مزیت اساسی دارد:

۱. با این روش می‌توان داده‌هایی با حجم بسیار بالا را آموزش داد. برای مثال داده‌هایی که به دلیل حجم بالای خود در حافظه جا نمی‌شوند.

۲. تغییراتی که ممکن است در ذات داده‌ها به وجود بیاید با این روش پوشش داده می‌شود. فرض کنید گوگل برای سیستمِ ایمیلِ خود یک الگوریتم توسعه داده باشد که ایمیل‌های هرزنامه (spam) را به صورت هوشمند با الگوریتم‌های یادگیری‌ماشین تشخیص بدهد. همان‌طور که حدس می‌زنید محتوای ایمیل‌های هرزنامه مدام در حال تغییر است و انسان‌هایی که ایمیل‌های spam می‌فرستند هر روز خود را در مقابل این الگوریتم‌های گوگل، بهینه می‌کنند. پس الگوریتمِ تشخیص ایمیلِ spam در گوگل می‌تواند به صورتِ برخط (Online) یادگیری را انجام دهد تا بتواند ایمیل‌هایی را در گذرِ زمان تغییر کرده‌اند و spam هستند یاد بگیرد. در واقع یادگیریِ الگوریتم، با تغییر محتوا و شکل ایمیل‌های spam، بروز می‌شود.

کاربردها و برنامه‌ها
--------------------

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

**نظارت بر وظایف یادگیری:** الگوریتم‌های یادگیری برخط را برای وظایف یادگیری تحت نظارت توسعه داده شده‌است. یکی از شایع‌ترین وظایف، طبقه‌بندی است که هدف آن پیش‌بینی گروهی برای یک نمونه داده جدید است که بر اساس مشاهدات نمونه‌های آموزش داده شده‌است که برچسب‌های دسته‌بندی شده آنها ارائه می‌شود. به عنوان مثال، یک کار متداول مطالعه شده در یادگیری برخط، طبقه‌بندی دوتایی برخط است (به عنوان مثال، فیلتر کردن ایمیل‌های هرزنامه) که تنها شامل دو دسته می‌شود ("ایمیل‌های هرزنامه" و "غیرهرزنامه")؛ سایر انواع وظایف طبقه‌بندی نظارت شده عبارتند از طبقه‌بندی چند کلاس، طبقه‌بندی چند لایه و طبقه‌بندی چند نمونه ای و غیره.

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

الگوریتم‌های یادگیری برخط همچنین می‌توانند برای کارهای **یادگیری بدون نظارت** استفاده شوند. به عنوان مثال در خوشه بندی یا تجزیه و تحلیل خوشه‌ها می‌باشد، که فرایند دسته‌بندی اشیاء به طوری که اشیاء در یک گروه (خوشه) بیشتر شبیه به یکدیگر هستند تا اشیاء در خوشه‌های دیگر. خوشه بندی برخط، هدف آن تجزیه و تحلیل خوشه ای افزایشی در یک توالی داده ورودی می‌باشد.

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

تکنیک‌های یادگیری برخط اغلب در دو سناریوی اصلی استفاده می‌شود. یکی این است که بهبود بهره‌وری و مقیاس پذیری در روش‌های یادگیری ماشین دسته ای که در آن مجموعه کامل داده‌های آموزشی باید قبل از آموزش در دسترس قرار گیرند. به عنوان مثال، (SVM) یک روش یادگیری تحت نظارت شناخته شده برای وظایف طبقه‌بندی دسته ای است که در آن الگوریتم‌های SVM کلاسیک (به عنوان مثال، حل کننده‌های QP یا (Suykens JA et al. ، 1999) از کمبود توانایی برای برنامه‌های بسیار مقیاس پذیر در یک شیوه یادگیری برخط (یا تصادفی) مورد بررسی قرار گرفته‌است (Poggio, 2001; Chang-CC et al. , 2011)، و آن را کارآمد تر و مقیاس پذیر تر از SVM دسته ای متداول می‌کند. سناریو دیگر الگوریتم‌های یادگیری برخط است که به‌طور مستقیم با وظایف تجزیه و تحلیل داده جریان برخط مواجه شوند، در صورتی که داده‌ها به‌طور طبیعی به شیوه ای متوالی وارد شوند.

طبقه‌بندی
---------

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

### یادگیری تحت نظارت برخط

این مربوط به وظایف یادگیری نظارت است که اطلاعات کامل بازخورد همیشه در پایان هر دوره یادگیری برخط به یادگیرنده نشان داده می‌شود. این را می‌توان به دو گروه مطالعات تقسیم کرد: (۱) «نظارت بر یادگیری» که روش و اصول اساسی یادگیری را تشکیل می‌دهد؛ و (۲) «یادگیری برخط کاربردی» که بیشتر یادگیری تحت نظارت برخط را تشکیل می‌دهد، جایی که رویکردهای بنیادی به‌طور مستقیم نمی‌توانند مورد استفاده قرار گیرند و الگوریتم‌ها به‌طور مناسب مطابق با شرایط یادگیری برخط طراحی شده‌اند.

### یادگیری برخط با بازخورد محدود

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

### یادگیری بدون نظارت برخط

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

جستارهای وابسته
---------------

* یادگیری ماشینی
* یادگیری بی‌نظارت
* درخت تصمیم‌گیری
* آدابوست
* ماشین بردار پشتیبانی
* دسته‌بندی‌کننده بیز ساده
* رگرسیون خطی
* رگرسیون لجستیک
* تقویت گرادیان
* شبکه‌های عصبی

منابع
-----

1. ↑  Michie D, Spiegelhalter DJ, Taylor CC. Machine learning. Neural and Statistical Classification. 1994 Feb 17;13.
2. 1 2  L. Rosasco, T. Poggio, Machine Learning: a Regularization Approach, MIT-9.520 Lectures Notes, Manuscript, Dec. 2015. Chapter 7 - Online Learning
3. ↑  "Kismet". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group.
4. ↑  Bottou, Léon (1998). "Online Algorithms and Stochastic Approximations". *Online Learning and Neural Networks*. Cambridge University Press. ISBN 978-0-521-65263-6
5. ↑  Suykens JA, Vandewalle J. Least squares support vector machine classifiers. Neural processing letters. 1999 Jun 1;9(3):293-300.
6. ↑  Chang CC, Lin CJ. LIBSVM: A library for support vector machines. ACM transactions on intelligent systems and technology (TIST). 2011 Apr 1;2(3):27.
7. ↑  Bertsekas, D. P. (2011). Incremental gradient, subgradient, and proximal methods for convex optimization: a survey. Optimization for Machine Learning, 85.
8. ↑  Goldberg AB, Zhu X, Furger A, Xu JM. Oasis: Online active semi-supervised learning. InTwenty-Fifth AAAI Conference on Artificial Intelligence 2011 Aug 4.