در جلسهی اول، پیش از رسیدن به اصل دوره، زمینه را آماده کردیم: یادگیری عمیق کجای هوش مصنوعی است، یادگیری ماشین چطور کار میکند، کامپیوتر تصویر را چطور میبیند، و اولین مدلمان را روی ارقام دستنویس فارسی ساختیم. بعد وارد بخش اول اسلایدها شدیم و شبکهی عصبی را تا تابع هزینه جلو بردیم.
این صفحه مسیر جلسه را به ترتیب نشان میدهد. توضیح کامل هر مبحث در صفحهی خودش است.
هوش مصنوعی، یادگیری ماشین، شبکهی عصبی و یادگیری عمیق مثل دایرههای تودرتو هستند. یادگیری ماشین به جای قانوننویسی از داده یاد میگیرد، شبکهی عصبی از مغز الهام گرفته، و یادگیری عمیق شبکهی عصبیای است که بعد از رفع سه مانع (مشکل ریاضی محو شدن گرادیان، کمبود داده و ضعف سختافزار) توانست بزرگ و عمیق شود. این دوره با Keras شروع میکند، چون برای یاد گرفتن مفهومها سادهتر است.
نظارتشده (طبقهبندی و رگرسیون)، بدون نظارت، خودنظارتی، نیمهنظارتی و تقویتی؛ و اینکه مدلهای زبانی بزرگ با ترکیبی از همینها آموزش میبینند ولی موقع گفتوگو چیزی یاد نمیگیرند.
کدهای دوره در Jupyter Notebook نوشته شدهاند. فایلهای نوتبوک پسوند .ipynb (مخفف Interactive Python Notebook) دارند و با پایتون معمولی اجرا نمیشوند. سه مزیت دارند: توضیح و تصویر کنار کد میآید، خروجی هر سلول ذخیره میماند، و میشود بخشی از کد را بارها تغییر داد و اجرا کرد بدون اینکه کارهای سنگین قبلی (مثل خواندن دیتاست) تکرار شوند.
برای اجرا روی سیستم خودتان:
مخزن ML-notebooks را با git clone یا از دکمهی سبز Code و گزینهی Download ZIP دریافت کنید.
در ویندوز، پوشه را باز کنید، در نوار آدرس بالای پنجره کلیک کنید، cmd بنویسید و Enter بزنید تا خط فرمان در همان پوشه باز شود.
کتابخانهها را با pip (مخفف Package Installer for Python) نصب کنید:
با دستور jupyter notebook محیط را باز کنید. Jupyter در مرورگر باز میشود ولی به اینترنت نیاز ندارد.
اگر کارت گرافیک ندارید، سرویسهای ابری مثل Kaggle و Google Colab یا سرویسهای داخلی، نوتبوک را با پردازندهی گرافیکی اجرا میکنند. برای این جلسه سیستم معمولی کافی است.
با نوتبوک 02_Intro2image دیدیم که تصویر یک آرایهی سهبعدی (ارتفاع، عرض، کانال) از عددهای ۰ تا ۲۵۵ است. پیکسل خواندیم، تصویر بریدیم، بخشی از آن را سیاه کردیم، سیاهوسفیدش کردیم و به یک دام مهم رسیدیم: سرریز uint8.
با نوتبوک 03-persian-digit-dataset مجموعهی ارقام دستنویس فارسی هدی را خواندیم، با squeeze بعد اضافه را حذف کردیم، تصویرها را ۵×۵ کردیم و به بردار ۲۵تایی تبدیل کردیم. همهی این کارها در فایل dataset.py و تابع load_hoda جمع شد.
با مثال قد و وزن، الگوریتم نزدیکترین همسایه و مشکلش با دادهی پرت را دیدیم و به k نزدیکترین همسایه رسیدیم. بعد در نوتبوک 04-persian-digit-classification-with-knn با scikit-learn روی ارقام هدی به دقت ۹۶ درصد رسیدیم، اشتباهها را بررسی کردیم و مدل را روی رقمی که خودمان در Paint کشیدیم امتحان کردیم.
جابهجایی چند پیکسل، عینک، نور و زاویه، فاصلهی پیکسلی را کاملاً به هم میزند. برای تصویرهای واقعی به شبکههای عصبی و بعدتر شبکههای کانولوشنی نیاز داریم؛ و برای فهمیدن آنها اول باید خود شبکهی عصبی را بشناسیم. از اینجا اسلایدهای بخش اول شروع میشود (صفحههای ۱ تا ۳۶ در این جلسه).
اول کوییز را بزنید تا ببینید مفهومها جا افتاده یا نه. بعد تمرین سرریز uint8 را همینجا حل کنید و در آخر نوتبوک تکلیف را دانلود کنید: نمودار انتخاب k و پیدا کردن رقمها در عکس.
کوییز ۱۰ سؤالی
کوییز جلسهی ۱
ده سؤال از مفهومهای این جلسه. بعد از ثبت پاسخ، توضیح هر سؤال را میبینید.
تمرین تعاملیحل شده
سیاهوسفید کردن بدون سرریز
تابع to_gray(img) را بنویسید که تصویر رنگی uint8 با شکل (h, w, 3) را بگیرد و تصویر خاکستری با شکل (h, w) برگرداند؛
مقدار هر پیکسل میانگین سه کانال است.
مراقب باشید: جمع کردن مستقیم سه کانال uint8 از ۲۵۵ رد میشود و دور میزند. مثلاً 250 + 10 در uint8 میشود ۴.
راهنمایی
دو راه دارید: هر کانال را جدا بر ۳ تقسیم کنید و بعد جمع کنید، یا اول نوع داده را با img.astype(np.int32) بزرگ کنید، بعد جمع و تقسیم کنید.
Ctrl + Enter برای اجرا
خروجی چاپشده
تکلیف نوتبوک از ۱۰ نمره
انتخاب k و پیدا کردن رقمها در عکس
این تکلیف دو بخش دارد:
انتخاب k (۴ نمره): مدل KNN را روی دیتاست هدی با k از ۱ تا ۱۵ آموزش دهید، دقت هر k را روی دادهی آزمون حساب کنید، نمودار «دقت بر حسب k» را رسم کنید و kای را که بیشترین دقت را دارد گزارش کنید.
پیدا کردن رقمها در عکس (۴ نمره): عکسی از یک برگه داریم که چهار رقم دستنویس رویش نوشته شده. عکس را دودویی و معکوس کنید، با مؤلفههای همبند رقمها را جدا کنید و با همان مدل KNN تشخیص دهید.
دو نمرهی دیگر برای این است که همهی سلولها به ترتیب و بدون خطا اجرا شده باشند. نوتبوک آماده است و فقط باید جاهای خالی را پر کنید؛ دیتاست و عکس هنگام اجرا خودکار دانلود میشوند.
نوتبوک را در Jupyter، VS Code یا Colab باز کنید و جاهای خالی را کامل کنید. در آخر همهی سلولها را از اول اجرا کنید (Restart & Run All) و فایل را با خروجیها ذخیره کنید؛ نوتبوک روی سرور اجرا نمیشود و همین خروجیها بررسی میشوند.کتابخانههای لازم: numpy, scipy, opencv-python, scikit-learn, matplotlib
این سلولها در نوتبوک شما خطا دادهاند:
مقدمهای بر یادگیری عمیق، آموزش رایگان و فارسی یادگیری عمیق.