CBIR:Content Base Image Retrival

بازیابی تصویر محتوا محور

CBIR:Content Base Image Retrival

بازیابی تصویر محتوا محور

بررسی کتاب یادگیری عملی ماشین با Scikit-Learn، Keras و TensorFlow

Hands-on Machine Learning with

Scikit-Learn, Keras, and

TensorFlow


نویسنده کتاب اورلین جرون مشاور یادگیری ماشین است.وی رهبری تیم طبقه بندی ویدیوهای u-tube yo را از سال 2013 تا 2016 برعهده داشت.این کتاب ویرایش دوم می باشد که توسط نشر O’Reilly  در jone 2019 به چاپ رسیده است.

مقدمه ای بر کتاب :سونامی یادگیری ماشین

در سال 2006 ، جفری هینتون و همکارانش مقاله ای منتشر کردند  که نحوه آموزش یک شبکه عصبی عمیق را نشان می داد شبکه ای که قادر به تشخیص ارقام دست نویس با دقت بیشتر از 98%  بود. آنها این تکنیک را "یادگیری عمیق" نامگذاری کردند. آموزش شبکه عصبی عمیق در آن زمان به طور گسترده ای غیرممکن تلقی می شد ، این ایده از دهه 1990 توسط Yann Lecun’s مطرح شده بود ولی اکثر محققان آن را رها کرده بودند. این مقاله علاقه جامعه علمی را دوباره زنده کرد و خیلی زود مقالات جدید نشان دادند که یادگیری عمیق نه تنها ممکن،بلکه  قادر به دستاوردهای حیرت انگیزی است که هیچ تکنیک یادگیری ماشین دیگر ندارد ومی توان امیدوار باشیم  که مطابقت داشته باشد (با کمک قدرت محاسباتی فوق العاده و حجم زیادی از داده ها).

10 سال سریع و رو به جلو یادگیری ماشین صنعت را تسخیر کرده است : اکنون درقلب بسیاری از محصولات با تکنولوژی بالا ، نتایج جستجو در رتبه بندی وب ، تقویت تشخیص گفتار، تلفن هوشمند ، توصیه برای فیلم ها ، و شکست دادن قهرمان جهان در بازی Go.

به جای اجرای نسخه های اسباب بازی خودمان از هر الگوریتم ، از چارچوب های پایتون آماده تولید واقعی استفاده خواهیم کردکه شامل :

·         Scikit-learn : استفاده از آن بسیار آسان است ، با این حال بسیاری از الگوریتم های یادگیری ماشین را پیاده سازی می کند به طور موثر ، بنابراین یادگیری ماشین را به عنوان یک نقطه ورود عالی ایجاد می کند.

·         : TensorFlowیک کتابخانه پیچیده تر برای محاسبه عددی توزیع شده است. آموزش و اجرای کارآمد شبکه های عصبی را به طور موثر با توزیع محاسبات صدها سرور چند GPU  را ممکن می سازد. TensorFlow در Google ایجاد شد و بسیاری از برنامه های کاربردی یادگیری ماشین با مقیاس بزرگ آنها را پشتیبانی می کند.این کتابخانه در نوامبر 2015 به صورت منبع باز ارائه شد.

·         Keras : یک API یادگیری عمیق سطح بالا است که آموزش و اجرای شبکه های عصبی را بسیار ساده می کند . می تواند روی TensorFlow ، Theano یا Microsoft جعبه ابزار شناختی (قبلا به عنوان CNTK شناخته می شد) اجرا شود.TensorFlow همراه با پیاده سازی API خودش به نام tf.keras ، که برخی از ویژگیهای پیشرفته TensorFlow  را پشتیبانی می کند.

کدهای مربوط به این کتاب در jupyter Notebooks به آدرس : https://github.com/ageron/handson-ml2 موجود است.

این کتاب در دوبخش سازماندهی شده است :بخش اول اساس یادگیری ماشین و بخش دوم این کتاب در مورد شبکه های عصبی ویادگیری عمیق بحث می کند. در بخش اول بیشتر بر اساس Scikit-Learn و در بخش دوم از TensorFlow و کراس استفاده شده است.بخش اول شامل فصل 1 تا فصل 9 وبخش دوم از فصل 10 تا فصل 14 می باشد.

برای دانلود کتاب اینجا را کلیک کنید.

در ادامه به بررسی فصلهای کتاب می پردازم: 

 

فصل اول : چشم انداز یادگیری ماشین

وقتی مردم کلمه یادگیری ماشین را میشنوند یاد ربات می افتند.در حقیقت دهه هاست که یادگیری ماشین وجودداشته مانند برنامه های تشخیص کاراکترهای نوری (OCR) . اما اولین برنامه ML که واقعاً تبدیل به جریان اصلی شد و زندگی صدها و میلیون ها نفر در جهان را در دهه 1990 بهبود بخشید: این فیلتر هرزنامه بود.

یادگیری ماشین از کجا شروع می شود و کجا پایان می یابد؟ منظوراز اینکه ماشین دقیقا چه چیزی یاد می گیرد چیست؟ در این فصل با بررسی کردن اینکه یادگیری ماشین چیست و چرا ممکن است بخواهید از آن استفاده کنید ، شروع خواهیم کرد.

سپس ، قبل از اینکه ما برای کشف قاره یادگیری ماشین حرکت کنیم ، به نقشه نگاه خواهیم کرد و با مناطق اصلی و برجسته ترین نقاط دیدنی آشنا می شویم : یادگیری تحت نظارت در مقابل یادگیری بدون نظارت ، آموزش آنلاین در مقابل یادگیری دسته ای ،یادگیری مبتنی بر نمونه در مقابل یادگیری مبتنی بر مدل. سپس ما به روند کار یک ML معمولی نگاه می کنیم پروژه را مورد بحث قرار دهید ، چالش های اصلی را که ممکن است با آن روبرو شوید ، بحث کنید و نحوه ارزیابی و تنظیم دقیق سیستم یادگیری ماشین را پوشش دهید.

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

فصل دوم : پروژه یادگیری ماشین از انتها به انتها

در این فصل ، شما یک پروژه را به صورت انتها به انتها  به پایان می رسانید ، وانمود می کنید که به تازگی یک  دانشمند داده هستید که  در یک شرکت املاک و مستغلات استخدام شده اید.کارهایی که باید انجام دهید:

1-      به تصویر بزرگ نگاه کنید.

2-      داده را بگیرید.

3-      کشف وتجسم داده ها برای بدست آوردن بینش

4-      آماده سازی داده ها برای الگوریتمهای یادگیری ماشین

5-      یک مدل را انتخاب کنید وآنرا آموزش دهید.

6-      مدل خود را دقیق تنظیم کنید

7-      راه حل خود را ارائه دهید.

8-      سیستم خود را راه اندازی ، نظارت و نگهداری کنید.

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

·         مجموعه داده باز محبوب

-          مجموعه داده های UC Irvine

-          مجموعه داده Kaggle

-          مجموعه داده Amazon’s AWS

·         پورتال های متا (آنها مخازن داده باز را فهرست می کنند(

-          http://dataportals.org/

-          http://opendatamonitor.eu/

-          http://quandl.com/

·         صفحات دیگر فهرست بسیاری از مخازن داده باز شده

-          Wikipedia’s list of Machine Learning datasets

-          Quora.com question

-          Datasets subreddit

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

فصل سوم : دسته بندی

در این فصل ما میخواهیم یه مسئله دسته بندی بپردازیم.  در این فصل ، ما از مجموعه داده MNIST استفاده می کنیم ، که مجموعه ای از 70000 تصاویر ارقام دست نویس توسط دانش آموزان دبیرستانی و کارکنان Census ایالات متحده می باشد.

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

فصل چهارم : آموزش مدلها

تاکنون ما بیشتر مدل های یادگیری ماشین و الگوریتم های آموزشی آنها را مثل جعبه های سیاه مورد بررسی قرار داده ایم. در این فصل، ما به مدل رگرسیون خطی، یکی از ساده ترین مدل های موجود نگاه خواهیم کرد. ما دو روش بسیار متفاوت برای آموزش آن بحث خواهیم کرد:

·         با استفاده از یک معادله "closed-form" که به طور مستقیم مدل پارامتر که بهترین مدل را به مجموعه آموزش (به عنوان مثال، پارامترهای مدل که به حداقل رساندن تابع هزینه در مجموعه آموزشی) محاسبه می کند.

·         با استفاده از رویکرد بهینه سازی تکراری، به نام (Gradient Descent (GD، این به تدریج پارامترهای مدل را تغییر می دهد تا عملکرد هزینه مجموعه آموزشی را به حداقل برساند، در نهایت به همان مجموعه پارامترها به عنوان اولین روش همگرا میشود.

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

در نهایت، ما به دو مدل دیگر نگاه خواهیم کرد که معمولا برای وظایف طبقه بندی استفاده می شود: رگرسیون لجستیک و رگرسیون Softmax.

فصل پنجم : ماشین های بردار پشتیبانی

یک ماشین بردار پشتیبان (SVM) یک مدل یادگیری ماشین بسیار قدرتمند و همه کاره است، قادر به طبقه بندی خطی یا غیر خطی ، رگرسیون و حتی تشخیص outlier ها می باشد. این یکی از محبوب ترین مدل ها در یادگیری ماشین است و هرعلاقمند به یادگیری ماشین باید آن را در جعبه ابزار خود داشته باشند. SVM هامنحصرا برای طبقه بندی مجموعه داده های پیچیده اما کوچک یا متوسط مناسب است.

این فصل مفاهیم اصلی SVM ها ، نحوه استفاده از آنها و چگونگی کاربا آنها را توضیح می دهد.

فصل ششم: درختان تصمیم

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

درختان تصمیم گیری همچنین اجزای اساسی جنگل های تصادفی هستند (به فصل 7 مراجعه کنید) ، که یکی از قوی ترین الگوریتم های یادگیری ماشین که امروزه موجود است.

در این فصل ما با بحث نحوه آموزش ، تجسم و پیش بینی با درختان تصمیم شروع می کنیم. سپس الگوریتم آموزشی CART را که توسط Scikit-Learn استفاده می شود ، مرور میکنیم و ما در مورد نحوه منظم کردن درختان و استفاده از آنها وظایف رگرسیون بحث خواهیم کرد. در نهایت ، ما برخی از محدودیت های درخت تصمیم گیری را مورد بحث قرار می دهیم.

فصل هفتم :  یادگیری ترکیبی و جنگل های تصادفی

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

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

در این فصل ما در مورد متداول ترین روش های ترکیبی ، از جمله baging، boosting ، stacking و چند مورد دیگر صحبت خواهیم کرد. ما همچنین جنگل تصادفی را مورد بررسی قرار خواهیم داد.

فصل هشتم: کاهش ابعاد

بسیاری از مشکلات یادگیری ماشین شامل هزاران یا حتی میلیون ها ویژگی برای هر نمونه آموزشی می باشد. این نه تنها آموزش  را بسیار کند می کند ، بلکه می تواند همانطور که خواهیم دید ، یافتن راه حل مناسب بسیار دشوارتر شود.این مسئله اغلب وجوددارد وبه نام کاهش ابعاد می باشد.

خوشبختانه ، در مسائل دنیای واقعی ، اغلب می توان تعداد ویژگی ها را به طور قابل توجهی کاهش داد، تبدیل یک مشکل حل نشدنی به یک مشکل قابل درمان.

کاهش ابعاد علاوه بر سرعت بخشیدن به آموزش ، برای تجسم داده (یا DataViz) بسیار مفید است. کاهش تعداد ابعاد به دو(یا سه) امکان ترسیم نمای متراکم از یک آموزش با ابعاد بالا را فراهم می آورد ،روی یک نمودار تنظیم کنید و اغلب با تشخیص بصری الگوها برخی از بینش های مهم را بدست آورید ، مانند خوشه ها. علاوه بر این ، DataViz ضروری است تا نتیجه گیری های خود را به آنها منتقل کنید افرادی که دانشمندان داده نیستند ، به ویژه تصمیم گیرندگان که از نتایج  شما استفاده خواهند کرد.

در این فصل ما کاهش ابعاد را مورد بحث قرار می دهیم و درک می کنیم که چه چیزی در فضای با ابعاد بالا ادامه می یابد. سپس ، ما دو رویکرد اصلی را ارائه می دهیم کاهش ابعاد (طرح ریزی و یادگیری منیفولد) ، و ما خواهیم رفت از طریق سه روش رایج کاهش ابعاد: PCA(Perencipal Component Analysis) ، PCA Kernel و LLE(Locally Linear Embedding).

فصل نهم : تکنیک های یادگیری بدون نظارت

اگرچه امروزه بیشتر کاربردهای یادگیری ماشین بر اساس یادگیری با نظارت است(و در نتیجه ، این جایی است که بیشتر سرمایه گذاری ها صرف آن می شود) ، اکثر داده های موجود بدون برچسب هستند: ما ویژگی های ورودی X را داریم ، اما ما برچسب y نداریم. یان لکون معروف می گوید: "اگر هوش یک کیک بود ،یادگیری بدون نظارت کیک اصلی خواهد بود ، یادگیری تحت نظارت تداعی کننده کیک خواهد بود، و یادگیری تقویت کننده گیلاس روی کیک خواهد بود. " به عبارت دیگر ، در یادگیری بدون نظارت پتانسیل عظیمی وجود دارد که ما به ندرت از آن برخورداریم.

به عنوان مثال ، بگویید می خواهید سیستمی ایجاد کنید که از هر مورد چند عکس بگیرد در خط تولید و تشخیص اینکه کدام اقلام معیوب هستند. شما می توانید به آسانی سیستمی ایجاد کنید که به طور خودکار عکس بگیرد ، و این ممکن است هزاران عکس روزانه بگیرد. بدین ترتیب شما می توانید فقط در چند هفته یک مجموعه داده منطقی بزرگ بوجود آورید. اما صبر کنید ، هیچ برچسبی وجود ندارد! اگر می خواهید آموزش دهید طبقه بندی کننده باینری معمولی را که پیش بینی می کند یک مورد معیوب است یا خیر ، باید هر تصویر به عنوان "معیوب" یا "عادی" برچسب گذاری کنید. این به طور کلی به انسان نیاز دارد کارشناسان بنشینند و تمام تصاویر را به صورت دستی مرور کنند. این کاری طولانی ، پرهزینه و خسته کننده ای است ، بنابراین معمولاً فقط در زیر مجموعه کوچکی از تصاویر موجود انجام می شود. در نتیجه ، مجموعه داده دارای برچسب بسیار کوچک و عملکرد طبقه بندی کننده ناامید کننده خواهد بود. علاوه بر این ، هر بار که شرکت تغییراتی در محصولات ایجاد می کند، کل فرایند را باید از ابتدا شروع کرد. آیا عالی نیست اگر الگوریتم بتواند از داده های بدون برچسب استفاده کندبدون نباز به انسان برای زدن برچسب؟ وارد آموزش بدون نظارت شوید.

در این فصل ، چند کارو الگوریتم  یادگیری بدون نظارت دیگر را بررسی می کنیم:

·         خوشه بندی: هدف این است که موارد مشابه را با هم به صورت خوشه ای گروه بندی کنیم. این یک  ابزار عالی برای تجزیه و تحلیل داده ها ، تقسیم بندی مشتری ، سیستم های توصیه گر ،موتورهای جستجو ، تقسیم بندی تصویر ، یادگیری نیمه نظارت ، کاهش ابعاد و موارد دیگر.

·         تشخیص ناهنجاری: هدف این است که بدانیم داده های "عادی" چگونه به نظر می رسند ، واز این دستگاه برای تشخیص موارد غیرعادی ، مانند موارد معیوب درخط تولید یا روند جدید در یک سری زمانی استفاده کنید.

·         برآورد چگالی: این وظیفه تخمین تابع چگالی احتمال (PDF) از فرآیند تصادفی که مجموعه داده را ایجاد کرد.این مورد معمولا برای تشخیص ناهنجاری استفاده میشود: مواردی که در مناطق با تراکم بسیار کم واقع شده اند به احتمال زیاد

ناهنجاری باشد. همچنین برای تجزیه و تحلیل داده ها و تجسم مفید است.

ما با خوشه بندی ، با استفاده ازروشهای K-Means و DBSCAN شروع می کنیم ، و سپس ما در مورد مدلهای ترکیبی گاوسی بحث خواهیم کرد و خواهیم دید که چگونه می توان از آنها در برآورد چگالی ، خوشه بندی و تشخیص ناهنجاری استفاده کرد.

بخش دوم :شبکه های عصبی و یادگیری عمیق

فصل 10 : مقدمه ای بر شبکه های عصبی مصنوعی با کراس

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

ANN ها در واقع در اصل یادگیری عمیق قرار دارند. آنها همه کاره ، قدرتمند و مقیاس پذیر هستند ،آنها را برای مقابله با کارهای بزرگ و بسیار پیچیده یادگیری ماشین ایده آل می کند ،مانند طبقه بندی میلیاردها تصویر (به عنوان مثال ، Google Images) ، تقویت تشخیص گفتار،خدمات (به عنوان مثال ، Apple Siri) ، بهترین فیلم ها را برای تماشای صدها حتی میلیون ها کاربر در هر روز (به عنوان مثال ، YouTube) توصیه می کند، یا یاد می گیرند که چگونه قهرمان جهان را در بازی Go با انجام میلیون ها بازی علیه خودش (DeepMind’s Alpha zero) شکست دهند.

در قسمت اول این فصل ، ابتدا شبکه های عصبی مصنوعی را معرفی می کنیم با گشت و گذار سریع در اولین معماری های ANN ، منتهی به گیرنده های چند لایه (MLPs) که امروزه بسیار مورد استفاده قرار می گیرد (معماری های دیگر در فصل های بعدی مورد بررسی قرار می گیرد.) در قسمت دوم ، نحوه پیاده سازی شبکه های عصبی را با استفاده از API محبوب Keras بررسی می کنیم. این یک API با طراحی زیبا و ساده در سطح بالا برای ایجاد ، آموزش ، ارزیابی و اجرای شبکه های عصبی است.اما نباید فریب سادگی آن را خورد: این به اندازه کافی گویا و انعطاف پذیر است که به شما امکان می دهد پهنای وسیعی انواع معماری شبکه عصبی بسازید. در واقع ، احتمالاً برای اکثر افراد موارد استفاده شما کافی خواهد بود. علاوه بر این ، اگر همیشه به انعطاف پذیری بیشتری نیاز دارید ، همیشه می توانید همانطور که در فصل خواهیم دید ، اجزای سفارشی Keras را با استفاده از API سطح پایین خود بنویسید.

فصل 11 : آموزش شبکه های عصبی عمیق :

در فصل 10 ما شبکه های عصبی مصنوعی را معرفی کردیم و اولین شبکه ی عصبی عمیق خود را آموزش دادیم. اما آنها شبکه های بسیار کم عمقی بودند و تنها چند لایه پنهان داشتند. در صورت نیاز به مقابله با یک مشکل بسیار پیچیده ، مانند تشخیص صدها نوع اشیاء در تصاویر با وضوح بالا چه باید کرد؟ شاید لازم باشد یک DNN بسیار عمیق تر با 10 لایه یا خیلی بیشتر آموزش دهید، هر کدام شامل صدها نورون ، که توسط صدها هزارارتباط به هم متصل شده ااند. این یک پیاده روی در پارک نخواهد بود:

·         اول ، شما با مشکل پیچیدگی ناپدید شدن شیب روبرو خواهید شد (یا مربوط به مشکل شیب انفجاری) که بر شبکه های عصبی عمیق تأثیر می گذارد و آموزش لایه های پایین بسیار سخت میشود.

·         ثانیاً ، ممکن است داده های آموزشی کافی برای چنین شبکه بزرگی را نداشته باشید یا ممکن است برچسب گذاری آن بسیار پرهزینه  باشد.

·         سوم ، ممکن است آموزش بسیار کند باشد.

·         چهارم ، یک مدل با میلیون ها پارامتر به شدت خطر overfitting مجموعه آموزشی را دارد، به ویژه اگر موارد آموزشی کافی وجود نداشته باشد ، یا آنها نیز بیش از حد دارای نویز باشند.

در این فصل ، ما هر یک از این مشکلات را به نوبه خود بررسی کرده و تکنیک های ارائه شده برای حل آنها را ارائه می دهیم. ما با توضیح مسئله gradiant و بررسی برخی از رایج ترین راه حل ها برای این مسئله شروع خواهیم کرد. در مرحله بعد ، ما به بررسی انتقال یادگیری و تمرینات بدون نظارت ، که می تواند به شما در مقابله با مشکلات پیچیده کمک کند حتی زمانی که داده های دارای برچسب کمی دارید خواهیم پرداخت. سپس در مورد بهینه سازهای مختلف که می تواند آموزش مدل های بزرگ را در مقایسه با گرادیان کاهشی بسیار افزایش دهد،بحث خواهیم کرد. سرانجام ، ما چند تکنیک معمول رایج برای شبکه های عصبی بزرگ را مرور می کنیم.

در این فصل ، ما طیف وسیعی از تکنیک ها را پوشش داده ایم و شاید برای شما هم سوال باشد کدام را باید استفاده کنید.در جدول زیر پیکربندی داده شده در بییشتر موارد بدون نیاز به تنظیم پارامترهای اضافی کار می کند.

پیکربندی شبکه عصبی عمیق


استانداردسازی ویژگی های ورودی را فراموش نکنید! البته ، شما همچنین باید سعی کنید از آن استفاده مجدد کنید اگر می توانید یکی از شبکه های عصبی از پیش آماده شده را پیدا کنید که مشکلی مشابه را حل کند ،یا اگر داده های بدون برچسب زیادی دارید از پیش آموزش بدون نظارت استفاده کنید،یا اگر داده های برچسب دار زیادی برای یک کار مشابه دارید ، یک وظیفه کمکی است.

فصل 12 : مدلهای سفارشی و آموزش با TensorFlow:

تا کنون ما فقط از API سطح بالا TensorFlow ، tf.keras استفاده کرده ایم ، اما در حال حاضر ما مجبوریم فراتر از این برویم : ما معماری های مختلف شبکه عصبی ، از جمله رگرسیون وشبکه های طبقه بندی ، شبکه های گسترده و عمیق و شبکه های خود نرمال با استفاده از انواع تکنیک ها ، مانند نرمال سازی دسته ای ، حذف تصادفی ، زمانبندی نرخ یادگیری و موارد دیگر ایجاد کردیم. که دردر حقیقت ، 95 درصد موارد استفاده که با آن روبرو می شوید به چیزی غیر ازtf. kerastf.data ، فصل 13 را ببینید) نیاز ندارید.اما اکنون وقت آن رسیده است که عمیق تر وارد TensorFlow شوید و نگاهی به API سطح پایین پایتون بیندازید. این زمانی مفید خواهد بود که به موارد کنترل اضافی ، نوشتن توابع loss سفارشی ، معیارهای سفارشی ، لایه ها ، مدل ها ، تنظیم کننده های اولیه ، تنظیم کننده ها ، محدودیت های وزن و موارد دیگرنیاز داشته باشید. حتی ممکن است نیاز به کنترل خود حلقه آموزشی داشته باشید، به عنوان مثال برای اعمال تغییرات یا محدودیت های خاص درgradiant (فراتر از فقط برش آنها) ، یا استفاده از چندین بهینه ساز برای بخش هایی مختلف از شبکه. ما در این فصل به همه این موارد می پردازیم ، سپس ببینید چگونه می توانید مدل های سفارشی و الگوریتم های آموزشی خود را با استفاده از ویژگی تولید خودکار نمودار TensorFlow تقویت کنید. اما ابتدا ، اجازه دهید یک تور سریع در TensorFlow داشته باشیم.

فصل سیزدهم : بارگیری و پیش پردازش داده ها با TensorFlow

تا کنون ما فقط از مجموعه داده هایی استفاده کرده ایم که در حافظه جا دارند ، اما سیستم های Deep Learning اغلب بر روی مجموعه داده های بسیار بزرگ که در RAM جا نمی شوند آموزش می بینند. بلعیدن یک مجموعه داده بزرگ و پیش پردازش آن به طور موثر می تواند برای سایر کتابخانه ها یادگیری عمیق دشوار باشد، اما TensorFlow به لطف API داده این کار را آسان می کند: شما فقط یک مجموعه داده از اشیا ایجاد می کنید، به آن بگویید که از کجا اطلاعات را دریافت کنید ، سپس آن را به هر شکلی که می خواهید تغییر دهید ، و TensorFlow ازتمام جزئیات پیاده سازی ، مانند صف بندی چند رشته ای ، دسته بندی ، پیش واکشی و غیره مراقبت می کند.

خارج از قفسه ، Data API می تواند از فایل های متنی (مانند فایل های CSV) ، فایل های باینری با رکوردهایی با اندازه ثابت و رکوردهای  باینری که از قالب TFRecord TensorFlow استفاده می کنند ، که از رکوردهایی با اندازه های مختلف پشتیبانی می کند، بخواند. TFRecord یک فایل باینری انعطاف پذیر و کارآمدبر اساس پروتکل بافر (یک قالب باینری منبع باز) می باشد.Data API  نیزدارای قابلیت خواندن از پایگاه های داده SQL می باشد. علاوه بر این ، بسیاری از برنامه های افزودنی منبع بازبرای خواندن از انواع منابع داده مانند سرویس BigQuery Google  در دسترس هستند.

با این حال ، خواندن کارآمد مجموعه داده های عظیم تنها مشکل نیست: داده ها نیز نیاز به پیش پردازش دارند. در واقع ، همیشه به طور دقیق از زمینه های عددی مناسب تشکیل نشده است : گاهی اوقات ویژگی های متن ، ویژگی های طبقه بندی و غیره وجود خواهد داشت. برای رسیدگی به این امر ، TensorFlow ویژگی های API را ارائه می دهد: به شما امکان می دهد به راحتی این  ویژگی هارا به ویژگی های عددی که می تواند توسط شبکه عصبی شما مصرف شودتبدیل کنید. به عنوان مثال ، ویژگی های دسته بندی با تعداد زیادی دسته (مانند شهرها ، یا کلمات) را می توان با استفاده از جاسازی رمزگذاری کرد (همانطور که خواهیم دید ، جاسازی قابل آموزش است بردار متراکم که نشان دهنده یک دسته است).

توجه داشته باشید که هم DATA API و هم Feature API بصورت یکپارچه با tf.keras کار میکنند.

در این فصل ما Data API ، با قالب TFRecord وFeature API را با جزییات را پوشش خواهیم داد. ما همچنین نگاهی گذرا به چند پروژه مرتبط با اکوسیستم  TensorFlow خواهیم داشت.

فصل 14 : بینایی ماشین عمیق با استفاده از شبکه های عصبی عمیق

اگرچه ابر رایانه Deep Blue IBM قهرمان شطرنج جهان گری کاسپاروف را در سال 1996 شکست داد، تا همین اواخر بود که رایانه ها توانستند به طور قابل اعتمادی کار کنند ،انجام کارهای به ظاهر بی اهمیت مانند تشخیص توله سگ در یک تصویر یا تشخیصکلمات گفتاری .چرا این وظایف برای ما انسانها بی دردسر است؟ پاسخ دراین واقعیت است که درک عمدتاً خارج از حوزه آگاهی ما ، در داخل ماژول های بصری ، شنیداری و سایر حسی تخصصی در مغز ما صورت میگیرد.

شبکه های عصبی کانولوشن (CNNs) از مطالعه بینایی مغز پدید آمد و از دهه 1980 در تشخیص تصویر استفاده می شوند. در چند سال اخیر ، به لطف افزایش قدرت محاسباتی ، میزان آموزشهای موجود داده ها و ترفندهای ارائه شده در فصل 11 برای آموزش شبکه های عمیق ، CNN ها  دستیابی به عملکرد فوق بشری در برخی از کارهای پیچیده بصری را مدیریت کرده اند. آنها قدرت  خدمات جستجوی تصویر ، اتومبیل های خودران ، سیستم های طبقه بندی خودکار فیلم وبیشتر را دارند. علاوه بر این ، CNN ها محدود به درک بصری نیستند: آنها همچنین موفق در بسیاری از کارهای دیگر ، مانند تشخیص صدا یا پردازش زبان طبیعی (NLP) هستند؛با این حال ، ما در حال حاضر بر برنامه های بصری تمرکز می کنیم.

در این فصل ما ارائه خواهیم داد که CNN ها از کجا آمده اند ، بلوک های سازنده آنها چیست ظاهر و نحوه پیاده سازی آنها با استفاده از TensorFlow و Keras چگونه است. سپس در مورد برخی از بهترین معماری های CNN ، و سایر کارهای بصری ، از جمله تشخیص اشیاء (طبقه بندی چندین اشیاء در یک تصویر و قرار دادن کادرهای محدود کننده در اطراف آنها) و تقسیم بندی معنایی (طبقه بندی هر پیکسل با توجه به کلاس از شیئی که به آن تعلق دارد) بحث خواهیم کرد.

 


نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد