<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات جامعه Machine Learning</title>
        <link>https://virgool.io/machine-learning/feed</link>
        <description>جامعه Machine Learning در ایران</description>
        <language>fa</language>
        <pubDate>2026-06-17 02:34:15</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/6pvzxf52wvgq/rkx98z.png</url>
            <title>جامعه Machine Learning</title>
            <link>https://virgool.io/machine-learning</link>
        </image>

                    <item>
                <title>یادگیری ماشین!!!</title>
                <link>https://virgool.io/machine-learning/%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-ru4omcv6ewnf</link>
                <description>یادگیری ماشین یا  machine learning ?یادگیری ماشین با تشخیص چهره افرادیادگیری ماشین، مطالعه‌ی علمی الگوریتم‌ها و مدل‌های آماری مورد استفاده‌ی سیستم‌های کامپیوتری است که بجای استفاده از دستورالعمل‌های واضح از الگوها و استنباط برای انجام وظایف سود می‌برند.به عنوان زیر مجموعه‌ای از هوش مصنوعی، الگوریتم‌های یادگیری ماشین یک مدل ریاضی بر اساس داده‌های نمونه یا &quot;داده‌های آموزش&quot; به منظور پیش‌بینی یا تصمیم‌گیری بدون برنامه‌ریزی آشکار، ایجاد می‌کنند.شما احتمالاً چندین بار در روز از یادگیری ماشین استفاده می‌کنید، حتی بدون آنکه بدانید. هر بار که شما یک جستجوی اینترنتی در گوگل یا بینگ انجام می‌دهید، یادگیری ماشینی انجام می‌شود چراکه نرم‌افزار یادگیری ماشینی آن‌ها چگونگی رتبه‌بندی برای یک صفحه وب را درک کرده‌است. هنگامی که فیس‌بوک یا برنامه عکس اپل دوستان و تصاویر شما را می‌شناسد، این هم یادگیری ماشین است. هر بار که ایمیل خود را چک می‌کنید و فیلتر هرزنامه شما را از داشتن مجدد هزاران هرزنامه خلاص می‌کند نیز به همین دلیل است که رایانه‌ی شما آموخته‌است که هرزنامه‌ را از غیرهرزنامه تشخیص دهد. این همان یادگیری ماشین است. این علمی است که باعث می‌شود رایانه‌ها بدون نیاز به یک برنامه صریح در مورد یک موضوع خاص یاد بگیرند.بهترین زبان‌های برنامه‌نویسی برای یادگیری ماشین!!پایتونمتلبجاواجاوا اسکریپتاسکالا وR بهترین زبان برنامه‌نویسی برای یادگیری ماشین کدام است؟ نکته‌ای که باید در نظر داشت این است که بهترین زبان برنامه‌نویسی برای هوش مصنوعی و یادگیری ماشین وجود ندارد. چراکه این مسئله کاملاً وابسته به موردی است که برنامه‌نویس می‌خواهد برای آن موضوع کدنویسی کند. بعنوان مثال فردی تنها می‌خواهد مفاهیم اولیه یادگیری ماشین را فراگیرد. برای چنین شخصی استفاده از یک زبان برنامه‌نویسی با محیط قابل فهم و آسان کفایت می‌کند.ممکن است فرد دیگری در فرآیند یادگیری ماشین نیاز به پردازش تصویر داشته باشد. در چنین حالتی زبان‌های متلب و پایتون بهترین گزینه هستند. چراکه کتابخانه‌های قوی برای پردازش تصویر دارند. در حالتی که افراد بخواهند در تئوری‌های مربوط به یادگیری ماشین عمیق شده و از روش‌های آماری خاص استفاده کنند گزینه مناسب R خواهد بود. موفق باشید ?هوش_مصنوعی , یادگیری_ماشین , برنامه_نویسی  پایتون</description>
                <category>جامعه Machine Learning</category>
                <author>Sina Ghasemi</author>
                <pubDate>Thu, 07 May 2020 12:54:30 +0430</pubDate>
            </item>
                    <item>
                <title>گذشته ،حال و آینده ی ماشین لرنینگ</title>
                <link>https://virgool.io/machine-learning/%DA%AF%D8%B0%D8%B4%D8%AA%D9%87-%D8%AD%D8%A7%D9%84-%D9%88-%D8%A2%DB%8C%D9%86%D8%AF%D9%87-%DB%8C-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-%D9%84%D8%B1%D9%86%DB%8C%D9%86%DA%AF-arpto4wx2gai</link>
                <description>اگر اخیراً شاهد افزایش محصولات و خدمات پیشرفته هوش مصنوعی در بازار بوده اید ، تعجب نکنید. هوش مصنوعی (AI) و فناوری یادگیری ماشینی طی سالهای اخیر به سرعت در حال پیشرفت بوده اند و با دسترسی بیشتر به داده ها و پیشرفت در قابلیت محاسبات و راه حل های ذخیره سازی در حال رشد و ارائه امکانات جدید میباشند.در حقیقت ، اگر به پشت پرده ی هر تکنولوژی جدید نگاه کنید ، می توانید نمونه های بسیاری از فناوری یادگیری ماشین را در انواع صنایع ، از کالاهای مصرفی و رسانه های اجتماعی گرفته تا خدمات مالی و تولید و ... مشاهده کنید.اما این سؤال همچنان باقیمانده است : چگونه یادگیری ماشینی در مدت زمانی کوتاه از داستان علمی به واقعیت تحول یافت؟ اولین باردر سال 1959 بود که دانشمند داده آرتور لی ساموئل با موفقیت یک برنامه کامپیوتری تهیه کرد که می توانست به خود بیاموزد چگونه بازی checkers را انجام دهد. بیایید با نگاهی به گذشته و حال ، و پیش بینی آنچه در آینده رخ خواهد داد ، روند پیشرفت یادگیری ماشین را پیش بینی کنیم.همانطور که میدانید یادگیری ماشینی (ML) زیر مجموعه ای از هوش مصنوعی است که ماشین ها ، با استفاده از الگوریتم های آموزش دیده و مدل های شبکه عصبی ، قادرند به طور مستقل از داده ها بیاموزند و بطور مداوم عملکرد و دقت در تصمیم گیری را در رابطه با یک کار خاص بهبود بخشند.ماشین لرنینگ  در گذشتهآیا یک ماشین می تواند باهوش باشد ؟منشأ آغاز یادگیری ماشین را می توان به یک سری از وقایع در دهه 1950 نسبت داد که در آن تحقیقات پیشگام، توانایی یادگیری رایانه ها را رقم زد.در سال 1950 ، آزمایش معروف&quot;تورینگ تست(Turing Test)&quot; توسط ریاضیدان انگلیسی آلن تورینگ برای تعیین اینکه آیا یک ماشین دارای رفتار هوشمند برابر یا شبیه به انسان است، ایجاد شد.در سال 1952، آرتور لی ساموئل دانشمند معروف موفق شد یک برنامه رایانه ای IBM را آموزش دهد نه تنها بازی چکرزها را یاد بگیرد بلکه هربار که بیشتر بازی میکند بهتر شود.سپس در سال 1957 ، اولین شبکه عصبی جهان برای رایانه توسط روانشناس آمریکایی فرانک روزنبلات طراحی شد.ازآن پس انجام آزمایشات مرتبط در این زمینه افزایش یافت. در دهه 1960 روشهای Bayesian برای دخالت احتمالی در یادگیری ماشین معرفی شدند.و در سال 1986 ، دانشمند رایانه Rina Dechter تکنیک دیپ لرنینگ را براساس شبکه های عصبی مصنوعی ، به جامعه یادگیری ماشین معرفی کرد.اتخاذ یک رویکرد داده محورتا دهه 1990، یادگیری ماشینی از رویکرد دانش محور به رویکرد مبتنی بر داده که امروزه با آن آشنا هستیم تغییر یافت. دانشمندان شروع به ایجاد برنامه های رایانه ای کردند که می توانند مقادیر زیادی از داده ها را تجزیه و تحلیل کرده و از نتایج یاد بگیرند. در این دوره بود که ماشینهایی با پشتیبانی وکتور و شبکه های عصبی از محبوبیت بالایی برخوردار شدند.در دهه 2000 ، روشهای Kernal برای تجزیه و تحلیل و آنالیز الگوهای الگوریتمی ، مانند خوشه بندی و پشتیبانی از وکتور مطرح شد.سخت افزار برای پردازش کارآمدهمانطور که امروز می دانیم رویداد مهم بعدی که برای ما امکان یادگیری ماشینی را فراهم کرده است ، پیشرفت های سخت افزاری میباشد که در اوایل دهه 2000 رخ داده است. واحدهای پردازش گرافیکی (GPU) ایجاد شده اند که نه تنها می توانند آموزش الگوریتم را بطور قابل ملاحظه ای از هفته ها تا چند روز سرعت بخشند بلکه در سیستم های جاسازی شده نیز قابل استفاده هستند.در سال 2009 ، GPU های Nvidia توسط Google Brain معروف برای ایجاد شبکه های عصبی عمیق و توانا که می توانند یاد بگیرند که تصاویر گربه ها را از YouTube بدون برچسب گذاری تشخیص دهند ، استفاده شد.از زمانی که یادگیری عمیق به وضوح امکان پذیر شد ،دوره ای جدید و امیدوار کننده برای هوش مصنوعی و یادگیری ماشین جهت ارائه خدمات و برنامه های نرم افزاری آغاز شد.ماشین لرنینگ  در حال حاضرتقاضای زیاد برای GPU هاامروزه تقاضا برای GPU همچنان افزایش می یابد زیرا شرکت هایی ازانواع صنایع به دنبال استفاده از داده های خود جهت بهره وری از مزایای هوش مصنوعی و یادگیری ماشین هستند.برخی از نمونه های برنامه های کاربردی یادگیری ماشینی که امروزه می توانیم ببینیم تشخیص پزشکی ، پیش بینی زمان نگهداری دستگاه و همینطور تبلیغات هدفمند است. با این حال ، هنگامی که نوبت به به کارگیری مدل های یادگیری ماشین در دنیای واقعی می رسد ، یک مانع خاص وجود دارد که مانع پیشرفت است. و آن مانع را latency یا نهفتگی می نامند.یادگیری ماشین در لبه (Edge machine learning)امروزه بیشتر شرکت ها داده های خود را در cloud یا فضای ابری ذخیره می کنند. این بدان معنی است که داده ها برای مقایسه مدل ها قبل از اینکه مجدداً به دستگاه مبدا منتقل شود ، باید به یک پایگاه داده مرکزی (که اغلب هزاران مایل دورتر از آن قرار دارد) سفر کند.در این حالت انعطاف پذیری کاهش یافته و اشراف شما به وضعیت محدود خواهد شد،در نتیجه اگر مشکل و خطایی در کد های برنامه نویسی شما وجود داشته باشد و یا مشکلی در سخت افزار شما موجود باشد شناخت آن برای شما دشوار خواهد بود.مشکل تأخیر یا latency همان چیزی است که امروز بسیاری از شرکت ها را به حرکت از cloud به Edge سوق می دهد.&quot;اطلاعات در لبه &quot; ،&quot;Edge AI&quot; یا &quot;یادگیری ماشین Edge&quot; بدان معنی است که ، به جای پردازش در الگوریتم های واقع در ابر ، داده ها بصورت محلی در الگوریتم های ذخیره شده در یک سخت افزار پردازش می شوند.این کار نه تنها عملیات در زمان واقعی را امکان پذیر می کند بلکه به کاهش قابل توجهی در مصرف برق و آسیب پذیری امنیتی پردازش داده ها در ابر کمک می کند.حل مشکلات محدودیت نیروهمانطور که ما به سمت استفاده از هوش مصنوعی و یادگیری ماشین در لبه (edge) در دستگاه های کوچک و کوچکتر حرکت می کنیم ، محدودیت منابع اصلی یکی دیگر از مشکلات حال حاضرمیباشد. چگونه می توان برنامه های یادگیری ماشینی را بر روی دستگاه های بسیار ریز اجرا کرد بدون اینکه عملکرد و دقت آن را قربانی کرد؟در حالی که حرکت ازcloud به edge یک گام اساسی در حل مسائل مربوط به محدودیت منابع است ، بسیاری از مدل های یادگیری ماشین هنوز هم از قدرت و حافظه زیادی استفاده می کنند تا بتوانند امروزه ریزپردازنده های کوچک را در بازار جای دهند.بسیاری با ساخت نرم افزارهای کارامد ، الگوریتم ها و سخت افزارها به این چالش نزدیک می شوند. یا با ترکیب این مؤلفه ها و به روشی تخصصی تر عمل میکنند.ماشین لرنینگ در آیندهیادگیری ماشین بدون نظارتامروزه در اکثر پروژه های یادگیری هوش مصنوعی و ماشین سازی ، فرایند تکراری و خسته کننده مرتب سازی و برچسب زدن داده ها بخش عمده ای از زمان توسعه را به خود اختصاص می دهد. در حقیقت ، شرکت تحلیلگر Cognilytica تخمین زد که در میانگین پروژه های هوش مصنوعی ، حدود 80٪ از زمان پروژه، به جمع آوری داده ها ، تمیز کردن ، برچسب زدن و تقویت آن ها اختصاص می یابد تا درمدل های یادگیری ماشین مورد استفاده قرارگیرند.به همین دلیل است که چشم انداز یادگیری بدون نظارت بسیار هیجان انگیز است. در آینده ، ماشین های بیشتر و بیشتری قادر خواهند بود به طور مستقل الگوهای قبلی ناشناخته را در یک مجموعه داده که برچسب گذاری یا طبقه بندی نشده است ، شناسایی کنند. یادگیری بدون نظارت بخصوص برای کشف الگوهای ناشناخته قبلی در یک مجموعه داده،زمانی مفید است که شما نمی دانید نتیجه باید چه باشد.این موضوع می تواند برای برنامه های کاربردی مانند تجزیه و تحلیل داده های مصرف کنندگان جهت تعیین بازار هدف برای یک محصول جدید و یا تشخیص ناهنجاری های داده مانند معاملات دارای کلاهبرداری یا نقص های سخت افزاری مفید باشد.شتاب دهنده های سخت افزاری برای یادگیری یادگیری ماشین Edgeنسل جدیدی از شتابدهنده ها درحال ظهورهستند که تولید کنندگان تراشه و شرکت های نوپا برای سرعت بخشیدن و بهینه سازی مسائل کاری در برنامه های هوش مصنوعی و یادگیری ماشین از آموزش گرفته تا استنتاج، در حال کار برروی آنها میباشند.این شتاب دهنده ها سریع تر ، ارزان تر ، با صرفه تر و مقیاس پذیری بالاتری داشته و تولیدکنندگان این شتابدهنده ها اطمینان میدهند که دستگاه های لبه را به سطح جدیدی از کارآیی سوق دهند.یكی از راههای دستیابی به این هدف ، رهایی بخشهای اصلی پردازش دستگاههای Edge از کارهای پیچیده و سنگین ریاضی است كه در اجرای مدلهای یادگیری عمیق نقش دارند.مقیاس کردندر آینده ،اینترنت اشیاء در زندگی روزمره ما به طور فزاینده ای ملموس خواهد شد. به خصوص هنگامی که هوش مصنوعی و فناوری یادگیری ماشین همچنان به طور فزاینده ای مقرون به صرفه می شوند.با این حال ، با افزایش تعداد دستگاه های هوش مصنوعی ، ما باید اطمینان حاصل کنیم که یک زیرساخت برای هماهنگی داریم. طبق گفته درو هنری ، معاون ارشد رئیس برنامه ریزی و عملیات استراتژی در Arm در مقاله اخیرش : &quot;پیش بینی می كنیم در جهان یك تریلیون دستگاه IOT (اینترنت اشیا ) تا سال 2035 عرضه شود که چالش های زیرساختی و معماری را در مقیاس جدید ارائه میدهند ...این بدان معنی است که شرکت هایی نظیر Arm همچنان سرمایه گذاری زیادی را برای توسعه سخت افزار ، نرم افزار و ابزارها انجام خواهد داد تا بتواند در هر نقطه از زیرساخت ، تصمیم گیری هوشمندانه ای را داشته باشد.وقتی به تاریخ تکامل یادگیری ماشینی نگاه می کنیم و اینکه امروز در کجای آن قرار داریم ، به نظر می رسد که تکامل یادگیری ماشین و به خصوص یادگیری ماشین لبه (Edge ) سریع و غیرقابل توقف است پس همچنانکه پیشرفت های آینده آشکار می شود ، برای تأثیرگذاری آماده شوید و اطمینان حاصل کنید که آماده استفاده از این فناوری هستید.https://amanjacademy.com/</description>
                <category>جامعه Machine Learning</category>
                <author>یگانه اخوان</author>
                <pubDate>Wed, 06 May 2020 18:13:51 +0430</pubDate>
            </item>
                    <item>
                <title>مروری بر یادگیری ماشین (قسمت دوم)</title>
                <link>https://virgool.io/machine-learning/%D9%85%D8%B1%D9%88%D8%B1%DB%8C-%D8%A8%D8%B1-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-cmiwlwasw0h9</link>
                <description>این پست تقریبا خلاصه‌ای از قسمت های اولیه‌ی فصل پنجم کتاب یادگیری عمیقه و اسم این فصل هست Machine Learning Basics. کتاب با فرمت HTML و فصل به فصل تو سایتی که لینک کردم به رایگان در دسترسه. Yoshua Bengio و Ian Goodfellow از نویسندگان این کتاب هستند. قسمت اول این خلاصه رو هم ‌می‌تونین اینجا ببینین.رگولاریزیشن (Regularization) یعنی هر گونه تغییری توی الگوریتم یادگیری که برای کاهش خطای تست انجام می‌شه. مثلا این تغییر می‌تونه تو تابع هزینه و به صورت اضافه کردن یه عبارت جدید بهش باشه، مثلا شکل 0 یه رگولازیشین L2 رو نشون می‌ده.شکل 0همونطور که گفتیم رگولازیشین فقط باعث کاهش خطای تست می‌شه و نه خطای train. حتی ممکنه استفاده ازش باعث بشه خطای train بیشتر بشه.پارامترهای مدل (وزن ها) توسط الگوریتم یادگیری به دست میان. اما هایپرپارامترها توسط الگوریتم یادگیری به دست نمیان (و خودمون تعیینشون می‌کنیم)، و این کار معمولا دو تا دلیل داره: 1) بهینه کردن اون هایپرپارامتر مشکله. 2) یادگیری اون هایپرپارامتر روی دادگان train اشتباهه و منجر به overfit می‌شه.معمولا همه‌ی هایپرپارامترهایی که روی ظرفیت مدل تاثیر دارن (مثل درجه‌ی چندجمله ای تو رگرسیون خطی) جزو دسته‌ی دوم هستند، یعنی هایپرپارامترهایی که توسط الگوریتم یادگیری یادگرفته نمی‌شن چون یادگرفتنشون روی دادگان train اشتباهه و منجر به overfit می‌شه.به طور کلی با کمک دادگان train پارامترها توسط الگوریتم یادگرفته می‌شن.با کمک دادگان validation که معمولا حدود 20% از دادگان train هستند می‌تونیم هایپرپارامترهای درست رو به دست بیاریم. یعنی می‌تونیم اول هایپرپارامترها رو تعیین کنیم. بعد روی دادگان train الگوریتم رو اجرا کنیم. بعد نتایج رو روی دادگان validation ببینیم و با توجه به نتایج هایپرپارامترهای جدیدی رو تعیین کنیم و دوباره این مراحل رو تکرار کنیم تا به هایپرپارامترهای درست برسیم. و درنهایت روی دادگان test نتیجه رو بررسی می‌کنیم.اگر کل داده‌ها اونقدر کم باشن که نتونیم سه تا مجموعه train, test, validation از توش دربیاریم می‌تونیم از cross-validation استفاده کنیم.به هر تابعی از داده می‌گیم تخمین نقطه‌ای یا آماره (point estimation/statistic). فرم کلیش توی شکل 1 هست و توی این مطلب یکم بیشتر توضیحات دادم درموردش.شکل 1مثلا یه آماره‌ای که خیلی مرسومه میانگین نمونه‌ایه که فرمولش تو شکل 2 هست.شکل 2توجه کنین که خیلی از (یا شاید حتی همه) چیزایی که تو یادگیری ماشین برای ما در مورد داده ها مهمه مثل توزیع تولید داده و پارامترهای مربوط بهش و خطای تست در واقع تابعی از داده‌ها و درنتیجه آماره ای از داده‌ها هستند.اینجا فراوانگرا ها (! همون فریکوئنتیست ها) دیدشون اینجوریه که: مقدار واقعی پارامتر θ ثابت و مشخصه اما مجهوله و θ_hat تابعی از داده‌هاست. چون نمونه‌ای که گرفتیم رندومه، هر تابعی از جمله θ_hat هم روی اون رندومه و در نتیجه θ_hat هم یه متغیر رندومه و یه بایاس و واریانسی داره.همین مفهوم تخمین نقطه‌ای رو می‌تونیم تو فضای تابعی هم تعمیمش بدیم. به این صورت که f_hat تخمینی از تابع f ئه و یه تخمین نقطه ای تو فضای توابعه.بایاس و واریانس برای یه آماره هر دو منبعی از خطا و تفاوت با مقدار واقعی هستند، واریانس که میانگین فاصله‌ی مقدار تخمینی از مقدار واقعی رو نشون می‌ده و بایاس هم توی شکل 3 مشخصه و تفاوت مقدار واقعی با مقدار مورد انتظارِ مقدار تقریبی رو نشون می‌ده.شکل 3مثلا اگه توزیع داده ها نرمال باشه، بایاس میانگین نمونه‌ای (که تو شکل 8 تعریف شده) صفره و واریانسش هم تو شکل 4 مشخصه.شکل 4می‌تونیم با کمک میانگین خطا روی دادگان تست تخمین خوبی روی خطای generalization مدل به صورت کلی بزنیم. یعنی پیش بینی کنیم که خطای روی دادگان تست دیگه چقدره حدودا. باتوجه به نظریه‌ی حد مرکزی (CLT) می‌تونیم بگیم تعداد داده‌های تست اونقدری هست که میانگین خطاشون به سمت توزیع نرمال میل کنه. و در این حالت می‌تونیم از فرمول شکل 4 برای محاسبه‌ی واریانس میانگین خطا استفاده کنیم و در نهایت یه بازه‌ی اطمینان هم برای خطای generalization ارائه بدیم.شکل 5تو شکل 5 یه بازه‌ی اطمینان 95% درصدی برای خطای generalization آورده شده. یعنی اگه چندین بار از جامعه نمونه بگیریم و دادگان تست درست کنیم و روی هر کدوم این بازه رو محاسبه کنیم، در 95% مواقع، مقدار واقعی خطای generalization توی همین بازه خواهد بود.بعضی مواقع می‌شه از همین بازه‌ی اطمینان برای مقایسه‌ی دو تا الگوریتم یادگیری A و B استفاده کرد. اینجوری که بازه رو برای هر کدوم به دست میاریم و در نهایت اون الگوریتمی که کران بالای بازه‌ی اطمینانش کوچکتر باشه، بهتره!حالا می‌رسیم به trade-off بین بایاس و واریانس. یعنی فکر کنین دو تا الگوریتم A و B داریم. الگوریتم A بایاس بیشتری داره و الگوریتم B واریانس بیشتری. و ما می‌دونیم که هم بایاس و واریانس یه منبعی از خطا هستند، حالا کدوم الگوریتم رو انتخاب کنیم؟شکل 6اینجاست که خطای مجذور مربعات یا همون MSE به کارمون میاد. همون طور که تو شکل 6 می‌بینید، MSE در واقع یه معیاریه که هم بایاس و هم واریانس رو توی خودش داره. بنابراین می‌تونیم برای مقایسه‌ی الگوریتم‌های A و B از MSE کمک بگیریم. هر چقدر MSE کمتر باشه، بهتره.شکل 7تو شکل 7 می‌تونید رابطه‌ی بین بایاس و واریانس با ظرفیت مدل رو ببینید. بایاس به طور کلی با افزایش ظرفیت مدل کمتر می‌شه، اما واریانس با افزایش ظرفیت افزایش پیدا می‌کنه و رابطه شون شبیه overfitting و underfitting با ظرفیته.یه آماره‌ی سازگار یا consistent، آماره ‌ایه که هر چقدر روی داده‌های بیشتری گرفته بشه به مقدار واقعی پارامتری که داره تخمین می‌زنه نزدیک تر بشه، یعنی بایاسش به سمت صفر بره.مثلا تو شکل 2 یکی از آماره‌های رایج که در حقیقت میانگین رو تخمین می‌زنه، دیدیم. و در شکل 8 می‌بینیم که این میانگین نمونه‌ای بایاسش صفره پس سازگاره و در کل تخمین‌گر خوبیه، و وقتی میانگین نمونه‌ایِ نمونه‌ی بزرگی رو می‌گیریم، میانگین نمونه‌ای خیلی نزدیک میانگین واقعی جامعه می‌شه.شکل 8حالا فهمیدیم که باید دنبال تخمین‌گرهای سازگار باشیم، باید از کجا بیاریمشون؟! به طور کلی دوست داریم به روش خاصی داشته باشیم که با کمک اون بتونیم برای پارامترهای هر مدلی که داریم، تخمین‌گر‌های سازگار پیدا کنیم. یکی از رایج‌ترینِ این روش‌ها Maximum Likelihood ئه.فرض می‌کنیم مجموعه‌ی X شامل m تا نمونه‌ی iid (یعنی از هم مستقل اند و توزیع یکسانی دارند) از کل جامعه باشه.و p_data توزیع واقعی تولید داده‌هاست که برای ما مجهوله و ما به دنبال پیدا کردنش هستیم.و p_model خانواده ای از توزیع هاست که هر توزیع با پارامتر θی خودش مشخص می‌شه. مثلا اگر این خانواده به فرم W.T*X باشند، پارامترشون W ئه.و p_hat_data که توزیعیه که در نهایت برای داده‌ها تخمین می‌زنیم.و در نهایت تخمین‌گر سازگار ما از فرمولی که تو شکل 9 می‌بینید به دست میاد. یعنی داره می‌گه θرو انتخاب کن که باعث بشه نمونه‌ی X ما در اون توزیعی که به دست میاد بیشترین احتمال رو داشته باشن. شکل 9توی فرمول شکل 9 یه ضرب می‌بینید که تو محاسبات (مثل مشتق گرفتن) خیلی سخت میشه کار کردن باهاش. از اون جایی که لگاریتم مقدار argmax رو تغییر نمیده (یعنی اون θای که ماکسیمم می‌کنه این عبارت تغییر نمی‌کنه اما طبیعتا مقدار این عبارت تو ماکسیممش تغییر می‌کنه) یه لگاریتم می‌گیریم از کل فرمول تا ضرب ها تبدیل به جمع بشن و کار باهاشون راحت تر بشه، این فرمول رو می‌تونین تو شکل 10 ببینین.شکل 10روش Maximum Likelihood با داشتن دو شرط تضمین می‌کنه که θای که به شما برمی‌گردونه سازگاره: 1) توزیع واقعی داده‌ها p_data باید تو خانواده‌ی توزیع p_model باشه. 2) توزیع واقعی داده‌ها دقیقا متناظر یه θ باشه. اگه دو تا θ ی متناظر داشته باشه، روش Maximum Likelihood می‌تونه p_dataی درست رو پیدا کنه اما نمی‌تونه تشخیص بده θی متناظر کدومه.</description>
                <category>جامعه Machine Learning</category>
                <author>محجوبه چاوشی</author>
                <pubDate>Tue, 05 May 2020 16:56:57 +0430</pubDate>
            </item>
                    <item>
                <title>مروری بر یادگیری ماشین (قسمت اول)</title>
                <link>https://virgool.io/machine-learning/%D9%85%D8%B1%D9%88%D8%B1%DB%8C-%D8%A8%D8%B1-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-ngogrzztxhn0</link>
                <description>این پست تقریبا خلاصه‌ای از قسمت های اولیه‌ی فصل پنجم کتاب یادگیری عمیقه و اسم این فصل هست Machine Learning Basics. کتاب با فرمت HTML و فصل به فصل تو سایتی که لینک کردم به رایگان در دسترسه. Yoshua Bengio و Ian Goodfellow از نویسندگان این کتاب هستند.قسمت دوم این خلاصه رو می‌تونین اینجا ببینین.هدف نهاییِ یه الگوریتم یادگیری ماشین داشتن پرفورمنس خوب روی دادگان تسته و نه دادگان train. مثلا اگر معیارمون رو MSE در نظر بگیریم، هدف نهاییمون رو می‌تونیم کمینه کردن MSE روی دادگان تست در نظر بگیریم.MSE testاز اونجایی که وقتی تو مرحله‌ی train هستیم به دادگان تست دسترسی نداریم، ساده‌ترین راهی که ممکنه پیش رومون باشه اینه که MSE رو روی دادگانی که داریم، یعنی دادگان train کمینه کنیم و به دنبال وزن‌ها (W)یی باشیم که به ازای اون‌ها MSE روی دادگان train کمینه می‌شه.تا این جا فقط با یه مسئله‌ی بهینه سازی روبه‌رو هستیم. اما پس یادگیری ماشین کجای کاره؟! چیزی که بهینه سازی رو از یادگیری ماشین متمایز می‌کنه اینه که ما نمی‌خوایم فقط روی کمینه کردن MSE روی دادگان train بسنده کنیم و می‌خوایم الگوریتممون روی دادگان تست، یعنی داده‌هایی که تا حالا ندیدیم هم خوب کار کنه، یعنی generalization خوبی داشته باشه.چطور می‌تونیم با یادگیری رو دادگان train توقع داشته باشیم رو یه سری داده‌ی دیگه هم که تا حالا ندیدیم دقت خوبی داشته باشیم؟ اینجاست که آمار میاد به کمکمون! یادتون باشه که ما فرض کردیم هر نمونه‌ای که از کل جامعه‌ی آماری برداشتیم (که دادگان train و دادگان تست هم دو نمونه از کل جامعه هستند) iid هستند. یعنی مستقل از هم هستند و از یک توزیع احتمالاتی یکسان اومدن. بنابراین اگه تلاش کنیم از روی دادگان train اون توزیع احتمالاتی یکسان رو یاد بگیریم، احتمالا رو نمونه‌های دیگه از اون توزیع مثل دادگان تست هم دقت خوبی خواهیم داشت.ظرفیت مدل باید با کاری که ازش توقع داریم انجام بده (مثل پیش بینی کردن قیمت خونه یا تشخیص صورت تو یه عکس) متناسب باشه. مثلا تو رگرسیون خطی می‌تونیم ظرفیت مدل رو با درجه‌ی چندجمله ای که استفاده می‌کنیم نشون بدیم. هر چقدر درجه بالاتر، مدل پیچیده تر. اگر ظرفیت مدل کمتر از مقدار موردنیاز task باشه، قدرت کافی برای حل مسئله رو نخواهیم داشت و نمی‌تونیم مسئله رو حل کنیم و اگه ظرفیت مدل بیشتر از حد لازم باشه با overfitting مواجه می‌شیم.نظریه‌ی یادگیری آماری (statistical learning theory) میگه اگه کران بالای تفاضل بین خطای train و خطای تست رو مثلا UB در نظر بگیریم، با بالاتر رفتن ظرفیت مدل، UB افزایش پیدا می‌کنه و با بیشتر شدن دادگان train این کران کاهش پیدا می‌کنه. (و ما دنبال این هستیم که تفاضل بین خطای train و خطای تست کمتر شه و در نتیجه این کران کاهش پیدا کنه)تخمین زدن ظرفیت شبکه‌های عصبی برخلاف رگرسیون خطی کار ساده ای نیست و عوامل زیادی روش تاثیر دارن.شکل 1به طور کلی همونطور که تو شکل 1 می‌بینیم با افزایش ظرفیت مدل، خطای train همواره کاهش پیدا می‌کنه. اما خطای test یا همون خطای generalization بعد از یه مقدار ظرفیت خاص شروع می‌کنه به افزایش پیدا کردن. این همونجاییه که مدل شروع می‌کنه به overfit کردن و قابلیت generalization اش کم می‌شه (و ما دوست داریم این sweet spot رو پیدا کنیم)مدل‌های پارامتری مدل‌هایی هستند که به طور کلی با یه بردار پارامتر با طول ثابت (و متناهی) تعریف می‌شن و وقتی دادگان train رو می‌بینیم، سعی می‌کنیم این پارامترها رو طوری تغییر بدیم که مدل fit بشه روی دادگان یعنی اندازه‌ی این بردار پارامتر (تعداد پارامترها) تغییری نمی‌کنه اما مقدارشون تغییر می‌کنه، مثل رگرسیون خطی. مثلا اگه ورودی برداری با یک عنصر باشه، فرمول رگرسیون از قبل مشخصه و همونطور که تو شکل 2 می‌بینیم بردار پارامترمون همون w و b ئه که دو عضو داره. وقتی هم دادگان رو ببینیم تعداد پارامترها همین دوتا هستند و تغییری نمی‌کنند.شکل 2-مدل‌های غیرپارامتری این محدودیت مدل‌های پارامتری رو ندارند که مجبور باشن قبل از دیدن دادگان تعداد پارامترهای ثابتی داشته باشند. همین باعث می‌شه که ظرفیتشون خیلی بیشتر از مدل‌های پارامتری باشه. مثال این مدل ها k-nearest-neighbor ئه. قبل از دیدن دادگان این مدل پارامتر خاصی نداره و هر وقت هم بخوایم با این مدل پیش بینی کنیم به همه‌ی دادگان train احتیاج داریم.البته می‌تونیم با پیچیدن (!) یه الگوریتم پارامتری تو یه الگوریتم دیگه که تعداد پارامترها رو در موقع نیاز تغییر می‌ده، یک الگوریتم غیرپارامتری بسازیم. مثلا اگه بخوایم رگرسیون خطی رو غیرپارامتری کنیم می‌تونیم یه حلقه‌ی خارجی داشته باشیم که درجه‌ی چند جمله ای رو با توجه به داده‌ای که می‌بینه تغییر بده.به طور کلی حالت ایده‌آل برای الگوریتم‌های یادگیری، یه دانای کل یا oracle ئه که توزیع واقعی تولید داده رو بدونه. اما در این حالت هم ممکنه دقتمون 100% نباشه و مقداری خطا داشته باشیم، به این خطا می‌گن Bayes Error و ممکنه ناشی از دو چیز باشه: 1) ممکنه رابطه‌ی بین X و y که سعی داریم مدلش کنیم ذاتا و حقیقتا تصادفی باشه. 2) ممکنه ویژگی یا فیچری تو y موثر باشه که تو X نیومده باشه اصلا. یعنی confounding variable داشته باشیم.به طور کلی هر چقدر تعداد نمونه‌های train بیشتر باشه، قدرت generalization مدل بیشتر می‌شه و در نتیجه خطای test کمتر می‌شه.در مدل‌های غیرپارامتری داده‌ی train بیشتر همواره خطای تست رو پایین میاره تا جایی که به کمترین خطای ممکن یعنی خطای Bayes برسیم.اما اگر یه مدل پارامتری با ظرفیتی کمتر از ظرفیت بهینه (تو شکل 1 مشخصه) داشته باشیم، هر چقدر دادگان train رو بیشتر کنیم، خطاش به سمت خطایی که بیشتر از خطای Bayes ئه میل می‌کنه.</description>
                <category>جامعه Machine Learning</category>
                <author>محجوبه چاوشی</author>
                <pubDate>Wed, 29 Apr 2020 18:37:21 +0430</pubDate>
            </item>
                    <item>
                <title>دوره Reinforcement Learning: مقدمه ۲</title>
                <link>https://virgool.io/machine-learning/%D8%AF%D9%88%D8%B1%D9%87-reinforcement-learning-%D9%85%D9%82%D8%AF%D9%85%D9%87-%DB%B2-tet6bopdgqly</link>
                <description>قبلی: دوره Reinforcement learning: مقدمه ۱توی پست قبلی مختصر توضیحی راجب اینکه Reinforcement learning چیه و چه جاهایی کاربرد داره دادم. حالا بد نیست یه نگاهی به فرقش با سایر متدهای یادگیری ماشین داشته باشیم.برنامه ریزی (Planning):بازی Goبهینه سازی (Optimization)نتایج با تاخیر (Delayed consequences)× اکتشاف (Exploration)کلیت بخشی (Generalization)یه دسته مهم از مسائلی که هوش مصنوعی باهاش طرفه مسائل برنامه ریزیه. مثلا این که ایجنت ما چطور بتونه حریفش رو توی بازی Go شکست بده. توی اینگونه مسائل باز هم ایجنت باید سلسله از تصمیمات خوب بگیره با این تفاوت که ما از قبل مدلی بهش دادیم که مشخص میکنه تصمیماتش چگونه روی جهانش تاثیر میزاره (مدلی از نحوه‌ی عملکرد جهان رو داره). پس بخش اکتشاف رو شامل نمیشه. چون قوانین از قبل مشخصه و لازم نیست ایجنت برای پی بردن به قوانین کار خاصی بکنه (میشه گفت مسائل planning زیر مجموعه از RL هستند).یادگیری تحت نظارت (Supervised Learning):بهینه سازی (Optimization)× نتایج با تاخیر (Delayed consequences)× اکتشاف (Exploration)کلیت بخشی (Generalization)وظیفه سوپروایزد لرنینگ اینه که تابعی بسازه که برای یه سری ورودی، خروجی متناسب رو پیدا کنه. مثلا با دادن متراژ و تعداد اتاق‌های یه خونه بتونه حدس بزنه قیمت اون خونه چنده یا با دیدن یک عکس بتونه بگه که مربوط کدوم دسته هست (مثلا بگه عکسه سیبه یا هلو!). اولین تفاوتش با RL در اینه که فقط یک تصمیم میگیره نه سلسله از تصمیمات، پس نگران این نیست که در آینده تصمیم الآنش چه تاثیری خواهد گذاشت زیرا نتیجه هر تصمیم همون زمان مشخص میشه. دومین تفاوتش هم در اینه که احتیاجی به اکتشاف و تجربه کردن نداره چون تجربه توسط ما در اختیارش قرار میگیره و تنها وظیفه‌ای که داره اینه که از این تجربیات یاد بگیره (تجربه همون دیتاستی هست که مدل ما روی اون تِرین میشه).یادگیری بدون نظارت (Unsupervised Learning):مثالی از کاری که unsupervised learning انجام میدهبهینه سازی (Optimization)× نتایج با تاخیر (Delayed consequences)× اکتشاف (Exploration)کلیت بخشی (Generalization)وظیفه این بخش پیدا کردن الگو بین داده هاست. یعنی حجمی از داده ها رو میگیره و اون‌ها رو دسته بندی میکنه به نحوی که داده‌هایی که بیشترین شباهت رو دارن توی یک دسته قرار میگیرن. تفاوتش با سوپروایزد لرنینگ در اینه که داده‌ی که روی اون‌ها تِرین میشه لیبل مشخصی ندارن و میشه گفت توی سوپروایزد از قبل دسته بندی مشخصه اما توی این بخش خود برنامه‌س که باید دسته بندی رو پیدا کنه. مثله سوپروایزد لرنینگ نیازی نداره که نگران آینده باشه و همینطور احتیاجی به اکتشاف هم نداره چون دیتاستی که قراره روی اون ترین بشه توسط انسان بهش داده میشه.یادگیری تقویتی (‌گهگاهی از اسم فارسیش هم استفاده کنیم! البته دلیل اصلیش اینه که اگر مینوشتم RL چون اول خط بود چپ به راست مینوشت :d)‌ یه جورایی بین این حوزه و سوپروایزد لرنینگ قرار میگیره. چون توی سوپروایزد لرنینگ نتیجه تصمیمات مشخصه و توی آنسوپروایزد مشخص نیست. اما توی RL با اینکه نتیجه تصمیمات به طور حتم مشخص نیست اما با استفاده از احتمال میزان خوب یا بد بودنشون رو مشخص میکنیم.یادگیری با تقلید کردن (Imitation Learning):بهینه سازی (Optimization)نتایج با تاخیر (Delayed consequences)× اکتشاف (Exploration)کلیت بخشی (Generalization)این حوزه و Planning Learning جزو بخش سه حوزه اصلی ماشین لرنینگ نیستن (بخش های اصلی ماشین لرنینگ supervised learning و unsupervised learning و Reinforcement learning هستند). حقیقتش من نتوستم تعریف دقیق از این بخش پیدا کنم (توی ویکی پدیا الآن که من دارم این پست رو مینویسم که چیزی نبود!). اما خب بر اساس چیزی که من فهمیدم ایجنت ما توی این بخش به جای اینکه خودش تجربه کسب کنه از تجربیات یه ایجنت دیگه (مثلا انسان) استفاده میکنه و از اونا یاد میگیره. خب پس احتیاجی به اکتشاف نداره.یه نکته‌ای که بد نیست بگم اینه که یادگیری با تقلید توسط آقای Andrew Ng معروف شده که یکی از پرفسورهای دانشگاه استنفورد و همینطور یکی از چهره‌های سرشناس هوش مصنوعیه، و کورس خیلی خوبی هم توی کورسرا (Coursera) به اسم ماشین لرنینگ داره که شدیدا پیشنهاد میکنم اگه با ماشین لرنینگ آشنایی زیادی ندارید و تازه ابتدا کار هستید حتما ببینیدش:)اما نکته دیگه اینکه ظاهرا قرار با این بخش سروکار زیادی طی دوره داشته باشیم پس در ادامه احتمالا چیزای بیشری ازش می‌بینیم.خب این پست رو هم همین جا تموم میکنم. فقط فیدبک و لایک فراموش نشه:))</description>
                <category>جامعه Machine Learning</category>
                <author>تازه کار</author>
                <pubDate>Wed, 29 Apr 2020 14:54:28 +0430</pubDate>
            </item>
            </channel>
</rss>