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

با تشکر

دسته بندی ها

+1 امتیاز

سلام...ممنون میشم این سوالمو به صورت توضیح کامل و دقیق بدید...کار لایه بچ نورمالیزیشن رو میشه با یک مثال توضیح بدید
1-میدونم که برای مشکل covariant shift است ...اما این مشکل چطوری در توده ورودی و خروجی بوجود میاد؟
2-وقتی که میانگین و واریانس رو حساب کرد ، چه اتفاقی می افته؟
2-3 تا پارامتر بتا و گاما چه وظیفه ای دارند؟خوندم که این پارامترها قابل یادگیری اند ...دقیقا یعنی چی و چه چیزی رو یاد میگیرند؟
4-این لایه به چه مقدار زمان آموزش را کاهش میدهد و همچنین چه مقدار دقت را بهبود میدهد؟
5-در پایان الگوریتم نرمال سازی ، اصطلاح scale and shift وجود داره...منظور چه هست؟
ممنون میشم کامل و جامع راهنمایی بفرمایید و همینطور روابط ریاضیش رو هم بفرمایید که چه میکنه...
این سوالات را هم مطالعه کردم
http://qa.deeplearning.ir/2464/لایه-batch-normalization-بچ-نرمالیزیشن

http://qa.deeplearning.ir/548/نرمال-سازی-برای-دستیابی-خروجی-بهتر

توسط (215 امتیاز)
ویرایش شده توسط
سلام
covariate shift بخاطر عملیات ضربی که بین توده ورودی با فیلترها انجام میشه بوجود میاد.
از واریانس و میانگین برای نرمالسازی استفاده میشن .
پارامتر بتا و گاما برای scale و shift استفاده میشن در کفی من یادم میاد بخش نرمالسازی با بخش scale جدا شده بود و تاثیر scale رو میشد براحتی دید . با اینکار بعنوان مثال شما دیگه با مشکل saturationg graident و یا exploding graident مواجه نمیشد .
فکر میکنم به میزان 30 درصد افزایش زمان اموزش نسبت به زمانی که از این استفاده نکنیم داشتیم (البته اینو از قدیم یادم میاد الان باید دوباره تست کنید چون بهینه سازی های مختلف و... داستان رو تغییر میده ) و اینکه چقدر دقت افزایش پیدا میکنه فقط به این بستگی نداره خیلی از پارامترها دخیل هستن اما این لایه همگرایی رو تسریع میکنه و باعث دقت بهتر میشه(البته در شبکه های عمیق خودشون نشون میده در شبکه های کم عمق شاید اصلا محسوس نباشه  اونم بخاطر زیاد نبودن بحث covariate shift هست)

من بعنوان جواب نزدم اینو چون اگر بزنم باید به بقیه سوالها هم جواب بدم و فرصت نیست. اگر چیزی بود اینجا بگو سر فرصت توضیح بیشتر میدم انشاءالله
سلام...ممنونم سید جان...1-آیا لایه بچ نرمالیزیشن فقط بعد از لایه کانولوشن و قبل لایه فعال سازی رلو قرار میگیره؟ (فقط تو این دوتا لایه توده ها دچار تغییر میشوند؟)
2-پارامتر گاما و بتا چه چیزی رو یاد میگیرند ؟ این جملتو  "پارامتر بتا و گاما برای scale و shift استفاده میشن"
متوجه نشدم....خود معنای این scale  و shift  دقیقا به چه چیزی اشاره میکنه؟ ....قراره این پارامترها چه چیزی رو یادبگیرند؟ ....اگر  شکل خاصی هست میشه راهنمایی کنی تا ببینمش دقیق تر بفهمم چی میگه....دستت درد نکنه...
سلام. لایه بچ نرمالیزیشن بعد از کانولوشن و فولی کانکتد قرار میگیره . بله قبل از relu یا هر تابع تبدیل دیگه باید استفاده بشه تا داده ها نرمال شده و بعد وارد تابع غیرخطی بشن. البته سر این قدیم خیلی بحث بود بعضی ها میگفتن بعدش دقت بهتر میگیریم بعضی ها مثل گوگل (و همینطور خودم) قبل رلو استفاده میکردن. امروزه من که دیدم فقط قبل رلو بوده. دقت کن ایده این بوده که داده نرمال شده وارد تابع غیرخطی بشه و نتایج شبکه رو ارائه کنه.
اسکیل یعنی همون ضریب و شیفت هم یعنی انتقال . خیلی ساده بخواییم بگیم با اینا الگوریتم مثلا اگر یک تغییری داده باشه و نتیجه مناسب نبوده باشه میتونه تغییراتی که داده رو برگردونه.
ممنون سید جان...شرمندت ، والا هر کاری میکنم این منظور پارامترهای گاما و بتارو متوجه نمیشم ! تو مقاله اصلی هم نمیدونم منظورش چیه! "Accelerating deep network training by reducing internal covariate shift"  ....
2-لایه بچ نرمالیزیشن برای هر mini batch  میاد و میانگین و واریانس رو برای تمام اون داده های دسته حساب میکنه ، خب مسلما دسته بعدی مقدار میانگین و واریانسش با دسته اولی فرق داره، پس به چه صورت  توزیع داده ها رو حفظ میکنه؟یا اینکه توزیع رو یک عدد ثابت نگه میداره؟
3-در مورد این جمله "covariate shift بخاطر عملیات ضربی که بین توده ورودی با فیلترها انجام میشه بوجود میاد" چرا این اتفاق میفته؟ ...
شرمنده زیاد میپرسم...ممنون
سلام .
گاما و بتا  رو دوتا پارامتر در نظر بگیر که یکی مثل یک ضریب عمل میکنه و بتا رو مثل بایاس در نظر بگیر.
با استفاده از این دوتا بعنوان مثال هر لایه نسبت به ضرایب (بزرگی ، کوچکی) مقادیر لایه قبل خودش بی تفاوت میشه . در حالتی که اینها نبودن مقداردهی اولیه و نرخ یادگیری حساسیت زیادی داشت چرا؟ چون یکسری اعداد بزرگ میشدن یکسری هم کوچیک برای همین شما یه نرخ یادگیری استفاده میکردی یکی یکم ممکن بود مقدارش افزایش پیدا کنه در حالی که یکی دیگه خیلی مقدارش بزرگ میشد و این مشکل ایجاد میکرد. اینها با توجه به بچ داده ای که براشون میاد مقادیرشون کم و زیاد میاد . وزنها و بایاس ها تو شبکه چطور تنظیم میشن؟ اینها هم همونطورن. اگه یک عدد خیلی کوچیک باشه با اون ضریب مقدارش متناسب میشه اگه خیلی بزرگ ست بشه دفعه بعد تنظیم میشه و همه اینها بطور مستقل برای هر لایه انجام میشن. انقدر اینها اموزش میبینن تا نهایتا به یک مقدار مناسب برسن بعد این مقدار مناسب رو ما در زمان تست لحاظ میکنیم برای همین نرمالسازی ها و... اون اسکیل هم مثلا گرادیان وقتی میخواست منتقل بشه میومد اگر خیلی کوچیک بود اندازه اش رو متناسب میکرد که تاثیرش برای لایه های اول ناچیز نباشه. نمیدونم متوجه قضیه ضریب شدی یا نه .
اون متن انگلیسی که نوشتی یعنی تسریع آموزش شبکه عمیق از طریق کاهش تغییرات توزیع داخلی! این شیفتی که اینجا میبینی یعنی جا بجایی . بهت بگن شیفت به راست بده یعنی چی ؟ یعنی به راست حرکت بده. اگه شیفت به چپ بدی یعنی چی ؟ به سمت چپ حرکت دادی. تو برنامه نویسی هم داشتی دیگه اپراتورهای شیفت به راست و چپ تو سی++ و سی و سی شارپ و... هستن. کار بایاس چیه تو شبکه ؟ اجازه انعطاف بیشتر به شبکه رو میده . بتا هم همین نقش رو شاید بشه گفت ایفا میکنه.
مینی بچ ها هم اگه تعدادش سمپلهاش خیلی کم نباشه توزیعشون شبیه به همدیگه اس.   
دقت کن تغییر در توزیع ورودی به این شکل اتفاق می افته . یه صف رو در نظر بگیر 100 نفر پشت سر هم ایستادن با فاصله. اولیه به دومیه میگه مثلا آقا پنیر میخواییم! دومیه به سومیه میگه پنیر میخواییم سومی به چهارمیه میگه اقا خمیر میخواییم! چهارمیه به بعدیش میگه آقا زنجیر میخواییم! و همینطور تا به آخری برسه معلوم نیست چی در میاد! تغییر توزیع بطور ساده یعنی این یعنی در هر لایه اون پیام اولی که میاد به هر دلیلی دستخوش تغییر بشه . تو این شبکه ها بخاطر همین ضرب و جمع و مقدادردهی اولیه و .... باعث میشه که در حالت عادی توزیع ورودی رفته رفته تغییر کنه.
سلام...خیلی ممنونم ازت سید جان که لطف میکنی و وقتت رو در اخیارم قرار میدی...سید جان منظورت ازاین جمله بالا که گفتی  "وزنها و بایاس ها تو شبکه چطور تنظیم میشن؟ اینها هم همونطورن"  همون عملیات بک پروپگیشنه؟
خواهش میکنم . آره منظورم این بود که اینارو مثل همون ها در نظر بگیر. اینکه چطور کار میکنن هم مثل همونها بهشون نگاه کن.
اها...سید جان توی سایت جایی توضیح دادی بک پراپگیشن رو؟
پس فک کنم بخاطر همینه توی فهم این موضوع مشکل دارم ،اخه  خیلی وقته با بک پراپگیشن مشکل دارم...مطلب فارسی هست برای مطالعه؟یا چیزی که ساده توضیحش بده؟  دستت درد نکنه....
بک پراپگیشن ؟ من دو سه سال پیش یک مطلبی نوشته بودم برای شبکه عصبی مصنوعی ولی متاسفانه فرصت نکردم تو سایت بزارم چون در نظر داشتم بخش کانولوشن اون رو هم بنویسم و بعد بزارم (و این رو هم ویرایش کنم ) دیگه فرصت نشد. اگه فکر میکنی بدردت میخوره تو تلگرام پیام بده برات بفرستم

1 پاسخ

+1 امتیاز

سلام.

خب سوالات خیلی تخصصی هست. زیاد ربطی به سوالاتون نداره اما شاید دانستن این موارد برایتون مفید باشه:
- لایه نرمالسازی علاوه بر تمام ویژگی های که دارد به نوعی ویژگی regularization را به شبکه تزریق میکنه یعنی با درصد dropout رابطه داره. اگر این لایه را حذف کنید معمولا باید درصد dropout بالاتری انتخاب کنید و با درنظر گرفتن آن درصد dropout باید پایینتر انتخاب شود.

  • این لایه محاسبات الگوریتم یادگیری را افزایش می دهد و سرعت یادگیری در هر epoch کاهش می یابد ولی با تعداد epoch های کمتری به نتیجه خواهید رسید. در آزمایشات من کاهش زمان محسوسی نسبت به حالتی که این لایه استفاده نشود احساس نشد! زیرا در صورت عدم استفاده از لایه بچ نورمالیزیشن ناچار هستید تعداد epoch را افزایش دهید.

  • من در مورد یک دیتاست نسبتا آسان با استفاده و بدون استفاده از لایه بچ نورمالیزیشن به بالاترین دقت دست یافتم ولی در مورد دیتاست دیگر تنها در صورتیکه از این لایه استفاده شده بود بهترین نتیجه بدست آمد

توسط (103 امتیاز)
...