کتابخانه های مقدماتی deep learning
قبل از اینکه به سراغ مدل های deep learning برویم، باید ادبیات و کتابخانه های لازم را برای این کار مرور کنیم. چند مورد از موارد زیر را قبلا بررسی کرده ایم ولی بد نیست که یک بار مرور کنیم:
- کتابخانه ی pandas : از این کتابخانه برای برای داشتن یک فرم استاندارد دیتا (DataFrame) برای خواندن، مرور و استفاده از دیتا استفاده میکنیم. گزینه ی دیگری که برای داشتن DataFrame استاندارد وجود دارد کتابخانه ی Polars است. Polars به زبان Rust نوشته شده و بسیار سریع است اما برای کارهای data exploration و visualization و machine learning هنوز بهینه نیست. اگر دیتاست شما شدیدا بزرگ است باید به استفاده از Polars به جای pandas فکر کنید اما با این کار مراحل توسعه ی شما طولانی تر و سخت تر خواهد شد.
- ماژول train_test_split : این ماژول دیتاست را به training set و test set تقسیم میکند.
- کتابخانه ی TensorFlow : این کتابخانه یکی از کتابخانه های مشهور و پرکاربرد در دنیای deep learning است. TensorFlow در سال 2015 توسط گوگل عرضه شد و رایگان و open source است. این کتابخانه هسته و backend ماژول keras است. گزینه های مشابه دیگر این کتابخانه PyTorch (بر اساس هسته ی Torch ) و PyTensor (بر اساس هسته ی Theano ) هستند.
- ماژول (کتابخانه ی سابق) keras : یک نسخه ی سطح بالای TensorFlow است. این ماژول کار با TensorFlow را راحت تر میکند و دردسر توسعه ی الگوریتم های ساده ی deep learning را کاهش میدهد. این الگوریتم ها البته به نسبت پیچیدگی های مختلف ساده تلقی می شوند و میتوانند بسیار کابردی و پیچیده باشند؛ صرفا نسبت به کار کردن مستقیم با TensorFlow ساده تر هستند! میتوانید داکیومنت keras را از keras.io مطالعه کنید.
- مدل Sequential : مدل Sequential که توسط keras در اختیار ما قرار میگیرد یک قالب برای ساخت شبکه های عصبی در اختیار ما می گذارد. مدل Sequential یک مدل ارتباط مستقیم است یعنی که یک ورودی وجود دارد و لایه های میانی و خروجی و عملیات از ورودی به سمت خروجی انجام میشود. تمام مدل های ما در این فصل Sequential خواهند بود. مدل های دیگری نیز وجود دارند که در کارگاه یادگیری عمیق(Deep Learning) به آنها پرداخته خواهد شد.
- لایه Dense : این layer در keras به ما اجازه ی ایجاد یک densely connected layer را میدهد. یعنی هر node در این لایه به تمام node های لایه ی بعدی خود متصل است. در تصویر یک شبکه با تمام لایه های Dense را میبینید:
- تابع EarlyStopping : یک تابع callback در keras است که به ما اجازه میدهد زمانی که یک شبکه ی عصبی به شرایط خاصی میرسد و با آموزش بیشتر پارامترهای آن تغییر خاصی نمیکند، آموزش آن را متوقف کنیم.
- پارامتر Dropout : این پارامتر ورودی یک regularization technique است که در آن درصدی از node ها را در هر مرحله ی آموزش اصطلاحا drop میکنیم تا آموزش نبینند و از overfitting جلوگیری کنیم: