به نام خدا

جایی برای یادگیری ماشین

این جا محلی است برای بحث در مسائل یادگیری ماشین.

جایی برای یادگیری ماشین

این جا محلی است برای بحث در مسائل یادگیری ماشین.

جایی برای یادگیری ماشین

این وبلاگ بر آن است تا محلی باشد برای بحث های نظری یا کاربردی مفید در یادگیری ماشین. جایی برای یاد دادن و یاد گرفتن؛ برای نشر ساده تر؛ برای نظر دادن و کاربردی کردن آن چه می دانیم!

پنج ایده ای که IBM فکر میکنه که در پنج سال آینده جهان ما رو تغییر میده.

http://www.washingtonpost.com/blogs/innovations/wp/2013/12/17/five-innovations-ibm-expects-will-change-our-world/?wprss=rss_AllWPStoriesandBlogs&Post+generic=%3Ftid%3Dsm_twitter_washingtonpost&clsrd

به پررنگ بودن نقش «یادگیری ماشین» دقت کنید !


  • مهرداد فرج‌تبار

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

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

عنوان این ۱۲ نکته که عنوان ۱۲ بخش این مقاله است:

1- LEARNING = REPRESENTATION  + EVALUATION + OPTIMIZATION

2- IT’S GENERALIZATION THAT COUNTS

3- DATA ALONE IS NOT ENOUGH

4- OVERFITTING HAS MANY FACES

5- INTUITION FAILS IN HIGH DIMENSIONS

6- THEORETICAL GUARANTEES ARE NOT WHAT THEY SEEM

7- FEATURE ENGINEERING IS THE KEY

8 - MORE DATA BEATS A CLEVERER ALGORITHM

9- LEARN MANY MODELS, NOT JUST ONE

10- SIMPLICITY DOES NOT IMPLY ACCURACY

11- REPRESENTABLE DOES NOT IMPLY LEARNABLE

12- CORRELATION DOES NOT IMPLY CAUSATION

خوندن این مقاله یک بار واجب، سالی یک بار مستحب موکد،‌و هر سه ماه یک بار مستحب است!

لینک دانلود مقاله:  http://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf




  • مهرداد فرج‌تبار
با چند تا از بچه ها داریم کتاب بیشاپ رو میخونیم.
اگه سوال یا نکته جالی پیش اومد اینجا می نویسیم و در موردش بحث می کنیم.
این کتاب عنوانش «تشخیص الگو و یادگیری ماشین» (pattern recognition and machine leaning) . یه کتاب کلاسیک «یادگیری ماشین» هستش که تو خیلی از دانشگاه تدریس میشه. نویسندش کریستوفر بیشاپ (christopher bishop) محقق در آزمایشگاه تحقیقاتی مایکروسافت هستش.

در مورد فصل اول بیشاپ چند تا نکته و سوال به ذهنم رسیده. خودم یه جوابایی براشون دارم اما مطمئن نیستم. می تونیم راجع به شون بحث کنیم در کامنت ها:
۱- صفحه ۹ پاراگراف اول گفته که وقتی پیچیدگی مدل زیاد باشه مدل سعی میکنه خودش رو با نویز تطابق بده و اونها رو هم توجیه کنه و این باعث نوسانات و شکل غیریکنواخت  خم ما میشه. حالا سوال اینجاست که اگه داده ها نویزی نباشن و کاملا از (sin(2\pi x تولید شده باشن اون وقت با M زیاد آیا همین جوری نوسانی نخواهد شد؟ (یعنی میخوام بگم نوسانات زیاد به خاطر نویز نیست بلکه به خاطر پیچیدگی بالاست)
کسی حالش رو داره پیاده سازی کنه؟

۲- روند معرفی ایده ها رو در یک نگاه  ببینید. خیلی جالبه:
الف) اول یه مدل یادگیری برای رگرسیون به صورت کمینه کردن مجموع مربعات خطا.
ب) مشکل overfitting برای این مدل ساده
پ) حل مشکل overfiting به کمک منظم سازی (regularization)
ت)‌ معرفی مدل احتمالی که به یه خم چندجمله ای بالا یه نویز گاوسی اضافه شده. این معادل حالت الف میشه. یعنی رگرسیون با کمینه کردن خطا.
ث) اضافه کردن یک احتمال پیشین به ضرایب چند جمله ای که معادل حالت منظم سازی شده میشه.
ت) تا الآن در دو مدل فوق یک تخمین نقطه ای از ضرایب به دست می یومد و سپس از این تخمین برای پیش بینی نقطه ی جدید استفاده میشد. در روش بیزی کامل بعد از اینکه احتمال پسین ضرایب به دست اومد با استفاده از  قوانین جمع و ضرب احتمال مقدار خروجی برای ورودی جدید رو به صورت جمع وزندار مقدار خروجی با وزنی متناسب با احتمال رخداد ضرایب حساب میشه.

۳-روش بیزین یه روش سیستماتیک و منطبق بر داده هاست برای جلوگیری از overfitting و انتخاب مدل. در منظم سازی احتیاج به cross validation یا روش های مشابه داریم تا پارامتر منظم سازی مناسب رو انتخاب کنیم. ظاهرا در روش بیزی این کار به طور خودکار و به صورت کاملا وابسته به داده ها صورت میگیره. احتمالا در فصل سه در این مورد بیشتر صحبت میکنه. نه؟
کسی میدونه چرا روش بیزی انتخاب مدل و جلوگیری از overfitting رو با تکیه بر خود داده ها انجام میده؟

۴-  صفحه ۲۷ پاراگراف بزرگ وسط صفحه ادعا میکنه که : اریب بودن (bias)  تخمین واریانس در در  روش تمایل بیشینگی! (maximum likelihood) رابطه داره با over-fitting . نظر شما چیه ؟

۵- مشکل بعد بالا رو خیلی جالب مطرح کرده بود :) نه؟

۶- داستانش در مورد لاپلاس دیدین  چه طوری شروع کرده؟‌ نوشته: « خیلی تو کار تواضع و فروتنی این حرفا نبود. خودش رو بهترین ریاضیدان زمان در فرانسه میدونست. »  جا خوردم با این شروعش :)))

  • مهرداد فرج‌تبار

سلام،

چند تا مطلب پراکنده در مورد یادگیری ماشین (و علوم کامپیوتر) تو این چند وقتی دیدم که شاید جالب باشه :

۱- روز اولی که اومدم اینجا یه دوست برقی اومد، بعد از گپ و گفت اولیه یکی از حرفهاش مضمونش این بود: «که آماده ای پول پارو کنی ؟‌ »

۲- مدرک cs اینجا خیلی معتبره! به شدت براش کار هست. حتی آدما دوست دارن از computer engineering پاشن بیان cs و تو مدرکشون cs بخوره. همین.

۳- کلاس یادگیری ماشین پر آدم هایی از رشته های دیگه است. به شخصه توی این مدت ۳ تا فقط ایرانی دیدم که از عمران توی این دو ترمی گذشته درس «یادگیری ماشین» رو برداشتن. حالا رشته های دیگه و ملیت های دیگه بماند.

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

۵- من درس یادگیری ماشین رو توی رزرو بودم. حتی این رزرو تا چند روز پس از پایان ثبت نام باقی مونده بود تا بتونن یه کلاس بزرگتر پیدا کنن... میدونم بیشتر از ۱۰۰ نفر برش داشتن. (چون کلاس اولی که عوضش کردن  ۱۰۰ نفر جا داشت)

۶- اینجا همه آدم ها یه کتاب بیشاپ دارن. حالا یا جلوی میزشونه، یا اینکه بردن گذاشتن تو خونشون. حتی دانشجوهای سال بالایی. می بینی که یه گوشنه نشستن و دارن میخونن.

۷- توی مک دونالد نشسته بودیم. داشتیم با بچه های ایرانی بستنی می خوردیم. یهو یکی از بچه های برقی ازم پرسید:«این یادگیری ماشین چیه که همه دارن میخونن؟ من یه دوست وایرلس کار دارم که داره میخونه»

۸- دو تا درس یادگیری ماشین اینجا ارائه میشه: ماشین لرنینگ ۱ و ماشین لرنینگ ۲. سیلابس اولیش رو از اینجا  و سیلابس دومیش رو از اینجا ببینید. درس تئوری یادگیری ماشین و یه سری درسهای پیشرفته هم هرازچندگاهی ارائه میشه. ماها که درس پترن دکتر ربیعی رو داشتیم قسمت اول تقریبا بلدیم. قسمت دومش میره تیکه دوم کتاب بیشاپ. مجموعا توی دو تا درس کتاب بیشاپ رو تموم میکنن به اصافه یه سری کاربردها و مباحث جدید.

۹- کلاس یادگیری ماشین اینجا هم مثل کلاسای شریف خودمونه. یا درس رو بلدی. یا اینکه سر کلاس خیلی چیزی عایدت نمیشه. آخرش باید خودت بشینی بخونی.

۱۰- من سه ساله که یکی از آروزهام خوندن کتاب بیشاپه... اما نشد. چندین بار تلاش ناموفق داشتم. رفتم سراغش اما ادامه ندادم. امیدوارم که وقتی دکترام تموم شد این یکی حداقل دیگه از لیست آرزوهام خط خورده باشه ;-)



  • مهرداد فرج‌تبار

سلام

پرکاربردترین الگوریتم‌ها در داده‌کاوی یا یاگیری ماشین کدام‌ها هستند؟ علی رغم اینکه این سوال به نظر عامیانه و غیرعلمی می‌رسد اما به نظرم می‌توان مجموعه‌ای که با اغماض جواب این سوال باشند جمع‌آوری نمود:

  • Kernel Density Estimation and Non-parametric Bayes Classifier
  • K-Means
  • Kernel Principal Components Analysis
  • Linear Regression
  • Neighbors (Nearest, Farthest, Range, k, Classification)
  • Non-Negative Matrix Factorization
  • Support Vector Machines
  • Dimensionality Reduction
  • Fast Singular Value Decomposition
  • Decision Tree
  • Bootstapped SVM
تا به جال چند تا از الگوریتم‌ها رو به صورت دقیق مطالعه کردید یا آن‌ها رو پیاده‌سازی کردید؟ اگر کمتر از ۵-۶ باشه، نشون میده که اطلاعات عمومی شما در یادگیری ماشین ضعیف اگر ۹ به بالا باشه، احتمالا اطلاعات عمومی خوبی دارید.

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

راستی این لیست و چند لیست دیگر رو می‌تونید اینجا ببینید. البته خود این منبع هم یه سوال سوال و جواب عمومیه ولی به نظرم جواب‌هاش نسبتا خوبه.

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

  • محسن فدایی

به نام خدا

 

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

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

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

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

در واقع به زبان ساده‌تر، هدف یادگیری عمیق، استخراج خود ویژگی‌ها به صورت هوشمند طی یک مرحله یادگیری است! تلاش‌ها در این زمینه (خصوصا ساخت یک یادگیر با استفاده از شبکه‌های عصبی) تا قبل از سال 2006 موفقیت‌آمیز نبود. از این سال به بعد تلاش‌ها امیدوارکننده‌تر بود؛ به عنوان مثال یک تیم گوگل با رهبری Andrew Ng و Jeff Dean، در سال 2012 شبکه عصبی‌ای را طراحی کردند که یاد می‌گیرد که مفاهیم سطح بالاتر را نیز تشخیص دهد! به عنوان مثال، تشخیص گربه‌ها تنها از روی ویدئوهای موجود در سایت یوتیوب ("How Many Computers to Identify a Cat? 16,000.").

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

 

-         من خودم تو این زمینه در حال مطالعه هستم و تازه‌کار. اما دوستان نظراتشون رو بگند تا با هم بحث کنیم؛ شاید به جاهای به درد بخوری رسیدیم :-)

  • محمود کریمیان

اعلان:
بنا بر نظر اساتید محترم در این گروه بنا شده است به منظور آشنایی بیشتر دانشجویان با آخرین پژوهش های در حال انجام در گروه هوش مصنوعی سمینارهایی به صورت یک هفته در میان توسط دانشجویان دکترا برگزار شود. دومین سمینار از این سری با عنوان "کاربرد نمایش تنک ساختارمند در یادگیری ماشین و پردازش سیگنال" توسط آقای علی سلطانی دانشجوی دکترا زیر نظر دکتر ربیعی در روز چهارشنبه 24 آبان ساعت 13:30 تا 15 در اتاق 726 برگزار خواهد شد.

حضور کلیه دانشجویان گروه هوش مصنوعی در این سمینارها توصیه می شود. 


- در ضمن جلسه قبل این مجموعه جلسات توسط آقای آبین با موضوع «‫خوشه‌بندی مقید فعال با کمک رتبه‌بندی قیدهای در سطح نمونه»‬
 برگزار شد. دریافت فایل
  • تحریریه کافه ام ال
دکتر رامتین سر کلاس برنامه‌نویسی پیشرفته صحبت از یک نخ میکردند. پایین این نخ تکنولوژی‌ها و روش‌هایی هستند که دغدغه برنامه‌نویس‌ها محسوب نمی‌شوند. سیستم و محیط برنامه‌نویسی (لااقل خوب‌هایش) باید برنامه‌نویس را از فکر کردن به این موارد خلاص کند.  مثلاً تکنولوژی های سطح پایین تر یا مدیریت حافظه(نه برای همه کاربردی البته). بالای نخ هم آن چیزی‌ است که برنامه‌نویس باید برای آن فکری بکند. منطق برنامه، نوآوری‌ها، الگوریتم‌های سریعتر و کارآمدتر... و در بیان‌کلی‌تر تکنولوژی‌های سطح بالا.

ایشان این را هم گفتند که این نخ ثابت نیست. در طول زمان بالاتر می‌رود. چیز‌هایی بوده‌اند که زمانی باید برنامه‌نویس بهشان فکر میکرده و مسئله‌هایی که باید حلشان میکرده، اما حالا دیگر نه. مثلاً آن موقع (زمستان ۸۴) مثال سیستم‌های ذخیره‌سازی و فایلینگ را زدند که زمانی درسش در دانشگاه هم تدریس می‌شده (گرچه هنوز هم در بعضی دانشگاه‌ها می‌شود)  اما الان دیگر تدریس نمی‌شود و رونقی ندارد. چرا؟ چون به قول ایشان: «منتقل شده به زیر نخ».

  • علیرضا قاسمی

تساوی عنوان که در آن فرض می‌شود x تنک است در دو حوزه‌ی متفاوت، اما با راه حل‌های مشابه ظاهر می‌شود:

حوزه‌ی نخست پردازش سیگنال است. این‌جا y نتیجه‌ی اندازه‌گیری‌های به دست آمده از شیء مورد نظر، x، توسط عملگری خطی است که با A نمایش داده می‌شود. در این‌جا به دنبال بازسازی سیگنال اصلی x از تعداد محدودی اندازه‌گیری هستیم. برای دستیابی به این هدف لازم است بر x و y محدودیت‌هایی اعمال کنیم. معمولا فرض می‌شود که x یا خودش تنک است و یا در پایه‌ای معلوم مانند موجک (wavelet)، نمایشی تنک دارد. A معمولا به گونه‌ای انتخاب می‌شود که با پایه‌ی تنک کننده‌ی سیگنال اصلی نامتجانس باشد. به این ترتیب راه حل این است که x را به گونه‌ای بیابیم که تنک باشد و شرط y = Ax را براورده کند.

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

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

  • علی سلطانی