یادگیری عمیق چیست؟

در یک تعریف کلی، یادگیری عمیق، همان یادگیری ماشین است، به طوری که در سطوح مختلف نمایش یا انتزاع (abstraction) یادگیری را برای ماشین انجام میدهد. با این کار، ماشین درک بهتری از واقعیت وجودی داده ها پیدا کرده و میتواند الگوهای مختلف را شناسایی کند. مدل های یادگیری عمیق به شکلی نه چندان روشن از الگوهای پردازش اطلاعاتی و  ارتباطی در سیستم های عصبی زیستی الهام گرفته شده اند اما تفاوت های مختلفی در ویژگی های ساختاری و عملکردی با مغزهای زیستی (به ویژه مغز انسان) دارند، که باعث عدم همخوانی آنها با شواهد علوم اعصاب میشود. Deep Learning یا یادگیری عمیق به دنبال هوش مصنوعی پا به عرصه حضور گذاشته است. این یادگیری به یاری هوش مصنوعی آمده است تا به شکلی طبیعی تر به نیاز ها و خواست های بشر واکنش نشان دهد. هوش مصنوعی در جهت یاری رساندن به بشر امروزی روی کار آمده است. سالیان درازی از روی کار آمدن هوش مصنوعی نمی گذرد. اما در طی همین زمان کوتاه بشر در زمینه های متفاوتی از این تکنولوژی بهره برده است. یادگیری عمیق، دسته ای از الگوریتم های یادگیری ماشین است که:

  • از آبشاری از لایه های چندگانهِ واحدهای پردازش غیرخطی برای استخراج و تبدیل ویژگی استفاده میکنند. هر لایه تالی، از خروجی لایه قبل به عنوان ورودی استفاده میکند.
  • به شکلی نظارت شده (مثل طبقه بندی) و یا بدون نظارت (مثل تحلیل الگو) یادگیری میکنند.
  • لایه های چندگانه ای از نمایش را یادگیری میکنند که متناظر با سطوح مختلفی از انتزاعات هستند؛ این سطوح سلسله ای از مفاهیم را تشکیل میدهند.

 

یادگیری عمیق یک نوع شبکه عصبی بوده که فراداده (Metadata) را به عنوان یک ورودی جذب می‌کند و داده‌ها ورودی را از طریق برخی لایه‌های تبدیل غیرخطی پردازش و محاسبه کرده و به عنوان داده‌های خروجی برمی‌گرداند. این الگوریتم دارای یک ویژگی منحصربفرد بوده که آن ویژگی استخراج خودکار محسوب می‌شود. این بدین معنی است که الگوریتم ویژگی‌های موردنیاز و مرتبط را جهت حل مشکل درک می‌کند. این موجب کاهش وظیفه برنامه نویسان شده تا به انتخاب صریح ویژگی‌ها بپردازند. این الگوریتم حتی برای حل چالش ها تحت نظارت، بدون نظارت به کار گرفته می شود. در یادگیری عمیق هر لایه پنهان مسئول آموزش مجموعه‌ای از ویژگی‌های منحصربفرد بوده که براساس خروجی لایه پیشین عمل می کند. با افزوده شدن بر تعداد لایه های پنهان، پیچیدگی داده‌ها بیشتر شده و مشکلات را افزایش می‌دهد. همچنین این نوع یادگیری سلسله مراتبی، ویژگی‌های سطح پایین را به ویژگی‌های سطح بالا تبدیل می‌کند. با چنین کاری الگوریتم یادگیری عمیق مورد استفاده قرار گرفته و به حل مشکلات پیچیده که لایه های غیرخطی متعددی را دربرمی گیرد، می پردازد. در یادگیری عمیق، هر سطح یاد میگیرد که داده های ورودی خود را به یک نمایش اندکی مجردتر و ترکیبی تر تبدیل کند. در یک کاربرد شناسایی تصویر، ورودی خام میتواند ماتریسی از پیکسل ها باشد؛ اولین لایه نمایشی ممکن است پیکسل ها را مجرد کند و لبه ها را کدگذاری کند؛ لایه دوم ممکن است چینش لبه ها را بسازد و کدگذاری کند؛ لایه سوم ممکن است بینی و چشم ها را کدگذاری کند؛ و لایه چهارم ممکن است تشخیص دهد که تصویر، شامل یک چهره است. چیزی که اهمیت دارد، این است که یک پروسه یادگیری عمیق، به خودی خود میتواند یاد بگیرد که کدام ویژگی ها بطور بهینه در کدام سطح قرار دهد. در سال های اخیر، یادگیری عمیق، تحول بزرگی را در یادگیری ماشین و هوش مصنوعی ایجاد کرده است. از سال ۲۰۱۲ تا کنون، تمامی رتبه های برتر چالش شناسایی بصری ImageNet، که به جام جهانی بینایی ماشین معروف است، از شبکه های عصبی عمیق استفاده کرده اند. همچنین، تمام روش های برتر در رقابت های دسته بندی تصاویر اعداد دست نویس MNIST (با ۲۱ خطا در ۱۰,۰۰۰ تصویر) و تصاویر طبیعی CIFAR (با خطای کمتر از ۵%) نیز به مدل های شبکه عصبی عمیق تعلق دارد. از سال ۲۰۱۲ به بعد، شرکت های بزرگ نرم افزاری و سخت افزاری مانند Google, Microsoft, NVIDIA نیز بخش مهمی از فعالیت های پژوهشی و تجاری خود را به یادگیری عمیق اختصاص داده اند. به دلیل وجود لایه های متفاوت و سطح های متفاوتی از اطلاعات از واژه عمیق استفاده می شود. شبکه عصبی از دو یا نهایتا سه لایه تشکیل شده است. در حالی که شبکه عصبی عمیق از بیش از ۱۵۰ لایه تشکیل شده است. یادگیری عمیق به گونه ای طراحی شده است که قادر باشد بدون دستور العمل هایی که توسط اپراتور صادر می شود، اطلاعات مورد نیاز خود را از میان حجم وسیعی از اطلاعات استخراج کرده و مورد استفاده قرار دهد.

کتابخانه Tenssorflowچیست؟

تنسورفلو یک کتابخانه منبع باز است که در ماشین لرنینگ استفاده می شود. کتابخانه تنسورفلو در پایتون؛ یک کتابخانه ریاضی نمادین است و با استفاده از داده ها و برنامه نویسی در فعالیت های مختلف شبکه های عصبی استفاده می شود. تنسورفلو در سال 2015 توسط تیم Google Brain ایجاد شد. تنسورفلو مجموعه ای از مدل ها و الگوریتم های ماشین لرنینگ و دیپ لرنینگ است. رقبای اصلی کتابخانه تنسورفلو فریمورک هایی چون PyTorch و Apache هستند. عملکرد تنسورفلو بر اساس محاسبه گراف است. این امر موجب شده تا توسعه دهنده عزیز بتواند ساخت شبکه عصبی را با Tensorboad تجسم کند. در حال حاضر، معروف ترین کتابخانه یادگیری عمیق در جهان TensorFlow است که در فعالیت هایی چون ماشین لرنینگ، موتور جستجو و ترجمه استفاده می شود.

اگر به واژه TensorFlow دقت کنید متوجه می شوید که نام این کتابخانه از اصلی ترین قسمت اصلی آن یعنی Tensor گرفته شده است. تمامی محاسباتی که در تنسورفلو انجام می شود شامل تانسور است. اگر بخواهیم دقیق تر بگوییم که تانسور از چه چیزی تشکیل شده است، باید بگوییم که تنسور از یک ماتریس چند بعدی تشکیل شده است. این ماتریس می تواند هر نوع داده ای را نمایش دهد. البته این را هم باید بگوییم که درست است که تانسور قابلیت نمایش همه نوع داده را دارد اما تمامی داده های درون یک تانسور باید از یک نوع باشند.

Tensorflow نام خود را از چارچوب زیرین آن، یعنی Tensor گرفته است. تانسورها در هر محاسبات تنسورفلو استفاده می‌شوند. تانسور یک بردار یا ماتریس n بعدی به‌حساب می‌آید که ممکن است هر شکلی از داده را نشان دهد. مقادیر یک تانسور همه دارای یک نوع داده با یک فرم شناخته‌شده (تا حدی شناخته‌شده) هستند. ابعاد ماتریس یا آرایه شکل داده‌ها را تعیین می‌کند. با پذیرش ورودی‌ها به‌عنوان یک آرایه چندبعدی به نام Tensor، TensorFlow به شما امکان می‌دهد نمودارها و ساختارهای جریان داده ایجاد کرده تا مشخص کنید داده‌ها چگونه از طریق یک نمودار حرکت می‌کنند. این به شما امکان می‌دهد فلوچارت عملیاتی را ایجاد کنید که ممکن است روی این ورودی‌ها انجام شود که در یک جهت حرکت می‌کنند و از جهت دیگر خارج می‌شوند.

تنسورفلو، که توسط تیم Google Brain ایجاد شده است، یک کتابخانه متن باز برای انجام محاسبات عددی و یادگیری ماشین در ابعاد وسیع است. این کتابخانه، مجموعه ای از مدل ها و الگوریتم های یادگیری ماشین و یادگیری عمیقرا با هم ادغام کرده و آنها را به شکلی مفید و قابل استفاده تبدیل می کند. تنسورفلو از زبان پایتون برای فراهم کردن یک API مناسب به جهت ساخت برنامه هایی با این فریمورک استفاده می کند، در حالی که برای اجرای آن برنامه ها، از زبان ++C استفاده می کند. تنسورفلو این امکان را به توسعه دهندکان می دهد که گراف های جریان داده بسازند. این گراف ها، ساختارهایی هستند که نحوه‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌ی حرکت داده ها در طول یک گراف یا مجموعه ای از گره های پردازشی را توصیف می کنند. هر گره در گراف، نشان دهنده‌ی یک عملیات ریاضیاتی است، و هر اتصال یا لبه بین گره ها، یک آرایه چندبعدی از داده ها، یا همان تنسور است.

معماری تنسورفلو شامل سه بخش می باشد.

  1. پیش پردازش داده ها
  2. ساختن مدل
  3. آموزش مدل و تخمین عملکرد

این سه مرحله در کنار هم تنسورفلو را به وجود می آورد. تنسورفلو ورودی را به عنوان یک آرایه چند بعدی دریافت می کند. به این آرایه چند بعدی تانسور گفته می شود. در طی این مسیر چندین فرآیند روی داده های ورودی اعمال می شود و در انتها به عنوان خروجی خارج می شود. علت نام گذاری تنسورفلو نیز به خاطر فرآیندی است که داده ها طی می کنند و تانسور از طریق تعدادی عملیات مشخص جریان پیدا می کند و در انتها به عنوان خروجی؛ خارج می شود.

کتابخانه Keras چیست؟

کراس کتابخانه ای است که با آن و تنها با چند خط کد می‌توانیم برای ساختن شبکه‌های عصبی استفاده کنیم. البته کراس همه این کارها را خودش به تنهایی انجام نمی‌دهد، در حقیقت کراس یک فرانت‌اند (front-end) برای فریمورک های یادگیری عمیق تنسرفلو، CNTK و (مرحوم) تیانو است و آن‌ها پشت شبکه‌های عصبی را می‌سازند و آموزش می‌دهند و برای همین به آن یک چهارچوب سطح بالا می گوییم چون کراس پیچیدگی استفاده از این کتابخانه‌ها را تا حد خوبی حذف می‌کند. یک ویژگی خاص دیگر کراس این است که محدود به یک کتابخانه یادگیری عمیق نیست و همانطور که گفتیم می‌توانیم از تنسرفلو، CNTK و یا تیانو برای محاسبات پشت پرده آن استفاده کنیم. Keras یک کتابخانه یادگیری عمیق برای آموزش سریع و کارآمد مدل های یادگیری عمیق است و همچنین می تواند با Tensorflow و Theano کار کند. از آنجا که سبک وزن و بسیار آسان برای استفاده است، Keras در یک زمان بسیار کم محبوبیت زیادی به دست آورده است. ساده ترین کتابخانه‌ در این حوزه را می‌توان ار پایتون کراس (Keras) نام برد. کراس از رنج گسترده ایی از شبکه های عصبی پشتیبانی می‌کند و ساختن نمونه های اولیه را بسیار ساده می‌کند. و از همه مهمتر تحلیل کد آن هم بسیار ساده است. البته به عنوان یکی از نقاط قوت آن می‌توان به این نکته اشاره کرد که این کتابخانه از چند GPU پشتیبانی می‌کند.  Keras یک شبکه عصبی با سطح بالا است که به زبان Python نوشته شده و قادر به اجرا در بالای TensorFlow ، CNTK یا Theano است. این برنامه با تمرکز بر فعال کردن سریع آزمایش انجام شد. توانایی رفتن از ایده به نتیجه با حداقل تاخیر ممکن برای انجام تحقیقات خوب مهم است. Keras بهترین اقدامات را برای کاهش بار محسباتی دنبال می کند: API های سازگار و ساده را ارائه می دهد ، تعداد اقدامات کاربر مورد نیاز برای موارد استفاده معمولی را به حداقل می رساند و بازخورد واضح و عملی را در مورد خطای کاربر فراهم می کند. به طور خاص ، لایه های عصبی ، توابع هزینه ، بهینه سازها ، برنامه های اولیه سازی ، توابع فعال سازی و برنامه های منظم سازی ، همه ماژول های مستقل هستند که می توانید برای ایجاد مدل های جدید در کراس ترکیب کنید. Keras با زبانهای یادگیری عمیق سطح پایین تر (به ویژه TensorFlow) ادغام می شود ، این امکان را برای شما فراهم می کند تا بتوانید هر چیزی را که می توانستید به زبان پایه ساخته باشید ، پیاده سازی کنید. به طور خاص ، به عنوان tf.keras ، API Keras یکپارچه با گردش کار TensorFlow شما ادغام می شود.

مزیت های کتابخانه قدرتمند Keras مبتنی بر تنسورفلو ؟

  • آسان نسبت به اغلب فریمورک ها
  • تحلیل کد آن هم ساده
  • قابلیت استفاده از چند GPU
  • ماژولاریتی بالا
  • انعطاف پذیری بالا
  • پشتیبانی همزمان از چندین backend
  • قابلیت ایجاد مدل های ترتیبی و تابعی
  • دیتاست های آماده
  • مدل های اماده زیاد
  • اجرای همزمان روی چند GPU و چند سیستم

هدف از این دوره آموزشی؟

هدف از این دوره آموزشی، معرفی کامل یادگیری عمیق و کتابخانه قدرتمند تنسورفلو (کراس) می باشد. ابتدا یادگیری عمیق به صورت کامل بحث می شود و بعد الگوریتم های یادگیری عمیق با استفاده از کتابخانه قدرتمند تنسورفلو (کراس) پیاده سازی می شوند. در آموزش اغلب قابلیت های مهم کتابخانه تنسورفلو (کراس) گفته شده است و کامل پیاده سازی می شوند. همچنین کدهای پیاده سازی در هر مرحله خط به خط توضیح داده می شوند. در این دوره به صورت کامل کار با داده های یک بعدی، دو بعدی و سه بعدی براساس کتابخانه تنسورفلو (کراس) آموزش داده می شود. همچنین انواع مختلف شبکه های عمیق (کانولوشنی – بازگشتی – مولد – خودرمزنگار) کامل توضیح داده شده و با تنسورفلو (کراس) پیاده سازی می شوند. جزئیات این دوره آموزشی در زیر لیست شده است. بدون شک یکی از بهترین دوره های یادگیری عمیق با تنسورفلو (کراس) می باشد که با زبان فارسی بصورت روان توضیح داده شده است. امیدواریم که این آموزش از “بیگ لرن” هم مثل سایر آموزش ها مورد تایید و رضایت شما مخاطبان گرامی قرار گیرد.

 

مشاهده پیش نمایش اول این دوره در آپارات

مشاهده پیش نمایش دوم  این دوره در آپارات

برای دیدن محتوای هر بخش روی آن کلیک کنید

بخش صفر: مرور کامل روی پایتون
بخش اول: یاگیری ماشین و یادگیری عمیق
بخش دوم : یادگیری عمیق و شبکه های عصبی
بخش سوم: انواع شبکه های عمیق (نطارت شده و بدون نظارت)
بخش چهارم: معرفی کامل کتابخانه تنسورفلو (کراس)
بخش پنجم: پیاده سازی عملی با کتابخانه تنسورفلو (کراس)
بخش ششم: مثال های عملی یادگیری عمیق با پایتون در keras
بخش هفتم: شبکه های عمیق پرکاربرد
بخش هشتم: تنظیم پارامترهای شبکه عمیق با keras_tuner
مشاهده بیشتر

نظرات

متوسط امتیازات

0
بدون امتیاز 0 رای
180,000 تومان
0 نقد و بررسی

جزئیات امتیازات

5 ستاره
0
4 ستاره
0
3 ستاره
0
2 ستاره
0
1 ستاره
0

نقد و بررسی‌ها

هنوز بررسی‌ای ثبت نشده است.

اولین کسی باشید که دیدگاهی می نویسد “آموزش یادگیری عمیق با تنسورفلو (کراس)”