فرض کنید مدیر یک بانک هستید و میخواهید سیستمی هوشمند ایجاد کنید و این سیستم بتواند تشخیص دهد که یک مشتریِ متقاضی وام، آیا میتواند وام خود را پس دهد یا خیر؟ برای ایجاد این سیستم با استفاده از الگوریتمهای شبکههای عصبی نیاز به مجموعهی دادهای از مشتریان سابق به همراه ویژگیهای آنها داریم. مشتریانی که برخی از آنها توانستهاند وام خود را بازگردانند و برخی نتوانستهاند این کار را انجام دهند.
ادامه خواندن “حل یک مثال عددی یادگیری ماشین با شبکههای عصبی”کاهش گرادیان (Gradient Descent) در شبکه های عصبی
در درس قبلی با بحثِ پس انتشارِ خطا آشنا شدیم و متوجه شدیم که شبکههای عصبی برای به هنگامسازیِ وزنها و انحراف، باید عملیاتِ پس انتشار را در هر بار اجرای الگوریتم انجام دهند. هر تکرار از اجرای الگوریتم که یک iteration شناخته میشود، میتواند وزن و انحرفها را به گونهای به هنگام (update) کند که الگوریتمِ شبکهی عصبی بتواند ویژگیهای مختلف و طبقههای متفاوت را شناسایی کند. برای درکِ بهتر فرض کنید خودتان در مدرسه برای امتحانِ نهایی آماده میشوید و میخواهید چند مرتبه از روی کتاب روخوانی کنید. در واقع شما هم به نوعی iterate را انجام میدهید.
در این درس به بحثِ کاهش گرادیان (gradient descent) در شبکههای عصبی میپردازیم که در واقع پایهی عملیات پس انتشار خطا میباشد.
ادامه خواندن “کاهش گرادیان (Gradient Descent) در شبکه های عصبی”
نحوه یادگیری پس انتشار خطا (Back Propagation) در شبکه های عصبی
از دروس قبل به یاد دارید که شبکهی عصبی به دنبالِ یادگیری از طریقِ تغییرات در وزنها (W) و انحرافها (b) است. اصل یادگیری در شبکه های عصبی با تکرار یا همان iteration انجام میشود. یعنی چندین مرتبه دادههای یک مجموعه داده (dataset) به الگوریتم تزریق میشود و این الگوریتم با کم و زیاد کردن وزنها و انحرافها، میتواند تفاوتها را در دادههای آموزشی تشخیص دهد. مثال پراید و اتوبوس را همیشه به یاد داشته باشید.
ادامه خواندن “نحوه یادگیری پس انتشار خطا (Back Propagation) در شبکه های عصبی”
تابع ضرر (Loss Function) در شبکه عصبی چیست و چه کاربردی دارد؟
تا اینجا در دورهی آشنایی با شبکههای عصبی، به این نتیجه رسیدیم که شبکهی عصبی به دنبال یک سری وزنها (W) و انحراف (b) هست تا بتواند خطوطی مرزی بین انواع مختلف (مثلا پراید و اتوبوس) رسم کرده و به وسیلهی آنها، تفاوتها را یادگرفته و درک کند. این کار با استفاده از قانونِ ضرب و توابعِ فعالسازی انجام میشد. در این درس آرام آرامْ به سمت آموزش در شبکهی عصبی میرویم. این نکته را بدانیم که پایهی آموزش در شبکههای عصبی بر اساسِ تابع ضرر است.
ادامه خواندن “تابع ضرر (Loss Function) در شبکه عصبی چیست و چه کاربردی دارد؟”
درباره توابع فعال سازی پرسپترون و Sigmoid
در این درس از دورهی شبکه های عصبی به توابعِ فعالساز (activation functions) میرسیم. در اینجا قصد نداریم تمامیِ توابعِ فعالساز را با هم به صورت دقیق مرور کنیم. فقط میخواهیم چند نمونهی کاربردی از این توابع را در شبکههای عصبی بررسی کنیم.
یک تعریف ساده و البته کمی نادقیق درباره توابع فعالساز وجود دارد: این توابع در واقع یک قسمت در شبکههای عصبی هستند که ورودیِ آنها یک عدد (کوچک یا بزرگ در بازهی دلخواه) است و خروجیِ آنها معمولاً یک عدد بین ۰ و ۱، یا ۱- و ۱+ است. در واقع این توابع یک عددِ ورودی را به یک بازه مشخص (مثلا ۱- تا ۱+) تبدیل میکنند. به توابعِ فعالساز، توابع انتقال (transfer function) نیز میگویند.
پرسپترون چند لایه (Multi Layer Perceptron) چیست؟
در درسِ اول در دورهی جاری دیدیم که با یک پرسپترون میتوان خطی رسم کرد که تفاوتِ پراید و اتوبوس را تشخیص دهد. در واقع برای تشخیصِ پراید و اتوبوس برای یک کامپیوتر، ویژگیهای آنها را به بُرداردها و ابعادِ ریاضی تبدیل کرده و به الگوریتمهای دادهکاوی و یادگیریِماشین میدهیم. حال فرض کنید که مسئلهی ما به سادگیِ تفاوتِ پراید و اتوبوس نباشد. مسائل پیچیدهتر را دیگر نمیتوان با یک پرسپترون ساده حل کرد.
ادامه خواندن “پرسپترون چند لایه (Multi Layer Perceptron) چیست؟”
پرسپترون در شبکه عصبی چگونه یاد میگیرد؟
با خواندن درس قبل فهمیدیم که پرسپترون (perceptron) چیست و یک طبقهبندیِ ساده بین پراید و اتوبوس با استفاده از ویژگیهای ورودی به شبکه را با هم مرور کردیم. در این درس میخواهیم به صورتِ عمیقتر به بحث پرسپترون و یک مدلِ یادگیریِ ساده در شبکهی عصبی بپردازیم که پایهی بسیاری از شبکههای عصبیِ دیگر است. این درس را با دقت بیشتری مطالعه کنید زیرا میتواند پایهای برای بسیاری از مباحثِ یادگیریماشین و دادهکاوی باشد.
تعریف پرسپترون (Perceptron) در شبکه های عصبی
در درس قبل یک شمای کلی از شبکههای عصبی و قانونِ ضربِ ورودی در وزنها را یادگرفتیم. اجازه بدهید در این درس ببنیم کامپیوتر با شبکههای عصبی چگونه یادگیری را انجام میدهد.
فرض کنید به یک بچهی کوچک میخواهید آموزش بدهید. مثلاً میخواهید به او بگویید که یک اتوبوس چیست؟ برای این کار چه کاری میکنید؟ یک راهِ ساده (که خودِ ما هم خیلی چیزها را از همین طریق یاد گرفتهایم) این است که به بچهی کوچک بگوییم مثلاً این اتوبوس است و آن اتوبوس نیست. چندین مورد اتوبوس را به بچه نشان میدهیم و چندین موردی که اتوبوس نیست را هم به او میگوییم. به راحتی یک بچه با چند بار تمرین میتواند یاد بگیرد که اتوبوس چیست! یعنی میتواند تمایزِ اتوبوس را با بقیه ماشینهای دیگر درک کند. این روش پایهی روشِ یادگیری در پرسپترون و بسیاری دیگر از الگوریتمهای دادهکاوی است.
شبکه عصبی (Neural Network) چیست؟
مغزِ انسان و بسیاری از موجودات زنده در خود تعداد بسیار زیادی از نورونها (neurons) را جای داده است تا اطلاعاتِ مختلف را پردازش کرده و جهانِ اطراف را بشناسد. به صورت ساده، نورونها در مغزِ انسان اطلاعات را از نورونهای دیگر به وسیلهی دندریت (dendrite) میگیرند. این نورونها اطلاعاتِ ورودی را با هم تجمیع کرده و اگر از یک حدِ آستانهای فراتر رود به اصلاح فعال (fire) میشود و این سیگنالِ فعالْ شده از طریق آکسونها (axons) به نرونهای دیگر متصل میشود. این فرآیند، باعث یادگیریِ ما انسانها شده است و برای مثال یک انسان میتواند تفاوت یک عدد سیب و یک تکه سنگ را با همین مکانیزم بفهمد. در واقع ما انسانها از بدو تولد با مشاهدهی تعداد زیادی سیب و تعداد زیادی سنگ، تفاوت سیب و سنگ را درک کردهایم، ولی یک بچهی کوچک که هنوز تعداد زیادی سیب و سنگ مشاهده نکرده، احتمالاً نمیتواند بین این دو عنصر تفاوتی قائل شود.
ادامه خواندن “شبکه عصبی (Neural Network) چیست؟”