overfitting و underfitting از بزرگترین مشکلاتی است که در آموزش مدل وجود دارد. در این پست به بررسی تفاوت overfitting و underfitting پرداخته و راه حلی که برای این دو مشکل وجود دارد را مطرح می‌کنیم. با کمپنا همراه باشید.

فرض کنیم که فردی که انگلیسی زبان نیست بخواهد زبان انگلیسی را یاد بگیرد. او هیچ دانش قبلی در مورد انگلیسی ندارد اما فقط می‌داند که ویلیام شکسپیر بزرگ‌ترین نویسنده انگلیسی زبان است. یک راه این است که او خود را در یک کتابخانه حبس کند و تمامی آثار شکسپیر را مطالعه کند. بعد از یک سال مطالعه، فرد به نیویورک می‌رود و با اولین نفری که میبیند، سلام و احوالپرسی می‌کند. اولین جمله‌ای که می‌گوید اینگونه است: «!Good dawning to thee, friend». فرد مقابل، با نگاهی تحقیر آمیز، زیرلب خواهد گفت که این مرد دیوانه است.  در این حالت این فرد، یکی از بزرگ‌ترین خطاهای پایه‌ای در آموزش مدل را مرتکب شده‌ایم، overfitting در داده‌های آموزش.

در آموزش‌های data science، یک مدل overfit، مدلی تعریف می‌شود که واریانس زیاد و بایاس کمی روی داده‌های آموزش دارد، که منجر به تعمیم‌پذیری پایینِ مدل به داده‌های جدید می‌شود. بیایید این تعریف را روی مثالی که در ابتدا مطرح کردیم، بررسی کنیم. مدلی که می‌خواهیم بسازیم، برقراری ارتباط از طریق زبان انگلیسی است. داده‌های آموزشی، تمامی آثار شکسپیر هستند و داده تست، نیویورک است. اگر معیار ارزیابی، پذیرش عموم مردم باشد، در این صورت مدل ما در تعمیم به داده‌های تست، با شکست مواجه می‌شود. تا اینجا همه چیز واضح است، اما واریانس یا بایاس چه هستند؟

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

بایاس، نشان‌دهنده‌ی قدرت تخمین‌ها در مورد داده است. در تلاش برای یادگیری زبان انگلیسی، ما هیچ فرض اولیه‌ای در مورد مدل انجام ندادیم و به نویسنده کتاب اعتماد کردیم تا او همه چیز را در مورد زبان، به ما یاد دهد. بایاسِ پایین ممکن است نکته‌ای مثبت به نظر برسد اما چرا باید به داده‌ها اعتماد کرد؟ هر پروسه طبیعی، نویز تولید می‌کند اما نمی‌توان اطمینان داشت که داده‌ها تمام نویز را در بر بگیرند. اغلب لازم است یکسری فرض‌های اولیه در مورد داده‌ها در نظر گرفته و در مدل، فضایی برای نوساناتی که در داده‌ها دیده نمی‌شوند، در نظر گرفت. در مثالی که قبلا مطرح شد، قبل از خواندن کتاب‌های شکسپیر، فرد باید در نظر می‌گرفت که خواندن کتاب‌ نمی‌تواند به تنهایی زبان انگلیسی را به او یاد دهد و او تنها کتاب‌ها را حفظ می‌کند.

مشاهده شد که مدلی که overfit می‌شود، واریانس زیاد و بایاس کمی دارد. اما اگر واریانس کم و بایاس زیاد باشد چه؟ در این حالت گفته می‌شود که مدل، underfit است. underfitt یعنی اینکه مدل به جای اینکه داده‌ها را از نزدیک دنبال کند، از یادگیری آموزه‌هایی که در داده‌های آموزشی وجود دارد، چشم‌پوشی کرده و نمی‌تواند روابط موجود میان داده‌ها را کشف کند.

حال می‌خواهیم چنین مدلی را با کمک مثال قبل، توصیف کنیم. این‌بار فرد مورد نظر، داده‌های آموزشی را به یک سریال تغییر می‌دهد و به عنوان فرض اولیه، تنها جملاتی که با کلمات رایج the، be، to، of و a شروع می‌شوند، مهم قلمداد شده و از بقیه جملات چشم‌پوشی می‌شود. بعد از یک پروسه طولانیِ آموزش، فرد دوباره به نیویورک سفر می‌کند. اما این بار هم شکست می‌خورد. زیرا در این حالت، فرد  تعداد کمی از جملات را می‌تواند درک کند و به خاطر بایاس، در درک ساختار زبان ناتوان است. در فرض اولیه که برای داده‌ها در نظر گرفته شد، زیاده روی شده و مدل underfit شد.

حال چه باید کرد؟ وقتی داده‌ها به دقت دنبال می‌شوند، مدل overfit می‌شود و هنگامی که به داده‌ها  کمتر توجه می‌شود، مدل underfit می‌شود. باید راهی برای پیدا کردن بالانس وجود داشته باشد. خوشبختانه یک راه‌حل مناسب برای حل این مشکل وجود دارد و آن validation است. در مثالی که مطرح شد، فقط دو مجموعه داده وجود دارد، تست و آموزش. در این حالت، قبل از انجام تست، نمی‌توان دریافت که مدل، کمپنا آموزش دیده و کارایی آن کمپنا است. اما اگر یک pre-test وجود داشته باشد، می‌توان مدل را ارزیابی کرده و قبل از تست واقعی آن را اصلاح کرد. به این pre-test فاز validation گفته می‌شود و یک بخش مهم در توسعه مدل است.

overfitting و underfitting

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

در تصویر زیر تمامی شبکه‌هایی که در این پست مورد بررسی قرار می‌گیرند، نشان داده شده است.

انواع شبکه‌های عصبی

انواع شبکه‌های عصبی

همان‌طور که می‌دانیم، پرسپترون، ساده‌ترین و قدیمی‌ترین مدل برای نورون است. پرسپترون، ورودی‌ها را دریافت دریافت کرده، آن‌ها را باهم جمع می‌کند. سپس این حاصل جمع را از یک activation function عبور داده و نتیجه را به لایه خروجی می‌دهد.

 

انواع شبکه‌های عصبی

شبکه‌های عصبی FF) feed forward) نیز تقریبا شبکه‌هایی قدیمی محسوب می‌شوند. این شبکه‌ها از قوانین زیر مطابعت می‌کنند:

  • تمامی گره‌ها fully connected هستند.
  • هیچ حلقه برگشتی در شبکه وجود ندارد.
  • یک لایه (لایه‌ی پنهان) میان ورودی و خروجی وجود دارد.

در بیش‌تر موارد، این نوع شبکه‌ها توسط الگوریتم‌های پس‌انتشار آموزش داده می‌شوند.

 

انواع شبکه‌های عصبی

شبکه‌های RBF در واقع همان شبکه‌های عصبی feed forward هستند که به جای توابع logistic از توابع  radial basis  به عنوان activation function استفاده می‌شود. اما تفاوت این دو شبکه در چیست؟

توابع logistic، در پاسخ به سوال بله یا خیر، مقادیر ورودی را به بازه صفر تا یک، نگاشت می‌کنند. این توابع برای کلاس‌بندی و تصمیم‌گیری مناسب هستند اما برای مقادیر پیوسته، کارآیی ندارند. در مقابل، توابع radial basis، به سوال چه اندازه از هدف فاصله داریم پاسخ می‌دهند. به همین دلیل در تخمین و کنترل ماشین عملکرد عالی دارند. 

اگر بخواهیم این شبکه را در یک جمله خلاصه کنیم، شبکه‌های عصبی Radial Basis، همان شبکه‌های feed forward هستند و تنها در activation function و کاربرد تفاوت دارند.

 

انواع شبکه‌های عصبی

شبکه‌های عصبی DFF) deep feed forward ) در دهه ۹۰، آغازگر راهی بودند که بعدها منجر به پیدایش مبحث یادگیری عمیق شد. شبکه‌های DFF در واقع همان شبکه‌های FF هستند که بیش از یک لایه پنهان، میان ورودی و خروجی خود دارند. اما برتری این شبکه‌ها نسبت به شبکه‌های FF در چیست؟

هنگام آموزش مدل FF، تنها مقدار کمی از خطا به لایه بعدی منتقل می‌شود. با اضافه شدن لایه‌های بیشتر، شبکه‌های DFF، قادر بودند که اطلاعات بیشتری در مورد خطاها به دست بیاورند. اگرچه، از آنجایی که با افزایش لایه‌های پنهان زمان مورد نیاز برای آموزش شبکه DFF بسیار طولانی می‌شد، در ابتدا این شبکه‌ها غیرعملی تلقی می‌شدند. اما از سال ۲۰۰۰ به بعد، روش‌های جدیدی برای آموزش شبکه‌های DFF ارائه شد که سرچشمه سیستم‌های یادگیری ماشین مدرن بوده و کارآیی شبکه‌های DFF را اثبات نمودند.

در واقع شبکه‌های DFF، همان شبکه‌های FF هستند با تعداد لایه‌های پنهان بیشتر و نتایج خیلی بهتر.

 

overfitting و underfitting از بزرگترین مشکلاتی است که در آموزش مدل وجود دارد. در این پست به بررسی overfitting و underfitting پرداخته و راه حلی که برای این دو مشکل وجود دارد را مطرح می‌کنیم. با کمپنا همراه باشید.

فرض کنیم که فردی که انگلیسی زبان نیست بخواهد زبان انگلیسی را یاد بگیرد. او هیچ دانش قبلی در مورد انگلیسی ندارد اما فقط می‌داند که ویلیام شکسپیر بزرگ‌ترین نویسنده انگلیسی زبان است. یک راه این است که او خود را در یک کتابخانه حبس کند و تمامی آثار شکسپیر را مطالعه کند. بعد از یک سال مطالعه، فرد به نیویورک می‌رود و با اولین نفری که میبیند، سلام و احوالپرسی می‌کند. اولین جمله‌ای که می‌گوید اینگونه است: «!Good dawning to thee, friend». فرد مقابل، با نگاهی تحقیر آمیز، زیرلب خواهد گفت که این مرد دیوانه است.  در این حالت این فرد، یکی از بزرگ‌ترین خطاهای پایه‌ای در آموزش مدل را مرتکب شده‌ایم، overfitting در داده‌های آموزش.

در آموزش‌های data science، یک مدل overfit، مدلی تعریف می‌شود که واریانس زیاد و بایاس کمی روی داده‌های آموزش دارد، که منجر به تعمیم‌پذیری پایینِ مدل به داده‌های جدید می‌شود. بیایید این تعریف را روی مثالی که در ابتدا مطرح کردیم، بررسی کنیم. مدلی که می‌خواهیم بسازیم، برقراری ارتباط از طریق زبان انگلیسی است. داده‌های آموزشی، تمامی آثار شکسپیر هستند و داده تست، نیویورک است. اگر معیار ارزیابی، پذیرش عموم مردم باشد، در این صورت مدل ما در تعمیم به داده‌های تست، با شکست مواجه می‌شود. تا اینجا همه چیز واضح است، اما واریانس یا بایاس چه هستند؟

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

بایاس، نشان‌دهنده‌ی قدرت تخمین‌ها در مورد داده است. در تلاش برای یادگیری زبان انگلیسی، ما هیچ فرض اولیه‌ای در مورد مدل انجام ندادیم و به نویسنده کتاب اعتماد کردیم تا او همه چیز را در مورد زبان، به ما یاد دهد. بایاسِ پایین ممکن است نکته‌ای مثبت به نظر برسد اما چرا باید به داده‌ها اعتماد کرد؟ هر پروسه طبیعی، نویز تولید می‌کند اما نمی‌توان اطمینان داشت که داده‌ها تمام نویز را در بر بگیرند. اغلب لازم است یکسری فرض‌های اولیه در مورد داده‌ها در نظر گرفته و در مدل، فضایی برای نوساناتی که در داده‌ها دیده نمی‌شوند، در نظر گرفت. در مثالی که قبلا مطرح شد، قبل از خواندن کتاب‌های شکسپیر، فرد باید در نظر می‌گرفت که خواندن کتاب‌ نمی‌تواند به تنهایی زبان انگلیسی را به او یاد دهد و او تنها کتاب‌ها را حفظ می‌کند.

مشاهده شد که مدلی که overfit می‌شود، واریانس زیاد و بایاس کمی دارد. اما اگر واریانس کم و بایاس زیاد باشد چه؟ در این حالت گفته می‌شود که مدل، underfit است. underfitt یعنی اینکه مدل به جای اینکه داده‌ها را از نزدیک دنبال کند، از یادگیری آموزه‌هایی که در داده‌های آموزشی وجود دارد، چشم‌پوشی کرده و نمی‌تواند روابط موجود میان داده‌ها را کشف کند.

حال می‌خواهیم چنین مدلی را با کمک مثال قبل، توصیف کنیم. این‌بار فرد مورد نظر، داده‌های آموزشی را به یک سریال تغییر می‌دهد و به عنوان فرض اولیه، تنها جملاتی که با کلمات رایج the، be، to، of و a شروع می‌شوند، مهم قلمداد شده و از بقیه جملات چشم‌پوشی می‌شود. بعد از یک پروسه طولانیِ آموزش، فرد دوباره به نیویورک سفر می‌کند. اما این بار هم شکست می‌خورد. زیرا در این حالت، فرد  تعداد کمی از جملات را می‌تواند درک کند و به خاطر بایاس، در درک ساختار زبان ناتوان است. در فرض اولیه که برای داده‌ها در نظر گرفته شد، زیاده روی شده و مدل underfit شد.

حال چه باید کرد؟ وقتی داده‌ها به دقت دنبال می‌شوند، مدل overfit می‌شود و هنگامی که به داده‌ها  کمتر توجه می‌شود، مدل underfit می‌شود. باید راهی برای پیدا کردن بالانس وجود داشته باشد. خوشبختانه یک راه‌حل مناسب برای حل این مشکل وجود دارد و آن validation است. در مثالی که مطرح شد، فقط دو مجموعه داده وجود دارد، تست و آموزش. در این حالت، قبل از انجام تست، نمی‌توان دریافت که مدل، کمپنا آموزش دیده و کارایی آن کمپنا است. اما اگر یک pre-test وجود داشته باشد، می‌توان مدل را ارزیابی کرده و قبل از تست واقعی آن را اصلاح کرد. به این pre-test فاز validation گفته می‌شود و یک بخش مهم در توسعه مدل است.

overfitting و underfitting

لطفا به این پست رای دهید…

۱
برچسب

deep learning, deep learning tensorflow, machine learning, model training, neural network, overfitting, underfitting, validation, یادگیری عمیق, یادگیری ماشین,

در این پست می‌خواهیم با مفهوم Dropout در شبکه‌های عصبی آشنا شویم. با کمپنا همراه باشید.

واژه Dropout به معنای کنار گذاشتن بخش‌هایی (units) از یک شبکه عصبی است. یک شبکه عصبی که شامل تعدادی نورون است، در نظر بگیرید. Dropout به این معنا است که در حین آموزشِ این نورون‌ها، از تعدادی از آن‌ها به صورت تصادفی چشم‌پوشی شود. چشم‌پوشی یعنی اینکه آن نورون‌های خاص، در مسیر رفت یا برگشت در نظر گرفته نمی‌شوند.

اگر بخواهیم فنی‌تر بررسی کنیم، Dropout یعنی اینکه در هر مرحله از آموزش، نودهایی از شبکه، با احتمال ۱-p کنار گذاشته شده و نودهای دیگری با احتمال p، حفظ می‌شوند. بنابراین یک شبکه کاهش یافته باقی می‌ماند.

حال که با مفهوم Dropout آشنا شدیم، این سوال مطرح می‌شود که، چرا به Dropout نیاز است؟ چرا نیاز است که بخشی از شبکه خاموش شود؟

جواب این سوال این است که، Dropout از over-fitting جلوگیری می‌کند.

در یادگیری ماشین، یکی از راه‌های جلوگیری از overfitting، رگولاریزاسیون است. رگولاریزاسیون با اضافه کردن یک پنالتی به تابع هزینه، overfitting را کاهش می‌دهد. با اضافه کردن این پنالتی، مدل به گونه‌ای آموزش داده می‌شود که وزن‌های ویژگی‌های وابسته، آپدیت نمی‌شوند. Dropout یک رویکرد برای رگولاریزاسیون در شبکه‌های عصبی است که باعث کاهش یادگیری‌های تکراری میان نورون‌ها می‌شود.

لطفا به این پست رای دهید…

۰
برچسب

deep learning tensorflow, Dropout, machine learning, neural network, شبکه عصبی, شبکه عصبی با تنسورفلو, شبکه عصبی عمیق, شبکه عمیق, یادگیری عمیق, یادگیری ماشین,

موضوع این پست Activation Function در شبکه‌های عصبی است. در ابتدا با مفهوم Activation Function آشنا شده و سپس انواع آن را بررسی می‌کنیم.

یک نورون، دارای یک یا چند ورودی است. ابتدا نورون به هرکدام از ورودی‌ها، وزنی اختصاص می‌دهد. سپس این ورودی‌های وزن‌دار با یکدیگر جمع می‌شوند. نورون باید با توجه به این ورودی‌ها و متناسب با آن‌ها، یک خروجی بدهد. تابعی که مشخص می‌کند که خروجی نورون چه باید باشد، Activation Function نامیده می‌شود.

Activation Function در شبکه‌های عصبی

همانطور که مشاهده می‌شود، این activation function یک خط است. بنابراین خروجی این تابع، در بازه خاصی محدود نخواهد شد و بازه خروجی از منفی بی‌نهایت تا بی‌نهایت است.

می‌توان اثبات نمود، یک شبکه عصبی که تمامی نورون‌ها دارای  activation function خطی هستند، درواقع یک نورون واحد است. این تابع در داده‌های با پارامترهای مختلف و شبکه‌های پیچیده قابل استفاده نیست. در پست‌های آینده این موضوع بررسی خواهد شد.موضوع این پست Activation Function در شبکه‌های عصبی است.

Activation Function در شبکه‌های عصبی

activation function‌های غیرخطی بسیار مورد استفاده قرار می‌گیرند. این غیرخطی بودن، کمک می‌کند تا مدل به راحتی با داده تطبیق پیدا کند و خاصیت تعمیم‌پذیری (Generalization) بهتری داشته باشد.

در ادامه با چند activation function غیرخطی آشنا خواهیم شد.

Activation Function در شبکه‌های عصبی

تابع Sigmoid یک منحنی به شکل S است. دلیل اصلی استفاده از این تابع این است که بازه‌ای محدود به صفر و یک دارد و خصوصا در مدل‌هایی که خروجی آن‌ها احتمال است، مورد استفاده قرار می‌گیرد. مقدار احتمال بین صقر و یک است،  بنابراینSigmoid  انتخاب خوبی است. Sigmoid تابعی مشتق‌پذیر و یکنوا صعودی است.

Activation Function در شبکه‌های عصبی

تابع tanh، شبیه به Sigmoid و بهتر از آن است. بازه خروجی تابع tanh، بین ۱- و ۱ بوده و مانند Sigmoid، منحنی آن به شکل S است.

مزیت tanh به Sigmoid در این است که در tanh، مقادیر منفیِ ورودی، به مقادیری منفی نگاشت می‌شوند و مقدار ورودی صفر، نزدیک به صفر نگاشت می‌شود. این در حالی است که در sigmoid، مقادیر منفی به مقادیری نزدیک به صفر نگاشته می‌شوند. تابع tanh نیز مشتق‌پذیر و یکنوا صعودی است.

در حال حاضر، ReLU تقریبا در تمامی شبکه‌های عصبی جدید و یادگیری عمیق استفاده می‌شود.

 Activation Function در شبکه‌های عصبی

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

اما ReLu یک مشکل بزرگ دارد و آن مشکل این است که این تابع بلافاصله ورودی‌های منفی را صفر می‌کند و این امر موجب می‌شود که مدل نتواند به خوبی روی داده‌ها فیت شود و آموزش ببیند.

این تابع برای حل مشکل ReLU ارائه شده است.

Activation Function در شبکه‌های عصبی

مقدار a معمولا ۰٫۰۱ در نظر گرفته می‌شود. اگر a=0.01 نباشد، به آن Randomized ReLU گفته می‌شود. بازه‌ی خروجی این تابع از منفی بی‌نهایت تا بی‌نهایت است و یکنوا صعودی است.

 

در این پست می‌خواهیم با Logistic regression آشنا شویم. در ابتدا با مفهوم Logistic regression آشنا شده، سپس مثالی از یک شبکه که از Logistic regression استفاده می‌کند، آورده شده است. با کمپنا همراه باشید.

به طور کلی، شبکه‌های عصبی به منظور کلاسترینگ، کلاس‌بندی یا رگرسیون مورد استفاده قرار می‌گیرند. نقشه‌های Logistic regression، مجموعه‌ای از داده‌های پیوسته را به مجموعه داده‌های پیوسته دیگری نگاشت می‌کنند. این در حالی است که در کلاس‌بندی، نوعی از Logistic regression در آخرین لایه شبکه استفاده می‌شود تا داده‌های پیوسته را به متغیرهایی بی‌معنی مثل ۰ یا ۱ تبدیل کند.

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

Logistic regression

در دیاگرام بالا، x نشان‌دهنده ورودی است. هر ورودی در یک وزن متناظر (w) ضرب می‌شود. مجموع این ضرایب با یک بایاس جمع شده و به یک activation function داده می‌شود. در اینجا از تابع ReLU استفاده شده است. تابع ReLU برای هر گره پنهان، یک خروجی a تولید می‌کند. این خروجی‌ها در گره خروجی با یکدیگر جمع می‌شوند.

شبکه عصبی که عمل رگرسیون را انجام می‌دهد تنها یک گره خروجی دارد و خروجی این گره، تنها مجموع خروجی‌های لایه قبل با ضریب یک است. خروجی شبکه ŷ خواهد شد، متغیری وابسته که تمامی ورودی‌ها به آن نگاشته می‌شوند.

برای انجام عملیات پس‌انتشار (backpropagation ) و یادگیری شبکه، به سادگی می‌توان مقدار ŷ را با مقادیر واقعی (ground-truth) مقایسه کرده و متناسب با آن مقادیر وزن‌ها و بایاس را تنظیم کرد تا خطای شبکه مینیمم شود. مثلا از RMSE می‌توان به عنوان تابع هزینه استفاده نمود.

به این ترتیب می‌توان از یک شبکه عصبی برای تبدیل متغیرهای مستقل x به متغیرهای وابسته y استفاده کرد. متغیر y، همان متغیری است که می‌خواهیم پیش‌بینی کنیم.

لطفا به این پست رای دهید…

۰
برچسب

deep learning, deep learning tensorflow, Logistic regression, machine learning, neural network, رگرسیون, رگرسیون باینری, کلاس‌بندی, یادگیری عمیق, یادگیری ماشین,


کد خبر:
۴۷۷۰۲۳
| تاریخ مخابره:
۱۳۹۷/۷/۱
۲۱:۰۸

کمپنا – تیم پرسپولیس در دیداری کم‌هیجان فرصت‌های پرتعداد گلزنی را به سادگی از دست داد اما در دقیقه ۹۰ شوت سنگین آدام همتی سقف دروازه سپیدرود را فرو ریخت.



به گزارش کمپنا، پرسپولیس امشب با برتری یک بر صفر مقابل سپیدرود به یک امتیازی پدیده صدرنشین رسید تا در آستانه دربی روحیه مضاعفی بگیرد.


 


آدام همتی در دقیقه ۸۱ به جالی عالیشاه وارد زمین شد تا تعویض طلایی برانکو لقب گیرد. کوروش ملکی گلر سپیدرود در این بازی سیوهای خوبی داشت و بارها وقت بازی را با زمین خوردن‌های خود گرفت. او به همین دلیل یک کارت زرد از داور دریافت کرد.



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



پدیده و پرسپولیس به ترتیب با ۱۶ و ۱۵ امتیاز در رده‌های اول و دوم هستند.


 


عکس: علیرضا زینلی



در این پست می‌خواهیم تعدادی از معیار‌های ارزیابی در یادگیری ماشین را بررسی کنیم. یکی از مهم‌ترین قدم‌ها پس از طراحی و ساخت یک مدل، ارزیابی کارآیی (performance) آن است. در ادامه با تکنیک‌هایی برای ارزیابی مدل آشنا می‌شویم. با کمپنا همراه باشید.

انتخاب یک معیار برای کارآیی، به مسئله‌ای که سعی در حلِ آن داریم، وابسته است. فرض کنیم ۱۰۰ نمونه داده در دسترس باشد. این داده‌ها تک‌تک به مدل داده شده و به ازای هرکدام، یک کلاس به عنوان خروجی دریافت شود. کلاسِ پیش‌بینی شده توسط مدل و کلاسِ واقعی داده‌ها را می‌توان در یک جدول نمایش داد. به این جدول، ماتریس اختلاط گفته می‌شود.

معیار‌های ارزیابی در یادگیری ماشین

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

به منظور توصیف بهتر، ماتریس اختلاط را به صورت زیر در نظر می‌گیریم:

معیار‌های ارزیابی در یادگیری ماشین

به طور کلی، دقت به این معناست که مدل تا چه اندازه خروجی را درست پیش‌بینی می‌کند.

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

وقتی که مدل نتیجه را مثبت (positive) پیش‌بینی می‌کند، این نتیجه تا چه اندازه درست است؟

معیار‌های ارزیابی در یادگیری ماشین

زمانی که ارزش false positives بالا باشد، معیار صحت، معیار مناسبی خواهد بود. فرض کنید، مدلی برای تشخیص سرطان داشته باشیم و این مدل Precision پایینی داشته باشد. نتیجه این امر این است که این مدل، بیماری بسیاری از افراد را به اشتباه سرطان تشخیص می‌دهد. نتیجه این امر استرس زیاد، آزمایش‌های فراوان و هزینه‌های گزافی را برای بیمار به دنبال خواهد داشت.

معیار‌های ارزیابی در یادگیری ماشین

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

معیار‌های ارزیابی در یادگیری ماشین

معیار F1، یک معیار مناسب برای ارزیابی دقت یک آزمایش است. این معیار Precision و Recall را با هم در نظر می‌گیرد. معیار F1 در بهترین حالت، یک و در بدترین حالت صفر است.

لطفا به این پست رای دهید…

۰
برچسب

confusion matrix, deep learning, deep learning tensorflow, deep model, F1, F1 Score, model, neural network, performance, Precision, Recall, ارزیابی, صحت, کارآیی, ماتریس اختلاط, یادگیری عمیق, یادگیری ماشین,

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

سلام، در این پست می‌خواهیم در مورد الگوریتم Gradient Descent یا به اصطلاح فارسی، گرادیان کاهشی صحبت کنیم. با کمپنا همراه باشید.


الگوریتم Gradient Descent یک الگوریتم بهینه‌سازی کارآمد است. این الگوریتم تلاش می‌کند تا مینیمم سراسریِ (global minimum) یک تابع اتلاف (cost function) را بیابد. الگوریتم Gradient Descent، گرادیان محلیِ تابع خطا را نسبت به پارامتر θj محاسبه نموده و در جهت کاهش گرادیان حرکت می‌کند. زمانی که این گرادیان صفر شود، یعنی خطا صفر است و تابع هزینه به مینیمم مقدار خود رسیده است.

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

برای محاسبه نقطه مینیممِ تابع هزینه، باید پارامترهای تابع هزینه برای همه θjها و روی همه داده‌ها محاسبه شود. این، راهی بهینه برای یافتن مینیممِ تابع اتلاف نیست. اینجاست که اهمیت Gradient Descent مشخص می‌شود.

در این روش، ابتدا همه پارامترهای θ با مقادیر رندم، مقداردهی اولیه می‌شوند (random initialization). سپس الگوریتم Gradient Descent، گرادیان تابع اتلاف را در این نقطه محاسبه می‌کند. مقدار گرادیان، شیب منحنی تابع اتلاف در نقطه مورد نظر است. سپس طبق رابطه:پارامترهای θj به گونه‌ای آپدیت می‌شوند که الگوریتم در جهت مینیمم شدن تابع اتلاف حرکت می‌کند. در فرمول بالا، J تابع اتلاف و α نرخ یادگیری است.

این فرآیند به صورت تکراری (Iterative) انجام می‌شود. الگوریتم در هر تکرار، یک قدم به سمت نقطه مینیمم حرکت می‌کند و در نهایت پس از چندین تکرار، به نقطه مینیمم (نقطه بهینه یا نقطه همگرایی) می‌رسد.

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

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

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

لطفا به این پست رای دهید…

۱