Optimizers هنگامی که شیب را محاسبه کردیم، می توانیم از این اطلاعات برای تنظیم وزن ها و بایاس ها برای کاهش اندازه گیری ضرر استفاده کنیم. در یک مثال اسباب بازی قبلی، ما نشان دادیم که چگونه می توانیم با موفقیت خروجی تابع فعال سازی نورون (ReLU) را به این روش کاهش دهیم. به یاد بیاورید که ما کسری از گرادیان را برای هر پارامتر وزن و بایاس کم کردیم. در حالی که بسیار ابتدایی است، اما هنوز هم یک بهینه ساز رایج به نام Stochastic Gradient Descent (SGD) است. همانطور که به زودی متوجه خواهید شد، اکثر بهینه سازها
پس انتشار اکنون که ایده ای در مورد نحوه اندازه گیری تأثیر متغیرها بر خروجی یک تابع داریم، می توانیم شروع به نوشتن کد برای محاسبه این مشتقات جزئی کنیم تا نقش آنها را در به حداقل رساندن تلفات مدل ببینیم. قبل از اعمال این در یک شبکه عصبی کامل، بیایید با یک پاس رو به جلو ساده شده تنها با یک نورون شروع کنیم. به جای پس انتشار از تابع از دست دادن برای یک شبکه عصبی کامل، بیایید تابع ReLU را برای یک نورون واحد پس انتشار کنیم و طوری عمل کنیم که گویی قصد داریم خروجی این
گرادیان ها، مشتقات جزئی و قانون زنجیره ای دو تا از آخرین قطعات پازل، قبل از ادامه کدنویسی شبکه عصبی، مفاهیم مرتبط گرادیان ها و مشتقات جزئی هستند. مشتقاتی که تاکنون حل کرده ایم مواردی بوده اند که فقط یک متغیر مستقل در تابع وجود دارد – یعنی نتیجه فقط به x بستگی دارد. با این حال ، شبکه عصبی ما به عنوان مثال از نورون ها تشکیل شده است که دارای ورودی های متعدد هستند. هر ورودی در وزن مربوطه ضرب می شود (تابعی از 2 پارامتر) ، و آنها با بایاس جمع می شوند (تابعی از پارامترهای به
مشتقات تغییر تصادفی و جستجوی وزن ها و سوگیری های بهینه به یک دلیل اصلی مثمر ثمر نبود: تعداد ترکیبات احتمالی وزن ها و سوگیری ها بی نهایت است و برای دستیابی به هر موفقیتی به چیزی هوشمندانه تر از شانس خالص نیاز داریم. هر وزن و سوگیری نیز ممکن است درجات مختلفی از تأثیر بر کاهش داشته باشد – این تأثیر به خود پارامترها و همچنین به نمونه فعلی بستگی دارد که ورودی لایه اول است. سپس این مقادیر ورودی در وزن ها ضرب می شوند، بنابراین داده های ورودی بر خروجی نورون تأثیر می گذارند و بر تأثیری
معرفی بهینه سازی اکنون که شبکه عصبی ساخته شده است، می تواند داده ها را از آن عبور دهد و قادر به محاسبه ضرر باشد، گام بعدی تعیین نحوه تنظیم وزن ها و بایاس ها برای کاهش تلفات است. یافتن روشی هوشمندانه برای تنظیم وزن و سوگیری ورودی نورون ها برای به حداقل رساندن ضرر، مشکل اصلی شبکه های عصبی است. اولین گزینه ای که ممکن است به آن فکر کنید این است که به طور تصادفی وزن ها را تغییر دهید، ضرر را بررسی کنید و این کار را تکرار کنید تا زمانی که با کمترین ضرر یافت شده
محاسبه خطای شبکه با ضرر با یک مدل که به طور تصادفی مقداردهی اولیه شده است، یا حتی مدلی که با رویکردهای پیچیده تر مقداردهی اولیه شده است، هدف ما آموزش یا آموزش یک مدل در طول زمان است. برای آموزش یک مدل، وزن ها و سوگیری ها را تغییر می دهیم تا دقت و اطمینان مدل را بهبود بخشیم. برای این کار محاسبه می کنیم که مدل چقدر خطا دارد. تابع ضرر که به آن تابع هزینه نیز گفته می شود، الگوریتمی است که میزان اشتباه بودن یک مدل را تعیین می کند. ضرر معیار این معیار است. از
توابع فعال سازی در این فصل، به چند مورد از توابع فعال سازی می پردازیم و نقش آنها را مورد بحث قرار می دهیم. ما از توابع فعال سازی متفاوتی برای موارد مختلف استفاده می کنیم و درک نحوه عملکرد آنها می تواند به شما کمک کند تا کدام یک از آنها را به درستی برای کارتان انتخاب کنید. عملکرد فعال سازی به خروجی یک نورون (یا لایه ای از نورون ها) اعمال می شود که خروجی ها را تغییر می دهد. ما از توابع فعال سازی استفاده می کنیم زیرا اگر تابع فعال سازی خود غیرخطی باشد، به شبکه
افزودن لایه ها شبکه عصبی که ما ساخته ایم قابل احترام تر می شود، اما در حال حاضر، ما فقط یک لایه داریم. شبکه های عصبی زمانی “عمیق” می شوند که 2 یا چند لایه پنهان داشته باشند. در حال حاضر، ما فقط یک لایه داریم که در واقع یک لایه خروجی است. اینکه چرا ما دو یا چند لایه پنهان می خواهیم در فصل بعدی آشکار خواهد شد. در حال حاضر، ما هیچ لایه پنهانی نداریم. لایه پنهان یک لایه ورودی یا خروجی نیست. به عنوان دانشمند، داده ها را همانطور که به لایه ورودی تحویل داده می شوند
کدنویسی اولین نورون ها در حالی که فرض می کنیم همه ما در اینجا فراتر از برنامه نویسان مبتدی هستیم، باز هم سعی می کنیم به آرامی شروع کنیم و اولین باری که آنها را می بینیم چیزها را توضیح دهیم. برای شروع، ما از پایتون 3.7 استفاده خواهیم کرد (اگرچه هر نسخه ای از پایتون 3+ احتمالا کار خواهد کرد). ما همچنین پس از نمایش متدهای خالص پایتون از NumPy و Matplotlib برای برخی مصورسازی ها استفاده خواهیم کرد. باید اینطور باشد که نسخه های بسیار متنوعی باید کار کنند، اما ممکن است بخواهید دقیقا با نسخه ما مطابقت
فصل اول – معرفی شبکه های عصبی ما با یک ایده کلی از اینکه شبکه های عصبی چیست و چرا ممکن است به آنها علاقه مند باشید شروع می کنیم. شبکه های عصبی که شبکه های عصبی مصنوعی نیز نامیده می شوند (اگرچه به نظر می رسد در سال های اخیر بخش “مصنوعی” را کنار گذاشته ایم)، نوعی یادگیری ماشینی هستند که اغلب با یادگیری عمیق ترکیب می شوند. ویژگی تعیین کننده یک شبکه عصبی عمیق داشتن دو یا چند لایه پنهان است – مفهومی که به زودی توضیح داده خواهد شد، اما این لایه های پنهان لایه هایی هستند