دیپ لرنینگ یا یادگیری عمیق یکی از زیرشاخههای جذاب و هیجانانگیز مرتبط با یادگیری ماشین و هوش مصنوعی است. یادگیری عمیق منجر به پیشرفتهای بزرگ در فناوری مانند بینایی رایانهای (Computer Vision)، پردازش صدا (Audio Processing) و یا حتی اتومبیلهای خودران شده است. دیپ لرنینگ با مفهومی به نام شبکههای عصبی کار میکند. برای پیادهسازی شبکه عصبی، کتابخانههای مختلفی در زبان برنامهنویسی پایتون از جمله Tensorflow و Theano وجود دارد. اما به عقیده بسیاری از متخصصان، کتابخانه Keras برای طراحی و ساخت مدل شبکههای عصبی محبوبترین کتابخانه است.
در این مقاله میخواهیم بیشتر با کتابخانه keras آشنا شویم.
آنچه در این نوشته خواهیم داشت
دیپ لرنینگ و شبکههای عصبی
کرس یکی از کتابخانههای محبوب متنباز در یادگیری عمیق یا Deep Learning است که بر اساس زبان برنامهنویسی پایتون نوشته شده است. دیپ لرنینگ یکی از شاخههای هوش مصنوعی است که با شبیهسازی مغز انسان، مسائل پیچیده را حل میکند.
همانطور که گفته شد، دیپ لرنینگ از مفهومی به نام شبکههای عصبی استفاده میکند. شبکه عصبی مانند تابعی است که دادههای ورودی و خروجی را دریافت و ارتباط میان این دادهها را پیدا میکند. شبکه عصبی برای اینکه بتواند این کار را با دقت بالایی انجام دهد، از چندین لایه تشکیل شده است. هر لایه از این شبکهها از گرههایی تشکیل شدهاند که هرکدام کارایی متفاوتی را دارند. شبکه عصبی میتواند از ۲ لایه تا ۲۰۰ لایه داشته باشد.
زمانی که تعداد لایههای شبکه عصبی زیاد باشد، پیادهسازی آن سخت خواهد بود. برای حل این مشکل، Keras معرفی شد.
Keras چیست؟
کرس یکی از فریمورکهای اوپن سورس دیپ لرنینگ به زبان برنامهنویسی پایتون است. Francois Chollet محقق هوش مصنوعی گوگل در سال ۲۰۱۵ کرس را برای اولین بار معرفی کرد. امروزه کمپانیهای بزرگ دنیا از جمله گوگل، نتفلیکس، هواوی و اوبر از کرس استفاده میکنند.
Keras را بیشتر با دو کتابخانه Theano و TensorFlow مقایسه میکنند. کرس بر روی کتابخانههای دیگر مثل تنسرفلو و تیانو و Cognitive Toolkit ساخته شده است. به عبارت دیگر TensorFlow، تیانو و CNTK مانند زبان بک اند هستند و Keras فرانت اند.
CNTK فریمورک دیپ لرنینگ است که کمپانی مایکروسافت آن را ساخته است. این فریمورک از کتابخانههای زبانهای برنامهنویسی مثل پایتون، #C و ++C یا ابزارهای ماشین لرنینگ استفاده میکند.
تیانو و تنسرفلو کتابخانههای قدرتمندی هستند اما برای ساخت مدلهای شبکه عصبی ممکن است کمی پیچیده باشند. چراکه سطح پایین هستند و کار با آنها نیاز به دقت بالایی به جزئیات دارد.
اینجاست که کرس به عنوان یک ساختار مینیمال، و با فراهم کردن یک محیط ساده، به برنامهنویس و یا متخصص دیپ لرنینگ این امکان را میدهد تا مدلهای دیپ لرنینگ را بسازد. به عبارت دیگر کرس یک انتخاب بهینه برای استفاده در دیپ لرنینگ است.
مزایای استفاده از Keras
Keras یک فریمورک قدرتمند و پویاست. این کتابخانه دید سطح بالایی را از شبکههای عصبی ارائه میدهد. در وبسایت رسمی Keras اینطور گفته شده که:
Keras برای انسان طراحی شده، نه برای ماشینها.
این یعنی کار با Keras ساده است چون انسان به راحتی میتواند با آن ارتباط برقرار کند.
به دلیل همین ساده بودن و سطح بالا بودن است که تعداد خطوط کد به میزان قابل توجهی کاهش مییابد. در واقع تمرکز برنامهنویس تنها روی معماری شبکه است و دیگر نیازی نیست به جزئیات توجه کند.
علاوه بر این، جامعه بزرگی از برنامهنویسان و متخصصان دیپ لرنینگ از Keras استفاده میکنند. به همین دلیل برنامهنویسان از پشتیبانی خوبی برخوردار هستند.
نحوه نصب Keras
همانطور که گفته شد، Keras همراه با کتابخانه TensorFlow یا Theano پیادهسازی میشود. برای نصب این دو کتابخانه میتوانید از روش زیر استفاده کنید.
راحتترین روش نصب هر کتابخانهای در زبان پایتون، از جمله Keras و TensorFlow، آناکوندا است. برای نصب کتابخانه TensorFlow و Keras با آناکوندا، در قسمت Environment، گزینه Not installed را انتخاب کنید. سپس در باکس جستجو، Tensorflow را تایپ کنید. هر دو کتابخانه Keras و TensorFlow برای نصب نمایش داده میشوند.
برای اینکه مطمئن شوید نصب به درستی انجام شده است یا خیر،میتوانید دستور زیر را در Command Line اجرا کنید:
$ python -c "import keras; print( keras.__version__ )" Using TensorFlow backend. 2.3.1
مدلهای مختلف معماری لایهها در Keras
شبکه عصبی ساختاری لایه لایه دارد. معمولا در طراحی مدل شبکههای عصبی با Keras از دو معماری مختلف استفاده میشود:
- مدل ترتیبی (Sequential Model)
- مدل API عملکردی (Functional API Models)
مدل ترتیبی، سادهترین مدل معماری در Keras است. زمانی که در کتابخانه Keras از کتابخانه Sequential استفاده کنید، لایهها بر اساس نوع پروژه تا جایی که نیاز باشد، اضافه میشوند. البته استفاده از لایههای اشتراکی و یا انشعاب لایهها مجاز نیست.
مدل عملکردی برای مدلسازی پیچیده استفاده میشود. همچنین نسبت به مدل قبل انعطافپذیری بالاتری دارد. در این مدل انشعاب یا اشتراک لایهها مجاز است.
مراحل ساخت مدل شبکه عصبی با Keras
برای ساخت یک مدل با کراس مراحل زیر را طی کنید:
۱. تعریف شبکه عصبی: در این مرحله، لایههای مورد نیاز برای مدل و ارتباط میان لایهها را تعریف کنید تا شبکهای از لایههای به هم مرتبط و هدفمند داشته باشید. دو نوع مدل اصلی در کراس عبارتند از : مدل ترتیبی و مدل عملکردی. این شما هستید که باید تصمیم بگیرید کدام نوع را انتخاب کنید و جریان داده بین آن ها را هم تعیین کنید.
۲. کامپایل: کامپایل کردن کد، یعنی تبدیل کد به زبانی که برای ماشین قابل درک باشد. در کرس دستور ()model.compile این کار را انجام میدهد. علاوه بر این در مرحله کامپایل، تابع دیگری تحت عنوان تابع ضرر (Loss Function) نیز تعریف میشود.
تابع ضرر در یادگیری ماشین و به ویژه در دیپ لرنینگ برای نشان دادن میزان خطای ریاضی بین خروجی شبکه عصبی و دادههای واقعی استفاده میشود.
۳. مطابقت داده: در این مرحله، مدل خود را پس از کامپایل با دادههای موجود مطابقت میدهیم. هدف از این مرحله آموزش مدل بر اساس دادههای واقعی است.
۴. ارزیابی شبکه: پس از آموزش مدل، باید دوباره آن را بررسی کرد تا اگر خطا یا اشکالی در آن وجود دارد برطرف شود.
۵. اجرا: این مرحله، مرحله اجرایی است که پس از تمام ارزیابیها از مدل ساخته شده استفاده میکنیم.
جمعبندی
در این مقاله به کتابخانه Keras پرداخته شد. همانطور که مطالعه کردید، Keras به عنوان یکی از کتابخانههای محبوب در ماشین لرنینگ و به ویژه در دیپ لرنینگ برای ساخت مدل شبکههای عصبی به همراه کتابخانه TensorFlow استفاده میشود.
برای یادگیری کتابخانه Keras باید ابتدا بر زبان برنامهنویسی پایتون تسلط کافی داشته باشید. سپس با شرکت در دوره آموزش ماشین لرنینگ، وارد دنیای یادگیری ماشین و دیپ لرنینگ شوید. همچنین میتوانید سایر مقالات دیپ لرنینگ را بخوانید.