به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

+1 امتیاز

با سلام خدمت دوستان گرامی و تشکر از سایت خوبتون
چند تا سوال داشتم ممنون میشم پاسخ بدین
1- اگه بخواین به جای momentum از adadelta استفاده کنیم تا loss سریعتر همگرا بشه چجوری باید تنظیماتش و انجام بدیم ؟ دستورش چی هست ؟
2- من روی تعداد نزدیک 700 تصویر روی مدل الکس نت فابن تیون انجام دادم و فقط لایه ی آخر و train کردم اما loss از 1.2 کمتر نمیشه lr هم کاهش دادم اما فایده نداشت میخواستم ببینم احتمال هست با تغییر سیاست آپدیت وزن ها این مقدار کاهش پیدا کنه ؟؟ و اینکه اگر مثلا در 200 تکرار loss از یه مقداری کمترنشد و نوسان داشت آیا ممکنه اگه تعداد تکرار و زیاد کنم مثلا بالای 1000 lاونوقت کم بشه ؟؟
3- تعداد تصاویرم چون خیلی کم بود از تکنیک های data augmentation استفاده کردم و هر عکس و چهار بار چرخوندم . ایا ممکنه عدم کم شدن loss به دلیل تعداد کم تصاویر هست و لازمه باز هم از روش تغییر رنگ و شفافیت و... داده ها رو زیاد تر کنم ؟؟
از مقدار دهی اولیه ی xavier هم استفاده کردم اما تغییری حاصل نشد .
4- آیا امکانش هست اگه به جای alxnet از googlenet استفاده کنم با این تعداد تصاویر loss کاهش پیدا کنه ؟؟؟

توسط (111 امتیاز)
بله تصاویر و به دو دسته ی train  و valid  تقسیم کردم و تبدیل به lmdb  کردم و همین loss  که داخل log برای هر ایتریشن میده منظورم هست
caffe هم مقدار زیان آموزش و هم تست رو میده. اما در هر دو صورت احتمال ها رو گفتم.
خیلی ممنون ، تصاویر و با تغییر وضوح و رنگ نغییر میدم تا تعدادشون زیاد تر بشه ببینم چی میشه

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

سلام
علاوه بر صحبتهایی که جناب Farahnak کردن من هم این نکات رو اضافه میکنم .
مومنتوم در Adadelta هم استفاده میشه . adadelta پارامترهای مختلفی داره که باید ست بشن تا به حالت بهینه برسید. شما میتونید از قبل با adagrad یا inv استفاده کنید که پارامترهای کمی دارن و تقریبا همه چیز خودکار انجام میشه.
اینکه لاس کاهش پیدا نمیکنه دلایل زیادی میتونه داشته شما باید قدم به قدم سعی کنید مسائلی که باعث این مشکل میشه رو برطرف کنید.
یک مشکل مقداردهی اولیه نامناسب هست. که با Xavier تا حد خیلی زیادی میشه برطرفش کرد .
یک مشکل میتونه نرخ یادگیری بالا باشه
یک مشکل میتونه مقدار regularization بالا باشه .
یک مشکل میتونه اورفیت کردن شبکه باشه (پارامتر زیاد، داده کم)
یک مشکل میتونه Underfit کردن شبکه باشه که مقدار regularization بالا و همینطور استفاده زیاد از dropout و یا حتی کافی نبودن پارامترها باشه
در فاین تونینگ میتونه بخاطر تفاوت بین دیتای جدید و دیتای قبلی باشه و همینطور کم بودن دیتای جدید. در این حالت اول با فریز لایه ها استارت زده میشه بعد اگر تفاوت بین دیتاست ها زیاد باشه لایه ها ازاد و تعداد لایه های بیشتری از ابتدا مقداردهی اولیه میشن . نرخ یادگیری هم کاهش پیدا میکنه و عوضش ضریب (همون lr_mult یا lr_blob ها ) در لایه های اخر برای تسریع افزایش پیدا میکنن .
یک نکته مهم دیگه هم اینه که ممکنه در saddle point باشید برای همین لاس تغییر چندانی نکنه و با آموزش بیشتر از اون ناحیه خارج بشید.

در زمان ساخت دیتای جدید نوع اگمنتیشن مهمه . مثلا شما اگر تصاویرتون رو نرمالایز کنید و مثلا zeropad کنید و بصورت random crop استفاده کنید و دیتاستتون هم مثلا 60هزار تصویر داشه باشه ممکنه به مراتب دقت خیلی بهتری از همون دیتاست که این اعمال استفاده نشده و فقط تصاویر rotate شده باشن چند بار و دیتاست شما شده باشه 400 هزار تصویر! ارائه میده . پس کیفیت کاری که انجام میدید هم مهمه.
در مورد سوال آخر هم هرچقدر مدل شما عظیم تر باشه (تعداد پارامتر بیشتر باشه) دیتای بیشتری نیاز هست و هرچند ر صورت وجود دیتای مناسب همگرایی سریعتر اتفاق می افته نسبت به یک شبکه با تعداد پارامتر کمتر ، اما دردسرهاش هم بیشتره.
در مورد گوگل نت تعداد پارامترش از پارامتر الکس نت کمتره . الکس نت 60 میلیون پارامتر داره اما گوگل نت اگر اشتباه نکرده باشم 4 یا 5 میلیون پارامتر (آخرین ورژنش رو چک نکردم ببینم بیشتر یا نه ) . اما نکته ای که هست اینه که گوگل نت معماری عجیب و غریبی داره و تنظیم و استفاده اون تو فاین تونینگ خصوصا زمانی که دیتاست ها متفاوت باشن ممکنه سخت تر باشه . معماری الکس نت و VGGNet تو فاین تونینگ ها خیلی زیاد استفاده میشن چون معماری ساده و سر راستی دارن و شما مشخصا میدونید کجا ها رو چه تغییراتی باید بدید حتی اگر هم ندونید تعداد لایه های کم و ماهیت اونها کار رو خیلی ساده میکنه اما این موارد تو گوگل نت صدق نمیکنه.
دقت کنید من نمیگم گوگل نت بده من فقط میگم ، همونطور که قبلا جناب Farahnak هم گفتن استارتتون با الکس نت باشه بهتره چون با پارامترهای ناآشنای کمتری مواجه هستید.
مقاله Deep Image: Scaling up Image Recognition بایدو هم پیدا کنید بخونید خوبه بخش دیتا اگمنتیشنش شاید براتون جذاب باشه . مقاله APAC: Augmented PAttern Classification with Neural Networks هم انتهاش در مورد دیتا اگمنتیشن بخونید بد نیست.
من چیزایی که به ذهنم میرسید رو گفتم حالا نمیدونم چیزی رو جا انداختم یا نه امیدوارم این نکات تو رفع مشکل شما مفید باشه.

توسط (4.3k امتیاز)
انتخاب شده توسط
سلام خیلی خیلی ممنونم بابت توضیحات کاملتون . تشکر
سلام . خواهش میکنم .
...