بات:
شناخت حروف توسط شبکه های عصبی(پست شده در تاریخ 2008/06/06, 06:40:31)
تو این مطلب می خوایم بصورت عملی از شبکه های عصبی استفاده کنیم! واقعا خیلی جالبه می خوایم به کامپیوتر سه تا حرف الفبای انگلیسی رو یاد بدیم.نکته ی جالب تر این هست که حتی به کامپیوتر نمی گیم هر کدوم از حرف ها چی هستن! فقط بهش می گیم که این ها سه حرف مختلف هستند! و کامپیوتر خودش تشخیص می ده هر کدوم متعلق به کدوم گروه هست! به این نوع طبقه بندی اصطلاحا Unsupervised میگن.
وااای مگه می شه؟؟؟ من فکر می کردم باید لااقل توی مثال هامون به کامپیوتر بگیم مثلا این A هست و این B هست!
" خوب اون هم نوعی یادگیری هست که بهش اصطلاحا Supervised می گن. اما توی این مثال حالت جالب تر یعنی Unsupervised رو می خوایم بررسی کنیم. به این صورت که فقط به کامپیوتر می گیم ۳ دسته وجود داره و براش چندین مثال می زنیم و خودش مثال ها رو توی ۳ دسته قرار می ده! در نهایت ما مثلا می تونیم بگیم همه ی مثال هایی که در دسته ی دوم قرار گرفتن A هستند.
شاید جالب باشه بدونید گوگل هم برای دسته بندی اطلاعات از همچین روشی استفاده می کنه! البته کمی پیشرفته تر. مثلا ۱۰۰ متن اقتصادی و ۱۰۰ متن ورزشی به کامپیوتر میده و از کامپیوتر می خواد اونها رو به ۲ بخش تقسیم بندی بکنه! ورودی لغت های اون متن ها هستند. "
وای، سیاوش باورم نمیشه!
من هم همینطور. مگه می شه کامپیوتر خودش دسته بندی کنه! لطفا ادامه بدید.
" اگه اجازه بدید می خوام همین کار رو انجام بدم! "- در مورد هوش مصنوعی و شبکه های عصبی یکم اطلاعات داشته باشید. در صورتی که آشنایی ندارید می تونید مقدمه ای بر هوش مصنوعی و مقدمه ای بر شبکه های عصبی رو مطالعه کنید.
- برنامه ای برای تولید الگو که ورودی شبکه ی عصبی ما خواهد بود. این برنامرو میتونید از اینجا تهیه کنید.
- نرم افزار JOONE Editor. عبارت JOONE مخفف Java Object Oriented Neural Engine هست. که یک ابزار قدرت مند برای بوجود آوردن و آموزش انواع شبکه های عصبی در Java هست. توی این آموزش ما از ویرایشگر این ابزار استفاده می کنیم که محیطی گرافیکی برای تولید شبکه های عصبی داره و کار با اون بسیار ساده هست. این ابزار از اینجا قابل دریافت هست. بدیهیه که برای نصب این ابزار ابتدا باید جاوا روی کامپیوتر شما نصب باشه.
- کمی پشتکار و حوصله.
ای بابا! من جاوا رو کامپیوترم نصب نیست! یعنی باید برم سیدیشو بخرم؟؟؟
" فکر کنم شما علاوه بر جاوا مورد ۴ رو هم نداشته باشی... در صورتی که اینترنتت پر سرعته می تونی از اینترنت هم J2SE رو دانلود کنی. "
آره اینترنتم ADSL هست!.
ابزار مورد نیاز
خوب! برای این که شروع کنیم به چند مورد نیاز داریم:ساخت الگوها
حالا می خوایم یک سری الگو تولید کنیم. الگو همون مثال هایی هست که گفتیم برای کامپیوتر می زنیم تا بتونه یاد بگیره.برای این کار از برنامه ای که در شماره ی ۲ بخش قبل معرفی کردم استفاده می کنیم. این برنامه خیلی ساده کار می کنه و فقط الگو ها رو از حالت تصویری به ۰ و ۱ تبدیل می کنه.
سیاوش می تونی توضیح بدی چطور این کار انجام میشه؟
" بله حتما! اول تصویر رو به یک ماتریس ۸ در ۸ تقسیم می کنه. یعنی ۶۴ قسمت. وقتی دکمه ی سمت چپ ماوس پایینه در صورتی که ماوس از هر کدوم از اون ۶۴ بخش رد بشه اون بخش رو داخل ماتریس علامت گذاری می کنه (مقدار اون قسمت رو True می کنه). وقتی دکمه ی Learn زده می شه برنامه مقدار تمام قسمت ها رو از بالا به پایین داخل یک فایل ذخیره می کنه. مقدار هر قسمت می تونه ۰ یا False و ۱ یا True باشه. "
کار با این برنامه خیلی آسون هست همونطور که توی شکل مشخصه.

خوب من برای اینکه مثال پیچیده نشه ۳ حرف رو می خوام به کامپیوتر یاد بدم. A و C و Z!
برای این کار برای هر کدوم از حروف چهار مثال وارد می کنم و دکمه ی Learn رو می زنم. توی شکل زیر می تونید هر ۱۲ الگو رو ببینید.

تشکیل شبکه ی عصبی
خوب! حالا می خواهیم ساختار شبکه ی عصبی رو طراحی کنیم. برای این کار از JOONE Editor کمک می گیریم.صفحه ی اول این نرم افزار به این شکل هست:

ایجاد لایه ی FileInput

روی FileInput کلیک راست کرده و در Properties اون فایل درست شده در مرحله ی قبلی رو به عنوان fileName انتخاب می کنیم و به عنوان Advanced Column Selector مقدار 1-64 رو وارد می کنیم تا برنامه متوجه بشه باید از ستون های ۱ تا ۶۴ به عنوان ورودی استفاده کنه.

ایجاد یک لایه ی خطی


حالا با انتخاب FileInput و کشیدن نقطه ی آبی رنگ سمت راست اون روی Linear Layer خروجی FileInput یعنی اطلاعات فایل رو به عنوان ورودی Linear Layer انتخاب می کنیم.
تا این لحظه ما یک لایه ی ۶۴ نورونه داریم که ورودی اون مقادیر مثال های تولید شده در مرحله ی قبل هست.
ایجاد لایه ی WinnerTakeAll



در آموزش های بعدی فرق انواع سیناپس ها رو بررسی خواهیم کرد.
آموزش شبکه


learningRate ضریبی هست که در یادگیری از اون استفاده می شه. بزرگ بودن اون باعث میشه میزان تغییر وزن نورون ها در هر مرحله بیشتر بشه و سرعت رسیدن به حالت مطلوب رو زیاد می کنه اما اگر مقدار اون خیلی زیاد شه شبکه واگرا خواهد شد.
training patterns هم تعداد الگو هایی که برای آموزش استفاده می شن رو نشون می ده که در این مثال ۱۲ عدد بود.
بعد از اینکه تمام تغییرات رو ایجاد کردیم دکمه ی Run رو می زنیم و منتظر می شیم تا ۱۰۰۰۰ بار عملیات یادگیری انجام بشه.
تست کردن شبکه

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

حالا کافیه لایه ی WinnerTakeAll رو به لایه ی FileOutput متصل کنیم.
بعد از متصل کردن این دو لایه شکل کلی باید بصورت زیر باشه:


باور کردنی نیست! خروجی به این شکل در اومده:
همونطور که می بینید ۴ خط اول که مربوط به A هستن ستون اولشون ۱ هست و در چهار خط دوم ستون دوم و در چهار خط سوم ستون سوم!
1.0;0.0;0.0 1.0;0.0;0.0 1.0;0.0;0.0 1.0;0.0;0.0 0.0;1.0;0.0 0.0;1.0;0.0 0.0;1.0;0.0 0.0;1.0;0.0 0.0;0.0;1.0 0.0;0.0;1.0 0.0;0.0;1.0 0.0;0.0;1.0
این یعنی کامپیوتر بدون اینکه کسی به اون بگه کدوم مثال ها کدوم حرف هست خودش فهمیده و اون ها رو دسته بندی کرده.
ببخشید. خوب چون پشت هم دادید مثال هر حرف رو اینطوری نشده؟
" نه! کامپیوتر که نمی دونسته من می خوام مثال های هر حرف رو پشت سر هم بدم! من برای راحتی خودم این کار رو کردم. شما می تونی ورودی هاتو غیر مرتب بدی! "
دلیل خاصی داره که در A ستون اول ۱ هست و ...
" نه! ممکن بود برای A ستون دوم ۱ بشه و یا هر حالت دیگه. شما اگر امتحان کنید ممکنه تفاوت پیدا کنه. اما مهم اینه در تمام A ها یک ستون خاص مقدارش ۱ و بقیه ی ستون ها مقدارشون صفر می شه. پس یعنی کامپیوتر تونسته به خوبی تقسیم بندی کنه. "
امتحان با مثال های جدید
حالا می خوایم شبکرو با سه مثال جدید تست کنیم که در مثال های آموزشی نبوده! برای این کار من با استفاده از برنامه ی تولید الگو ۳ مثال جدید درست می کنم و به عنوان فایل ورودی در شبکه فایل جدید رو انتخاب می کنم.توی شکل زیر سه مثال جدید رو می تونید ببینید:


به نظر شما این دو تا چه حرف هایی هستن؟
اییییووول این دو تا مثال آخریا که کپ خط علیههه!
علی؟؟؟
آره برادرمه!
چه خوب که برادرته.
آره. چپیه Zه و راستیه هم C هست.
کامپیوتر سه مورد اول رو به خوبی C و Z و A تشخیص داده. و دو مورد بد خط هم به ترتیب از چپ به راست Z و C تشخیص داده!
0.0;1.0;0.0 0.0;0.0;1.0 1.0;0.0;0.0 0.0;0.0;1.0 0.0;1.0;0.0
حتی برای انسان هم سخته فهمیدن اینکه مورد های چهارم و پنجم چی هستند اما اگر خوب دقت کنید می بینید به مواردی که کامپیوتر خروجی داده نزدیک تر هستند.
کجاش سخته! من که گفتم کدوم چیه!
" خوب همه مثل شما یه برادر بد خط ندارن. "
نتیجه گیری
فکر کنم خودتون نتیجه بگیرید بهتر باشه...
به نظر من کامپیوتر خیلی با شعوره!
" کامپیوتر شعور نداره! اما ما سعی کردیم طریقه ی عملکرد مغز رو به صورت خیلی ابتدایی و به ساده ترین نحو توش شبیه سازی کنیم! "
این دفعه دیگه جدا زیاد صحبت کردم بس که موضوع جالب بود.
سلامت باشید.
لینک های داخلی
لینک های خارجی
References
- JOONE user guide
- http://www.jooneworld.com/site.html
- http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html
تگ ها
Pattern Recognition, ANN, Artificial Intelligence, Neural Networkنظرها
- نام:
- ایمیل:
- وبگاه:
- نظر:
- rohollah:
- پست شده در تاریخ 2008/11/16, 10:50:24
- " در صورت امکان source code اشاره شده رو برای من ایمیل کنید . با تشكر "
- سهیل:
- پست شده در تاریخ 2008/11/12, 01:58:46
- " واقعا ممنونم خیلی کمک بزرگی به من کردی ، چون این ترم یکی از درسام Soft computing و یکی از مباحثش همین شبکه های عصبیه بازم ممنون "
- charli:
- پست شده در تاریخ 2008/11/06, 12:50:02
- " Dear Siavash thanks for your beautiful teaching. If it is possible for you i want to see your code. i like to learn this context. special thanks "
- charli:
- پست شده در تاریخ 2008/11/06, 12:43:14
- " Dear Siavash thanks for your beautiful teaching. If it is possible for you i want to see your code. i like to learn this context. special thanks "
- mo30km:
- پست شده در تاریخ 2008/11/05, 17:10:42
- " مقاله ی خوبی بود گلم اگه امکانداره من هم سورس برنامه رو میخواستم حالا تصمیم با خودته آخه من به این سورس خیلی احتیاج دارم اگه اینو بدی که ممنونت میشم. "
- MARYAMGOLE82:
- پست شده در تاریخ 2008/10/29, 21:20:25
- " سلام دوست عزیز میتونید مطلب در مورد شبکه های عصبی بذارید . مرسی ممنون "
- MARYAMGOLE82:
- پست شده در تاریخ 2008/10/29, 21:18:17
- " من اصلا نفهمیدم "
- ایمان:
- پست شده در تاریخ 2008/09/11, 02:08:39
- " oooo My God!!!! "
- رها:
- پست شده در تاریخ 2008/08/15, 18:32:27
- " متاسفانه کامپیوتر من خیلی خنگ هست چون دو تا آ بهش یاد دادم بعد آ دوم رو که می دم میگه این ب هست!!! "
- محمدرضا:
- پست شده در تاریخ 2008/08/11, 20:50:43
- " خیلی خوبه "
- سید ایمان احمدی:
- پست شده در تاریخ 2008/07/23, 00:01:14
- " خوشحال می شم از سایتم دیدن کنی و هرچه می خواهی درخواست ونظر دهی "
- غزل:
- پست شده در تاریخ 2008/07/22, 23:04:03
- " سلام جناب محمودیان خسته نباشید.خیلی ممنون از این همه زحمتی که می کشید.جناب محمودیان سایت http://www.invisible.ir متاسفانه دچار مشکل شده.بنده که نتونستم ازش استفاده کنم.تمام درخواست عکسها رو ارور می ده.تمام آی دی هارو هم آنلاین می نویسه در حالی که آفلاین هستن.حداقل برای من که اینطور بود اگر وقت دارید سری بهش بزنید و اگه واقعا مشکل داره لطفا حلش کنید ممنون میشم خداحافظ "
- Dijam:
- پست شده در تاریخ 2008/06/26, 14:19:14
- " Source بهم بده تحت Linux شو درست کنم !! البته اگه خودت هموز نساختیش!!!!!!! "
- Dijam:
- پست شده در تاریخ 2008/06/26, 13:19:54
- " سلام سیاوش . آقا Source رو واسه منم بفرست از طرفی این برنامه تولید الگو تحت Linux هم داره؟ "
- بامداد دشتبان:
- پست شده در تاریخ 2008/06/23, 18:55:36
- " دمتتتتتتتتتتتت........ "
- توت فرنگی:
- پست شده در تاریخ 2008/06/19, 13:20:29
- " من ترکوندم ! اصلا متوجه نشدم !!! "
- محسن:
- پست شده در تاریخ 2008/06/15, 17:33:37
- " واقعا دستتون درد نکنه! من خیلی به هوش مصنوعی علاقه مند شدم. از کجا می تونم شروع کنم؟ "
- mohammad:
- پست شده در تاریخ 2008/06/07, 02:31:59
- " برای امروز یه خبر خوب و خوش مخصوص اون دوستانی دارم که مایلن برای چند ساعتی به دوران خوش کودکی برگردن. عزیزان برای من یه مجموعه بسیار نفیس از کارتون ها و سریالهای قدیمی که در تلویزیون پخش می شده و شاید الان هم داره پخش می شه رسیده و چون دوست داشتم شادیه حاصل از دیدن این مجموعه رو که بدست آوردم رو می خواستم با شما عزیزان تقسیم کنم. تصمیم گرفتم این محصولات رو به صورتی ارزون که همه بتونن بخرنش و با کمترین سود ممکنه تقدیم شما دوستان بکنم. امیدوارم که خوشتون بیاد. - ماجراهاي سند باد قديمي زبان اصلي با بالاترين کيفيت ۶ دي وي دي - کارتون سندباد کپچر شده از تلويزيون در۴ دي وي دي (دوبله فارسی ) - پت و مت ۵ دي وي دي - سريال بياد ماندني زورو کپچر شده از تلويزيون ۶ دي وي دي (دوبله ) - کارتون رامکال کپچر شده از تلويزيون در ۸ دي وي دي (دوبله) - کارتون پينوکيو کپچر شده از تلويزيون در ۷ دي وي دي (دوبله) - کارتون آني شرلي کپچر شده از تلويزيون در۹ دي وي دي (دوبله) - کارتون فوتباليستها کپچر شده از تلويزيون در۲۱ دي وي دي (دوبله) - کارتون بابا لنگ دراز کپچر شده از تلويزيون در۶ دي وي دي (دوبله) - کارتون بليک و مورتيمور کپچر شده از تلويزيون در۴ دي وي دي (دوبله) - کارتون چوبين کپچر شده از تلويزيون در۳ دي وي دي (دوبله) - کارتون گوريل انگوري کپچر شده از تلويزيون در۱ دي وي دي (دوبله) - کارتون بامزي کپچر شده از تلويزيون در۱ دي وي دي (دوبله) - کارتون يوگي و دوستان کپچر شده از تلويزيون در۱ دي وي دي (دوبله) - کارتون گربه و سگ کپچر شده از تلويزيون در۶ دي وي دي (دوبله) - پلنگ صورتي۴ دي وي دي زبان اصلي - پت پستچي۲ دي وي دي زبان اصلي - کارتون دختري بنام نل کپچر شده از تلويزيون در۴ دي وي دي (دوبله) - کارتون بلفي و لي لي بيت کپچر شده از تلويزيون در۳ دي وي دي (دوبله) لطفا برای اطلاعات بیشتر و دیدن بقیه لیست فیلمها به سایت مراجعه نمائید : www.beheshtecd.com "
- AliXerroR:
- پست شده در تاریخ 2008/06/06, 23:52:27
- " مثل همیشه عالی بدون منت .... "
- سیاوش:
- پست شده در تاریخ 2008/06/06, 23:49:52
- " لینک تولید کننده ی الگو تصحیح شد...! "
- امین:
- پست شده در تاریخ 2008/06/06, 19:58:10
- " مقاله جالبی است. اگه میتونی سورس pattern generator را برای من هم بفرست. ممنون. موفق باشی. "
- alireza:
- پست شده در تاریخ 2008/06/06, 15:52:24
- " salam , kheili maghaleye khobi bod , age mishe source pattern generator ro mitonin be man mail konin. mamnoon "
- HAMED:
- پست شده در تاریخ 2008/06/06, 14:20:18
- " آقا خیلی باحالی! "
- habd:
- پست شده در تاریخ 2008/06/06, 13:14:03
- " as Hamed mentioned , your PatternGenerator.zip file is not work properly. it seems that there are some error in order of uploading. thanks "
- habd:
- پست شده در تاریخ 2008/06/06, 13:12:26
- " در صورت امکان source code اشاره شده رو برای من ایمیل کنید . ممنونم :) "
- Hamed:
- پست شده در تاریخ 2008/06/06, 12:20:17
- " I would like to thank you and inform you that the "PatternGenerator.zip" file is destroyed. "
مهمان ( 






