Close
(0)
شما هیچ موردی در سبد خرید خود ندارید
همه دسته بندی ها
    Filters
    امکانات
    جستجو

    آموزش شبکه عصبی مصنوعی -- از صفر به زبان ساده

    1٬200٬000 ریال
    یک بار برای همیشه ساخت شبکه‌ عصبی مصنوعی (Artificial Neural Network یا به اختصار ANN) را عمیق بیاموزید. خوشحالیم که امروز پس از گذشت ۹ ماه سرانجام این آموزش شبکه عصبی از صفر آماده هدیه به علاقه‌مندان شد. این آموزش علاوه بر تجربه مدرس، وام‌دار محبوب‌ترین کتاب آموزش شبکه عصبی مصنوعی است. استفاده از این مرجع با اجازه رسمی از مؤلف آن صورت پذیرفته است (فیلم معرفی بسته را در سایت هم رویش صفحه آموزش شبکه مصنوعی از صفر حتما ببینید).
    علم و عمل

    پس از دیدن این آموزش می‌توانید با درکی درست و عمیق به ساخت شبکه های عصبی مصنوعی بپردازید. ما در هم‌رویش این دوره را نیز تهیه کرده‌ایم. 

    داستان این آموزش

    پس از تألیف کتاب مهندسی انفجار با هوش مصنوعی متوجه شدیم اغلب کسانی که از این کتاب استفاده می‌کنند نگاه عمیقی به کاری که می‌کنند، ندارند. دانشجویان اغلب هنگام استفاده از کتابخانه‌های پایتون یا رابط کاربری متلب برای ساخت یک شبکه عصبی، از مقادیر پیش‌فرض بدون آگاهی لازم استفاده می‌کنند. دانشجویان متعددی تماس می‌گرفتند که در فلان زمینه فلان مدل را ساختیم ولی نتیجه خوب نیست. حالا کدام پارامتر را بالا و پایین کنیم تا خروجی بهتر شود؟! تصمیم گرفتم یک آموزش ساخت شبکه عصبی از صفر و عمیق تولید کنم. شما باید عمیقا بیاموزید که شبکه‌‌های عصبی مصنوعی چگونه رفتار می‌کنند! آموزشی به زبان ساده که اتفاقاً به جای پرش سریع به یک سورس کد یا کتابخانه و ایجاد یک شبکه به صورت ناآگاهانه، به بیان عمیق مفاهیم بپردازد. یک سال پیش با کتاب Make Your Own Neural Network نوشته Tariq Rashid برخورد کردم. نویسنده این کتاب چقدر ساده مطالب پیچیده را باز می‌کند. آیا من باید چرخ را از نو اختراع می‌کردم؟ با ایشان تماس گرفتم. اجازه خواستم تا از سرفصل و محتوای کتاب خوبشان به عنوان مرجع اصلی در تولید یک مجموعه فیلم‌های آموزشی در ایران استفاده کنم. ایشان با آغوش باز پذیرفتند.  

     

    کتاب «شبکه عصبی خودت را بساز!»

    کتاب شبکه عصبی خودت را بساز نوشته طارق رشید - مرجع اصلی آموزش با اجازه رسمی نویسنده

     

       شروع کردم. درس به درس مطالعه می‌کردم. مطالب لازم را اضافه می‌کردم. ضبط و سپس در شبکه‌های آپارات و اینستاگرام هم‌رویش منتشر می‌کردم. در نیمه راه (شاید پس از انتشار درس ۱۱) متوجه شدم که روند انتشار تدریجی باعث آزار مخاطبان شده و مخاطبان مشتاق هستند که آموزش را یکباره بگذرانند تا بخش‌های قبلی را فراموش نکنند. پس یک فرآیند مطالعه و ضبط فشرده در هم‌رویش آغاز شد. و اکنون این آموزش به صورت یک‌جا از طریق سرورهای هم‌رویش به شما تقدیم می‌شود. هدف ما آموزش شبکه عصبی از صفر بود تا حتی مخاطبان نوجوان، با سوادی در حد دوره اول متوسطه هم بتوانند استفاده کنند. بنابراین مفاهیم ریاضی و محاسباتی گاه تا حد بسیار پایه‌ای شکافته شده‌اند. لطفاً اگر مشکلی در بیان مفاهیم نظری مشاهده کردید در بخش نظرات آموزش اطلاع دهید تا بررسی کنیم.  

    شبکه های عصبی مصنوعی، دستاورد تلاش یک قرن!

    رامون کاخال (Ramón y Cajal) زیست‌شناس در ۱۸۹۹ تصویری از ساختار شبکه عصبی مغز کبوتر را منتشر کرد. یک تحول بنیادی! کاخال اعلام کرد که توانایی یادگیری موجود زنده به دلیل اتصال‌های تازه‌ای است که نورون‌ها (سلول‌های عصبی) با هم ایجاد می‌کنند.  

    رامون-کاخال-و-ترسیم-شبکه-عصبی-کبوتر رامون کاخال - زیست شناس اسپانیایی اتصال نورون‌های مغز را دلیل یادگیری دانست.

      حدود نیم قرن بعد، فرانک روزنبلات (Frank Rosenblatt) روانشناس، یک مدل ریاضی ساده از عملکرد نورون‌ها به نام پرسپترون (Perceptron) پیشنهاد کرد.

     

    فرانک-روزنبلات-و-ماشین-پرسپترون

    فرانک رونبلات ابداع کننده پرسپترون و سازنده نخستین شبکه عصبی سخت افزاری!

     

    پس از کار روزنبلات، حدود سه دهه زمان برد تا یک شبکه عصبی مصنوعی چندلایه از اتصالات نورونی بتواند یادگیری را تجربه کند. الگوریتم پس-انتشار خطا که در این آموزش شبکه عصبی هم به صورت ژرف به آن پرداختیم این معجزه را محقق کرد. البته فرآیند تولید علم معمولاً گسسته نیست. هر کس چوب را از دیگری می‌گیرد و پیش می‌برد. در این حوزه هم محققان بسیاری نقش داشتند که در اینجا مجال معرفی آن‌ها را نداریم. برای اطلاع بیشتر توصیه می‌کنیم مجموعه مقالات تاریخچه شبکه عصبی (+) را بخوانید. امروز به لطف تلاش این محققان، ما شاهد شبکه‌های عصبی عمیق و متنوع هستیم. بینایی کامپیوتر را هم حتی با شبیه‌سازی اعصاب بینایی ممکن کرده‌ایم. اکنون کامپیوترها حتی بهتر از انسان‌ها می‌بینند و چهره‌ها را تشخیص می‌دهند. هوش مصنوعی و در قلب آن شبکه‌های عصبی مصنوعی به دست راست انسان‌ها تبدیل می‌شوند. به یاد داشته باشید که همه این پیشرفت‌ها را کسانی به بار آوردند که موضوع را عمیق بررسی می‌کردند. شما نیز با درک شبکه‌های عصبی به صورت عمیق شاید از کاشفان نسل‌های بعدی شبکه‌های عصبی مصنوعی باشید.  

    آموزش شبکه عصبی در یک نگاه

    ما از صفر شروع کردیم و سعی کردیم مفاهیم پیچیده را آسان بیان کنیم. در درس ۱ فهمیدیم که کامپیوترها لزوما هوشمند نیستند. درس‌های ۲ تا ۵ آموختیم که اگر بنا باشد یک ماشین یادگیرنده داشته باشیم باید چه کنیم. ماشینی که بتوانید پیش‌بینی خطی انجام دهد. یا ماشینی که بتواند کلاس‌بندی داده‌ها بیاموزد. از درس ۶ وارد بحث اصلی شدیم. نخست با هم دیدیم که نورون‌ها و ساختار شبکه عصبی موجود زنده چه نقشی در یادگیری دارد. سپس یک مدل ریاضی از نورون ساختیم. این یعنی یک نورون مصنوعی! در درس‌های ۸ تا ۱۰ توانستیم نورون‌ها را به هم وصل کنیم. شبکه ما اکنون می‌توانست یک ورودی بگیرد و آن را به خروجی تبدیل کند. در اینجا نیاز به مبانی محاسبات ماتریسی داشتیم. به زبان ساده دیدیم که ماتریس چیست و چه نقشی در ساده شدن محاسبات شبکه عصبی دارد. از درس ۱۱ تا ۱۴ به خطای شبکه پرداختیم. از الگوریتم پس انتشار خطا (Back-propagation) گفتیم. اینکه اگر خروجی شبکه ما نسبت به خروجی مورد انتظار دارای خطا باشد،‌ چگونه این خطا باید در شبکه تسهیم شود. یعنی سهم هر نورون و هر اتصال از خطای ایجاد شده چقدر است؟ درس‌های ۱۵ تا ۲۱ به راهکار اصلاح وزن‌ در شبکه عصبی پرداختیم. پس از آنکه هر نورون سهم خود را از خطا گردن گرفت، حالا اتصال‌های خود را باید با چه وزنی تصحیح کند که خروجی بهتر شود؟ در اینجا به مبانی حسابان و مشتق نیاز داشتیم. توضیح دادیم. سپس به شرح الگوریتم گرادیان کاهشی (Gradient Descent) پرداختیم. روشی که سه دهه شبکه‌های عصبی منتظر آن در زمستان هوش مصنوعی در حال فراموشی بودند. سرانجام در درس ۲۲ حالا که ریاضیات شبکه را آموخته بودیم، به خودمان تلنگر زدیم که مغرور نشویم. ما به سادگی نمی‌توانیم هر مساله‌ای و هر داده‌ای را به شبکه عصبی بدهیم و انتظار نتیجه خوب داشته باشیم. در این درس از اصول تعریف مساله و انتخاب متغیرها و مقدار داده‌ها و وزن‌ها گفتیم. شما در پایان این دوره شما آماده ساخت هوشمندانه شبکه‌های عصبی هستید. ما در بسته‌ای جداگانه به ساخت یک شبکه عصبی با کدنویسی از صفر می‌پردازیم. همچنین شما ممکن است بخواهید از سورس کدهای آماده استفاده کنید. یا شاید بخواهید با یک کتابخانه پایتون یا رابط کاربری در متلب اقدام به ساخت شبکه کنید. مهم این است که شما آگاهانه و با درک عمیق شبکه عصبی خواهید ساخت!  

    آموزه‌های اصلی
    • الگوریتم پیش‌خور یا Feed Forward را می‌آموزید.
    • با الگوریتم پس انتشار خطا یا Backpropagation آشنا می‌شوید.
    • الگوریتم گرادیان کاهشی یا Gradient Descent را عمیق می‌آموزید.
    • مهم‌ترین روش‌های نرمال‌سازی داده‌ها را خواهید دید.
    • نکته‌های مهمی در انتخاب وزن‌های آغازین شبکه می‌آموزید.
    • تابع مجموع مربعات خطارا خواهید شناخت.
    • با تابع‌های سیگمویید logistic و tanh آشنا می‌شوید.
    • مشتق‌گیری از تابع خطا با قاعده زنجیری را می‌آموزید.
    • مفاهیم پایه مورد نیاز مانند مشتق و ماتریس هم شرح داده‌ایم.

     

    چرا دیدن آموزش شبکه عصبی لازم است؟
    • شبکه‌های عصبی مصنوعی (ANNs) امروز در هر جایی کاربرد دارند.
    • شما برای ساخت مدل‌های موفق یادگیری ماشین به درک عمیق ANN نیاز دارید.
    • شما برای استفاده درست از کتابخانه‌های هوش مصنوعی به درک عمیق ANN نیاز دارید.
    • شاید شما با درک عمیق ANN بتوانید سازنده یکی از نسل‌‌های بعدی آن‌ باشید!

     

    آموزش‌های رایگان مربوط به این دوره

    مشتق چیست و چه کاربردی دارد؟ -- مفهوم حسابان از صفر

    گرادیان کاهشی چیست؟ — مفهوم و اجرا در توابع تک متغیره تا چند متغیره

     

    پیشنیاز

    ندارد   ** پیش از این در هم‌رویش فیلم شبکه عصبی کانولوشنی به زبان ساده منتشر شد. برای دیدن فیلم معرفی این آموزش بر روی این لینک (+) و یا پخش کننده پایین کلیک کنید:  

      برای دریافت بسته کامل این آموزش بر روی لینک زیر کلیک کنید:

    شبکه عصبی کانولوشن به زبان ساده

      + حال نوبت آن رسیده است که آموزش کدنویسی کانولوشن (+) که فصل دوم از آموزش بینایی کامپیوتر با تنسورفلو (+) است را ببینید.  

    کلیدواژگان

    فیلم آموزش شبکه عصبی از صفر | شبکه عصبی از صفر | شبکه عصبی به زبان ساده | شبکه عصبی مصنوعی | artificial neural networks | آموزش ساخت شبکه عصبی چندلایه | کتاب make your own neural networks | شبکه عصبی پیش‌خور | الگوریتم پس انتشار خطا | روش گرادیان کاهشی | مبانی نظری ANN | مفهوم نورون | ساختمان شبکه عصبی مصنوعی | نرمال سازی و استانداردسازی | طراحی و پردازش NN

    ریز محتوای فیلم‌ها

     

    درس ۰: معرفی دوره

    • داستان این آموزش
    • هدف و منبع آموزش
    • بررسی محتوای فیلم‌ها
    • دورنمای آموزش

      درس ۱: کامپیوتر و هوش

    • اساس کار کامپیوترها
    • کامپیوتر چطور کار می کند؟
    • پردازش صفر و یک هوش نیست!
    • نمایش عکس یا شناخت عکس؟
    • مصداق هوش در کامپیوتر
    • مطالعه بیشتر

      درس ۲: ماشین پیش بینی ساده

    • تغییر نگاه از برنامه ریزی سنتی به برنامه ریزی هوشمند
    • ارزیابی خطا کلید روش های ابتکاری
    • سه اصل سازنده روش‌های ابتکاری

      درس ۳: تعریف کلاس بندی و شباهت آن با پیش بینی

    • تعریف Prediction یا پیش بینی
    • تعریف Classification یا کلاس بندی
    • طرح یک مثال از مساله کلاس بندی
    • شباهت مساله کلاس بندی با مساله پیش بینی

      درس ۴: ماشین کلاس بندی ساده

    • چرا ساده پیش می رویم؟
    • ریاضیات ساده یا پیچیده؟
    • مفهوم Train و معنی Training Data
    • مفهوم Learning Rate یا نرخ یادگیری چیست؟
    • ارتباط دهی خطا با پارامترهای مدل کلاسیفایر
    • خوبی ضریب یادگیری در برخورد با داده های نویز

      درس ۵: مساله های منطقی و نیاز به چند کلاسیفایر

    • منطق بولی چیست ؟
    • معرفی جورج بول (George Boole)
    • مثالی برای درک تابع AND منطقی
    • همان مثال با تابع OR منطقی
    • اشاره ای به منطق بولی در قلب وسایل الکترونیکی
    • کاربرد Boolean Logic در مساله های علمی
    • مساله XOR با یک کلاسیفایر خطی قابل تفکیک نیست
    • چند کلاسیفایر خطی اساس کار شبکه های عصبی

      درس ۶: نورون‌ها: ماشین محاسبات طبیعت

    • نورون چیست؟
    • رامون کاخال و توجیه یادگیری
    • شبکه عصبی موجودات زنده
    • نوزاد انسان چگونه یاد می گیرد؟
    • ساختار یک Neuron و طرز کار آن
    • انواع نورون های حرکتی و حسی و بینابینی

      درس ۷: مدلسازی ریاضی نورون و شبکه عصبی

    • شبیه سازی یک نورون مصنوعی
    • معنی تابع فعال سازی یا Activation Function
    • بررسی تابع پله ای یا Step Function
    • بررسی تابع سیگوئید یا Sigmoid Function
    • فرمول تابع سیگمویید و عدد نپر e
    • مدلسازی یک نورون به صورت یک گره یا Node
    • مدلسازی یک شبکه عصبی مصنوعی
    • معرفی وزن یا Wight اتصال گروه ها برای تعلیم شبکه عصبی

      درس ۸: محاسبات درونی شبکه عصبی

    • طرح ورودی های نمونه
    • ایجاد وزن های اولیه به صورت تصادفی
    • محاسبات لایه ورودی یا input layer
    • محاسبه مقدار سیگنال در طول اتصالات شبکه عصبی
    • محاسبه مقدار خروجی شبکه در لایه خروجی

      درس ۹: ماتریس و کاربرد آن در شبکه عصبی

    • یادآوری مفهوم ماتریس و ریاضیات ماتریسی
    • یادآوری مختصر عملیات پایه ماتریسی
    • ضرب داخلی inner product یا ضرب نقطه‌ای dot product
    • استخراج پارامترهای شبکه عصبی به صورت ماتریس
    • ضرب داخلی و معجزه ساده سازی محاسبات شبکه عصبی

      درس ۱۰: محاسبه شبکه عصبی سه لایه و چندلایه

    • استخراج پارامترهای شبکه عصبی دو لایه two-layer neural net
    • ماتریس وزن ها و ماتریس ورودی ها
    • ماتریس خروجی ها از ضرب داخلی ماتریس وزن و ورودی
    • استخراج پارامترهای شبکه عصبی سه لایه
    • مفهوم لایه ورودی input و لایه خروجی output و لایه مخفی hidden
    • اشاره به ساختار شبکه های عصبی عمیق
    • اجرای محاسبات درونی شبکه عصبی با ضرب ماتریسی
    • ماشین حساب آنلاین محاسبه ماتریسی و محاسبه تابع سیگمویید
    • بعد از محاسبه خروجی چه کنیم؟

      درس ۱۱: نقش وزن‌ها در یادگیری شبکه

    • مفهوم پس انتشار خطا یا Back Propagation
    • مفهوم شبکه پیش خور یا Feed Forward
    • اصلاح بازگشتی وزن ها بر اساس یک خروجی
    • سهم وزن ها از خطای خروجی

      درس ۱۲: پس انتشار خطای چند نورون خروجی

    • پیش به سوی اجرای پس انتشار Backpropagation
    • اصلاح بازگشتی وزن ها بر اساس چند خروجی
    • رابطه سهم وزن ها از خطای خروجی هر نورون

      درس ۱۳: پس انتشار خطا در شبکه چند لایه

    • یادآوری گام‌های پس انتشار خطا
    • آیا لایه‌های مخفی شبکه عصبی خطای واقعی دارند؟
    • محاسبه خطای برآیند نورون‌ها در لایه‌های مخفی
    • حل یک مثال پس انتشار خطا در شبکه سه لایه

      درس ۱۴: پس انتشار خطا به کمک ریاضیات ماتریسی

    • چرا جبر ماتریسی؟
    • الگوریتم پس انتشار خطا به صورت ماتریسی
    • مفهوم ترانهاده ماتریس یا Matrix Transposing
    • استفاده از ترانهاده ماتریس وزن ها در محاسبه خطای لایه‌ها
    • آیا نرمالایز کردن وزن‌ها در محاسبه خطای شبکه تاثیر دارد؟
    • استفاده از وزن‌ها به جای وزن‌های Normalize شده
    • رابطه محاسبه خطای هر لایه با ضرب ماتریسی

      درس ۱۵: روش‌های اصلاح وزن‌های شبکه

    • مروری به مراحل معماری شبکه عصبی مصنوعی
    • معادله ریاضی محاسبه خروجی شبکه عصبی
    • روش جبری در اصلاح وزن های شبکه
    • روش بررسی همه حالت‌های ممکن (Brute Force)
    • روش آزمون و اصلاح یا آزمون و خطا
    • مفهوم گرادیان کاهشی یا Gradient Descent
    • کاربرد روش‌ گرادیان کاهشی در کمینه سازی خطا

      درس ۱۶: مقدمه‌ای به حسابان و مشتق از صفر

    • حسابان یا calculus چیست؟
    • مشتق یا derivative چیست؟
    • کاربرد مشتق کجاست؟
    • انتگرال چیست؟
    • مفهوم مشتق با مثال حرکت ماشین
    • مفهوم شیب خط و معادله خط
    • مفهوم شیب خط مماس بر منحنی
    • محاسبه مشتق به صورت ترسیمی
    • محاسبه مشتق با استفاده از جبر
    • الگوی محاسبه مشتق در چندجمله‌ای‌ها
    • چرا مشتق لگاریتمی و مثثاتی را محاسبه می‌کنیم
    • کاربرد مشتق در نمودار رشد سازمان بهداشت جهانی
    • مشتق تابع‌های چندمتغیری
    • مشتق تابع‌های تودرتو یا functions of functions
    • قاعده زنجیری یا chain rule در مشتق گیری

      درس ۱۷: گرادیان کاهشی چیست؟

    • تعریف الگوریتم Gradient Descent یا گرادیان نزولی
    • مفهوم first order
    • الگوریتم بهینه سازی یعنی چه؟
    • تابع مشتق پذیر یا differentiable چیست؟
    • مفهوم اکسترمم و minimum و maximum چیست؟
    • نقطه زینی یا saddle point چیست؟
    • نمونه ای از تابع ناپیوسته یا تیز مشتق ناپذیر
    • ترسیم آنلاین نمودار توابع
    • نحوه محاسبه کمینه یا بیشینه محلی تابع
    • قیاس کوه نوردی برای درک روش کار در الگوریتم GD
    • شرح الگوریتم GD در حالت دوبعدی و سه بعدی
    • اهمیت طول گام یا step در گرادیان کاهشی
    • نمونه کد پایتون برای پیاده سازی گرادیان کاهشی
    • شرط توقف الگوریتم بر حسب دقت یا تعداد تکرار
    • گرادیان کاهشی توابع چندمتغیره Multivariate Gradient Descent

      درس ۱۸: انتخاب تابع خطا یا هزینه شبکه

    • محاسبه ساده خطای نورون
    • تابع خروجی شبکه و ساخت تابع خطا
    • تابع خطا یا error function
    • تابع هزینه cost یا زیان loss یکسانند!
    • محاسبه قدرمطلق خطای نورون
    • محاسبه مجذور خطای نورون
    • تابع مناسب برای تعلیم شبکه عصبی؟
    • چرا قدر مطلق خطا مناسب نیست؟
    • چرا مربع خطا مناسب است؟
    • ارزیابی خطای محاسبه شده با یک مثال

      درس ۱۹: رابطه اصلاح وزن شبکه عصبی

    • نمودار خطا به وزن یک اتصال connection
    • شیوه اجرای گرادیان کاهشی در اصلاح وزن
    • نمودار خطا نسبت به وزن دو اتصال
    • الگوریتم GD برای اصلاح همه وزن های شبکه
    • محاسبه مشتق خطا نسبت به تغییرات وزن
    • تابع مجموع مربعات خطا چیست؟
    • تابع میانگین مجموع مربعات خطا MAE چیست؟
    • تابع‌های زیان شبکه عصبی محدودند؟
    • اثبات فرمول مشتق تابع خطا با قاعده زنجیری
    • محاسبه رابطه گرادیان کاهشی شبکه عصبی
    • نمایش ماتریسی رابطه GD برای تسهیل محاسبات

      درس ۲۰: مثالی برای اصلاح وزن‌های شبکه عصبی

    • طرح یک شبکه نمونه سه لایه
    • محاسبه ضرایب فرمول GD
    • محاسبه سگمویید مقدار ورودی
    • محاسبه وزن جدید نورون
    • نقش علامت مشتق در جهت اصلاح وزن

      درس ۲۱: معماری و خوراک دهی مناسب

    • تعریف درست مساله
    • طراحی بین رشته ای
    • انتخاب متغیرهای ورودی یا input variable
    • چه تعداد و کدام داده ها برای تعلیم انتخاب شوند؟
    • اهمیت ساختار شبکه (تعداد لایه، نورون و توابع فعال سازی)
    • اهمیت آماده سازی یا پردازش داده ها
    • مفهوم feature scaling و روش‌های آن
    • روش min-max normalization
    • روش z-score normalization یا standardization
    • نرمال سازی یا استانداردسازی کدام درست است؟
    • اشاره به فرق Standardization vs Normalization
    • کدام روش برای نرمال کردن ورودی شبکه مناسب‌تر است؟
    • پیشنهادهای یان لکان (Yaan LeCun) برای طراحی مناسب شبکه
    • مقیاس کردن خروجی یا target شبکه
    • مقادیر مناسب برای وزن های اولیه initial weights
    • قاعده معکوس جذر تعداد اتصالات برای انتخاب وزن
    • اهمیت انتخاب مقادیر غیرصفر
    • اهمیت حذف داده‌های پرت یا outliers

      درس ۲۰: پایانی برای آغاز!

    • دو نکته مانده!
    • انواع گرادیان کاهشی
    • گرادیان کاهشی دسته‌ای یا Batch
    • گرادیان کاهشی تصادفی یا Stochastic
    • گرادیان کاهشی mini-batch
    *
    *
    *
    علم و عمل

    پس از دیدن این آموزش می‌توانید با درکی درست و عمیق به ساخت شبکه های عصبی مصنوعی بپردازید. ما در هم‌رویش این دوره را نیز تهیه کرده‌ایم. 

    داستان این آموزش

    پس از تألیف کتاب مهندسی انفجار با هوش مصنوعی متوجه شدیم اغلب کسانی که از این کتاب استفاده می‌کنند نگاه عمیقی به کاری که می‌کنند، ندارند. دانشجویان اغلب هنگام استفاده از کتابخانه‌های پایتون یا رابط کاربری متلب برای ساخت یک شبکه عصبی، از مقادیر پیش‌فرض بدون آگاهی لازم استفاده می‌کنند. دانشجویان متعددی تماس می‌گرفتند که در فلان زمینه فلان مدل را ساختیم ولی نتیجه خوب نیست. حالا کدام پارامتر را بالا و پایین کنیم تا خروجی بهتر شود؟! تصمیم گرفتم یک آموزش ساخت شبکه عصبی از صفر و عمیق تولید کنم. شما باید عمیقا بیاموزید که شبکه‌‌های عصبی مصنوعی چگونه رفتار می‌کنند! آموزشی به زبان ساده که اتفاقاً به جای پرش سریع به یک سورس کد یا کتابخانه و ایجاد یک شبکه به صورت ناآگاهانه، به بیان عمیق مفاهیم بپردازد. یک سال پیش با کتاب Make Your Own Neural Network نوشته Tariq Rashid برخورد کردم. نویسنده این کتاب چقدر ساده مطالب پیچیده را باز می‌کند. آیا من باید چرخ را از نو اختراع می‌کردم؟ با ایشان تماس گرفتم. اجازه خواستم تا از سرفصل و محتوای کتاب خوبشان به عنوان مرجع اصلی در تولید یک مجموعه فیلم‌های آموزشی در ایران استفاده کنم. ایشان با آغوش باز پذیرفتند.  

     

    کتاب «شبکه عصبی خودت را بساز!»

    کتاب شبکه عصبی خودت را بساز نوشته طارق رشید - مرجع اصلی آموزش با اجازه رسمی نویسنده

     

       شروع کردم. درس به درس مطالعه می‌کردم. مطالب لازم را اضافه می‌کردم. ضبط و سپس در شبکه‌های آپارات و اینستاگرام هم‌رویش منتشر می‌کردم. در نیمه راه (شاید پس از انتشار درس ۱۱) متوجه شدم که روند انتشار تدریجی باعث آزار مخاطبان شده و مخاطبان مشتاق هستند که آموزش را یکباره بگذرانند تا بخش‌های قبلی را فراموش نکنند. پس یک فرآیند مطالعه و ضبط فشرده در هم‌رویش آغاز شد. و اکنون این آموزش به صورت یک‌جا از طریق سرورهای هم‌رویش به شما تقدیم می‌شود. هدف ما آموزش شبکه عصبی از صفر بود تا حتی مخاطبان نوجوان، با سوادی در حد دوره اول متوسطه هم بتوانند استفاده کنند. بنابراین مفاهیم ریاضی و محاسباتی گاه تا حد بسیار پایه‌ای شکافته شده‌اند. لطفاً اگر مشکلی در بیان مفاهیم نظری مشاهده کردید در بخش نظرات آموزش اطلاع دهید تا بررسی کنیم.  

    شبکه های عصبی مصنوعی، دستاورد تلاش یک قرن!

    رامون کاخال (Ramón y Cajal) زیست‌شناس در ۱۸۹۹ تصویری از ساختار شبکه عصبی مغز کبوتر را منتشر کرد. یک تحول بنیادی! کاخال اعلام کرد که توانایی یادگیری موجود زنده به دلیل اتصال‌های تازه‌ای است که نورون‌ها (سلول‌های عصبی) با هم ایجاد می‌کنند.  

    رامون-کاخال-و-ترسیم-شبکه-عصبی-کبوتر رامون کاخال - زیست شناس اسپانیایی اتصال نورون‌های مغز را دلیل یادگیری دانست.

      حدود نیم قرن بعد، فرانک روزنبلات (Frank Rosenblatt) روانشناس، یک مدل ریاضی ساده از عملکرد نورون‌ها به نام پرسپترون (Perceptron) پیشنهاد کرد.

     

    فرانک-روزنبلات-و-ماشین-پرسپترون

    فرانک رونبلات ابداع کننده پرسپترون و سازنده نخستین شبکه عصبی سخت افزاری!

     

    پس از کار روزنبلات، حدود سه دهه زمان برد تا یک شبکه عصبی مصنوعی چندلایه از اتصالات نورونی بتواند یادگیری را تجربه کند. الگوریتم پس-انتشار خطا که در این آموزش شبکه عصبی هم به صورت ژرف به آن پرداختیم این معجزه را محقق کرد. البته فرآیند تولید علم معمولاً گسسته نیست. هر کس چوب را از دیگری می‌گیرد و پیش می‌برد. در این حوزه هم محققان بسیاری نقش داشتند که در اینجا مجال معرفی آن‌ها را نداریم. برای اطلاع بیشتر توصیه می‌کنیم مجموعه مقالات تاریخچه شبکه عصبی (+) را بخوانید. امروز به لطف تلاش این محققان، ما شاهد شبکه‌های عصبی عمیق و متنوع هستیم. بینایی کامپیوتر را هم حتی با شبیه‌سازی اعصاب بینایی ممکن کرده‌ایم. اکنون کامپیوترها حتی بهتر از انسان‌ها می‌بینند و چهره‌ها را تشخیص می‌دهند. هوش مصنوعی و در قلب آن شبکه‌های عصبی مصنوعی به دست راست انسان‌ها تبدیل می‌شوند. به یاد داشته باشید که همه این پیشرفت‌ها را کسانی به بار آوردند که موضوع را عمیق بررسی می‌کردند. شما نیز با درک شبکه‌های عصبی به صورت عمیق شاید از کاشفان نسل‌های بعدی شبکه‌های عصبی مصنوعی باشید.  

    آموزش شبکه عصبی در یک نگاه

    ما از صفر شروع کردیم و سعی کردیم مفاهیم پیچیده را آسان بیان کنیم. در درس ۱ فهمیدیم که کامپیوترها لزوما هوشمند نیستند. درس‌های ۲ تا ۵ آموختیم که اگر بنا باشد یک ماشین یادگیرنده داشته باشیم باید چه کنیم. ماشینی که بتوانید پیش‌بینی خطی انجام دهد. یا ماشینی که بتواند کلاس‌بندی داده‌ها بیاموزد. از درس ۶ وارد بحث اصلی شدیم. نخست با هم دیدیم که نورون‌ها و ساختار شبکه عصبی موجود زنده چه نقشی در یادگیری دارد. سپس یک مدل ریاضی از نورون ساختیم. این یعنی یک نورون مصنوعی! در درس‌های ۸ تا ۱۰ توانستیم نورون‌ها را به هم وصل کنیم. شبکه ما اکنون می‌توانست یک ورودی بگیرد و آن را به خروجی تبدیل کند. در اینجا نیاز به مبانی محاسبات ماتریسی داشتیم. به زبان ساده دیدیم که ماتریس چیست و چه نقشی در ساده شدن محاسبات شبکه عصبی دارد. از درس ۱۱ تا ۱۴ به خطای شبکه پرداختیم. از الگوریتم پس انتشار خطا (Back-propagation) گفتیم. اینکه اگر خروجی شبکه ما نسبت به خروجی مورد انتظار دارای خطا باشد،‌ چگونه این خطا باید در شبکه تسهیم شود. یعنی سهم هر نورون و هر اتصال از خطای ایجاد شده چقدر است؟ درس‌های ۱۵ تا ۲۱ به راهکار اصلاح وزن‌ در شبکه عصبی پرداختیم. پس از آنکه هر نورون سهم خود را از خطا گردن گرفت، حالا اتصال‌های خود را باید با چه وزنی تصحیح کند که خروجی بهتر شود؟ در اینجا به مبانی حسابان و مشتق نیاز داشتیم. توضیح دادیم. سپس به شرح الگوریتم گرادیان کاهشی (Gradient Descent) پرداختیم. روشی که سه دهه شبکه‌های عصبی منتظر آن در زمستان هوش مصنوعی در حال فراموشی بودند. سرانجام در درس ۲۲ حالا که ریاضیات شبکه را آموخته بودیم، به خودمان تلنگر زدیم که مغرور نشویم. ما به سادگی نمی‌توانیم هر مساله‌ای و هر داده‌ای را به شبکه عصبی بدهیم و انتظار نتیجه خوب داشته باشیم. در این درس از اصول تعریف مساله و انتخاب متغیرها و مقدار داده‌ها و وزن‌ها گفتیم. شما در پایان این دوره شما آماده ساخت هوشمندانه شبکه‌های عصبی هستید. ما در بسته‌ای جداگانه به ساخت یک شبکه عصبی با کدنویسی از صفر می‌پردازیم. همچنین شما ممکن است بخواهید از سورس کدهای آماده استفاده کنید. یا شاید بخواهید با یک کتابخانه پایتون یا رابط کاربری در متلب اقدام به ساخت شبکه کنید. مهم این است که شما آگاهانه و با درک عمیق شبکه عصبی خواهید ساخت!  

    آموزه‌های اصلی
    • الگوریتم پیش‌خور یا Feed Forward را می‌آموزید.
    • با الگوریتم پس انتشار خطا یا Backpropagation آشنا می‌شوید.
    • الگوریتم گرادیان کاهشی یا Gradient Descent را عمیق می‌آموزید.
    • مهم‌ترین روش‌های نرمال‌سازی داده‌ها را خواهید دید.
    • نکته‌های مهمی در انتخاب وزن‌های آغازین شبکه می‌آموزید.
    • تابع مجموع مربعات خطارا خواهید شناخت.
    • با تابع‌های سیگمویید logistic و tanh آشنا می‌شوید.
    • مشتق‌گیری از تابع خطا با قاعده زنجیری را می‌آموزید.
    • مفاهیم پایه مورد نیاز مانند مشتق و ماتریس هم شرح داده‌ایم.

     

    چرا دیدن آموزش شبکه عصبی لازم است؟
    • شبکه‌های عصبی مصنوعی (ANNs) امروز در هر جایی کاربرد دارند.
    • شما برای ساخت مدل‌های موفق یادگیری ماشین به درک عمیق ANN نیاز دارید.
    • شما برای استفاده درست از کتابخانه‌های هوش مصنوعی به درک عمیق ANN نیاز دارید.
    • شاید شما با درک عمیق ANN بتوانید سازنده یکی از نسل‌‌های بعدی آن‌ باشید!

     

    آموزش‌های رایگان مربوط به این دوره

    مشتق چیست و چه کاربردی دارد؟ -- مفهوم حسابان از صفر

    گرادیان کاهشی چیست؟ — مفهوم و اجرا در توابع تک متغیره تا چند متغیره

     

    پیشنیاز

    ندارد   ** پیش از این در هم‌رویش فیلم شبکه عصبی کانولوشنی به زبان ساده منتشر شد. برای دیدن فیلم معرفی این آموزش بر روی این لینک (+) و یا پخش کننده پایین کلیک کنید:  

      برای دریافت بسته کامل این آموزش بر روی لینک زیر کلیک کنید:

    شبکه عصبی کانولوشن به زبان ساده

      + حال نوبت آن رسیده است که آموزش کدنویسی کانولوشن (+) که فصل دوم از آموزش بینایی کامپیوتر با تنسورفلو (+) است را ببینید.  

    کلیدواژگان

    فیلم آموزش شبکه عصبی از صفر | شبکه عصبی از صفر | شبکه عصبی به زبان ساده | شبکه عصبی مصنوعی | artificial neural networks | آموزش ساخت شبکه عصبی چندلایه | کتاب make your own neural networks | شبکه عصبی پیش‌خور | الگوریتم پس انتشار خطا | روش گرادیان کاهشی | مبانی نظری ANN | مفهوم نورون | ساختمان شبکه عصبی مصنوعی | نرمال سازی و استانداردسازی | طراحی و پردازش NN

    ریز محتوای فیلم‌ها

     

    درس ۰: معرفی دوره

    • داستان این آموزش
    • هدف و منبع آموزش
    • بررسی محتوای فیلم‌ها
    • دورنمای آموزش

      درس ۱: کامپیوتر و هوش

    • اساس کار کامپیوترها
    • کامپیوتر چطور کار می کند؟
    • پردازش صفر و یک هوش نیست!
    • نمایش عکس یا شناخت عکس؟
    • مصداق هوش در کامپیوتر
    • مطالعه بیشتر

      درس ۲: ماشین پیش بینی ساده

    • تغییر نگاه از برنامه ریزی سنتی به برنامه ریزی هوشمند
    • ارزیابی خطا کلید روش های ابتکاری
    • سه اصل سازنده روش‌های ابتکاری

      درس ۳: تعریف کلاس بندی و شباهت آن با پیش بینی

    • تعریف Prediction یا پیش بینی
    • تعریف Classification یا کلاس بندی
    • طرح یک مثال از مساله کلاس بندی
    • شباهت مساله کلاس بندی با مساله پیش بینی

      درس ۴: ماشین کلاس بندی ساده

    • چرا ساده پیش می رویم؟
    • ریاضیات ساده یا پیچیده؟
    • مفهوم Train و معنی Training Data
    • مفهوم Learning Rate یا نرخ یادگیری چیست؟
    • ارتباط دهی خطا با پارامترهای مدل کلاسیفایر
    • خوبی ضریب یادگیری در برخورد با داده های نویز

      درس ۵: مساله های منطقی و نیاز به چند کلاسیفایر

    • منطق بولی چیست ؟
    • معرفی جورج بول (George Boole)
    • مثالی برای درک تابع AND منطقی
    • همان مثال با تابع OR منطقی
    • اشاره ای به منطق بولی در قلب وسایل الکترونیکی
    • کاربرد Boolean Logic در مساله های علمی
    • مساله XOR با یک کلاسیفایر خطی قابل تفکیک نیست
    • چند کلاسیفایر خطی اساس کار شبکه های عصبی

      درس ۶: نورون‌ها: ماشین محاسبات طبیعت

    • نورون چیست؟
    • رامون کاخال و توجیه یادگیری
    • شبکه عصبی موجودات زنده
    • نوزاد انسان چگونه یاد می گیرد؟
    • ساختار یک Neuron و طرز کار آن
    • انواع نورون های حرکتی و حسی و بینابینی

      درس ۷: مدلسازی ریاضی نورون و شبکه عصبی

    • شبیه سازی یک نورون مصنوعی
    • معنی تابع فعال سازی یا Activation Function
    • بررسی تابع پله ای یا Step Function
    • بررسی تابع سیگوئید یا Sigmoid Function
    • فرمول تابع سیگمویید و عدد نپر e
    • مدلسازی یک نورون به صورت یک گره یا Node
    • مدلسازی یک شبکه عصبی مصنوعی
    • معرفی وزن یا Wight اتصال گروه ها برای تعلیم شبکه عصبی

      درس ۸: محاسبات درونی شبکه عصبی

    • طرح ورودی های نمونه
    • ایجاد وزن های اولیه به صورت تصادفی
    • محاسبات لایه ورودی یا input layer
    • محاسبه مقدار سیگنال در طول اتصالات شبکه عصبی
    • محاسبه مقدار خروجی شبکه در لایه خروجی

      درس ۹: ماتریس و کاربرد آن در شبکه عصبی

    • یادآوری مفهوم ماتریس و ریاضیات ماتریسی
    • یادآوری مختصر عملیات پایه ماتریسی
    • ضرب داخلی inner product یا ضرب نقطه‌ای dot product
    • استخراج پارامترهای شبکه عصبی به صورت ماتریس
    • ضرب داخلی و معجزه ساده سازی محاسبات شبکه عصبی

      درس ۱۰: محاسبه شبکه عصبی سه لایه و چندلایه

    • استخراج پارامترهای شبکه عصبی دو لایه two-layer neural net
    • ماتریس وزن ها و ماتریس ورودی ها
    • ماتریس خروجی ها از ضرب داخلی ماتریس وزن و ورودی
    • استخراج پارامترهای شبکه عصبی سه لایه
    • مفهوم لایه ورودی input و لایه خروجی output و لایه مخفی hidden
    • اشاره به ساختار شبکه های عصبی عمیق
    • اجرای محاسبات درونی شبکه عصبی با ضرب ماتریسی
    • ماشین حساب آنلاین محاسبه ماتریسی و محاسبه تابع سیگمویید
    • بعد از محاسبه خروجی چه کنیم؟

      درس ۱۱: نقش وزن‌ها در یادگیری شبکه

    • مفهوم پس انتشار خطا یا Back Propagation
    • مفهوم شبکه پیش خور یا Feed Forward
    • اصلاح بازگشتی وزن ها بر اساس یک خروجی
    • سهم وزن ها از خطای خروجی

      درس ۱۲: پس انتشار خطای چند نورون خروجی

    • پیش به سوی اجرای پس انتشار Backpropagation
    • اصلاح بازگشتی وزن ها بر اساس چند خروجی
    • رابطه سهم وزن ها از خطای خروجی هر نورون

      درس ۱۳: پس انتشار خطا در شبکه چند لایه

    • یادآوری گام‌های پس انتشار خطا
    • آیا لایه‌های مخفی شبکه عصبی خطای واقعی دارند؟
    • محاسبه خطای برآیند نورون‌ها در لایه‌های مخفی
    • حل یک مثال پس انتشار خطا در شبکه سه لایه

      درس ۱۴: پس انتشار خطا به کمک ریاضیات ماتریسی

    • چرا جبر ماتریسی؟
    • الگوریتم پس انتشار خطا به صورت ماتریسی
    • مفهوم ترانهاده ماتریس یا Matrix Transposing
    • استفاده از ترانهاده ماتریس وزن ها در محاسبه خطای لایه‌ها
    • آیا نرمالایز کردن وزن‌ها در محاسبه خطای شبکه تاثیر دارد؟
    • استفاده از وزن‌ها به جای وزن‌های Normalize شده
    • رابطه محاسبه خطای هر لایه با ضرب ماتریسی

      درس ۱۵: روش‌های اصلاح وزن‌های شبکه

    • مروری به مراحل معماری شبکه عصبی مصنوعی
    • معادله ریاضی محاسبه خروجی شبکه عصبی
    • روش جبری در اصلاح وزن های شبکه
    • روش بررسی همه حالت‌های ممکن (Brute Force)
    • روش آزمون و اصلاح یا آزمون و خطا
    • مفهوم گرادیان کاهشی یا Gradient Descent
    • کاربرد روش‌ گرادیان کاهشی در کمینه سازی خطا

      درس ۱۶: مقدمه‌ای به حسابان و مشتق از صفر

    • حسابان یا calculus چیست؟
    • مشتق یا derivative چیست؟
    • کاربرد مشتق کجاست؟
    • انتگرال چیست؟
    • مفهوم مشتق با مثال حرکت ماشین
    • مفهوم شیب خط و معادله خط
    • مفهوم شیب خط مماس بر منحنی
    • محاسبه مشتق به صورت ترسیمی
    • محاسبه مشتق با استفاده از جبر
    • الگوی محاسبه مشتق در چندجمله‌ای‌ها
    • چرا مشتق لگاریتمی و مثثاتی را محاسبه می‌کنیم
    • کاربرد مشتق در نمودار رشد سازمان بهداشت جهانی
    • مشتق تابع‌های چندمتغیری
    • مشتق تابع‌های تودرتو یا functions of functions
    • قاعده زنجیری یا chain rule در مشتق گیری

      درس ۱۷: گرادیان کاهشی چیست؟

    • تعریف الگوریتم Gradient Descent یا گرادیان نزولی
    • مفهوم first order
    • الگوریتم بهینه سازی یعنی چه؟
    • تابع مشتق پذیر یا differentiable چیست؟
    • مفهوم اکسترمم و minimum و maximum چیست؟
    • نقطه زینی یا saddle point چیست؟
    • نمونه ای از تابع ناپیوسته یا تیز مشتق ناپذیر
    • ترسیم آنلاین نمودار توابع
    • نحوه محاسبه کمینه یا بیشینه محلی تابع
    • قیاس کوه نوردی برای درک روش کار در الگوریتم GD
    • شرح الگوریتم GD در حالت دوبعدی و سه بعدی
    • اهمیت طول گام یا step در گرادیان کاهشی
    • نمونه کد پایتون برای پیاده سازی گرادیان کاهشی
    • شرط توقف الگوریتم بر حسب دقت یا تعداد تکرار
    • گرادیان کاهشی توابع چندمتغیره Multivariate Gradient Descent

      درس ۱۸: انتخاب تابع خطا یا هزینه شبکه

    • محاسبه ساده خطای نورون
    • تابع خروجی شبکه و ساخت تابع خطا
    • تابع خطا یا error function
    • تابع هزینه cost یا زیان loss یکسانند!
    • محاسبه قدرمطلق خطای نورون
    • محاسبه مجذور خطای نورون
    • تابع مناسب برای تعلیم شبکه عصبی؟
    • چرا قدر مطلق خطا مناسب نیست؟
    • چرا مربع خطا مناسب است؟
    • ارزیابی خطای محاسبه شده با یک مثال

      درس ۱۹: رابطه اصلاح وزن شبکه عصبی

    • نمودار خطا به وزن یک اتصال connection
    • شیوه اجرای گرادیان کاهشی در اصلاح وزن
    • نمودار خطا نسبت به وزن دو اتصال
    • الگوریتم GD برای اصلاح همه وزن های شبکه
    • محاسبه مشتق خطا نسبت به تغییرات وزن
    • تابع مجموع مربعات خطا چیست؟
    • تابع میانگین مجموع مربعات خطا MAE چیست؟
    • تابع‌های زیان شبکه عصبی محدودند؟
    • اثبات فرمول مشتق تابع خطا با قاعده زنجیری
    • محاسبه رابطه گرادیان کاهشی شبکه عصبی
    • نمایش ماتریسی رابطه GD برای تسهیل محاسبات

      درس ۲۰: مثالی برای اصلاح وزن‌های شبکه عصبی

    • طرح یک شبکه نمونه سه لایه
    • محاسبه ضرایب فرمول GD
    • محاسبه سگمویید مقدار ورودی
    • محاسبه وزن جدید نورون
    • نقش علامت مشتق در جهت اصلاح وزن

      درس ۲۱: معماری و خوراک دهی مناسب

    • تعریف درست مساله
    • طراحی بین رشته ای
    • انتخاب متغیرهای ورودی یا input variable
    • چه تعداد و کدام داده ها برای تعلیم انتخاب شوند؟
    • اهمیت ساختار شبکه (تعداد لایه، نورون و توابع فعال سازی)
    • اهمیت آماده سازی یا پردازش داده ها
    • مفهوم feature scaling و روش‌های آن
    • روش min-max normalization
    • روش z-score normalization یا standardization
    • نرمال سازی یا استانداردسازی کدام درست است؟
    • اشاره به فرق Standardization vs Normalization
    • کدام روش برای نرمال کردن ورودی شبکه مناسب‌تر است؟
    • پیشنهادهای یان لکان (Yaan LeCun) برای طراحی مناسب شبکه
    • مقیاس کردن خروجی یا target شبکه
    • مقادیر مناسب برای وزن های اولیه initial weights
    • قاعده معکوس جذر تعداد اتصالات برای انتخاب وزن
    • اهمیت انتخاب مقادیر غیرصفر
    • اهمیت حذف داده‌های پرت یا outliers

      درس ۲۰: پایانی برای آغاز!

    • دو نکته مانده!
    • انواع گرادیان کاهشی
    • گرادیان کاهشی دسته‌ای یا Batch
    • گرادیان کاهشی تصادفی یا Stochastic
    • گرادیان کاهشی mini-batch