یادگیری عمیق یا Deep learning چیست؟ بخش اول

بسم الله الرحمن الرحیم

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

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

اگه مطالب این پست رو نخوندید بخونید بعد بیایید اینو بخونید

مفاهیم اصلی

یادگیری ماشین یا Machine Leaning

یادگیری ماشین یکی از مفاهیم اصلی هست که باید بلد باشیم بطور خلاصه تو یادگیری ماشین, ما یکسری داده داریم(دیتاست) و بعد با استفاده از یک مدل میایم و مدلمون رو با استفاده از این داده ها (دیتاست) آموزش میدیم یا اصطلاحا train میکنیم.بعد از اینکه مدلمون رو آموزش دادیم از اون برای پیش بینی بر روی داده های جدید استفاده میکنیم . یکم سخت شد؟ بزارید واضحتر توضیح بدم . تو ماشین لرنینگ سعی ما اینه که به ماشین (کامپیوتر) آموزش بدیم تا یه کار خاصی رو انجام بده .مثل اینکه به یه بچه داریم یه چیزی رو یاد میدیم.  مثلا ما میاییم تعداد خیلی زیادی عکس گربه و تعداد خیلی زیادی عکس غیر گربه (هرچیزی میتونه باشه مثل عکس دیوار عکس خرس عکس آدم و…) رو جمع میکنیم بعد یه مدل طراحی میکنیم (فرض کنید طراحی کردیم این الان مهم نیست) . حالا میایم به کامپیوتر یکی یکی عکسارو نشون میدیم میگم این عکس گربه اس این یکی عکس گربه نیست و این کارو انقدر انجام میدیم تا تمام تصاویر تموم بشن. و این عمل رو چند بار تکرار میکنیم . نهایتا بعد از اینکار کامپیوتر یاد میگیره که گربه چی هست و اگر عکس جدیدی از گربه که تا بحال بهش نشون نداده باشیم رو بهش نشون بدیم اون باید بتونه تشخیص بده و بگه آیا این عکس یه گربه هست یا نه . این یه مثال خیلی ساده بود انشاالله در بخش منابع یا بعداز اینکه یکسری اطلاعات اولیه در مورد دیپ لرنینگ دادم منابع و نحوه خوندن و پیشرفتن تو این موضوع رو هم میگم .(البته منابع الان نسبت به موقعی که من شروع کردم الحمدالله بیشتر شده و من اونها رو هم مینویسم تا جایی که پیدا کردم اما مسیری که خودم رفتم رو توضیح میدم چون قدم به قدمش تست شده هست.و پیش نیازها رعایت شده) به هر حال برگردیم سر موضوع اصلی.

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

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

خب فهمیدیم که فرآیند یادگیری یه فرایند رفت و برگشتی! هست! حالا اگه ما بیاییم برای اینکه نتیجه یه پیش بینی که غلط بوده رو درست کنیم یه پارامتر (یا حتی یکسری از پارامترها) رو تغییر بدیم ممکنه سیستم نتیجه یه پیش بینی که قبلا درست پیش بینی کرده بود رو اینبار با این تغییر اشتباه پیش بینی کنه! برای همین معمولا یک مدل رو برای تعداد زیادی تکرار میکنیم تا به کارایی خوبی برسیم. این فرآیند پیش بینی و تنظیم سیستم انقدر تکرار میشه تا دیگه مدل رو نشه بهتر از این کرد.

مهندسی ویژگی یا همون Feature Engineering

مهندسی ویژگی یا همون فیچر اینجیرینگ! یعنی استخراج الگوهای مناسب از داده ها که به مدلهای یادگیری ماشین کمک میکنه تا راحت تر بین دسته ها یا کلاسهای مختلف موجود در داده ها تمایز قائل بشن. یعنی چی ؟ یعنی اینکه شما سعی کنید تو داده هایی که دارید یک سری الگوی مشترک پیدا کنید و بعد از همون الگوها برای دسته بندی و یا انجام کار خاصی روی اون داده ها استفاده کنید. بعنوان مثال فرض کنید شما تعداد پیکسلهای سبز و آبی رو بعنوان یک نشونه برای تشخیص اینکه یک حیوان آبزی یا زمینی در تصویر وجود داره یا نه درنظر بگیرید.این ویژگی برای این دلیل برای یه مدل یادگیری ماشین مفیده چرا که تعداد دسته ها( معمولا میگیم کلاسها)ییکه باید برای یه دسته بندی خوب در نظر گرفته بشه رو کاهش میده. البته چندان ویژگی خوبی هم نیست! فرض کنید تو اسمون آبی شما بخوایید از یه پرنده عکس بگیرید! اونوقت با توجه به این الگو سیستم بشما میگه این یه موجود آبزی جدید!! هست! که ما البته میدونیم نیست!! و یا برعکس بریم ته رودخونه یه عکس از یه وزغ یا حتی ماهی بگیریم که کنار یکسری جلبک!! نشسته! خب باز سیستم میگه شما الان داری به یه موجود زمینی (منظورم غیرآبزیه!) نگاه میکنید!!. همین یه مثال نشون میده که مهندسی ویژگی چندان کار ساده ای نیست. و اگه بیشتر تحقیق کنید میبینید که بَـــلــــه! مهندسی ویژگی مثل  هنریه برای خودش! و کار خیلی سختی هم هست .

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

خوندن این مقاله هم خالی از لطف نیست .(kaggle یکی از سایتهایی هست که برای یادگیری ماشین فوق العاده است رقابت ها و آموزش های خوبی داره و میشه تجربه خیلی خوبی ازش کسب کرد)

یادگیری ویژگی یا Feature Learning

الگوریتم های یادگیری ویژگی برای پیدا کردن و استخراج خودکار الگوهای مشترک استفاده میشن تا از ویژگیهای استخراج شده در فراینده های دسته بندی (کِلَسیفیکیشن!) و رگرسیون (رگرشن!) استفاده بشه.یادگیری ویژگی یا همون feature learning رو میشه بعنوان همون مهندسی ویژگی ای دید که بصورت خودکار داره توسط یه الگوریتم انجام میشه.

تو یادگیری عمیق,  ما روشهای مختلفی داریم یکی از اون روش ها استفاده از شبکه های عصبی کانولوشنی هست که الان بهش میگن همون شبکه کانولوشن بعدا به تفصیل در مورد این شبکه و لایه هاش و… توضیح میدم انشاالله اما فعلا همینقدر بدونید که اساس این شبکه , لایه کانولوشنی اون هست (برای همین بهش میگم شبکه کانولوشنی!) .لایه های کانولوشنی یا اصطلاحا convolutional layers تو پیدا کردن ویژگی های موجود در تصاویر خیلی خوب عمل میکنن و اگه تعدادی از این لایه ها رو پشت سر هم قرار بدیم بطور حیرت آوری یه سلسله مراتب از ویژگی های غیر خطی رو یاد میگیرند. یعنی در لایه های ابتدایی مثلا گوشه ها و خطها و لبه ها یادگرفته میشن و بعد از اون به ترتیب ویژگی های سطح بالاتر یادگرفته میشن مثلا اگر تصویر ورودی ما تصویر یک صورت باشه ویژگی هایی مثل بینی, چشمها, گونه ها و صورت در لایه های بعدی (بالاتر) یاد گرفته میشن.در آخر هم لایه های نهایی از این ویژگی های تولید شده برای دسته بندی (کلسیفیکیشن) و یا رگرسیون (رگرشن) استفاده میکنند.(بعدا بصورت کامل در مورد این نوع از شبکه و زیر و بم و همه داستانهاش صحبت میکنیم)

سلسله مراتب ویژگی ها

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

 یادگیری عمیق یا همون Deep learning

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

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

ذکر این نکته هم لازمه که یادگیری ویژگی سلسله مراتبی قبل از بوجود اومدن رشته یادگیری عمیق وجود داشته اما معماری های موجود در زمان قدیم از مشکلات عمده ای مثل محو شدن گرادیانت (تو بخش شبکه عصبی توضیح میدیم) رنج میبردن. محوشدگی گرادیانت در اصل به مشکلی گفته میشه که در اون گرادیانت ها انقدر کوچیک میشن که دیگه نمیتونن یک سیگنال یادگیری رو برای لایه های خیلی عمیق ایجاد کنند و بنابراین این معماری ها در مقایسه با الگوریتم های یادگیری کم عمق مثل (support vector machine ها) خیلی بد عمل میکردن.

عبارت دیپ لرنینگ یا همون یادگیری عمیق از وقتی که روشها و استراتژی های جدیدی برای برطرف کردن مشکلات قبلی ارائه شد , سر زبونا افتاد و بطور خاص زمانی که توسط الکس کریژوسکی و جفری هینتون (جف هینتون) تو سال ۲۰۱۲ تونستن با یه شبکه کانولوشنی عمیق رقابت ImageNet رو با موفقیت خیلی خوبی برنده بشن و به مقام اول برسن سرعت گرفت. تقریبا بعد از موفقیت اونها بود که یکدفعه همه متوجه عملی بودن یادگیری عمیق شدن (قبل از اون خالق شبکه های کانولوشنی Yan leCunn تو دهه ۹۰ یه شبکه کانلووشنی ساخته بود که اراقام دست نویس رو تشخیص میداد اندازه تصاویر خیلی کوچیک بود ( ۲۸ در ۲۸ بود بنظرم) و کسی برای کارهای بزرگ و واقعی ازش استفاده نیمکرد چون سخت افزارهای اون موقع انقدر قوی نبودن . تو سال ۲۰۱۲ کریژوسکی با استفاده از GPU ها (دوتا کارت گرافیک GTX580 3Gig ) تونست یه شبکه ۸ لایه ای رو آموزش بده و باعث ایجاد موج جدیدی در این حوزه بشه . (اینم بگم که در مقایسه با دیتاست MNIST که  تصاویر اندازه اشون ۲۸ در۲۸ بود و سیاه و سفید. و تعداد تصاویر کلا ۶۰ هزارتا بود. دیتاست ایمیجنت ۲۰۱۲ بیش از ۱ میلیون و نیم تصاویر رنگی با اندازه ۲۲۷ در ۲۲۷ پیکسل داره که حجم این دیتاست چیزی برابر با ۱۵۰ تا ۲۰۰ گیگابایت میشه!! ورژن ۲۰۱۵ این دیتاست بیش از ۱ ترابایت حجم داره!- پس کاملا مشخصه که چرا یکدفعه از این سال دیپ لرنینگ بشدت محبوب و معروف شد!)بعدا تو یه پست جداگانه بصورت خاص به دلایل رونق دوباره گرفتن این مبحث بعد از یه بازه زمانی نسبتا زیاد میپردازیم انشاالله).

البته قبل از الکس کریژوسکی و جف هینتنون (ایشون خالق RBM ها هم هستن! یکی از دانشمندان معروف دنیا تو حوزه دیپ لرنینگ هستن ایشون) البته در اوائل سال ۲۰۱۰ نشون داده شده بود که استفاده از GPU ها و توابع فعال سازی جدید به غیر از تابع سیگموید میتونه باعث بهتر شدن جریان گرادیانت بشه و اینطور برای آموزش معماری های عمیق بدون مشکلات جدی راه باز شده بود. الکس کریژوسکی (Alex krizhevsky) و جف هینتون (Jeff hinton) هم بعنوان مثال از تابع relu بجای سگموید استفاده کرده بودن . (نگران نباشید در این باره هم توضیح میدیم اینا همه مربوط به شبکه های عصبی و کانولوشنی هست که با خوندن اینا همه چیز میاد دستتون).

تا اینجا ما هر مثالی زدیم در مورد عکس بود و تصاویر . در اصل شبکه های کانولوشنی که یکی از روش های دیپ لرننیگ هستن برای کار با تصاویر ایجاد شده بودن ولی تو حوزه دیپ لرنینگ ما تو زمینه ها پردازش صدا و جریان هم کار میکنیم . به عبارت بهتر الان با استفاده از دیپ لرنینگ فعالیت شناسی هم انجام شده یعنی شما یک فیلمی که تو اینستاگرام یا فیس بوک آپلود میکنید براحتی مشخص میکنن که چه فعالیتی در حال انجام شدن هست. مثلا دارید فوتبال بازی میکنید یا دوچرخه سواری و… این کار از طریق نوع های خاصی از شبکه های عصبی بنام long short term memory recurrrent neural network انجام میشه.

بطور خلاصه باید بگم که تو یادگیری عمیق ما در اینو نوع شبکه ها میایم وابستگی های زمانی رو هم دخالت میدیم . تو شبکه های عصبی recurrent neural network ها دقیقا همینطور هستن . اگه شبکه عصبی خونده باشید مدونید که تو این نوع شبکه ها ورودی شبکه از ورودی قبلی تاثیر میپذیره و اینطور تقریبا یک حافظه تو شبکه عصبی ایجاد شده .پس یادگیری عمیق صرفا در یادگیری ویژگی های سلسله مراتبی غیرخطی عمیق خلاصه نمیشه! بلکه از اون میشه در یادگیری وابستگی های زمانی غیرخطی طولانی در داده های ترتیبی هم استفاده کرد. (نمونه هایی که در مورد تشخیص فعالیت در حال انجام گفتم با استفاده از این نوع شبکه ها بدست اومدن) اکثر الگوریتمهای دیگه ای که روی داده های ترتیبی کار میکنن حافظه ای برای ۱۰ گام زمانی اخیر دارن در حالی که شبکه LSTM (که در سال ۱۹۹۷ توسط Sepp Horchreiter و Jurgen Schmidhuber معرفی شد) به یه شبکه این اجازه رو میده که بتونه فعالیتی رو از صدها گام زمانی قبلتر انتخاب کنه تا با استفاده از اون بتونه پیش بینی دقیقی داشته باشه. شبکه های LSTM طی ده پانزده سال اخیر بهش توجه نشده بود تا اینکه بعد از سال ۲۰۱۳ یکدفعه سر زبونها افتاد! این شبکه به همراه شبکه های کانولوشنی دوتا از نمونه های بسیار موفق تو حوزه دیپ لرنینگ هستن. من خودم تو این حوزه اصلا کار نکردم (LSTM) اما تو زمینه شبکه های کانولوشنی چرا. منابع در این زمینه هم قرار میگیره ولی شاید به خوبی شبکه های کانلووشنی نباشه اما مطمئنا بکار کسی که میخواد کار کنه میاد (مفاهیم اکثرا یکی هستن به جز یکسری تفاوتهای جزئی).

سید حسین حسن پور متی کلایی ۲۱ اسفند ۱۳۹۴

cnnconvolutional neural networkGANGenerative Adversarial Modellong short term memoryLSTMRBMآموزش deep learningآموزش Deeplearningآموزش یادگیری عمیقاستخراج ویژگیدیپ لرنینگ چیستشبکه RNNشبکه عصبی کانولوشنیمبانی اولیهمهندسی ویژگییادگیری عمیقیادگیری عمیق چیست؟یادگیری ماشین
Comments (167)
Add Comment
  • عرفان

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

    • سید حسین حسن پور

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

  • bahar

    سلام عیدتون مبارک.
    خیلی خیلی ممنون. عالی بود.

    • سید حسین حسن پور

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

  • عاطی

    سلام، بسیار شروع خوبی هست من هم دارم رو این مبحث کار می کنم و این ترم یک درس مرتبت با این موضوع دارم.
    دیپ لرنینگ مثل یک عصای جادویی می مونه، تا اونجایی که اطلاع دارم تقریبا مسئله تشخیص تصویر صورت با ۹۹٫۹۶ درصد دقت حل شد.
    – Image recognition: 3.57 error rate, (ResNet, top-5 test, by MS Research Asia, Dec. 2015)
    – Face recognition: 99.96% accuracy (FaceNet, on LFW dataset, by Google, 2015)
    پست ها تون رو دنبال میکنم، با آرزوی موفقیت شما گام بسیار بزرگی و موثری رو برداشتید، واستون آرزوی موفقیت می کنم.

    • سید حسین حسن پور

      سلام خیلی ممنونم و متعاقبا منم همین آرزو رو برای شما دارم. در مورد فعالیتهای صورت گرفته هم درسته فعالیتهای خوبی صورت گرفته ولی هنوز مونده . ResNet‌ مایکروسافت نرخ خطای ۵ انتخاب اولش ۳٫۵۷ هست و هنوز نرخ خطای اصلی جای کار داره .از طرفی من اعتقاد راسخ دارم طی دو سه سال آینده ما میریم بطرف کاهش تعداد لایه ها. مثلا resnet‌با اینکه تونسته با ۱۵۰ لایه! تو ایمیج نت به نرخ خطای ۳٫۵ برای ۵ انتخاب اولش برسه همین معماری تو دیتاست CIFAR10 نتونسته state of the art‌رو کنار بزنه و یه شبکه بسیار بسیار کوچیکتر نتایج بهتری گرفته . (البته اینا قابل قیاس نیستن از لحاظ حجم و اندازه و … ) ولی یه نیم نگاه به معماری های دو سه سال اخیر اینو دقیقا نشون میده . مثلا VGGNet‌با اون همه پارامتر رو در مقابل GoogLeNet‌ شما در نظر بگیرید. یا مثلا مدل بایدو که قبل از مایکروسافت state of the art این حوزه بود (نرخ خطای ۵ و خورده ای درصد تقریبا) از یه سوپر کامیپوتر و الگوریتمهای اختصاصی موازی سازی استفاده کرده بود. بعد دیدیم که گوگل چطور با batch normalization‌یی که چند ماه بعدش داد نرخ خطا رو خیلی کاهش داد و بعدش هم تیم مایکروسافت با استفاده از همین batch normalization‌و افزایش تعداد لایه ها شدن state of the art .
      مطمپنم از این به بعد ما میریم سراغ دقت بالاتر با سربار کمتر خصوصا که الگوریتم ها و روشهای مقابله با اورفیتینگ خیلی خوبی هم طی این چند سال بوجود اومده .
      در پناه حق موفق و سربلند باشید

  • آسمان

    سلام.
    خیلی ممنون از وقتی که می گزارید.عالی بود.

  • farzaneh

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

    • سید حسین حسن پور

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

  • محمد چناریان نخعی

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

  • محمد چناریان نخعی

    سلام سپاسگذارم
    منظورم این بود که خروجی به صورت پیوسته باشه یعنی مثل رگرسیون. خروجی شبکه کانولوشن عمر باقی مانده که یک متغییر پیوسته به جای کلاس ها که گسسته ان رو دراختیارمون بذاره؟

  • مریم

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

    ممنون می شم واقعن پاسخ بفرمایید

    • سید حسین حسن پور

      سلام .
      من در مورد سوال اولتون نظری ندارم چون کار نکردم تو این زمینه. فکر میکنم تو گروه اگه سوال کنید نتیجه خیلی بهتری بگیرید (اگرم اونجا نگرفتید از Quora و StackOverflow بپرسید که نتیجه بگیرید)
      در مورد سوال دومتون در مورد برتری دیپ لرنینگ نسبت به شیوه های سابق , همه اش بر میگرده به اون مهندسی ویژگی که دیگه توسط ما انجام نمیشه و بصورت خودکار صورت میگیره .همین نکته اس که اونو خیلی خاص و کاربردی کرده .

  • soroor

    سلام و وقت بخیر

    اول بی نهایت از کار زیباتون تشکر می کنم و براتون آرزوی موفقیت می کنم
    بعد ی سوال داشتم از خدمتتون:
    توی مطالبتون از حافظه ایجاد شده در شبکه های عصبی صحبت کردین “…مدونید که تو این نوع شبکه ها ورودی شبکه از ورودی قبلی تاثیر میپذیره و اینطور تقریبا یک حافظه تو شبکه عصبی ایجاد شده…” و گفتین که LSTM میتونه تا صدها گام قبلتر رو هم داشته باشه و ببینه و دقیق تر تصمیم بگیره
    میشه اینو بیشتر توضیح بدید؟ این میزان حافظه به چه اندازه هست؟

    • سید حسین حسن پور متی کلایی

      سلام
      خواهش میکنم خدا رو شکر که مفید بود
      این بحث تو کتاب شبکه های عصبی مارتین هاگان خیلی ساده و قشنگ توضیح داده شده فک کنم فصل ۲ همون اولاش باشه. لینک کتابم تو بخش منابع یادگیری هست. اونو بخونید اگه باز مشکل داشتید بفرمایید که اگر تونستم توضیح بهتری بدم خدمتتون.
      در مورد سوالتون دومتون متوجه نشدم . من هنوز فرصت نکردم برم سراغ LSTM ها البته و یه سری اطلاعات اولیه و ابتدایی دارم. اگه سوال تو این زمینه دارین پیشنهاد میکنم تو گروه بپرسید تا دوستانی که کار کردن جواب بدن
      من هر وقت رفتم سراغ این مبحث زیر و بمش رو مثل شبکه های کانولوشن تو سایت میزارم انشاالله.

  • متین

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

  • هما

    سلام من در مورد deeplearning میخوام روی speech recognition یا تصویر کار کنم برا تزم. امکانش هست از شما کمک بخوام؟ مقالاتی رو خوندم. مثلا با deep belief network روی صدا کار کردن. اینکه کدوک الگوریتمو از یادگیری عمیق انتخاب کنم اصلا توی متلب چطور بنویسم؟ خیلی گیجم کرده. خواهشا کمک بفرمایید

    • سید حسین حسن پور متی کلایی

      سلام .
      بله مشکلی نیست.
      DBN ها الان تقریبا دیگه استفاده نمیشن. بجای اونها شبکه های کانولوشن و LSTM ها خیلی خوب دارن کار میکنن . هم تو حوزه تصویر و هم صدا.
      مطالب سایت رو مطالعه کردید یا نه ؟ اگر نه پیشنهاد میکنم این مطالب رو شروع کنیدو یک دور بخونید
      اگر زبان مشکلی ندارید ویدئو آموزش دانشگاه استنفورد رو حتما ببینید که خیلی خوبه.
      بعدش پایه کار میاد دستتون .
      برای کار تو این حوزه متلب خوب نیست. هرچند برای CNN تولباکس matconvnet خیلی خوبه. اما جاهای دیگه و معماری های دیگه متلب خیلی کاستی داره.
      پیشنهاد میکنم برای شروع به Caffe,Torch,Deeplearning4J,Tensorflow یه نگاهی بندازید. و ببینید از کدوم بیشتر خوشتون میاد.
      من میگم اگر با cnn میخوایید کار کنید برای شروع caffe خوبه. بعدش میتونید برید سراغ گزینه های دیگه اگر نیاز بود.

  • هما

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

    • سید حسین حسن پور متی کلایی

      سلام
      ببخشید من تازه این پیام رو دیدم !
      هر دو حوزه تصویر و صدا جای کار دارن .ولی خب تصویر بیشتر کار شده و منابع بیشتری براش هست و افراد بیشتری کار کردن .
      باید اول علاقه خودتون رو مشخص کنید بعد یه حوزه رو با توجه به اون مشخص کنید.
      نه متاسفانه در حال حاضر این امکان رو ندارم

  • محمد

    سلام دکتر.ممنون از بابت مطالب فوق العادتون
    به نظر شما کسی با شرایط من که یاد SVM رو یه کم بلده چقدر طول میکشه یادگیری عمیق رو بتونه با متلب یا CAFFE بتونه پیاده سازی کنه؟
    پروژم هم تشخیص است.

    • سید حسین حسن پور متی کلایی

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

  • سحر

    سلام ممنون از سایت خوبتون یه سوال داشتم
    آیا deep learning با شبکه عصبی ارتباط صددرصد داره؟ من میخوام تو زمینه Time series analysis using deep learnin در داده کاوی کار کنم و میخوام بپرسم آیا درگیر مسائل شبکه عصبی میشو یا نه؟ ممنون میشوم اگر پاسخ بدهید

  • فهیمه

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

    • سید حسین حسن پور متی کلایی

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

  • محمد

    سلام و ادب
    الان متلب ۲۰۱۶ رو نصب کردم و وقتی به تولباکسCNN مراجعه میکنم میبینک یه سری توضیحات داره و حتی یک مثال درست و حسابی نداره.یعنی اینقدر متلب توی این حوزه ضعیفه؟
    ممنون

    • سید حسین حسن پور متی کلایی

      بله. معمولا ۹۹ درصد تو این حوزه زبان اصلی و اولشون پایتون هست و تقریبا (همه!) تمام اموزش ها از پایتون استفاده میکنن و تمام مثالها تو این زمینه هم به پایتون هست در اینترنت .

  • محمد

    ببخشید برای اینکه استاد راهنمام رو بتونم قانع کنم که بنونم با پایتون کار کنم(چون در پروپوزالم با متلب قید شده) تولباکس رو نشونش بدم بگم مثال نداره درسته؟
    یعنی حرفام درسته یا cnn متلب مثال داره من پیدا نمیکنم؟
    ممنون

    • سید حسین حسن پور متی کلایی

      مثال که هست اما نه واقعا به اندازه پایتون .
      علاوه بر اون تو متلب تنها چیزی که بدرد میخوره و من اطلاع دارم MatConvNet هست که ازش استفاده میشه .
      پیشنهاد میکنم طرف متلب نرید چون پایتون مطالب خیلی خیلی بیشتری داره و آموزش و راهنمایی و مستندات براش خیلی زیاده
      برای اینکه استادتون رو قانع کنید میتونید از همه فریم ورکهای مطرح این حوزه مثال بیارید که جز Caffe که یه رپر اونم خیلی خیلی محدود داره نسبه به رپر پایتون و مثالها و مستنداتش و matconvnet فریم ورک دیگه ای با متلب کار نمیکنه یا حتی رپر براش ارائه نداده تا جایی که من میدونم و یادمه.
      Tensorflow, torch, caffe و حتی cntk و خیلی های دیگه انتخاب اولشون یا پایتون هست یا یه رپر پایتون هم ارائه کردن و میتونید خیلی راحت به سایتهاشو مراجعه کنید و مستندادشون رو ببینید . من Theano و بلاکس و کراس و… pylearn2 و… که کلا پایتون بیس هستن رو هم نام نبردم!
      کلا انتخاب پایتون خیلی عاقلانه تره در حال حاضر و دستتون رو باز میزاره خیلی زیاد و از خیلی نمونه ها میتونید استفاده کنید.
      به متلب هم میشه گفت نزدیکه و از لحاظ سینتکس هم خیلی راحته

  • محمد

    سلام و خسته نباشید
    من قسمت ابزار و نصب caffe رو خوندم ولی ابهام دارم
    اول میخوام caffe رو برای نتلب و بعدش برای پایتون نصب کنم
    در لینک زیر یه سری فایل هست ولی نمیدونم دقیقا کدوم برای متلب و کدوم برای پایتون است؟
    https://github.com/Microsoft/caffe/tree/master
    ممنون

  • محمد

    ببخشید گیرم نصب caffe وکتابخونه های متناظر با پایتون و متلب است

    • سید حسین حسن پور متی کلایی

      سلام
      شیوه نصب که خیلی سر راسته!
      شما ویژوال استودیو ۲۰۱۳ رو باید نصب کنید، و بعد از پوشه ویندوز فایل Caffe.sln رو اجرا کنید برای کامپایل
      شما وقتی کامپایل رو استارت بزنید خودش کتابخونه های مورد نیازش رو که حدود ۱ گیگ هست دانلود میکنه .
      شما فقط باید یه فایل CommonSettings.props.example رو به CommonSettings.props تغییر نام بدید و بعد اونو از داخل ویژوال استودیو یا یه فایل ادیتور مثل Notepad++ باز کنید (نوت پد خوب نشون نمیده ) . بعد گزینه های کامپایل رپر برای متلب و پایتون مشخص هست که باید False رو به True تنظیم کنید و عمل کامپایل رو شروع کنید.
      (دقت کنید کامپایل رو حالت Debug نباشه . روی Release کامپایل رو انجام بدید )
      بعد که کامپایل با موفقیت انجام شد.
      بر محتوای پوشیه pycaffe رو از پوشه Build\x64\Relase کپی کنید به پوشه Lib\site-packages اناکوندا و بعد هم در برنامه های پایتونتون براحتی ایمپورت کنید. (در ویندوز اناکوندا ۲ پشتیبانی میشه نه ۳ تا جایی که یادم میاد )
      برای متلب هم بر اساس اطلاعاتی که داده شده تو همون صفحه عمل کنید.
      قبل از همه اینها هم کودا ۷٫۵ و cudnn 4 نیاز دارید . (اگه از آخرین بیلد Caffe استفاده میکنید که البته دیگه برنچ مایکروسافت نیست باید cudnn5 رو بگیرید )
      اگر هم مشکلی هست لطفا تو سایت پرسش و پاسخ سوالات رو بپرسید

  • معصومه

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

    • سید حسین حسن پور متی کلایی

      خیلی زیاد! یکی از پر کاربردترین حوزه های دیپ لرنینگ حوزه پزشکی هست! شدیدا داره کار میشه تو این حوزه

  • raha

    سلام ممنونم بابت مطالب خوب سایتتون
    من میخوام واسه پایان نامه ارشدم رو این موضوع کار کنم میشه راهنماییم بفرمایید

    Deep Learning of Transferable Representation for Scalable Domain Adaptation

    • سید حسین حسن پور متی کلایی

      سلام
      شما بنظرم مقالات Knowledge distillation و Fitnet و همینطور Progressive Neural Networks رو بخونید.
      یکسری دیگه هم بود الان حضور ذهن ندارم اما بخش دوم خصوصا اخرای بخش دوم اینجا رو بخونید و رجوع کنید به مقالاتی که اونجا در موردش صحبت شده : https://arxiv.org/abs/1608.06037

  • tina

    عالی بود مرسی
    کاش یه ساختار درختی پایین مطالب هر پست میذاشتید تا بدونیم مطلب قبل و بعد چیه
    میتونید از سایت متمم ایده بگبرید

    • سید حسین حسن پور متی کلایی

      سلام.
      برای سایت برنامه های مختلفی دارم منتها وقت نمیکنم .
      انشاالله سرم خلوت تر شد حتما دسته بندی مطالب رو بهتر میکنم و توضیح میدم شیوه خوندن به چه صورت باید باشه .

  • مهسا

    سلام مرسی از مطالب مفیدتون.لطفا رفرنس مطالبی که بیان کردید رو هم بگذارید.باتشکر

    • سید حسین حسن پور متی کلایی

      سلام
      مطالبی که گفته شدن یک منبع ندارن اینا ماحصل چیزهایی هست که من اون زمان خونده بودم . و چیزایی هم که خوندم خیلی زیاده
      کنفرانسهای خیلی زیاد +‌مقالات مختلف .
      اینطور نبوده که یک یا چند مقاله خاص باشه من بیام اینجا بگم این بخش از اینجا گرفته شده و الخ .
      شما بخش پیشینه تحقیق رو حتما بخونید اطلاعات خوب با رفرنسهاش بدست میارید . بخش منابع یادگیری هم بشما کمک میکنه تو این زمینه
      بطور کلی چیزایی که اینجا اومده جزو مبانی اولیه اس که میتونید تو مقالات یان لیکان و مقاله الکس نت Vggnet‌و امثالهم نمونه هایی رو ببینید
      یکسری دیگه هم مربوط به کنفرانس هایی سال ۲۰۱۴ و ۲۰۱۵ تو اکسفورد و چند جا دیگه بوده که الان حضور ذهن ندارم .
      کلا پیدا کردن صحت و سقم این چیزا خیلی راحته بنظرم کتاب ایان گودفیلون از انتشارات MIT‌که تو بخش منابع یادگیری هست ممکنه براتون جذاب باشه. (البته سطحش متوسط به بالا هست)

  • غزل

    سلام
    در قسمت توضیحاتتون ه شبکه های lstm اشاره کردین من میخوام در مورد این شبکه بیشتر بدونم شما میتونین کمکم کنین ممنونم

    • سید حسین حسن پور متی کلایی

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

  • سعید

    سلام
    باید بگم بسیار بسیار عالی بود.تشکر میکنم بابت وقتی که گذاشتین.
    یه سوال داشتم شما در مورد کاربرد یادگیری عمیق در طبقه بندی تصاویر اطلاعات دارین؟؟

  • as

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

    • سید حسین حسن پور متی کلایی

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

  • ن

    باسلام و عرض خسته نباشید
    من دانشجوی ارشد هوش هستم
    میخواستم موضوع پایان نامه ام رو درمورد دیپ لرنینگ بردارم
    اما دقیقا نمیدونم تو چه حوزه ای کار کنم در این مورد بهتره
    ممنون میشم اگه راهنمایی بفرماییدوسپاس از اطلاعات خوبتون…

    • سید حسین حسن پور متی کلایی

      سلام
      سلامت باشید
      واقعیتش نمیشه یه نسخه یکسان برای همه پیچید. شما باید بر اساس یکسری گام حوزه مورد علاقه اتون رو مشخص کنید .
      مثلا اول چند تا حوزه که علاقه دارید رو لیست کنید برای خودتون . میتونید بدون توجه به یادگیری عمیق پیش برید و بعد ببینید تو حوزه مور نظر شما تو یادگیری عمیق کاری انجام شده یا نه و اگر شده چقدر کار شده و اینکه چه پیش نیازهایی داره (علمی و سخت افزاری و…) بعد با شرایط خودتتون بسنجید.
      یا اینکه میتونید یک نیم نگاهی به کارهای صورت گرفته در حوزه یادگیری عمیق بزنید مثلا بخش پیشینه یادگیری عمیق رو ببینید (البته این مربوط به اواخر ۲۰۱۵ و اوایل ۲۰۱۶ هست و فقط حوزه ویژن رو در بر میگیره ولی دید کلی خوبی میده هنوز ) و بعد اینطور به حوزه هایی که ممکنه براتون جذاب باشه برسید و لیستشون کنید
      قدم بعدی شما اینه که تو حوزه هایی که انتخاب کردین دقیق تر بشید و ببینید چه کارهایی تو اون حوزه برای شما جذابه . یکی یا چندتا رو انتخاب کنید و بعد چک کنید این کارها تو یادگیری عمیق انجام شدن یا نه مثلا اینجا میتونید از بقیه هم سوال کنید ولی قبلش حتما خودتون باید سرچ کنید . برای سوال پرسیدن هم سعی کنید حتما شده یک بار از Quora‌ و stackoverflow‌(بخش cross validated ) و همینطور انجمن یادگیری عمیق گوگل که لینکش در بخش منابع یادگیری هست استفاده کنید چون خیلی معتبر هستن و محققای زیادی اونجان . از این طریق شانس دریافت بهترین اطلاعات خودتون رو افزایش میدید (چون حوزه خیلی dynamicیی هست و هی بروز میشه این بهترین کاره تا چیزی از قلم نیوفته ) .
      بعد که متوجه شدید کاری انجام شده یا نه نگاه به شرایطش میکنید با شرایط خودتون تطبیق میدید میبنید آیا از لحاظ زمانی/علمی/سخت افزاری امکانش رو دارید یا نه . بعد میتونید به جمع بندی مناسب برای انتخاب موضوع برسید .

  • Saberi.sh

    سلام من دانشجوی کارشناسیم میخواستم ببینم این موضوع خوبه که من برای درس شیوه ارائه بردارم …‌
    یعنی میتونم منابع خوبی جمع کنم و برای اول اردیبهشت ارائه بدم یا نه ؟

  • احسان نادرنژاد

    سلام آقای حسن پور.
    وقتتون بخیر. سایت خوبی درست کردید.
    همیشه موفق باشید.

  • alien

    سلام
    وقت شمابخیر
    بنده به طور اتفاقی سایت شما را دیدم بسیار عالی
    فقط برای کسی مثل من که در این حوزه هیچ اطلاعاتی ندارم و میخوام نقطه شروع را پیدا کنم یک مقدار سخت هست
    سپاسگزار خواهم بود بفرمایید دوستان با شرایط بنده از کچاباید شروع کنند
    تشکر

    • سید حسین حسن پور متی کلایی

      سلام
      وقت شما هم بخیر.
      خب ما قبلا تو بخش پرسش و پاسخ به چندتا سوال در این مورد جواب دادیم . اونجا رو ببینید خوبه .
      تو بخش منابع یادگیری هم مختصر یه چیزایی گفتیم
      بطور خلاصه این مسیر خوبیه :
      ۱٫اگه ماشین لرنینگ بلد نیستید آموزش ماشین لرنینگ اندرو ان جی از کورس ایرا رو ببینید
      ۲٫یه کتاب شبکه عصبی مثل مارتین هاگان یا سایمن هایکن که تو بخش منابع یادگیری گفتم رو بگیرید و بخونید خصوصا مباحث آموزش/بک پراپگیشن (کتاب مارتین هاگان میشه تا اول فصل ۱۲ . (فصلهاش کم هستن و خیلی ساده و روان تدریس میشه )
      لازم نیست همه رو بخونید اما دونستن شبکه عصبی Multi Perceptron الگوریتم اموزشی اون و اطلاعات مربوطه مثل نرخ یادگیری مومنتوم و امثالهم ضروریه . از طرفی خوندن بقیه کمک زیادی به درک مسائل میکنه و پیشنهاد میشه.
      بعد از این میتونید مطالب سایت رو بخونید وبا شبکه های عصبی کانولوشن اشنا بشید .
      بعد میتونید اموزش ویدئویی دانشگاه استنورد رو ببینید
      بعد هم اموزش کفی یا تنسورفلو رو دنبال کنید
      بعد دیگه هر مقاله و یا اموزش دیگه ای بخوایید میتونید دنبال کنید و پیش برید انشاالله

      • alien

        سلام
        وقت شما بخیر
        ممنون بابت راهنمایی
        ببخشید زیرنویس انگلیسی آموزش ماشین لرنینگ اندرو ان جی را دارید داخل سایت ؟؟

  • علی

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

    • سید حسین حسن پور متی کلایی

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

  • آرام

    سلام، خسته نباشید. ممنون از اطلاعات مفیدتون
    من یه سوالی داشتم، من میخوام یسری ویژگی از متن استخراج کنم. این ویژگی ها در قالب یک بردار مفهومی نمایش داده میشوند که در نهایت به عنوان کلمات کلیدی شناسایی می شوند. حالا واسه این کار دیتاستی دارم که فقط یسری Abstract مقالات رو داره، به نظرتون این دیتاست مناسب هست؟ میتونم ازش استفاده کنم؟

    • سید حسین حسن پور متی کلایی

      سلام
      من تو حوزه متن کار نکردم . اگه تو بخش پرسش و پاسخ بپرسید بچه هایی که با متن کار کردن (مثل جناب فرهناک ) میتونن به سوالتون پاسخ بدن

  • هدایی

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

    • سید حسین حسن پور متی کلایی

      سلام
      دو لایه lOCAL CONTRAST NORMALIZATION‌و Batch Normalization‌ هست که در معماری ها استفاده میشه . هر دوی اینهارو در سایت (اینجا) و بخش پرسش و پاسخ توضیح دادم قبلا. مطالب رو بخونید اگه سوالی بود میتونید بپرسید

  • هدایی

    وقت بخیر ببخشید دوباره مزاحم میشم.
    فرمودید در مورد نرمالایزیشن توضیحاتی فرمودید. من یه مطلب تو قسمت پرسش و پاسخ و یه مطلب کوتاه هم در مورد
    “lateral inhibition قرار داده بودید خوندم. میشه یه لینک یا مقاله یا منبعی رو برا فهم اینکه نرمالایزشن های Batch Normalization‌ و local response normalization چطور انجام میشه رو تصویر معرفی کنید؟ تو قسمت پرسش و پاسخ یه کد بود ولی میخوام بدونم رو تصویر در واقع چه کارایی انجام میشه. من روی یه دیتا ست با دیجیت کار کردم تو لایه ها و با توجه به کدش متوجه شدم نرمالایزیشن لیرش local response normalization هستش.
    و دوم اینکه تو جواب یکی از سوالا فرمودید خروجی لایه ی کانولوشن وارد نرمالایزیشن میشه بعد وارد relu میشه یعنی میشه گفت که محاسبات وزنی که تو کانولوشن لیر انجام میشه بعدش وارد لایه ی نرمالایزشن میشه بعد میره به relu یعنی همون محاسبات وزنی توی کانوولوشن چه اتفاقی بهشون میوفته چطور نرمالیزه میشه با نرمالایزیشن لیر که بعد وارد تابع relu میشه؟

    • سید حسین حسن پور متی کلایی

      سلام
      فک کنم توضیحات من در مورد local contrast normalization کامل باشه (زمانی که داشتم مینوشتم کاملتر از من جایی نگفته بود! تا جایی که یادم میاد.ولی شاید الان بیشتر باشه گوگل رو یه سرچ کنید )
      اصل این مطلب تو مقاله الکس کریژوسکی اومده سال ۲۰۱۲ اون رو مطالعه کنید .
      در مورد Batch Normalization هم تو مقاله Batch Normalization: Accelerating Deep Network Training by
      Reducing Internal Covariate Shift گوگل اومده که توضیح کامل داده . تو سایت پرسش و پاسخ هم فک کنم توضیح دادم (فک کنم بیشتر از یک سوال بوده باشه )
      لوکال کانترست نورمالیزیشن الان دیگه بندرت (اگه بگیم اصلا ! ) استفاده میشه . من تا بحال ندیدم طی این ۳ ۴ سالی.تا جایی که یادمه فقط هم تو الکس نت و VGGNet دیدم نه معماری های دیگه.
      عوضش بچ نرمالیزیشن خیلی استفاده میشه . دلیلش هم اینه که شما در هر لایه سعی میکنید داده ها رو نرمال کنید و توزیع شما تغییر نکنه . محاسباتی که بعد از هر عمل کانولوشن صورت میگیره نهایتا باعث تغییر در توزیع داده شما میشه برای همین با بچ نرمالیزیشن هر بار سعی میشه جلوی این قضیه گرفته بشه.
      آزمایشات مختلفی انجام دادن که بعضی ها میگفتن بعد relu بچ نرمالیزیشن انجام بشه بعضی ها میگفتن قبلش . خود گوگل قبل از relu رو پیشنهاد کرده بود و تجربه شخصی من هم همین بود . البته اینم بگم که نتایج مختلف بود ولی امروزه چیزی که من دیدم همه قبل relu استفاده میکنن.

  • هدایی

    از توضیحات و اطلاعات فوق العادتون ممنونم

  • گوران

    سلام
    ممنون از مطالب مفیدتون.
    شما مقاله DEEP REINFORCEMENT LEARNING: AN OVERVIEW رو خوندید؟

  • گوران

    به کفه تسلط دارید؟

  • گوران

    لطف می کنید ایمیل یا راه ارتباطی بگذارید؟
    من نیاز به آموزش کفه و نصب اون دارم.پروژه ای دارم که باید دو ماه دیگه تحویل بدم.

  • سپیده

    عالی بود.ببخشید شما در مورد Attentive Neural Networks اطلاعاتی دارید؟

  • شاهین

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

    • سید حسین حسن پور متی کلایی

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

  • somaie

    Hello

    We use Matlab for complete our deep learning project. At the first we use Piotr toolbox for tracking our target. After that we try to extent it with deep learning and we use Matconvonet toolbox for implementation. With Matconvnet toolbox for deep learning part we saw lots of problem for implementation.
    So, first, install this toolbox, then the first problem that appeared had to do with Visual Studio. Indeed, this toolbox needs a C++ compiler to run its functions, and as was discovered, VS 2017 version does not work with Matconvonet and need older version of VS, and that first problem was fixed once the 2013 version was installed(we got this error in Matleb: CL.EXE not found)
    Second problem came when a certain file would only be read as a matlab description, and not its C++ file. When looking for a solution online, the MatConvNet (since this was a frequently asked question) proposed that maybe the MEX files hadn’t been compiled well and to check the installation instructions -> These instructions introduce CUDA and cuDNN libraries or programs to be downloaded. Once they are, we need to call a function and enable the GPU (since this would greatly improve the speed of the neural network)
    Now for enableGPU, even more problems because the source of the problem is not clear. I check the hardware requirements, that maybe my computer just couldn’t support this toolbox. Interesting, since none of the solutions online pointed to this, but after checking the requirements for I think the cuDNN library, I saw this needed a GPU with a compute capability of 3.0 or higher, and my GPU NVIDIA Quadro 600 has a compute capability of 2.0. (Although one another page during this race for a solution I saw the minimum compute capability was of 2.0.
    I tried in another computer which had GPU of c.c. = 5.0 and the compilation still wouldn’t work. I really appreciated that if you can help me for GPU problem?

    • سید حسین حسن پور متی کلایی

      سلام
      شما که ایرانی بنظر میاید، ترجیح ما اینه فارسی صحبت کنید. اما به هر حال :
      I myself dont use matconvnet, so I’m clueless here ,apart from that since you did not mention any specific error message, I really cant help you much.
      You do know that matconvnet has a usergroup where you can ask your questions right ? in case you didnt know here it is : https://groups.google.com/forum/#!forum/matconvnet
      You can also ask your questions on stackoverflow.
      If you read ans speak farsi, you might want to have a look here , It may be that you are not using the correct configurations.
      if you want to use cudnn v5, you need to have cuda toolkit 7.5 at the very minimum. and for that to work , you also would need to have matlab 2016a or a newer version installed. failing to address any of these requirements will result in failure.
      the last link which I gave you shows some useful information about each matlab version and its corresponding cuda toolkit. check that out.

  • somaie

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

    As you mentioned in your comment, for this work, cuDNN v5, CUDA toolkit 7.5, Matlab 2016 or greater version is required. I already installed Matlab 2016a, and VS 2017(it seems MatConvNet for compile needs C++ compiler). Then because VS 2017 version does not work with Matconvonet and need an older version of VS, I change my VS to 2013 version. The first problem was solved (CL.EXE not found)
    Now my problem is GPU, Mine is GPU NVIDIA Quadra K600 and computer capability (C.C) is 5.0. According to the” MatConvNet guideline for MATLAB” this http://www.vlfeat.org/matconvnet/matconvnet-manual.pd everything should be ok, but I don’t know why in the last part we got a new error. y = “vl_nnconv(x,f,[]).” while I thought MatconvNet will work properly.
    So, what is your suggestion, Is there any way to fix the GPU problem?
    Thanks a lot for the links.

    • سید حسین حسن پور متی کلایی

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

  • somaie

    سلام مرسی ممنون از راهنمایی هاتون. ظاهرا مشکل حل شد. الان هیچ ارروری نمی گیرم.یه اشتباه ساده کرده بودم. بازم متشکر از کمک و راهنمایی هاتون.

  • یلدا

    سلام خدا قوت
    ممنون از توضیحات عالی تون
    علم و موفقیت تون روز افزون
    من رشته ام شیمی دارویی هست و میخوام بدونم deep neural network برای کلاسیفای کردن داروهای یک بیماری موثر و مهم هست؟
    تعداد داروها حدود ۴هزار تا میشه
    بعضی هاشون موثرن برای درمان بعضی ها خیر
    من باید با کمک یک مدل کلاسترینگ این دو دسته رو از هم جدا کنم و بعد هم پیش بینی داروهای جدید
    به نظر شما این روش خوبه
    روش دیگه ای که بهتر و راحت تر باشه پیشنهاد دارید
    من با cpaan… GDQDA…KNN…LDA کار کردم
    سوال دیگه اینکه کد این الگوریتم برای دانلود موجود هست؟
    من با متلب کار می کنم
    خیلی ممنونم

    • سید حسین حسن پور متی کلایی

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

      • یلدا

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

        • سید حسین حسن پور متی کلایی

          سلام
          از بخش منابع یادگیری روی کانال یادگیری عمیق کلیک کنید لینک گروه تلگرام ما مشخصه و میتونید عضو بشید

  • محمد تقی

    با سلام خدمت حسین پور عزیز و تشکر از مطالب مفیدشون
    من میخام از مبحث deep learning در زمینه امنیت استفاده کنم چطور میتونم از کمک شما استفاده کنم ؟
    این میل منه mt . heidarzad@gmail.com
    لطفا یه میل شماره تماس به من بدین اگه ممکنه
    ممنون

  • محمد تقی

    سلام به همه دوستان
    از دوستان کسی تو زمینه تشخیص حملات امنیتی با استفاده از | DEEP LEARNING کار کرده ؟

    این میل منه لطفا اطلاع بدین ممنون میشم
    MT . HEIDARZAD @GMAIL.COM

  • آزاده

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

    • سید حسین حسن پور متی کلایی

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

  • علی

    عالی بود
    فقط این را بگم که ان‌ شاء‌ الله نوشتن درستش به این شکل است. چو وقتی سرهم نوشته بشه معنیش تغییر می‌کنه.

    • سید حسین حسن پور متی کلایی

      سلام
      بله خیلی ممنونم از تذکر بجای شما.
      سعی میکنم از این به بعد بیشتر رعایت کنم . انشاءالله هم موفق میشم 🙂

  • امین

    جالبه، منم دارم تازه یاد می گیرم این مباحث رو. یه سوال داشتم می تونم از این روش برای داده کاوی استفاده کنم مخصوصا کلاسترینگ؟؟؟؟؟؟؟
    خیلی ممنون از توضیحاتتون

    • سید حسین حسن پور متی کلایی

      سلام. من خودم شخصا تو حوزه unsupervised کار نکردم اما بله میتونید از روشهای unsupervised و یا ترکیبی استفاده کنید.
      برای پیدا کردن مقالات مرتبط بنظرم از arexiv sanity استفاده کنید علاوه بر سرچ در گوگل نتایج خوبی بگیرید

  • امیرحسین

    درود برشما
    تشکر فروان بابت مطالب خوبتون

  • مینا

    سلام جناب حسن پور.
    ممنون از مطالب فوق العاده خوب و مفیدتون.
    درباره شبکه LSTM هم امکانش هست مطلب بزارید یا منابعی معرفی کنید؟
    تو این بخش فرمودین با شبکه های کانولوشن زیاد تفاوت ندارن. تفاوتشون در چه مواردی هست؟

    • سید حسین حسن پور متی کلایی

      سلام
      من از حیث مفاهیم (کلی) عرض کردم از نظر ساختاری که متفاوت هستن
      در مورد lstm الان مطالب خیلی زیادی وجود داره کافیه یک سرچ خیلی ابتدایی انجام بدید
      تو بخش منابع یادگیری من یک وبلاگ معرفی کردم از اقایکریستوفر اولاه که مقدمه و توضیح خوبی در مورد Lstm ها داده . یکی از بچه ها هم تو وبلاگش مطالب رو به فارسی ترجمه کرده بود اول یک سرچ فارسی کنید باید پیدا کنید
      علاوه بر اون آموزش اندرو ان جی کورس ایرا فکر میکنم الان دیگه بحث sequence ها رو معرفی کرده باشه میتونید اون رو هم ببینید که خیلی خوب میتونه باشه

  • مینا

    اقای حسن پور بی زحمت لطف میکنید لینک گروه تلگرام رو اپدیت کنید؟ به من اجازه عضویت نمیده!

  • mir

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

    • سید حسین حسن پور متی کلایی

      سلام
      من دقیق متوجه فرمایش شما نشدم. علاوه بر اون روی lstm هم من نتونستم زیاد وارد بشم و کلا کشیده شدم طرف cnn.
      اگه دقیقتر فرمایشکنید شاید بتونم بهتر راهنمایی کنم (منظور رو متوجه بشم) اگر نه پیشنهاد میکنم در سایت پرسش و پاسخ مطرح کنید تا عزیزان دیگه که تجربه عملی و خیلی خوب با lstm دارن
      شما رو راهنمایی کنن.

  • mry

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

    • سید حسین حسن پور متی کلایی

      سلام
      بله میتونید ولی داده کافی و مورد نیاز و همینطور بهترین روش برای اینکار رو باید بر اساس اخرین دستاوردها پیدا کنید قبلش.
      یعنی در سایتهایی مثل arxiv sanity سرچ کنید (علاوه بر سایرمنابع) تا کارهای مشابه خودتون رو ببینید و ایده بگیرید و کارتون رو پیش ببرید.

  • rEzA

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

    • rEzA

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

      • سید حسین حسن پور متی کلایی

        اینکه آیا میشه بله میشه. و اهمیتی نداره که داده شما حتما صوت یا تصویر باشه. مدلهای مختلفی وجود داره و علاوه بر اون بحث شیوه ارائه داده هم وجودداره یعنی شما داده عددی رو میتونید در قالب تصویر کد کنید و به شبکه بدید این کار بعنوان مثال در کارهایی مثل اکشن رکگنیشن و امثالهم انجام شده.
        باز این به این معنا نیست که شما همین مسیر رو باید برید الزما. این ها بیشتر حول شبکه های کانولوشن ۲ بعدی بودن . در کارتون میتونید از کانولوشن ۱ بعدی هم استفاده کنید. میتونید از سایر شبکه ها استفاده کنید.
        برای اینکه بتونید ایده بگیرید کدوم روش برای کار شما بهینه اس باید فاز مطالعه رو بخوبی انجام بدید. برای شروع هم میتونید سری به arxiv sanity بزنید و keword یا موضوع مورد نظرتون رو سرچ کنید و نسبت به مطالعه کارهای انجام شده تو حوزه مورد نظرتون اقدام کنید.

    • سید حسین حسن پور متی کلایی

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

  • سپهر

    من درباره تحلیل داده ها و هوش مصنوعی میخواستم راهنمایی بگیرم.
    من یک سیستم CRM بصورت سفارشی برای یک مجموعه تجاری بر اساس Backend:SQL/FrontEnd:MS Access پیاده سازی کرده ام که عملیات اعلان قیمت و خرید و فروش و سفارشات خارجی را انجام میدهد. به منظور ایجاد ذهنیت بیشتر، این مجموعه با حدود ۱۰۰۰۰۰ قلم کالا درگیر هستند و روزانه ۲۵۰۰ قلم کالا را قیمت اعلام میکنند و روزانه حدود ۵۰۰ قلم کالا فروخته میشود و بالتبع آن خرید و سفارشات خارجی هم وجود دارد (در صنف خرید و فروش و واردات لوازم یدکی خودرو). ارتباط با مشتریان بصورت تلفنی و بخشی هم توسط روبات تلگرام است. اطلاعات ارزشمند در فرایندهای تجاری همه ثبت میشوند و حجم بانک اطلاعات حدود ۸GB است.
    در فروش کالا، ملاحظات زیادی مانند وضعیت موجودی، وضعیت قیمت کالا در بازار ایران، وضعیت کالاهای مشابه، وضعیت قیمت خارجی و … درگیر است که عملا اعلان قیمت فروش بصورت هوشمند و توسط نیروی انسانی با تجربه صورت میگیرد. همچنین پارامترهای زیادی در خرید کالا و سفارشات خارجی موثر است، مانند بودجه بندی، میزان تقاضا، میزان موجودی، پیش بینی سود و … که این کار هم عملا با استفاده از امکانات نرم افزاری ولی در نهایت با تصمیم گیری نیروی انسانی با تجربه صورت میگیرد. این کارها در این حجم، بسیار وقت گیر و نفس گیر هستند و البته روشهای متداول مانند نقطه سفارش و … جوابگوی کار نیست.
    انواع روشهایی که با الگوریتهای ساده و اصطلاحا Procedural امکان پذیر بوده است پیاده سازی شده است تا این فرایندها تسهیل شوند و اطلاعات لازم برای تصمیم گیری در اختیار نیروهای انسانی (اپراتورهای سیستم) قرار داده شود ولی الان کاملا این نیاز احساس میشود که نرم افزار بتواند بطریق هوشمند تصمیم بگیرد و بتواند بصورت موازی در کنار نیروهای انسانی کار کند و کسب تجربه کند و سهم بیشتری از کار را به عهده بگیرد. همانند یک فرد جدید که خیلی از این ملاحظات را بتدریج فرا میگیرد و خود را بر اساس نتایج تصمیمات خود و همجنین روش کار افراد با تجربه متعادل و اصلاح میکند.

    عزیزی راهنمایی کردند که این کار را با یادگیری عمیق باید انجام دهید. سوال من این است که :
    – آیا راهکار در مقوله Deep Learning است؟
    – اگر بله که مقداری راهنمایی بیشتری داشته باشید. اگر هم نه، راهکار یا زمینه دیگری را میشناسید که معرفی نمایید؟
    – چه مفاهیم و کانسپتهایی را باید بدانم.
    – چه ابزارها و یا زبانهایی برای این موضوع کارساز است.
    با تشکر فراوان

    • سید حسین حسن پور متی کلایی

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

  • فروزان

    سلام
    میشه بگید state of the art چیه؟
    خیلی ممنون

  • فروزان

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

    • سید حسین حسن پور متی کلایی

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

  • حسین

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

  • فروزان

    سلام و خدا قوت
    ببخشید Fully convolutional network همون یادگیری عمیق هست؟
    و اینکه معادل فارسی Fully convolutional network چیه؟
    خیلی ممنون

  • noname

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

  • هدف

    عالی بوذ. خدا خیرت بده برادر!

  • learner

    سلام
    ببخشید ادامه این بخش و قسمت هایی که گفتید در ادامه توضیح میدهید در کدام قسمت سایت قرار دارند؟

  • احسان

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

    • سید حسین حسن پور متی کلایی

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

  • مهرناز

    سلام
    بسیار مفید و عالی

    سپاس فراوان

  • مهرناز

    سلام

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

  • مهدی پور

    سلام و ممنون از مطلبتون زیباتون

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

    ممنون

    • سید حسین حسن پور متی کلایی

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

  • smy

    باسلام و تشکر از مطالب مفیدی که به اشتراک گذاشتید

    سوالی که دارم اینه که آیا برای deepLearning در هر زمینه ای (مثلا مسیر یابی) نیاز به کارت گرافیکی جانبی هست یا فقط در زمینه پردازش تصویر باید کارت گرافیکی تهیه کرد؟

    • سید حسین حسن پور متی کلایی

      سلام
      بستگی به ماهیت و بزرگی/کوچکی کار داره.
      برای ترینینگ در۹۹درصد اوقات همیشه به یک کارت گرافیک نیاز هست اما در زمان تست بسته به ماهیت کار میشه از سی پی یو هم استفاده کرد.

      • smy

        سلام
        ممنون از راهنمایی تون

        من با حدود ۷۰۰۰ داده در زمینه مسیریابی میخوام کار کنم
        برای چنین مساله ای میخوام ببینم نیاز به کارت گرافیکی جانبی دارم یا نه؟

        • سید حسین حسن پور متی کلایی

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

          • smy

            سلام
            داده ها تصویر نیست اکسل هست
            core i7

          • سید حسین حسن پور متی کلایی

            باید تست کنید. داده شما عددی هست از قرار معلوم . بهترین کار اینه یه نمونه تست کنید تا ببینید از نظر سربار اجرا براتون مشکلی ایجاد میکنه یا نه .

  • تیمور

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

  • مجتبی

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

    • سید حسین حسن پور متی کلایی

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

  • مهشید

    سلام،خسته نباشید
    ببخشید من رشتم مهندسی صنایع هستش و و برای پروژه کارشناسیم قراره روی موضوع داده کاوی با deep learning کار کنم ولی هیچ اشنایی ندارم و اینگه پروژم مقاله isi هستش میشه راهنمایی کنید که از کجا شروع کنم

  • Parisa

    سلام وقت بخیر. من یک کد طبقه بندی با cifar رو دانلود کردم اما ارور k is not defined رو میده البته k اصلا قبل از این خط استفاده نشده میخواستم ببینم که چجوری تغییرش بدم تا ران بشه.
    # Importing

    from matplotlib import pyplot as plt
    from keras import models
    from keras.models import Model, Sequential
    from keras.layers import Conv2D, MaxPooling2D, Dense, Dropout, Activation, Flatten, Input, Convolution2D, MaxPooling2D
    from keras.layers.normalization import BatchNormalization
    import numpy as np
    from keras.utils import np_utils
    import keras
    from keras.datasets import cifar10
    from keras.layers.merge import concatenate

    # Since I have a GPU related problem on my computer, I disabled GPU.
    import os
    os.environ[“CUDA_VISIBLE_DEVICES”]=”-1″
    import tensorflow as tf

    # Parameter Settings
    num_classes = 10 # Number of Classes
    batch_size = 128 # Batch Size
    epochs = 3 # Epoch number

    # Data Distrubiton; Traing/Testing Data
    (x_train, y_train), (x_test, y_test) = cifar10.load_data()

    img_rows, img_cols = 32, 32

    if K.image_data_format() == ‘channels_first’:
    input_shape = (3, img_rows, img_cols)
    else:
    input_shape = (img_rows, img_cols, 3)

    y_train = keras.utils.to_categorical(y_train, num_classes)
    y_test = keras.utils.to_categorical(y_test, num_classes)

    x_train = x_train.astype(‘float32’)
    x_test = x_test.astype(‘float32’)

    print(‘x_train shape:’, x_train.shape)
    print(x_train.shape[0], ‘train samples’)
    print(x_test.shape[0], ‘test samples’)
    print(‘y_train shape:’, y_train.shape)

  • راضیه عاقلی

    سلام من میخام از deep learning توی حوزه تشخیص گرید سرطان کار کنم ..تعداد نمونه حداقل چند تا باید باشه؟

  • راضیه عاقلی

    دسترسی ب اطلاعات بیماران محدوده حدودا دویست نمونه در بیمارستان برای یک سرطان خاص قابل دسترس هست .میخاستم بدونم ک آیا با این تعداد نمونه دقت بالایی دریافت خواهیم کرد با خیر؟

    • سید حسین حسن پور متی کلایی

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

      • راضیه عاقلی

        آخه یکی از دوستانم ک آی ای خونده میگه ک کار کردن با دیپ لرنینگ با کمتر از ۱۰۰۰ نمونه اصلا ارزش نداره

        • سید حسین حسن پور متی کلایی

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

  • سحر

    لینک گر.ه تلگرام برای من باز نمیشه

  • سحر

    لینک گروه تلگرام برای من باز نمیشه

    • سید حسین حسن پور متی کلایی

      سلام
      تلگرام فیلتره! با فیلترشکن برید باز میشه
      ضمنا در کانال عضو بشید معمولا اخرین لینک عضویت در گروه در کانال معرفی میشه.

  • مهدی

    سلام مهندس . یه سوال ازتون داشتم
    برای اجرای برنامه ای که imagenet رو طبقه بندی و تحلیل کنه چه سخت افزار و نرم افزارهایی لازمه؟ درباره سرورهای رایگان قابل دسترس و نحوه استفاده از آنها اگه میشه توضیح بدید .
    ممنون

  • مرتضی

    سلام و وقت بخیر. استاد عزیز ما فرمودن برای یادگیری عمیق الگوریتم ارایه بدیم و مقاله ای که فرستادم تئوری هستش. من نمی دونم باید چیکار کنم میشه راهنماییم کنین؟

      • مرتضی

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

        • سید حسین حسن پور متی کلایی

          سلام. خیلی گنگه! اگر منظور از الگوریتم؟ بیان فرمولهای کانولوشن هست که خیلی راحت با یه سرچ ساده تو گوگل میتونید پیدا کنید. هم ویکی پیدیا و هم آرکایو مطالب و مقالات مختلفی هست.
          در مقالاتی مثل موبایل نت و امثالهم هم فرمول کانولوشن رو میتونید پیدا کنید (چون depthwise convolution رو عنوان میکنه فرمول اصلی اون هم هست) هرچند وی جی جی نت و خیلی از مقالات دیگه هم اونو دارن. البته اگر این منظور شما بوده باشه.

  • سمیه نعمتی

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

    • سید حسین حسن پور متی کلایی

      سلام.
      لطفا ایمیل ارسال کنیدو در ایمیلتون توضیحات کافی بدید تا اگر راهنمایی از دست بنده برمیاد خدمتتون عرض کنم.

  • ستاره

    سلام روزتون بخیر ممنون بابت توضیحات خوبتون خیلی روان و ساده ولی کامل و جامع توضیح دادید.فقط یک خواهش داشتم میشه در رابطه با ترنسفورمرها و grounded به همین صورت مفصل و زبان روان توضیح بدید. بسیار مورد نیاز هست .

    • سید حسین حسن پور متی کلایی

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

  • مهدی

    با سلام
    من به دنبال موضوع برای پایان نامه کارشناسی ارشد در رشته مکاترونیک هستم. آیا می توانید در این حوزه موضوع یا موضوعاتی پیشنهاد بدهید؟

    ممنون