<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات مانیتو</title>
        <link>https://virgool.io/moneytoo/feed</link>
        <description>سامانه مالی و بورسی مانیتو</description>
        <language>fa</language>
        <pubDate>2026-06-17 02:44:48</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/yxmtceeualnk/dahzb4.png</url>
            <title>مانیتو</title>
            <link>https://virgool.io/moneytoo</link>
        </image>

                    <item>
                <title>توضیح LDA و پیاده سازی آن با استفاده از  Scikit learn</title>
                <link>https://virgool.io/moneytoo/%D8%AA%D9%88%D8%B6%DB%8C%D8%AD-lda-%D9%88-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%A2%D9%86-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-scikit-learn-xaijqhw1dvyx</link>
                <description>این الگوریتم، یکی از الگوریتم های رایج در زمینه ی topic modeling می باشد که در سال 2002 به وجود آمد.تاپیک مدلینگ چیست ؟تاپیک مدلینگ یکی از زمینه های محبوب در ماشین لرنینگ می باشد.تاپیک مدلینگ به معنی استخراج موضوعات از مجموعه ی اسناد موجود، می باشد.یکی از کاربردهای ابتدایی NLP، دانستن این است که مردم در مورد چه موضوعاتی درون متن های بزرگ، صحبت می کنند .به عبارت بهتر، چه اطلاعاتی درون این متن ها وجود دارد و تاپیک مدلینگ برای استخراج این اطلاعات از اسناد متنی، مورد استفاده قرار میگیرد.فرض کنید شما در حال مطالعه ی مقاله ای در روزنامه هستید که از کلمه ی آب و هوا درون آن مقاله به صورت مکرر، استفاده شده است . در این حالت، برداشت شما این است که موضوع اصلی مقاله احتمالا در مورد آب و هوا و شرایط جوی می باشد .این کار مشابه کاری است که تاپیک مدلینگ انجام می دهد.در واقع تاپیک مدلینگ، موضوعات را به وسیله ی دسته بندی کلمات مشابه،تولید می کند.حال 2 اصطلاح به وجود می آید . 1- تاپیک مدلینگ 2- تاپیک کلاسیفیکیشن اگرچه این دو به هم شباهت دارند ولی دو فرایند کاملا جدا می باشند.اولی به صورت unsupervised machine learning technique  است و دومی به  صورت supervised technique می باشد.topic classification  اغلب شامل mutually-exclusive classes می شود .به این معنی که، هر سندی فقط شامل یک موضوع می شود و توسط یک موضوع label دریافت می کند.(هیچ دو کلاسی به صورت همزمان، نمیتواند اتفاق بیفتد.) در نقطه ی مقابل، تاپیک مدلینگ به این صورت نیست و یک سند ممکن است که شامل چندین موضوع احتمالی باشد.در واقع به دلیل این که تاپیک مدلینگ بر اساس توزیع احتمالی کار می کند،یک سند منتی می تواند توزیع احتمالی ای روی چندین موضوع، داشته باشد. به این معنی که یک متن برای مثال، 50% به جغرافیا 30% به گردشگری و 20% به غذا مرتبط است.برای تاپیک مدلینگ الگوریتم های متعددی وجود دارد . از قبیل Non-Negative Matrix Factorization(NMF), Latent Semantic Analysis or Latent Semantic Indexing(LSA or LSI) و Latent Dirichlet Allocation یا همان LDA .ما در این جا به بررسی LDA می پردازیم . ایده ی اصلی LDA این است که اسناد از ترکیب تصادفی چندین موضوع، به وجود آمده اند و موضوعات هم از ترکیب چندین کلمه تشکیل شده است.حال فرض کنید شما چندین هزار مقاله دارید و از موضوعات این مقاله ها هم اطلاعی ندارید. شما به مقالاتی در ارتباط با حیوانات احتیاج دارید.خواندن تمام این مقالات برای پیدا کردن مقالات مرتبط با موضوع حیوانات کار بسیار مشکلی است . حال به مثال زیر توجه کنید.فرض کنید 4 مقاله دارید. مقاله ی  اول در مورد حیوانات، مقاله ی دوم در مورد ژنتیک، مقاله ی سوم در مورد کامپوتر، مقاله ی چهارم در مورد ژنتیک و حیوانات.به عنوان یک انسان، شما به راحتی می توانید موضوعات را بر اساس کلمات درون آنها از هم تفکیک کنید . اما اگر هزار مقاله ی هزار خطی داشتید دیگر به این سادگی قادر به تفکیک نبودید. کامپیوتر ها به کمک LDA ، قادر به انجام چنین کاری می باشند . تا به حال با کاربرد LDA آشنا شده ایم . حال نوبت آن است که ببینیم LDA چگونه کار می کند .نحوه ی عملکرد LDAابتدا به شکل گرافیکی LDA نگاهی خواهیم انداخت و سپس به فرمول محاسبه ی احتمال LDA می پردازیم .در شکل بالا، 6 پارامتر مشاهده می شود . آلفا و اتا نماینده ی توزیع دریکله می باشند . هرچه آلفا بزرگ تر باشد، هر سند احتمالا موضوعات بیشتری را شامل میشود و در نقطه ی مقابل، هرچه آلفا کوچک تر باشد، هر سند احتمالا تعداد کمتری موضوع را در بر میگیرد .مشابه آلفا، هرچه مقدار اتا بزرگ تر باشد، احتمالا موضوعات کلمات بیشتری را در بر میگیرد و در نقطه ی مقابل، هرچه اتا کمتر باشد موضوعات احتمالا کلمات کمتری را در بر میگیرد.بتا و تتا نماینده ی توزیع چندجمله ای و z  نماینده ی شاخه ای از موضوعات و w نماینده ی شاخه ای از کلمات می باشد. سمت چپ فرمول بیانگر احتمال سند متنی می باشد.در سمت راست فرمول 4 عبارت وجود دارد . عبارت اول و سوم مربوط به پیدا کردن موضوعات است . عبارت دوم و چهارم مربوط به پیدا کردن کلمات در مقالات است .دو عبارت اول سمت راست فرمول مربوط به توزیع دریکله و دو عبارت باقی مانده مربوط به توزیع چند جمله ای می باشد . فرض کنید در شکل بالا و درون مثلث سمت چپ، دایره های آبی بیانگر مقالات مختلف می باشد.حال اگر ما مقالات را بر اساس موضوعات مختلف توزیع کنیم به شکل مثلث سمت راست در خواهند آمد . مقالات بسته به درصد شامل شدن موضوع، به سمت رئوس مثلث حرکت خواهند کرد.این فرایند توسط عبارت اول سمت راست فرمول بالا، انجام می شود.(اولین عبارت متعلق به توزیع دریکله). حال ما از توزیع چند جمله ای (عبارت سوم سمت راست فرمول بالا) برای تولید موضوعات بر اساس درصد بدست آمده از عبارت اول، استفاده می کنیم .حال  بعد از پیدا کردن موضوعات، خواهیم فهمید که کدام کلمات بیشترین ارتباط را با این موضوعات دارند.این کار توسط عبارت دوم سمت راست فرمول بیان شده(عبارت دوم توزیع دریکله)، انجام می شود.همان طور که در شکل زیر می بینید، موضوعات بر اساس کلمات توزیع شده اند. حال ما از توزیع چند جمله ای دیگر(عبارت چهارم) استفاده خواهیم کرد، برای پیدا کردن کلماتی که مرتبط تر با آن موضوعات هستند و با استفاده از توزیع دریکله، کلمات را با احتمال آنها تولید خواهیم کرد . این فرایند چندین بار اتفاق خواهد افتاد. بنابراین ما کلماتی را خواهیم یافت که ارتباط بیشتری با موضوعات دارند و میتوانیم مقالات را بر اساس آن موضوعات توزیع کنیم . پیاده سازی LDA با استفاده از  Scikit learnابتدا dataset مورد نظر را بارگذاری میکنیم . برای دریافت dataset از این لینک میتوانید اقدام کنید.در این مرحله ماتریس TF-IDF برای داکیومنت موردنظر را ایجاد می کنیم.همچنین فرایند توکن کردن و حذف کلمات ایست (stopwords) هم انجام شده است .حال مدل LDA را با تعداد موضوع موردنظر به وجود می آوریم و مدل را روی داده های آماده شده فیت می کنیم.بعد از فیت کردن، باید موضوعات را از component matrix استخراج کنیم.خروجی به شکل زیر خواهد بود . همانطور که می بینید، 5 موضوع از هم تفکیک شده و 7 کلمه ای که بیشترین ارتباط را با هر موضوع دارند. استخراج شده است .</description>
                <category>مانیتو</category>
                <author>saeed imani</author>
                <pubDate>Tue, 19 Jul 2022 19:15:45 +0430</pubDate>
            </item>
                    <item>
                <title>Unsupervised learning vs Self-supervised learning</title>
                <link>https://virgool.io/moneytoo/unsupervised-learning-vs-self-supervised-learning-axesyzmjmd4s</link>
                <description>یادگیری بدون نظارتیادگیری بدون نظارت (Unsupervised learning) ، همچنین به عنوان یادگیری ماشین بدون نظارت شناخته می شود، از الگوریتم های یادگیری ماشین برای تجزیه و تحلیل و خوشه بندی مجموعه داده های بدون برچسب استفاده می کند. این الگوریتم ها الگوهای پنهان یا گروه بندی داده ها را بدون نیاز به دخالت انسان کشف می کنند. توانایی آن در کشف شباهت ها و تفاوت ها در اطلاعات، آن را به راه حل ایده آلی برای تجزیه و تحلیل داده های اکتشافی (data analysis) ، استراتژی های فروش متقابل و تشخیص تصویر تبدیل می کند.مدل‌های یادگیری بدون نظارت برای سه کار اصلی - خوشه‌بندی (Clustering) ، تداعی (association) و کاهش ابعاد (dimensionality reduction) مورد استفاده قرار می‌گیرند.مقایسه یادگیری بدون نظارت و نظارت شدهیادگیری خود نظارتییادگیری خود نظارتی (Self-supervised learning) یک فرآیند یادگیری ماشینی است که در آن مدل خود را آموزش می دهد تا بخشی از ورودی را از قسمت دیگری از ورودی یاد بگیرد.در این فرآیند، مشکل بدون نظارت با تولید خودکار برچسب ها به یک مشکل نظارت شده تبدیل می شود. برای استفاده از حجم عظیمی از داده های بدون برچسب، تعیین اهداف یادگیری مناسب برای نظارت از خود داده ها بسیار مهم است.به عنوان مثال، در پردازش زبان طبیعی، اگر چند کلمه داشته باشیم، با استفاده از یادگیری خود نظارتی می‌توانیم بقیه جمله را کامل کنیم. به طور مشابه، در یک ویدیو، می‌توانیم فریم‌های گذشته یا آینده را بر اساس داده‌های ویدیویی موجود پیش‌بینی کنیم. یادگیری خود نظارتی از ساختار داده‌ها برای استفاده از انواع سیگنال‌های نظارتی در مجموعه داده‌های بزرگ استفاده می‌کند.(همه بدون تکیه بر برچسب‌ها)تفاوت یادگیری بدون نظارت و یادگیری خود نظارتیبسیاری از مردم هر دو اصطلاح را اشتباه می گیرند و آنها را به جای یکدیگر استفاده می کنند. با این حال، هر دو تکنیک یادگیری اهداف متفاوتی دارند.روش‌های یادگیری خود نظارتی و یادگیری بدون نظارت را می‌توان تکنیک‌های یادگیری مکمل در نظر گرفت زیرا هر دو به مجموعه داده‌های برچسب‌گذاری شده نیاز ندارند. یادگیری بدون نظارت را می توان به عنوان مجموعه بالای یادگیری خود نظارتی در نظر گرفت زیرا هیچ حلقه بازخوردی ندارد، برعکس، یادگیری خود نظارتی سیگنال های نظارتی زیادی دارد که به عنوان بازخورد در فرآیند آموزش عمل می کنند.تکنیک یادگیری بدون نظارت بیشتر بر روی مدل تمرکز می کند و نه بر داده ها در حالی که تکنیک یادگیری خود نظارتی، برعکس عمل می کند. با این حال، روش‌های یادگیری بدون نظارت در خوشه‌بندی و کاهش ابعاد خوب هستند، در حالی که یادگیری خود نظارتی روشی برای کارهای رگرسیون و طبقه‌بندی است.چرا به یادگیری خودنظارتی نیاز داریم؟یادگیری خود نظارتی به دلیل مشکلات زیر که در سایر روش های یادگیری وجود دارد مورد استفاده است: ۱. هزینه بالا: داده های برچسب گذاری شده توسط اکثر روش های یادگیری مورد نیاز است. هزینه               داده های برچسب دار با کیفیت خوب از نظر زمان و هزینه بسیار بالا است. ۲. چرخه عمر طولانی: چرخه حیات آماده سازی داده ها یک فرآیند طولانی در توسعه مدل های                یادگیری ماشین است. این نیاز به تمیز کردن، فیلتر کردن، حاشیه نویسی، بازنگری و بازسازی                مطابق با فریم ورک (framework) آموزشی دارد. ۳. هوش مصنوعی عمومی: چارچوب یادگیری خود نظارتی یک گام به شناخت انسان در ماشین‌ها                نزدیک‌تر است.یادگیری خود نظارتی، یادگیری پیش بینی کننده استیادگیری خود نظارتی سیگنال‌های نظارتی را از خود داده‌ها به دست می‌آورد و اغلب از ساختار زیربنایی (underlying structure) در داده‌ها استفاده می‌کند. تکنیک کلی یادگیری خود نظارتی پیش بینی هر بخش (یا ویژگی) مشاهده نشده یا پنهان ورودی از هر بخش مشاهده شده یا پنهان ورودی است.به عنوان مثال، همانطور که در NLP معمول است، می توانیم بخشی از یک جمله را پنهان کنیم و کلمات پنهان را از کلمات باقی مانده پیش بینی کنیم. ما همچنین می توانیم فریم های گذشته یا آینده را در یک ویدیو (داده های پنهان) از فریم های فعلی (داده های مشاهده شده) پیش بینی کنیم. از آنجایی که یادگیری خود نظارتی از ساختار خود داده استفاده می‌کند، می‌تواند از سیگنال‌های نظارتی متنوعی در روش‌های همزمان (مانند ویدیو و صدا) و در مجموعه‌های داده بزرگ استفاده کند - همه بدون تکیه بر برچسب‌ها.در یادگیری خود نظارتی، سیستم برای پیش‌بینی قسمت‌های پنهان ورودی (به رنگ خاکستری) از قسمت‌های قابل مشاهده ورودی (به رنگ سبز) آموزش داده می‌شود.کابرد یادگیری خود نظارتی در شبکه های عصبیبرخی از شبکه های عصبی، به عنوان مثال، رمزگذارهای خودکار (Auto Encoders)، گاهی اوقات ابزار یادگیری خود نظارتی نامیده می شوند. در واقع، شما می توانید رمزگذارهای خودکار را بدون تصاویری که به صورت دستی توسط یک انسان برچسب گذاری شده اند، آموزش دهید. به طور دقیق تر، یک رمزگذار خودکار حذف نویز را در نظر بگیرید که هدف آن بازسازی تصویر اصلی در صورت ارائه یک نسخه نویزدار از آن است. در طول آموزش، شما در واقع تصویر اصلی را دارید، با توجه به اینکه مجموعه داده ای از تصاویر خراب نشده دارید و فقط این تصاویر را با مقداری نویز خراب می کنید، بنابراین می توانید فاصله بین تصویر اصلی و نویزدار را جایی که تصویر اصلی، سیگنال نظارتی است محاسبه کنید. از این نظر، رمزگذارهای خودکار ابزارهای یادگیری خود نظارتی هستند، اما بیشتر متداول است که بگوییم رمزگذارهای خودکار ابزارهای یادگیری بدون نظارت هستند، بنابراین یادگیری خود نظارتی نیز برای اشاره به تکنیک های یادگیری بدون نظارت استفاده شده است.چالش های یادگیری خود نظارتی ۱. دقت: اگرچه پیش‌فرض تکنیک یادگیری خود نظارتی استفاده نکردن از داده‌های برچسب‌گذاری‌شده                 است، اما نقطه ضعف آن رویکرد این است که شما یا به مقادیر زیادی داده برای تولید برچسب‌های                 شبه دقیق نیاز دارید یا در مورد دقت به خطر می‌افتید. توجه به این نکته مهم است زیرا برچسب‌های                 نادرست تولید شده هنگام آموزش در مراحل اولیه نتیجه معکوس خواهند داشت. ۲. کارایی محاسباتی: به دلیل مراحل متعدد آموزش (۱. تولید برچسب های شبه ۲. آموزش بر روی                 برچسب های شبه) زمان صرف شده برای آموزش یک مدل در مقایسه با یادگیری تحت نظارت زیاد                 است. همچنین، رویکردهای فعلی یادگیری خود نظارتی به حجم عظیمی از داده ها برای دستیابی به                 دقت نزدیک به همتایان یادگیری تحت نظارت نیاز دارد.</description>
                <category>مانیتو</category>
                <author>محمد حسین قفقازیان</author>
                <pubDate>Sat, 02 Jul 2022 10:46:18 +0430</pubDate>
            </item>
                    <item>
                <title>کشف اشیاء در تصویر R-CNN و Fast R-CNN و Faster R-CNN و YOLO</title>
                <link>https://virgool.io/moneytoo/%DA%A9%D8%B4%D9%81-%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1-%D8%AF%D8%B1-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-r-cnn-%D9%88-fast-r-cnn-%D9%88-faster-r-cnn-%D9%88-yolo-qv3czowuty7m</link>
                <description>یکی از مسائل بینایی ماشین(computer vision) مساله کشف اشیاء(object detection) است. حل این مساله به معنی پیدا کردن اشیاء مختلف در یک تصویر و تعیین یک مرز برای آن شکل است. تصویر زیر نمونه ای از خروجی این مساله است.نمونه ای از خروجی مساله کشف اشیاءایده اولیه برای حل این مساله اینست که فرض کنیم یک شبکه عصبی کانولوشنی(CNN) داشته باشیم که برای دسته بندی تصاویر آموزش دیده است. حالا می توانیم یک پنجره کوچک را روی تصویر بلغزانیم هر بخش از تصویر را به  شبکه مفروض بدهیم و ببینیم آیا یک شی در آن پنجره قرار دارد یا خیر؟ و اگر پاسخ مثبت است آن شی چیست؟ و از آنجا که اشیاء ممکنست به دلیل جلو و عقب بودن اندازه های مختلفی داشته باشند می توانیم با پنجره های با اندازه های مختلف همین کار را تکرار کنیم.ایراد اصلی که بر ایده خام بالا وارد است هزینه بسیار بالای محاسباتی است.روش R-CNNایده اصلی این روش که در سال ۲۰۱۴ توسط Ross Girshick و همکارانش در (اینجا) مطرح شد اینست که به جای اینکه تمام قسمت های تصویر را برای پیدا کردن اشیاء بگردیم ابتدا نواحی از تصویر که احتمال وجود یک شی در آن ها وجود دارد را پیدا کنیم و سپس همان ایده ساده بالا رو فقط روی آن نواحی پیاده کنیم.فرآیند کلی روش R-CNNاین روش از سه ماژول تشکیل شده:ماژول تولید نواحی پیشنهادی مستقل از اشیاءیک شبکه عصبی بزرگ کانولوشنی که از هر ناحیه بردار ویژگیهایی با طول ثابت استخراج می کندتعدادی دسته بند ماشین بردار پشتیبان خطی(SVM) برای هر کلاس از اشیاءبرای تعیین نواحی پیشنهادی روش‌های مختلفی ارائه شده است که در این مقاله از روش جستجوی انتخاب کننده(selective search) استفاده شده است که در (اینجا) مطرح شده است. طراحی این الگوریتم به نحویست که شامل این ملاحظات می شود: ۱) اشیاء ممکنست در هر مقیاسی وجود داشته باشند، بنابراین باید الگوریتم طوری طراحی شود که ناحیه مربوط به هر شی با هر مقیاسی را تشخیص بدهد. ۲) تمایز نواحی میتواند به دلایل مختلفی مثل تفاوت رنگ یا زمینه یا فاصله مکانی یا موارد دیگر باشد. بنابراین به جای اینکه فقط یکی از اینها در نظر گرفته شود،  به نحوی از تمام این ها استفاده می شود. ۳) با توجه به کاربردهای این روش در کشف و تشخیص اشیاء نباید هزینه محاسباتی زیادی داشته باشد و نسبتا باید سریع باشد. جستجوی انتخاب کننده یک روش حریصانه است و به این صورت عمل می کند که ابتدا به روشی که در (اینجا) آمده است یک تعدادی ناحیه اولیه را مشخص می کند و سپس بر اساس میزان شباهتی که هر ناحیه با نواحی مجاورش دارد، هر ناحیه را با شبیه ترین ناحیه مجاور آن ادغام می کندو این کار را تا آنجا که کل تصویر در یک ناحیه ادغام شود ادامه می دهد.شبه کد الگوریتم حریصانه جستجوی انتخاب کنندهبرای اندازه گیری میزان شباهت بین نواحی ۴ نوع شباهت اندازه گیری شده و از ترکیب خطی این ۴ نوع شباهت یک معیار شباهت کلی بین نواحی بدست آمده است. این معیارها مربوط به ترکیب رنگ و زمینه و اندازه و میزان فیت شدن دو ناحیه به همدیگر است.بعد از تعیین نواحی پیشنهادی که حدود ۲۰۰۰ ناحیه است، هر ناحیه برای استخراج ویژگیها به شبکه ImageNet که توسط Alex Krizhevsky و همکارانش در (اینجا) مطرح شده بود، داده می‌شود. ساختار این شبکه به شکل زیر است که البته لایه آخر شبکه کار کلاس بندی را انجام میدهد در اینجا حذف می شود و بردار ۴۰۹۶تایی از ویژگیها بدست می آید.شبکه ImageNet برای استخراج ویژگی های نواحی پیشنهادیبا توجه به اینکه ابعاد تصویر ورودی به این شبکه باید مقدار ثابتی داشته باشد، در این مقاله از کشیدن تصویر و تغییر ابعاد برای اندازه کردن آن استفاده شده است که نمونه هایی از آن در شکل زیر قابل مشاهده است. ضمن اینکه می شود از اضافه کردن حاشیه نیز به جای کشیدن تصویر استفاده کرد.نمونه هایی از تصاویر کشیده شده برای تطبیق به ورودی شبکه ImageNetنهایتا نیز از این بردار ویژگیهای با طول ثابت به عنوان ورودی به تعدادی ماشین بردار پشتیبان که برای دسته بندی هر نوع از اشیاء بهینه شده اند داده می شوند. البته به جای این کار می شود از یک لایه softmax استفاده کرد که در مقاله نشان داده شده است که روش بردار پشتیبان عملکرد مناسب تری دارد.ایراداتی که برای این روش توسط نویسنده مقاله در مقاله بعد مطرح شده است عبارتند از: ۱) چند مرحله ای بودن فرآیند آموزش مدل. ۲) هزینه بالای آموزش مدل. ۳) کند بودن عملکرد مدل.روش Fast R-CNNاین روش نیز توسط Ross Girshick یک سال بعد از روش بالا در (اینجا) مطرح شد. ایده کلی این روش در شکل زیر آمده است:فرآیند کلی روش Fast R-CNNورودی این معماری تصویر کامل و مجموعه ای از نواحی پیشنهادی(RoI: Region of Interest) است. ابتدا کل تصویر توسط یک شبکه عصبی کانولوشنی از پیش آموزش دیده مثل همان ImageNet که در مدل قبلی استفاده شده داده می شود تا یک conv feature map از کل تصویر بدست بیاید. در واقع مدل ImagNet تا قبل از لایه های fully connected آن مورد استفاده قرار می گیرد و آخرین لایه max pooling  با لایه RoI pooling به ازاء هر ناحیه پیشنهادی جایگزین می شود تا یک بردار ویژگیهای با طول ثابت بدست آید.لایه ROI Poolingلایه RoI pooling از max pooling برای تبدیل ویژگی های داخل هر ناحیه به یک شکل دو بعدی با ابعاد ثابت استفاده می کند. این لایه هر ناحیه پیشنهادی را به تعدادی پنجره با ابعاد ثابت تقسیم می کند و در هر پنجره ماکسیمم مقدار ویژگیها را انتخاب می کند. نمونه ای از این عملیات برای تبدیل به پنجره ۲در۲ به صورت شکل زیر است:لایه RoI pooling - مرجعاگر ابعاد ناحیه پیشنهادی h*w باشد و ابعاد نهایی مورد نیاز H*W باشد ابعاد تقریبی پنجره ها h/H*w/W خواهد بود.بعد از این لایه هم دو لایه fully connected در کنار هم یکی برای دسته بندی اشیاء به همراه softmax و دیگری برای محل قرار گیری شیء به عنوان boundary box regressor استفاده می شود.روش Faster R-CNNاین روش توسط Shaoqing Ren در سال ۲۰۱۶ در (اینجا) مطرح شد. معماری کلی این مدل به صورت شکل زیر است.مدل Faster R-CNNاین مدل از دو ماژول تشکیل شده است. ماژول اول یک شبکه عصبی عمیق کانولوشنی که نواحی پیشنهادی را مشخص(RPN: Region Proposal Network) می کند و ماژول دوم همان Fast R-CNN است که از نواحی پیشنهادی بدست آمده استفاده می کند.در اینجا دو ایده مورد استفاده قرار گرفته است. ایده اول برای حرکت دادن پنجره روی کل تصویر برای پیدا کردن نواحی پیشنهادی و ایده دوم برای پیدا کردن چند شی که دارای مرکز یکسانی در یک خانه هستند.ایده اول برگرفته از مقاله OverFeat است. برای توضیح این ایده ابتدا به نحوه پیاده سازی لایه fully connected با استفاده از لایه کانولوشن میپردازیم.پیاده سازی لایه fully connected با استفاده از کانولوشن و ایده اعمال این شبکه روی تصاویر بزرگتردر صورتی که بخواهیم یک تنسور n*n*c را که از کانولوشن لایه های قبلی بدست آمده به یک لایه fully connected بدهیم که دارای k پرسپترون است می توانیم از k فیلتر n*n استفاده کنیم. که در نتیجه به همان ابعاد میرسیم. در شکل زیر نمونه این کار قابل مشاهده است. البته در شکل اول آخرین لایه باید یک soft max با ۴ خروجی باشد.شبکه پیاده سازی شده با fully connectedشبکه پیاده سازی شده با لایه کانولوشنبنابراین به این طریق می توانیم کل شبکه را به صورت کانولوشنی پیاده سازی کنیم و در نتیجه بسیاری از محاسبات را به اشتراک گذاشته و عملکرد شبکه را برای اجرا رو GPU بهینه کنیم.اما ایده مقاله OverFeat به این صورت است که اگر ما یک شبکه کانولوشنی داشته باشیم که بطور مثال روی ابعاد ۱۴*۱۴ آموزش دیده است و خروجی ۱*۱ به ما میدهد را روی یک تصویر ۱۶*۱۶ اعمال کنیم خروجی آن به صورت ۲*۲ خواهد بود و این مثل اینست که ما یک پنجره ۱۴*۱۴ را روی تصویر ۱۶*۱۶ لغزانده باشیم و به ازاء هر پنجره خروجی را بدست آورده باشیم. بنابراین با این شیوه به جای لغزاندن پنجره روی تصویر با یکبار گذراندن تصویر از شبکه می توانیم خروجی را به ازاء پنجره های مختلف تصویر بدست بیاوریم.ایده اعمال شبکه کانولوشنی آموزش دیده روی تصاویر کوچکتر روی تصاویر بزرگترایده استفاده از Anchor boxبرای توضیح ایده دوم ابتدا در مورد برچسب داده های آموزش یک مقدار توضیح میدهیم. فرض کنید ما یک تصویر داریم که آن را به تعداد خانه کوچکتر مثلا ۱۹*۱۹ خانه تقسیم کرده ایم. در خروجی مدل به ازاء هر خانه کوچک یک بردار شامل احتمال وجود شی در آن خانه و مختصات نقطه گوشه سمت چپ بالای تصویر و طول و عرض آن که مجموعا ۵ عدد می شود و به اندازه k+1 درایه دیگر برای k کلاس از شیاء و یکی هم برای زمینه که به صورت یک داغ نشان می دهد شی مورد نظر مربوط به کدام دسته است. پس در مجموع برای هر کدام از ۱۹*۱۹ خانه یک بردار ۵+(k+1) بعدی خواهیم داشت.اگر یک شی در چند خانه قرار بگیرد فقط درایه اول در خانه ای ۱ خواهد بود که مرکز تصویر در آن قرار دارد.نمونه بردار خروجی به ازاء هر کدام از خانه های یک تصویر برای سه کلاس از اشیاءمشکلی می تواند پیش بیاید اینست که مرکز دو شی در یکی از این خانه ها واقع شود مانند شکل زیر.نمونه ای قرار گرفتن مرکز دو شی متفاوت در یک خانه از تصویربرای حل این مشکل ایده ارائه شده به این صورت است که می توانیم از تعدادی anchor box استفاده کنیم که هر کدام از آنها مرکزشان در مرکز خانه قرار می گیرد و یک مقیاس و نسبت ابعاد متفاوتی دارند و به ازاء هرکدام از این anchor box ها در بردار بالا شبیه آن را به ادامه بردار اضافه کنیم. در مقاله Faster R-CNN از ۹ Anchor box متفاوت استفاده شده است.نمونه ای از anchor box هابنابراین اگر بطور مثال دو anchor box داشته باشیم به ازاء هر خانه از تصویر برداری شبیه شکل زیر خواهیم داشت.نمونه ای از بردار خروجی برای دو anchor boxبرای آموزش شبکه RPN به ازاء هر Anchor box  در هر خانه از تصاویر آموزشی عدد صفر یا یک اختصاص می دهیم. عدد ۱ را در حالت به یک anchor box اختصاص می دهیم:‌۱) در صورتی که anchor box مورد نظر بیشترین IoU را با محدوده واقعی آن شی داشته باشد. ۲) درصورتی که anchor box مورد نظر دارای IoU بالاتر از ۰.۷ با محدوده واقعی شی داشته باشد.برای محاسبه IoU نیز از رابطه زیر استفاده می شود: تابع خطا(loss) مورد استفاده نیز به صورت زیر است:تابع خطا (loss) برای آموزش شبکه RPNبخش اول این تابع مربوط به خطای کلاس بندی و بخش دوم مربوط به خطای ناحیه تشخیص داده شده است. چون از این شبکه برای بخش fast R-CNN هم می خواهیم استفاده کنیم دو روش برای اشتراک گذاری وجود دارد. روش اول اینست که اول برای RPN آموزش داده شود و سپس برای fast R-CNN و این کار تکرار شود که در مقاله مذکرو همین روش مورد استفاده قرار گرفته است. روش دیگر هم اینست که همزمان با هم با خطای هر دو ماژول این ضرایب اصلاح شوند.مقایسه عملکرد این سه روش در (اینجا) به صورت زیر است:مقایسه روشهای R-CNN و Fast R-CNN و Faster R-CNNروش YOLOاین مقاله که در سال ۲۰۱۶ توسط Joseph Redmon ارائه شده است تحت عنوان you only look once تلاش دارد که مدلی یکپارچه و در لحظه(real time) برای مساله کشف اشیاء ارائه کند. مدل هایی که تا به حال مطرح شده بودند یک دسته بند را روی بخش های مختلف تصویر که در واقع همان نواحی پیشنهادی هستند اعمال می کنند و در مورد وجود شی در آن ناحیه تصمیم می گیرند. اما هدف در این مقاله اینست که شما فقط یکبار به تصویر نگاه کنید و اشیاء را تشخیص دهید.در این سیستم یک شبکه کانولوشنی همزمان جایگاه و نوع اشیاء را همانطور که در شکل زیر قابل مشاهده است تشخیص می دهد.مدل تشخیص اشیاء YOLOاولین امتیاز این مدل سرعت بالای آن است که بدلیل وجود مسیر یکپارچه تشخیص در ان است به نحوی که مدل پایه آن ۴۵ فریم در ثانیه را می تواند پردازش کند و مدلسریع آن تا ۱۵۰ فریم در ثانیه را می تواند تشخیص دهد. از سوی دیگر میانگین دقت این مدل نسبت به مدل های در لحظه دیگر تقریبا دو برابر است.اتفاقی که در این مدل می افتد اینست که تصویر به تعداد پنجره تقسیم می شود و برای هر پنجره همزمان احتمال وجود شی در anchor box های آن پنجره و احتمال مربوط به نوع شی محاسبه می شود و از ترکیب این دو نتیجه کلی حاصل می شود.کشف پنجره ها و احتمال وجود اشیاء در هر پنجره در مدل YOLOبنابراین اگر تصویر به S*S پنجره تقسیم شود به ازاء هر پنجره مطابق برداری که برای نمونه Anchor box در مدل قبل ارائه شد یک بردار B*5+C خواهیم داشت که B تعداد anchor box ها یا bounding box ها و C تعداد کلاس ها است. عدد ۵ هم شامل احتمال حضور شی و مختصات مرکز و طول و عرض محدوده شی است.در این مقاله برای ۲ نوع انکرباکس و ۲۰ کلاس آزمایش انجام شده و تعداد پنجره ها هم ۷ در ۷ است بنابراین خروجی مدل به صورت ۷در۷در۳۰ خواهد بود.ساختار شبکه کانولوشنی مورد استفاده از شبکه GoogLeNet الهام گرفته شده است که ساختار آن در شکل زیر آمده است.ساختار شبکه کانولوشنی مورد استفاده در مدل YOLOاز آنجا که برای یک شی ممکنست حاشیه های متفاوتی تشخیص داده شود برای انتخاب یکی از آنها به عنوان نتیجه نهایی از روش Non-max suppression استفاده می شود که در ادامه به توضیح آن می پردازیم.روش NMS: Non-max suppressionورودی این روش تعدادی مرز بسته و احتمال وجود اشیاء متناظ با آنها و یک حد آستانه برای میزان همپوشانی و خروجی لیستی از نواحی فیلتر شده است.الگوریتم به این صورت است:ابتدا ناحیه ای که بیشترین احتمال حضور اشیاء را دارد انتخاب و به لیست فیلتر شده ها اضافه می کنیم.در مرحله بعد هر ناحیه ای که IoU بیشتر از حد آستانه با این ناحیه منتخب را داشته باشد را حذف می کنیم.دوباره این دو مرحله را تکرار می کنیم تا ناحیه دیگری باقی نماند.نمونه ای از کد مربوط به پیاده سازی این روش را می توانید(اینجا) ببینید.الگوریتم روش Non-max suppressionنمونه عملکرد این روش به صورت زیر خواهد بود:نتیجه عملکرد روش Non-max suppressionالبته این روش می تواند یک اشکالی داشته باشد زمانی که چند شی در موقعیت های مشابهی قرار داشته باشند. مثلا در شکل زیر دو موقعیت با احتمال اطمینان حضور ۰.۸ ممکنست کاملا حذف شوند.که یک ایده برای رفع این مشکل اینست که به جای حذف کامل این نواحی میزان اطمینان حضور شی در آنها را به IoU تقلیل دهیم که به این روش soft Non-max suppression گفته می شود. که در این صورت شکل بالا به صورت زیر در می آید.مقایسه این دو الگوریتم به صورت زیر خواهد بود:الگوریتم NMS و soft-NMSیک مقایسه عملکردی بین روش YOLO و Fast R-CNN در خود مقاله انجام شده که به صورت زیر است:لیست مقاله های مورد استفاده در این نوشتار به شرح ذیل است:R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014.R. Girshick, “Fast R-CNN,” in IEEE International Conference on Computer Vision (ICCV), 2015.S. Ren, K. He, R. Girshick, and J. Sun. Faster r-cnn: Towards real-time object detection with region proposal networks.P. Sermanet, D. Eigen, X. Zhang, M. Mathieu, R. Fergus, and Y. LeCun. Overfeat: Integrated recognition, localization and detection using convolutional networks.Redmon, J., Divvala, S., Girshick, R., &amp; Farhadi, A. (2016). You only look once: Unified, real-time object detection. In Proceedings of the IEEE conference on computer vision and pattern recognition </description>
                <category>مانیتو</category>
                <author>مصطفی امیری</author>
                <pubDate>Sun, 29 May 2022 19:11:06 +0430</pubDate>
            </item>
                    <item>
                <title>دسته‌بندی(classification) و خوشه‌بندی(clustering)؛ مفاهیم و تفاوت‌ها</title>
                <link>https://virgool.io/moneytoo/%D8%AF%D8%B3%D8%AA%D9%87-%D8%A8%D9%86%D8%AF%DB%8Cclassification-%D9%88-%D8%AE%D9%88%D8%B4%D9%87-%D8%A8%D9%86%D8%AF%DB%8Cclustering-%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-%D9%88-%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D9%87%D8%A7-moyiwkk4tb2u</link>
                <description>دو مفهوم بسیار پرکاربرد در علم داده، یادگیری ماشینی و داده کاوی مفاهیم دسته‌بندی و خوشه‌بندی است. ابتدا با تعریف این دو مفهوم آشنا می‌شویم:دسته‌بندی: ایجاد و ساخت یک مدل برای پیش‌بینی دسته(برچسب) مربوط به یک داده جدید. به طور مثال یک مدل ساخته می‌شود تا بتواند با دریافت اطلاعات یک فرد مشخص کند که این مفرد مبتلا به یک بیماری مشخص هست یا نه؟خوشه‌بندی: تقسیم مجموعه‌ای از داده‌ها به زیر مجموعه‌هایی به طوری‌که داده‌های داخل هر زیرمجموعه بیشترین شباهت را به هم و داده‌های داخل مجموعه‌های مختلف بیشترین تفاوت را از هم داشته باشند. به طور مثال مجموعه‌ای از متون را طی فرآیند خوشه‌بندی می توان تقسیم‌بندی کرد به طوری که متن‌هایی که دارای موضوعات مشابهی هستند در یک مجموعه قرار بگیرند.حالا که با تعریف این دو مفهوم آشنا شدیم خوبست کمی دقیق‌تر به تفاوت‌های این دو مفهوم توجه کنیم.یکی از تفاوت‌ها در نوع مساله ایست که با آن مواجه هستیم. در مساله دسته‌بندی قرار است با داده جدیدی مواجه شویم و به آن یک برچسبی(دسته‌ای) را از بین برچسب‌هایی(دسته‌هایی) که از قبل مشخص هستند بر اساس داده‌هایی که قبلا مشاهده شده‌اند اختصاص بدهیم ولی در مساله خوشه‌بندی تعدادی داده مشخص وجود دارد و صرفا قرار است این داده‌ها در گروه‌هایی که لزوما ماهیت و حتی تعداد آن ها برای ما مشخص نیست خوشه‌بندی شوند.یک مساله دسته‌بندی می‌تواند به این صورت باشد که تصویر یک عدد دستنویس به ماشین داده شود و از آن بخواهند که براساس تصاویری که قبلا دیده است مشخص کند که این تصویر چه عددیست اما یک مساله خوشه‌بندی مشابه می‌تواند به این صورت باشد که تعدادی تصویر اعداد دستنویس به ماشین داده شود و از آن خواسته شود که این تصاویر را به گروه‌هایی که با هم مشابه هستند تقسیم کند. حالا این تقسیم ممکنست بر اساس مشابهت دست خط ها اتفاق بیفتد و ممکنست بر اساس مشابهت بین آن چه نوشته شده است و مثلا تمام تصاویری که عدد ۲ در آن‌ها نوشته شده است در یک دسته قرار بگیرند و البته بدون آن که برچسب خاصی به این داده‌ها زده شود.تفاوت دیگر در نوع یادگیری ماشینی مورد استفاده در این دو فعالیت است. یادگیری ماشینی مورد استفاده در دسته‌بندی از نوع نظارتی(supervised) و در خوشه‌بندی از نوع غیرنظارتی(unsupervised) است. به این معنی که در دسته بندی ابتدا یک مدل بر اساس داده‌هایی که از قبل توسط انسان برچسب(دسته) آن ها مشخص است آموزش داده می‌شود و سپس مدل آموزش داده شده برای پیش‌بینی دسته داده‌های جدید مورد استفاده قرار می‌گیرد اما در خوشه‌بندی مرحله آموزش مدل را نداریم و فقط با یک الگوریتم و با استفاده از ویژگی‌هایی از درون خود داده‌ها و بدون نیاز به داده‌های برچسب گذاری شده باید خوشه‌بندی انجام شود.[تفاوت یادگیری نظارتی و غیرنظارتی]از دیگر تفاوت‌ها می‌شود به ماهیت خروجی این دو فعالیت اشاره کرد. در دسته‌بندی خروجی مشخص است که یکی از برچسب‌هاست ولی در خوشه‌بندی خروجی فقط تعدادی خوشه‌ است که اصلا از قبل مشخص نیست و حتی ممکنست تعداد آن ها را هم از قبل ندانیم.دسته بندی یک فرآیند دو مرحله‌ای شامل آموزش و تست است ولی خوشه بندی یک فرآیند یک مرحله‌ایست.معمولا فعالیت دسته‌بندی پیچیدگی بیشتری نسبت به خوشه‌بندی دارد.خلاصه تفاوت‌های دسته‌بندی(classification) و خوشه‌بندی(clustering)تصویر زیر تفاوت این دو فعالیت را به خوبی نشان می‌دهد. در مثال دسته‌بندی هدف این است که مشخص شود هر تصویر مربوط به کدام حیوان است و فرض می کنیم که انواع حیوانات را از قبل می‌شناسیم ولی در مثال خوشه‌بندی هدف این است که مثلا تصاویر در دو دسته خوشه‌بندی شوند که در این تصویر پرندگان و پستانداران را از هم جدا کرده است که البته این بر چسب پرنده و پستاندار هم توسط ماشین گذاشته نمی‌شود و فقط داده‌های مشابه در یک دسته قرار می‌گیرند.تفاوت دسته‌بندی(classification) و خوشه‌بندی(clustering) از سایت بیسمارتاز انواع روش‌های دسته‌بندی می‌شود به k نزدیکترین همسایه(KNN)، بیز ساده(naive bayes)، قاعده‌محور(rule-based)، ماشین بردار پشتیبان(SVM)، شبکه‌های عصبی(NN) و شبکه‌های باور بیزی(BBN) و از انواع روش‌های خوشه‌بندی می‌شود به میانگین k خوشه(k-mean)، روشهای سلسله مراتبی(hierarchical)، روشهای تراکم محور(density based) و ناحیه بندی محور(grid-based) اشاره کرد.</description>
                <category>مانیتو</category>
                <author>مصطفی امیری</author>
                <pubDate>Sat, 26 Jun 2021 11:16:40 +0430</pubDate>
            </item>
            </channel>
</rss>