View Full Version : CMAC یا مدل ریاضی مخچه انسان، چیست؟
whitehat
شنبه 17 فروردین 1387, 10:26 صبح
CMAC مخفف Cerebellar Model Articulation Controller یا کنترلگر مدل ریاضی مخچه است.
مدل CMAC یا مدل ریاضی مخچه در سال 1971 توسط J.S.Albus ارائه شد. CMAC شبکه عصبی است که ساختار و اعمال قسمتی از مغز انسان بنام مخچه را شبیهسازی مینماید. وظیفه مخچه کنترل و هماهنگی اجزای بدن نظیر چشمها، بازوها، پاها و انگشتان میباشد و Albus برای اولین بار از مدل CMAC برای کنترل بازوهای ربات استفاده نمود [Albus 1975]. مدل CMAC مبتنی بر سلولهای حافظه انجمنی و بر اساس جدول جستجو است.
مبانی و جایگاه
مخچه متصل به مغز میانی و در زیر قشر بینایی قرار گرفته است و وظیفه آن حفظ تعادل بدن، کنترل سرعت و دقت حرکات اندامها، چشمها و دیگر اعضای بدن میباشد. مخچه از بسیاری لحاظ شبیه یک پرسپترون است. ساختمان یک پرسپترون در شکل زیر نشان داده شده است.
http://barnamenevis.org/forum/attachment.php?attachmentid=15957&d=1207376566
از آنجاییکه ساختار پرسپترون در ابتدا از مدل مغز الهام گرفته شده است بنابراین نامگذاریهای قسمتهای مختلف آن شامل عبارات فیزیولوژیکی- عصبی است. از بردارهـای ورودی S به عنوان سلولهای حسگر(Sensor Cells) یاد میشود. هنگامی که یک بردار ورودی S بر روی سلولهای حسگر قرار میگیرد، یک بردار سلول های انجمنی A فعال میشود. با ضرب کردن این بردار سلول انجمنی در ماتریس وزن W، بردار پاسخ یا خروجی P بدست میآید.
http://barnamenevis.org/forum/attachment.php?attachmentid=15958&stc=1&d=1207376238
....
whitehat
شنبه 17 فروردین 1387, 11:15 صبح
از نظر معادلات ریاضی، یک پرسپترون را میتوان نتیجه دو نگاشت زیر دانست:
f:S->A
g:A->P
به طوری که معمولاً تابعf یک تابع مشخص با پارامترهای ثابت است در حالیکه تابع g به مقادیر وزنهایی بستگی دارد که در طول فرآیند ذخیره یا آموزش تغییر مییابند.
هنگامیکه بردار ورودی S=(S1,S2,...Sn) به سلولهای حسگر اعمال میشود، این بردار به یک بردار سلول انجمنی A نگاشته میشود. اگر *A مجموعه عناصر فعال یا غیر صفر بردار A تعریف شود. *A در شکل زیر نمایش داده شده است.
http://barnamenevis.org/forum/attachment.php?attachmentid=15960&stc=1&d=1207378693
برای تولید بردار خروجیP سلول پاسخ ([Response Cell) مقادیر وزنهای متصل به سلولهای انجمنی فعال را با یکدیگر جمع میکند. تنها عناصر غیر صفرکه *A را بوجود آوردهاند در این جمع تاثیر میگذارند. بنابراین بردار *A یک آدرس است و بردار P محتویات آن آدرس است. اگر بعد از اعمال بردار ورودی S ، محتویات P بایستی تغییر نمایند، تنها وزنهای متصل به سلولهای انجمنی در *A بایستی تنظیم شوند.
از آنجاییکه یک پرسپترون بقدر کافی سلول انجمنی ندارد تا برای هر الگوی ورودی ممکن، یک سلول و یا یک گروه سلول انجمنی نگهداری شود، لذا توسط الگوهای ورودی مختلفی ممکن است سلولهای انجمنی ثابتی فعال شود. این مساله منجر به همپوشانی بین الگوهای ورودی مختلف میشود که در بعضـی شـرایط مشـکل ایجـاد میکند. برای توضیح بیشتر، شکل زیر را در نظر بگیرید.
http://barnamenevis.org/forum/attachment.php?attachmentid=15961&stc=1&d=1207378916
به طور مثال دو الگوی ورودی S1,S2 که دو مجموعه سلولهای انجمنی همپوشان A*1,A*2 را فعال مینمایند، مفروض میباشند. اگر مطلوب، یکسان بودن و یا نزدیک به هم بودن خروجی سلول پاسخ این دو بردار ورودی باشد در اینصورت همپوشانی مفید است.
برای مثال، اگر پاسخ مناسب برای S1 ذخیره و به عبارت دیگر، یادگرفته شده باشد، با اعمال ورودی S2 تقریباً پاسخی نزدیک به همان پاسخ مناسب بدست میآید بدون آنکه نیازی به ذخیره یا تنظیم وزن برای باشد و تفاوت کمی بین دو پاسخ وجود دارد (اختلاف تنها در تفاضل بین W11 و W13 است). این ویژگی همان تعمیم است و مانند تسری دادن یک تجربه یاد گرفته شده به تجربه های دیگر است.
اما اگر مطلوب آن باشد که بردار ورودی S2 یک پاسخ کاملاً متفاوت با پاسخ S1 تولید نماید، در اینصورت همپوشانی A*1∩A*2 مشکل ایجاد خواهد کرد. تنظیم تمامی وزنهای متصل به سلولهای A*2 برای تولید پاسخ مناسب به S2، بیشتر وزنهایی که در تولید خروجی S1 مشارکت دارند را دستخوش تغییر نامناسب مینماید. به این پدیده تداخل یادگیری (Learning Interference) گفته میشود و مانند حـالتی است که ارگانیسم بیولوژیکی تجربهای را آموخته اما با یک تحریک تقریباً مشابه تحریکهای قبلی، باید جوابی متفاوت بدهد. البته توسط تکرار الگوریتم یادگیری یا ذخیره برای بردارهای ورودی متفاوت میتوان تا حدودی بر تداخل یادگیری غلبه نمود زیرا تکرار موجب میشود مقادیر وزنهای مؤثر در سلولهای انجمنی همپوشان یا A*1∩A*2 کمتر شود و مقادیر وزنهای غیرهمپوشان موثرتر شوند.
بطور خلاصه میتوان نتیجه گرفت که، توانایی پرسپترون در عمل تعمیم به علت همپوشانی یا اشترک A*1,A*2 میباشد. اگر اشتراک تهی باشد، پاسخ به دو الگوی ورودی، مستقل از یکدیگر است و عمل تعمیم رخ نمیدهد. اگر اشتراک A*1,A*2 تهی نباشد آنگاه پاسخ برای هر دو ورودی تقریباً به طور یکسان و به صورت مجموع وزنهای متصل به سلولهای انجمنی همپوشان یا A*1∩A*2 میباشد. مفاهیم مخچه بر اساس مطالب فیزیولوژی- عصبی میباشد که برای آشنایی بیشتر به مرجع زیر مراجعه شود.
Albus James Scara, 1971. "A theory of cerebellar functions", Mathematical Biosciences, Vol. 10 pp. 25-61.
Albus J.S., 1972. "Theoretical and experimental aspects of a cerebellar model", PhD. Dissertation, University of Maryland.
Albus J.S., 1975. "A new approach to manipulator control: The cerebellar model articulation controller (CMAC)", Trans. of the ASME: Journal of Dynamic Systems, Measurement, and Control, pp. 220-227, Sept..
Albus J.S., 1975. "Data Storage in the Cerebellar Model Articulation Controller (CMAC)", Journal of Dynamic Systems, Measurement and Control, pp. 228-233, Sept..
Albus J.S., 1981. "Brains, Behavior, and Robotics", BYTE Publications, Inc., Peterborough, pp. 352.
بزودی در مورد این مدل بیشتر خواهم نوشت
ramkly
پنج شنبه 22 فروردین 1387, 19:50 عصر
به طور مثال دو الگوی ورودی S1,S2 که دو مجموعه سلولهای انجمنی همپوشان A*1,A*2 را فعال مینمایند، مفروض میباشند. اگر مطلوب، یکسان بودن و یا نزدیک به هم بودن خروجی سلول پاسخ این دو بردار ورودی باشد در اینصورت همپوشانی مفید است.
به نظر من چیزی شبیه به الگوریتم تشخیص الگو در داده کاوی باشه از دوست عزیزمان می خوام که این مطلب را ادامه بده و اگر امکانش هست و نسخه ای از پایان نامه را دارید آن را در سایت قرار بدید.
whitehat
شنبه 24 فروردین 1387, 13:15 عصر
به نظر من چیزی شبیه به الگوریتم تشخیص الگو در داده کاوی باشه
این مدل معمولا برای تصمیم گیری استفاده میشه، مقاله هایی برای تشخیص الگو هم وجود داره که می توانید به آنها مراجعه کنید.شاید با خواندن این قسمت بیشتر با آن آشنا شوید
مدل CMAC
شکل ضمیمه (http://barnamenevis.org/forum/attachment.php?attachmentid=16180&stc=1&d=1207994190) بلوک دیاگرام مدل CMAC را نشان میدهد که به ازای ورودی یا ورودیهای مشخص، خروجی(های) مناسب تولید میکند. متغیر یا متغیرهای ورودی به نواحی گسسته تقسیم یا کوانتیزه (Quantized) میشود، هر ناحیه گسسته آدرس سلولی از حافظه را مشخص میکند. با بازیابی اطلاعات ذخیره شده در سلولهای حافظه انجمنی انتخاب شده، میتوان خروجی را بدست آورد. خروجی به صورت مجموع اطلاعات ذخیره شده در سلولهای حافظه متناظر با ورودیها است. CMACبا تغییر محتویات سلولهای حافظه متناظر با ورودیها، خروجی صحیح را یاد میگیرد. برای هر ورودی ضریبی از مقدار تفاوت خروجی CMAC و خروجی مورد انتظار بعنوان ضریب یادگیری، به محتویات سلولهای حافظه انتخاب شده افزوده میشود.
به طور کلی، مدل ریاضی CMAC از سه رابطه نگاشت زیر استفاده مینماید:
نگاشت بردار ورودیهای کوانتیزه شده (S) به سلولهای انجمنی A
S->A
نگاشت سلولهای انجمنی به آدرس فیزیکی حافظهP
A->P
نگاشت آدرس فیزیکی حافظه به خروجی مدل مخچه Y
P->Y
معماری CMAC
شکل ضمیمه (http://barnamenevis.org/forum/attachment.php?attachmentid=16181&stc=1&d=1207994570) مثالی از معماری CMAC با دو متغیر ورودی و میباشد. هر متغیر ورودی به چندین ناحیه گسسته از فضای ورودی بنام بلوک تقسیم میشود، در مثال ذکرشده پنج بلوک موجود است. اگر هر بلوک به اندازه فاصله کوچکی بنام عنصر (Element) شیفت یابد بلوکهای جدیدی در لایهها یا سطرهای مختلف بوجود میآیند. مثلاً برای بلوکهای A0,B0,C0,D0 مربوط به متغیر ورودی بلوکهای E0,F0,G0,H0,I0 در لایه بعدی و برای بلوکهای A1,B1,C1,D1 بلوکهای E1,F1,G1,H1,I1 برای متغیر ایجاد میشود به همین ترتیب بلوکهای جدیدی مانند J0,K0,L0,M0,N0 در لایهها یا سطرهای دیگر نیز پدید میآیند. مساحتی که توسط نواحی تقسیم شده متغیرهای ورودی بدست میآید بنام فوقمکعب نامیده میشود، به طور مثال فوقمکعبهایC1,B0 و D1,B0. هر فوقمکعب (Hyper Cube) یک سلول حافظه برای ذخیره و بازیابی اطلاعات یا وزنها میباشد.
در مدل CMAC فقط بلوکهای موجود در لایههای متناظر تشکیل فوقمکعب میدهند، به طور مثال امکان وجود فوقمکعب F1,A0 نمیباشد زیرا A0 از لایه اول متغیر ورودی S1 ولی F1 از لایه دوم S2 میباشد. برای وضوح بیشتر پارامترهای موجود در شبکه CMAC را میتوان به صورت زیر تعریف نمود:
Nv: تعداد متغیرهای ورودیS1 ,S2)
Nb: تعداد بلوکها در یک لایه (پنج عدد)،
Ne: تعداد لایهها یا تعداد سطرها، تعداد عنصرهای کامل که در یک بلوک جای میگیرند (سه عدد)
S:بردار ورودی، به طور مثال {4و7}= S1 ,S2 }
A:سلولهای انجمنی و یا فوقمکعبها، به طور مثال {H1,G0 و یا L1,K0،
P: آدرس فوقمکعب از مجموعه A، و
Y:خروجی متناظر با S ، یا مجموع اطلاعات ذخیره شده در فوقمکعبهایی که S را میپوشانند.
whitehat
یک شنبه 25 فروردین 1387, 15:28 عصر
نگاشت خروجی
خروجی متناظر با ورودیها به صورت اطلاعات یا وزنهایی در Ne سلول حافظه انجمنی و یا Ne فوقمکعب از مجموعه A ذخیره شدهاند. برای بدست آوردن خروجی(ها) از رابطه زیر استفاده میشود:
فرمول 1 (http://barnamenevis.org/forum/attachment.php?attachmentid=16206&stc=1&d=1208088036)
که در آن S یک حالت ورودی مشخص، M حجم حافظه و برابر تعداد فوقمکعبها میباشد، و W بردار وزنها و یا بعبارت دیگراطلاعات ذخیره شده در حافظهها میباشد و اگر محل حافظه j توسط یکی از فوقمکعبهای حالت ورودی S پوشانده شود ( aj( S برابر یک، در غیر این صورت برابر صفر میباشد.
الگوریتم یادگیری
در مدل CMAC از روش یادگیری با مربی (Supervised Learning) برای تنظیم وزنهای ذخیره شده در سلولهای حافظه استفاده میشود. یادگیری به صورت تکراری (Iterative) و مبتنی بر کمینه نمودن خطای سراسری میباشد از این نظر شبیه الگوریتم پس انتشار استاندارد میباشد. الگوریتم یادگیری دو مرحله دارد: 1- مرحله پیشخور: یعنی اعمال ورودی و بدست آوردن خروجی و 2- مرحله پسخور یا تغییر و تنظیم وزنها با توجه به خروجی بدست آمده و خروجی مورد نظر.
فرمول2 (http://barnamenevis.org/forum/attachment.php?attachmentid=16207&stc=1&d=1208088306)
که در آن α نرخ یادگیری است بطوریکه . مقادیر( α<1 و α>0 )نزدیک به یک در بعضی شرایط میتواند باعث ناپایداری شود.( ŷ( S مقدار خروجی یا پاسخ مورد انتظار ، Neتعداد عنصرها ، و مقدار داخل پرانتز نیز معادل خطا برای نمونه آموزشی میباشد. خطا در ( a( S ضرب میشود تا فقط وزن محلهای حافظه که توسط فوقمکعبهای ورودی پوشانده میشود، تنظیم شوند.
در مورد الگوریتم یادگیری به نکات زیر میتوان اشاره نمود:
1- قابلیت یادگیری یا شناسایی: شبکه با توجه به دادههای ورودی، توانایی تنظیم وزنهای حافظه را دارد و شرایط جدید را یاد میگیرد و تجربه میکند بطوریکه با اعمال ورودیهای جدید خروجی مناسب تولید مینماید. با استفاده از قضیه Kolmogorov میتوان اثبات نمود که مدل CMAC را میتوان بعنوان یک کلاس عمومی برای تقریبزدن هر تابع و مدلی – از جمله پیشبینی وضعیت آینده سری زمانی - استفاده کرد [Cotter and Guillerm 1992].
2- قابلیت تعمیمپذیری: اگر به شبکه ورودیهایی اعمال شود که تا به حال شبکه برای آن ورودیها آموزش نیافته باشد و یا به عبارت دیگر الگوریتم یادگیری برای آن ورودی خاص بکار نرفته باشد، شبکه بتواند به طور مناسب خروجی را برای ورودیهای مورد نظر تولید نماید. مدل CMAC با تقسیم نمودن فضای ورودیها به بلوکها و استفاده از تعداد لایههای مناسب (عنصرها) قابلیت تعمیمپذیری قابل قبولی دارد [Kolcz and Allinson 1999], [Gonzalez-Serrano et al 1998]. جهت تعمیمپذیری مناسب به نکات زیر باید توجه نمود: 1- کافی و اندازه بودن دادههای ورودی [Wasserman 1993]، 2- استفاده از معماری مناسب شبکه (تعداد کافی بلوکها و لایهها) و 3- پیچیده بودن مدلی که قصد تقریب زدن آن را داریم.
در ادامه نمونه کدی از پیاده سازی CMAC پایه آورده شده ، که بعدا در مورد پیاده سازی و کد ضمیمه توضیح خواهم داد. (پیاده سازی توسط مهندس خادمی صورت گرفته)
ramkly
شنبه 31 فروردین 1387, 21:05 عصر
جناب whitehat همچنان منتظر ادامه موضوع هستم.
در ضمن لطف کنید و بگید چه کاری را با این الگوریتم میشه انجام داد که با شبکه عصبی نشه یا مشکل باشه. بعبارتی مزیت این الگوریتم چیست؟
whitehat
یک شنبه 01 اردیبهشت 1387, 15:42 عصر
در ضمن لطف کنید و بگید چه کاری را با این الگوریتم میشه انجام داد که با شبکه عصبی نشه یا مشکل باشه. بعبارتی مزیت این الگوریتم چیست؟
مهمترین مزایای CMAC
1. به علت استفاده از جدول جستجو پیاده سازی ساده ای دارد
2. سرعت یادگیری بالایی دارد و دارای همگرایی سریع است
3. دارای همگرایی ضمانت شده است
4. مدل CMAC برای همگرا شدن به سمت پاسخ مورد انتظار نیاز به تکرار زیاد ندارد. زیرا دارای الگوریتم آموزش و یادگیری سریعی است. بنابراین برای پیاده سازی کاربردهای بلادرنگ و Online مناسب است.دلیل افزایش سرعت الگوریتم یادگیری CMAC در این است که در هنگام یادگیری مانند شبکه های عصبی MLP وزن تمام محلهای حافظه تغییر نمی کند بلکه فقط وزن محلهای حافظه فعال شده (فوق مکعب ها) متناسب با ورودی ها تغییر می یابد.
5. مشکل خطای کمینه نسبی ندارد و همیشه بهترین جواب و جواب مطلوب را بدست می آورد.
6. تعداد پارامترهای آن اندک است (فقط تعداد بلوکها، تعداد لایه ها و نرخ یادگیری).
7. با استفاده از تعداد مناسب بلوکها و لایه ها، دارای دقت شناسایی بالایی است.
مهمترین معایب مدل CMAC
1. بردار ورودی توسط تعدادی سلول انجمنی به خروجی نگاشت شده است و یک مسیر مستقیم مابین ورودی ها و خروجی وجود ندارد. در نتیجه مانند شبکه های عصبی مانند MLP با اعمال ورودی های مقیاس شده که شبکه عصبی آنها را ندیده است، خروجی مقیاس شده بدست نمی آید مگر اینکه مدل CMAC برای زوج ورودی - خروجی مقیاس شده آموزش یافته باشد.
2. CMAC نیاز به تعداد زوج ورودی خروجی زیادی برای آموزش شبکه دارد به خصوص زمانی که تعداد بلوک و لایه ها زیاد باشد.
3. اگر تعداد متغیر های ورودی زیاد شود حجم حافظه به صورت نمایی افزایش می یابد و پیادهسازی نرم افزاری و سخت افزاری آن بسیار مشکل و در بعضی مواقع امکان پذیر نمی شود.
برای کاهش حجم حافظه از توابع درهم ساز برای نگاشت فضای سلولهای انجمنی به فضای حافظه کوچکتری به نام استفاده می شود. اگر چه با استفاده از توابع درهم ساز ممکن است چندین محل از حافظه در به یک محل از حافظه نگاشت شود و در اصطلاح برخورد رخ دهد و باعث کاهش دقت در خروجی شود. روش دیگر کاهش حجم حافظه استفاده از ساختار CMAC سلسله مراتبی است.
4- در بعضی از مسائل این مدل باعث ناپایداری سیستم می شود.
alibeirami
سه شنبه 03 اردیبهشت 1387, 00:33 صبح
مهمترین معایب مدل CMAC
به نظر من
5- در تست ضعیف تر از شیکه های عصبی معمول (MLP , RBF) عمل میکند.
برای توضیح بیشتر یک نمونه کد ضمیمه میکنم که با نرم افزار متلب نوشته شده و قابلیت تعریف شبکه CMAC با پارامترهای دلخواه (لایه و بلوک) رو داره.من حتی بیشتر پیش رفتم و شبکه CMAC رو با الگوریتم RLS آموزش دادم تا احتیاجی به نرخ آموزش نباشه.شبکه CMAC-RLS حداکثر با 3 یا 4 بار آموزش به وزنهای مطلوب همگرا میشه ولی متاسفانه در تست اصلا خوب عمل نمیکنه(مانند CMAC استاندارد).سیستمی که در اینجا مورد شناسایی قرار گرفته تابع آشوبناک Mackey-Glass هست.هر جور که دوست دارید از کدها میتونید استفاده کنید.
نتیجه گیری من اشتباهه؟
morteza-taheri
شنبه 01 آبان 1389, 21:01 عصر
با سلام
آیا با نرم افزار متلب میتوان الگوریتم های مانند desیا 1_shaرا پیاده سازی کرد ،اگر این کار با سی شارپ باشد چه مزیتی دارد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.