برنامه نویسی شبکه های عصبی همبستگی
ساخت هوش مصنوعی ساده با پایتون: قسمت اول، مفاهیم و اصول اولیه شبکههای عصبی بلاگ پادیوم
چنین کاری به الگوریتم یادگیری شبکه عصبی اجازه میدهد تا مشخص کند که کدام نودها، مسئول تولید بیشترین خطا در عملکرد سیستم هستند و مقادیر پارامترها (به ویژه، پارامتر وزن) را بر این اساس تغییر دهد. روابط مشتقی که در ادامه آمده است، برای تولید توابع لازم جهت پیادهسازی الگوریتم پس انتشار مورد استفاده قرار میگیرند. الگوریتم پس انتشار در شبکه عصبی مصنوعی به اطلاعات اجازه میدهد تا از تابع هزینه لایه خروجی به سمت لایههای پیشین شبکه عصبی انتشار پیدا کنند (پس انتشار اطلاعات) و از این طریق، گرادیانها محاسبه شوند. یکی از بخشهای مهم طراحی یک مدل یادگیری ماشین، «مهندسی ویژگیها» (Feature Engineering) یا مشخص کردن بهترین ویژگیهای ممکن برای تولید یک مدل نمایشی بهینه است. شبکههای عصبی و یادگیری عمیق در حال حاضر بهترین راهحلها را برای بسیاری از مشکلات در تشخیص تصویر، تشخیص گفتار و پردازش زبان طبیعی (natural language processing) ارائه میدهند.
یادگیری نظارتنشده اغلب برای کشف الگوهای پنهان در دادهها استفاده میشود. با مدلسازی رابطه بین متغیرها به صورت خطی، میتوانید متغیرهای وابسته را به عنوان جمع وزنشده متغیرهای مستقل ارائه دهید. در کنار وزنها و متغیرهای مستقل، یک بردار دیگر به نام Bias هم داریم. این بردار زمانی که همه متغیرهای مستقل دیگر معادل صفر هستند، نتیجه را مشخص میکند. مقدار دهی اولیه وزن ها معمولاً عاملی تعیین کننده در آموزش یک شبکه نیست، اما گاهی اوقات می تواند باعث شود که شبکه قادر به آموزش نباشد، زیرا در همگرایی ناکام است. امکان دیگر ایجاد یک η بسیار پایین است، که باعث می شود شبکه ما برای رسیدن به حداقل قابل قبول، به دوره های خیلی زیادی احتیاج داشته باشد.
اگر از مجموعه داده MNIST استفاده می کنیم ماتریس وزن ما 768 ( ورودی ) در ۱۰ ( خروجی ) خواهد بود. ما همچنین لایه های کانولوشنی ، لایه های پولینگ، لایه های حذف کننده ( Dropout ) داریم. بنابراین در عمل، محاسبه حداکثر تعداد نمونه هایی که می توانیم استفاده کنیم، به صورت دستی دشوار است. بله، با مشاوره و سنجش دانش شما در حوزه IT امکان شرکت در دوره مناسب سن و دانش شما وجود دارد. بله، رعایت پیش نیاز های رسمی دوره بسیار مهم هستند، و عملا بدون رعایت آنها امکان بهره وری از دوره وجود ندارد. در دوره های آنلاین، تا دو ماه پس از اتمام دوره، ویدیوهای دوره قابل بازدید در سامانه آموزش آنلاین است.
در ادامه چند نمونه از کارهای انجام شده در این زمینه ارائه شده است. این قانون اجازه میدهد تا گرادیان تابع هزینه نسبت به هر وزن و بایاس در شبکه محاسبه شود. فرض کنید تابع هزینه \(E\) به خروجی یک نرون بستگی دارد و خروجی نرون نیز تابعی از وزنها و بایاسهاست. برای بهروزرسانی وزنها، باید مشتق جزئی تابع هزینه نسبت به هر وزن را محاسبه کنیم. شرکت دانش بنیان اس دیتا (پردازش داده شریف پژوه) با درک ضرورت توسعه خدمات سازمانی داده محور، در سال 1393 آغاز به کار کرد. این مجموعه با پرورش متخصصان متبحر در زمینه تحلیل اطلاعات فعالیت خود را به طور تخصصی در زمینههای تحقیقات بازار، مدیریت ارتباط با مشتری، هوش تجاری، برنامهریزی فروش و مدیریت اثربخشی تبلیغات و توسعه برند گسترش داد.
خب حالا که مفاهیم و اصول اولیه شبکههای عصبی را یاد گرفتیم، میتوانیم از آنها در پایتون استفاده کنیم. در قسمت بعدی نشان میدهیم که چطور با استفاده از این مفاهیم و پایتون، یک شبکه عصبی بسازیم. در این پست ما با مفاهیم و اصول اولیه شبکههای عصبی آشنا شده و نحوه آموزش یک شبکه عصبی را یاد میگیریم. در قسمت بعدی نیز با استفاده از مطالب این پست و پایتون، یک شبکه عصبی میسازیم. در این بخش، با بخشهای مختلف الگوریتم یادگیری در یک شبکه عصبی مصنوعی چند لایه آشنا خواهید شد.
در ابتدای کار، ماتریسهای وزن و بردارهای بایاس متناظر با هر کدام از لایهها، مقداردهی اولیه خواهند شد. در نتیجه، الگوریتم شبکه عصبی مصنوعی، عملا چیزی یاد نخواهد گرفت. بنابراین، بسیار حیاتی است که پارامترهای شبکه های عصبی مصنوعی به وسیله مقادیر تصادفی بین 0 و 1 مقداردهی اولیه شوند. در فرآیند طراحی و آموزش شبکه SDR مراحل مختلفی از جمله انتخاب معماری مناسب، تعریف ورودیها و خروجیها، و استفاده از توابع فعالسازی برای ایجاد ارتباطهای غیرخطی انجام میشود. این شبکه ها معمولاً در محیطهای محدود منابع، مانند دستگاههای جاسازیشده (Embedded Systems)، استفاده میشوند و بهینه سازی کد برای سرعت و کارایی بالا در آنها اهمیت زیادی دارد.
به عنوان مثال، یک مدل طبقهبندی میتواند برای شناسایی اعداد دستنویس یا طبقهبندی تصاویر به عنوان گربه یا سگ استفاده شود. به عنوان مثال، یک مدل رگرسیون میتواند برای پیشبینی قیمت خانه بر اساس ویژگیهای آن یا پیشبینی بازار سهام استفاده شود. دوره حاضر، به منظور آموزش اصول پایه ای یادگیری عمیق و استفاده از این اصول در حوزه های مختلف مانند بینایی ماشین و پردازش توالی ها تدوین شده است. توجه داشته باشید که این یک نمونه از یادگیری تحت نظارت است، بنابراین شما باید مقادیر هدف را نیز ارائه دهید. در این بخش، اجازه دهید چند شبکه عصبی در پایتون با استفاده از پکیج NeuroLab بسازیم.
تحلیل مؤلفههای مستقل (ICA) روشی در تحلیل آماری است که برای استخراج سیگنالهای پنهان از دادههای پیچیده به کار میرود. برخی روشهای خوشهبندی مانند DBSCAN میتوانند ساختارهای پیچیدهای را در دادهها شناسایی کنند که به کمک تحلیل آماری میتوان اعتبار آنها را ارزیابی کرد. بررسی میزان ارتباط بین متغیرها نشان میدهد که آیا برخی ویژگیها میتوانند حذف شوند یا نه. متغیرهایی که همبستگی بالایی دارند، اطلاعات مشابهی ارائه میدهند و ممکن است حذف یا ترکیب شوند. در یادگیری نظارتنشده، الگوریتمهای خوشهبندی مانند K-Means و DBSCAN به شباهت بین دادهها وابسته هستند. اگر ویژگیهایی با همبستگی بالا در مجموعه داده وجود داشته باشند، خوشهبندی ممکن است دچار انحراف شود.
اندرو انگ استاد دانشکده علوم کامپیوتر دانشگاه استنفورد و سرپرست آزمایشگاه هوش مصنوعی استنفورد است. کتابراه مرجع قانونی دانلود کتاب الکترونیکی و دانلود کتاب صوتی است که امکان دسترسی به هزاران کتاب، رمان، مجله و کتاب صوتی و همچنین خرید کتاب الکترونیک از طریق موبایل تبلت و رایانه برای شما فراهم میکند. شما با استفاده از کتابراه همیشه و همه جا به کتابها و کتابخانه خود دسترسی دارید و میتوانید به سادگی از هر فرصتی برای مطالعه استفاده کنید. در کتابراه برای همه سلیقهها از داستان، رمان و شعر تا روانشناسی، تاریخی، علمی، موفقیت و... اپلیکیشن کتابخوان کتابراه برای اندروید، IOS و ویندوز در دسترس است.
این محصول آموزشی جامع شامل هفت بخش میباشد که بهمنظور انتقال دانش و مهارتهای عملی در زمینه دسترسی به دادههای Google Earth Engine و آموزش شبکههای عصبی در محیط Google Colab طراحی شده است. این دوره به شما این امکان را میدهد که بهصورت گامبهگام با فرآیندهای مختلف آشنا شده و مهارتهای لازم برای کار با دادههای ماهوارهای و مدلسازی شبکه عصبی را بهدست آورید. هدف از این مطلب، ارائه مرحله به مرحله الگوریتم یادگیری در شبکه های عصبی مصنوعی و ویژگیهای مشخصه آن است. هدف اصلی پیادهسازی مدل یادگیری شبکه عصبی مصنوعی در این مطلب، ارائه یک مدل دقیق برای دستهبندی تصاویر نیست؛ بلکه، هدف آشنا کردن مخاطب با توابع لازم برای پیادهسازی شبکه های عصبی مصنوعی چند لایه است. با این حال، راهکارهای مختلفی برای افزایش دقت و عملکرد شبکه عصبی مصنوعی وجود دارد که در حیطه این مطلب نمیگنجد.
ANN ها همچنین به عنوان سیستم های عصبی مصنوعی، سیستم های پردازش توزیع شده موازی و سیستم های اتصال گرایانه نامگذاری شده اند. ANN مجموعه بزرگی از واحدها را به دست می آورد که به نوعی به هم متصل شده اند تا ارتباطات بین آنها برقرار شود. این واحدها که به آنها گره یا نورون نیز گفته می شود، پردازنده های ساده ای هستند که به طور موازی کار می کنند. در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، شبکه های عصبی در هوش مصنوعی صحبت خواهیم کرد. برای هر ذره، مقدار وزنها و بایاسها در شبکه عصبی اعمال میشود. سپس شبکه با این مقادیر به عنوان ورودی آموزش داده میشود و خروجیها تولید میشود.
این مشکل منجر به ناپایداری ضرایب مدل و کاهش دقت پیشبینی میشود. با شناسایی متغیرهای همبسته و حذف یا ترکیب آنها، میتوان دقت مدل را بهبود بخشید. یکی از ابزارهای مهم در این زمینه، تحلیل همبستگی است که به بررسی ارتباط بین متغیرها و کاهش ابعاد دادهها کمک میکند. با استفاده از همبستگی، میتوان متغیرهای زائد را حذف کرد، خوشهبندی دادهها را بهبود بخشید و الگوهای پنهان را بهتر شناسایی کرد. تصویر کنید میخواهید یک مدل برای پیشبینی قیمت خانهها بر اساس سال ساخت و محله بسازید.
همچنین، این شبکههای عصبی، با داشتن خروجی متناظر با لایه نهان دوم، بخشهای خاصی از یک تصویر نظیر بینی یک انسان را شناسایی میکنند. در نهایت، و با در کنار هم قرار دادن تمامی مدلهای نمایشی تولید شده در لایههای نهان و تولید یک مدل نمایشی پیچیده، شبکه های عصبی مصنوعی قادر خواهند بود تا نوع اشیاء موجود در تصویر را نیز شناسایی کنند. TensorFlow یک کتابخانه منبعباز محبوب برای یادگیری ماشین و یادگیری عمیق است و Keras یک API سطح بالا است که بر روی TensorFlow ساخته شده است. شما در مورد اصول استفاده از TensorFlow و Keras برای ساخت و آموزش شبکههای عصبی آموزش می بینید. شبکه عصبی SDR یا Segment Display Recognition، نوعی شبکه عصبی است که برای تشخیص اعداد یا کاراکترها در نمایشگرهای سگمنت طراحی شده است.
اولین مرحله برای توسعه یک شبکه عصبی تولید خروجی از دادههای ورودی است. برای شروع باید با استفاده از کتابخانه NumPy در پایتون دادهها را نمایش دهید. ترکیب شبکه عصبی با الگوریتم های مختلف برای یافتن مقدار بهینه وزن یالها و بایاسها به عنوان یک چالش و روشی نوآورانه در اکثر مقالات و تحقیقات مورد استفاده قرار می گیرد. اینکه کدام الگوریتم روشی بهتری نسبت الگوریتم های دیگر است بستگی زیادی به تنظیمات پارامترهای شبکه عصبی و الگوریتم ترکیبی دارد. از اینرو بهتر است روشهای مختلف برای مقایسه بایستی مورد تست و آزمون قرار بگیرد.
این دوره به آموزش یادگیری عمیق و شبکههای عصبی می پردازد، که دو زمینه هیجانانگیز و در حال رشد در علوم کامپیوتر هستند. در این دوره، شما به پایهای قوی در جنبههای نظری و عملی تکنیکهای یادگیری ماشین دست پیدا خواهید کرد. همچنین شما انواع الگوریتمهای یادگیری ماشین، از جمله یادگیری نظارتی، یادگیری بدون نظارت، یادگیری نیمهنظارتی، یادگیری خودنظارتی و یادگیری تقویتی را خواهید آموخت. در ادامه مفاهیم کلیدی پشت هر نوع یادگیری را، مانند دادههای آموزشی، پارامترهای مدل و دقت پیشبینی را بررسی خواهید کرد. یادگیری نظارتی یکی از رایجترین انواع یادگیری ماشین است، که در آن مدل بر روی مجموعه دادهای آموزش میبیند که خروجیهای مورد نظر در آن شناخته شده است. در این بخش سورس شبیه سازی شبکه عصبی مصنوعی Backpropagation به زبان سی شارپ را برای شما آماده کرده ایم که در محیط نرم افزار Visual Studio و زبان برنامه نویسی سی شارپ نوشته شده است.
در فضای توسعه از فریمورکهای یادگیری عمیق نظیر TensorFlow یا PyTorch برای راحتی کار و تسریع فرایند توسعه استفاده میکنند. و K در گرادیان نزولی تصادفی دسته کوچک ، تعداد نمونه های استفاده شده در هر بار به روز رسانی وزن ها را نشان می دهد. این یک پارامتر مهم نیست و معمولاً به حداکثر تعداد نمونه هایی که می توانند در GPU ما جای بگیرند، تعیین می شود. به طور خلاصه، گرادیان نزولی خطای هر نمونه در مجموعه آموزش را محاسبه می کند و سپس وزن ها را در جهتی که شیب نشان می دهد، به روز می کند. هر پیوند اتصال با وزنی همراه است که اطلاعات مربوط به سیگنال ورودی را دارد. این مفیدترین اطلاعات برای سلولهای عصبی برای حل یک مشکل خاص است زیرا وزن معمولاً سیگنال منتقل شده را تحریک یا مهار می کند.
این روش گرادیان نزولی تصادفی ( Stochastic Gradient Descent ) نامیده می شود. با استفاده از گرادیان نزولی تصادفی ، ما فقط باید پیش بینی ها، خطا ها و پس انتشار یک نمونه را برای به روز رسانی وزن ها، محاسبه کنیم. شما با گذراندن این دوره می توانید بر مهارت های AI خود بیافزایید و با آموزش شبکه های عصبی و یادگیری عمیق در این حوزه قوی تر به نقش آفرینی بپردازید. بنابراین این دوره مسیری برای شما فراهم میکند که دانش و مهارت لازم را برای استفاده از یادگیری ماشین در کار خود کسب کنید، سطح فنی خود را ارتقا داده و گام نهایی را برای ورود به دنیای هوش مصنوعی بردارید. یادگیری عمیق مجموعه قدرتمندی از تکنیکها برای یادگیری در شبکههای عصبی است.
یادگیری شبکه عصبی SDR به شما کمک میکند تا دانش خود را در حوزه Neural Networks و کاربردهای عملی آن گسترش دهید و مهارتهای خود در تحلیل و پردازش داده های بصری را تقویت کنید. نوینگز در چند سرفصل و با شرح مطالب بهصورت جزئی، شما را با ابعاد گوناگونی که میتوان از این زبان برنامهنویسی بهره برد آشنا میکند. نوینگز به کارکردها، عناصر و ساختارهای ماشینهای عصبی میپردازد و سپس با نثری آموزشی شرح میدهد که چگونه میتوان از آنها در بستر زبان پایتون استفاده کرد. نوینگز به بررسی نقش پیشپردازش دادهها میپردازد و ساختارهای موجود در آنها و شبکههای عصبی را مورد تحلیل و بررسی خود قرار میدهد. این کتاب ارزشمند و خواندنی توسط عین الله جعفرنژاد قمی ترجمه شده و انتشارات علوم رایانه آن را منتشر کرده است. شبکههای عصبی مصنوعی بهطور سنتی با استفاده از روشهای گرادیانمحور مانند انتشار معکوس (Backpropagation) آموزش داده میشوند.
در این قسمت، شما با نحوه عملکرد شبکههای عصبی و اصول نظری لازم برای درک آنها آشنا خواهید شد. مباحث کلیدی شامل تابع هزینه (Loss Function)، فرآیند آموزش (Training) و مکانیزم Backpropagation بررسی میشود. برای تسهیل درک این مکانیزمها، از یک تابع خطی بهعنوان مثال استفاده میکنیم و با به کارگیری مفاهیم ساده، موضوعات پیچیده را بهطور واضح و قابل فهم توضیح میدهیم. هدف این جلسه ایجاد یک پایه قوی برای درک بهتر مفاهیم پیشرفتهتر در زمینه شبکههای عصبی است. ایده اصلی این نوع شبکه ها تا حدودی الهام گرفته شده از نحوه کارکرد سیستم عصبی زیستی است.
از تابع «T» برای ترانهادن ماتریس از موقعیت افقی به عمودی استفاده شده است. در نهایت، وزن نورونها برای مجموعه داده آموزش فراهم شده بهینهسازی میشود. در نتیجه، اگر نورون ساخته شده تا درباره شرایط جدیدی فکر کند، که شبیه شرایط پیشین است، میتواند یک پیشبینی دقیق انجام دهد. کاری که شما باید انجام دهید این است که یک عملیات پیدا کنید که گاهی باعث همبستگی لایههای میانی با ورودیها شود و گاهی نیز این همبستگی را نشان ندهد. پی استور با شعار «پیشرو و استوار در مسیر دانش» و با همکاری با افراد و اشخاص برجسته در زمینههای علمی گوناگون برای اعتلای امر خطیر آموزش تلاش میکند. به طور کلی فعالیت مجموعه در چهار محور اصلی فیلم و دوره آموزشی، سورس کد آماده، پاورپوینت آماده و تحقیق و پژوهش انجام می پذیرد.
یکی از مزایای استفاده از C++ برای پیاده سازی شبکه های عصبی دسترسی به کتابخانهها و ابزارهای قدرتمندی مانند Eigen و Boost است که عملیات ریاضی و بهینه سازی را ساده و سریع میکنند. علاوه بر این، شما میتوانید با ایجاد ساختارهای دادهای کارآمد و استفاده از تکنیکهایی مانند چندریسمانی (Multithreading) و محاسبات موازی، عملکرد شبکه عصبی خود را به حداکثر برسانید. ویژگیهای کلیدی محصول شامل آموزش گامبهگام و کاربردی برای انتقال دادهها و طراحی شبکههای عصبی, بررسی کاربردهای رگرسیون و طبقه بندی در شبکههای عصبی و تولید نقشههای خروجی دقیق برای تحلیل مناطق هدف است. کار کردن با شبکههای عصبی در واقع شامل انجام عملیات با بردارها است. در فرایند آموزش بردارها با آرایههای چند وجهی نشان داده میشوند.
در اینجا از تابع «سیگموئید» (Sigmoid) استفاده خواهد شد که یک منحنی مشخصه S شکل به عنوان تابع فعالسازی برای شبکه عصبی در پایتون ترسیم میکند. تا به اینجا از دو عملیات ضرب داخلی و جمع استفاده کردهایم که هر دو عملیاتهای خطی هستند. اگر شما لایه های بیشتری اضافه کنید اما تنها از عملیاتهای خطی بهره ببرید، خروجی تغییری نخواهد داشت، چرا که هر لایه با لایه قبلی همبستگی دارد. از این رو به ازای هر شبکه عصبی با چندین لایه، یک شبکه عصبی با لایههای کمتر وجود دارد که همان کار را انجام میدهد. یادگیری نظارتنشده یکی از شاخههای مهم یادگیری ماشین است که بدون استفاده از برچسبهای مشخص، الگوهای پنهان را در دادهها کشف میکند.
پایتون ایجاد شد تا یک زبان برنامه نویسی همه منظوره باشد و در نهایت، پیچیدگی زبان برنامه نویسی را به حداقل برساند... در ادامه، کل کدهای لازم برای ساخت شبکه عصبی در پایتون آورده شده است. در این بخش، هدف ساخت یک کلاس NeuralNetwork در پایتون به منظور آموزش دادن نورونها برای ارائه پیشبینی صحیح است. این کلاس همچنین دارای دیگر «توابع کمک کننده» (helper functions) نیز هست. اکنون، شبکه عصبی را با داشتن دو لایه مخفی با neurolab با ده نورون در اولین لایه پنهان، شش نورون در لایه مخفی دوم و یک لایه در لایه خروجی ایجاد کنید.
از آنجایی که به NumPy و Matplotlib نیز نیاز داریم، آنها را هم نصب میکنیم. مراحل بهروزرسانی سرعت و موقعیت ذرات تا زمانی که به یک معیار همگرایی برسد (مثل تعداد تکرارها یا رسیدن به خطای مطلوب) تکرار میشود. در نتیجه، هر کروموزوم یک بردار با 13 مقدار است که هر مقدار نشاندهنده یک وزن یا بایاس است. تحلیل همبستگی در آمار به اندازهگیری میزان وابستگی بین دو یا چند متغیر گفته میشود. اگر دو متغیر بهطور معناداری با یکدیگر مرتبط باشند، تغییر در یکی میتواند به تغییر در دیگری منجر شود.
در این جلسه می خواهیم در مورد شبکه عصبی، واحدهای پردازشی در شبکه عصبی، نورون ها و… صحبت کنیم. این آموزش رایگان، بخشی از سرفصل یادگیری عمیق در دوره جامع متخصص علم داده می باشد. یکی از اهداف یادگیری نظارتنشده، دستهبندی دادهها در گروههای مشخص است. برای اطمینان از کیفیت خوشهبندی، تحلیل آماری نقش مهمی ایفا میکند. رگرسیون زمانی استفاده میشود که شما قصد دارید رابطه بین یک متغیر وابسته و دو یا بیش از دو متغیر مستقل را حدس بزنید. این روش به قرن ۱۹ میلادی برمیگردد و محبوبترین مدل رگرسیون است.
در این جلسه می خواهیم در مورد توابع فعالساز، انواع و کاربردهای آنها، محوشدگی گرادیان و… صحبت کنیم. در این جلسه می خواهیم در مورد انواع loss function در شبکه عصبی صحبت کنیم. اما این پیشبینی چقدر اشتباه بوده؟ در پست بعدی راهی برای اندازهگیری میزان اشتباه و آموزش مدل پیدا میکنیم. شما باید از NumPy برای نمایش بردارهای ورودی به عنوان آرایه استفاده کنید. اما قبل از این کار بهتر است کمی با بردارها در پایتون کار کنید تا درک بهتری از فرایند داشته باشید. $$(n \times h) + (h \times o)$$و تعداد بایاسها نیز برابر با تعداد نرونها در لایههای پنهان و خروجی است.
برنامه نویسی لینوکس