به نظر می آید شبیه سازی های شبکه عصبی یکی از پیشرفت های اخیر باشد . اگرچه این موضوع پیش از ظهور کامپیوتر ها بنیان گذاری شده و حداقل یک مانع بزرگ تاریخی و چندین دوره مختلف را پشت سر گذاشته است. خیلی از پیشرفت های مهم با تقلید ها و شبیه سازی های ساده و ارزان کامپیوتری بدست آمده است. در پی یک دوره ابتدائی اشتیاق و فعالیت در این زمینه ، یک دوره ی بی میلی و بدنامی راهم پشت سر گذاشته است .
در طول این دوره سرمایه گذاری و پشتیبانی حرفه ای از این موضوع در پایین ترین حد خود بود ، پیشرفت های مهمی به نسبت تحقیقات محدود در این زمینه صورت گرفت . که بدین وسیله پیشگامان قادر شدند تا به گسترش تکنولوژی متقاعد کننده ای بپردازند که خیلی برجسته تر از محدودیت هایی بود که توسط Minsky و Papert شناسانده شد. Minsky و Papert ،کتابی را در سال 1969 منتشر کردند که در آن عقیده عمومی راجع به میزان محرومیت شبکه های عصبی را در میان محققان معین کرده بود و بدین صورت این عقیده بدون تجزبه و تحلیل های بیشتر پذیرفته شد. هم اکنون ، زمینه تحقیق شبکه های عصبی از تجدید حیات علایق و متناطر با آن افزایش سرمایه گذاری لذت می برد .
اولین سلول عصبی مصنوعی در سال 1943 بوسیله یک neurophysiologist به نامWarren McCulloch و یک منطق دان به نام Walter Pits ساخته شد . اما محدودیتهای تکنولوژی در آن زمان اجازه کار بیشتر به آنها نداد.
یک شبکه عصبی مصنوعی (Artificial Neural Network (ANN)) ایده ای است برای پردازش اطلاعات که از سیستم عصبی زیستی الهام گرفته شده و مانند مغز به پردازش اطلاعات می پردازد . عنصر کلیدی این ایده ، ساختار جدید سیستم پردازش اطلاعات است. این سیستم از شمار زیادی عناصر پرداز شی فوق العاده بهم پیوسته تشکیل شده (neurons)که برای حل یک مسأله با هم هماهنگ عمل می کند.ANN ها ،نظیر انسانها ، با مثال یاد می گیرند . یک ANN برای انجام وظیفه های مشخص ، مانند شناسایی الگو ها و دسته بندی اطلاعات ، در طول یک پروسه یاد گیری ، تنظیم می شود . در سیستم های زیستی یاد گیری با تنظیماتی در اتصالات سیناپسی که بین اعصاب قرار دارد همراه است . این روش ANN ها هم می باشد.
شرکت نتفلیکس فرانسه در یک حرکت تبلیغاتی هوشمندانه، نام اکانت توئیتر شرکت را (به طور موقت) به «نکسفلیکس» تغییر داده است، چون مادر یکی از کاربران اسم شرکت را به این صورت تلفظ میکرده است.
نتفلیکس برای رفع تمسخر مادر با تغییر نام اکانت نوشته است که: «همیشه حق با مادران است»!
جک دورسی، برای چک کردن توئیتر و Square همزمان بهجای استفاده از لپتاپ از آیفون خود استفاده میکند. در همین حال طبق دستور جدید قرار است روی پستهای حذفشده کاربران، دلیل قانونی آن درج شود تا کاربران بفهمند توئیتر پست مذکور را حذف کرده است یا کاربران گزارش علیه آن دادهاند.
وی اخیراً در مصاحبهای گفت: بحث اصلی تمرکز است که میتواند با غیرفعال کردن نوتیفیکیشنها از یک اپلیکیشن در آنِ واحد استفاده کند.
وی زمانی که با همکاران خود جلسه دارد، موبایل را نیز کنار گذاشته تا روی موضوع موردبحث تمرکز داشته باشند.
دورسی در این زمینه میگوید: اگر قرار است 15 دقیقه مفید در جلسه داشته باشیم این 15 دقیقه بدون موبایل و لپتاپ میتواند واقعاً همان 15 دقیقه باشد!
Ex:
[1 2 3 4 5 6 7 8 9]
ans =
1 2 3 4 5 6 7 8 9
برای جدا کردن سطر ها باید مطابق زیر عمل کنیم :
[1 2 3 ;4 5 6 ;7 8 9]
ans =
1 2 3
4 5 6
7 8 9
نماد ; دو کاربرد دارد یکی در همینجا که سطر های یک ماتریس را به وسیله ی آن مشخص می کنیم و دیگری در برنامه ها است که اگر در آخر هر دستور از ; استفاده کنبم، نتیجه ی آن خط دستور نمایش داده نمی شود.
برای یافتن تعداد سطر و ستون ماتریس از تابع size استفاده میشود.
Size(a)
تعداد سطر و ستون ماتریس A را نمایش می دهد.
اگر به شکل زیر تعریف کنیم، تعداد سطر ها میردو در a و تعداد ستون ها میرود در b
[a b]=size(q)
برای فهمیدن تعداد سطر ها یا همان طول ماتریس از تابع length استفاده می کنیم:
Length(a)
تالع دترمینان:
Det(a)
برای استفاده از این تابع، ماتریس حتما باید مربعی باشد.
اگر مربعی نباشد با error زیر مواجه میشویم:
??? Error using ==> det
Matrix must be square
پنجره ی فرمان
هرگونه محاسبه مثل 4 عمل اصلی را در این پنجره میتوانیم مشاهده کنیم . هم چنین میتوانیم حاصل این اعمال را نیز در یک متغیر بریزیم.
Current directory
مسیر پیش فرض
برنامه ای را که مینویسیم و میخواهیم ذخیره کنیم ، در این مسیر پیش فرض ذخیره می شود . این مسیر قابل عوض کردن است
work space
تمام متغیر هایی که در command window معلوم کردیم را در این جا نشان می دهد.
Command history
تمام دستورات قبلی که اجرا کرده ایم در اینجا ذخیره می شود . همچنین میتوانیم با استفاده از کلید های جهت نما به دستورات قبلی برویم.
اگر در work space بر روی هر کدام از متغیر ها click کنیم، مشخصات آن را نشان میدهد . مثلا از جنس ماتریس است.
در این قسمت برخی دستورات ساده و مقدماتی گفته می شود :
Clc :
این دستور کل پنجره ی command window را پاک میکند .
اگر بخواهیم یکی از متغیر های موجود در work space را پاک کنیم، به صورت دستور زیر:
Clear a
متغیرa از work space پاک میشود .
Clear a b
متغیر a و متغیر b را پاک میکند.
پاک کردن کلیه ی متغیر ها از work space:
Clear all یا clear
در متلب حروف کوچک و بزرگ متفاوتند .
در متلب لازم به تعیین نوع متغیر و تعیین ابعاد آن نیست. هر متغیری که به آن عددی اختصاص یابد به عنوان یک متغیر حساب میشود.
شبکه های عصبی نسبت به کامپیوتر های معمولی مسیر متفاوتی را برای حل مسئله طی می کنند . کامپیوتر های معمولی یک مسیر الگوریتمی را استفاده می کنند به این معنی که کامپیوتر یک مجموعه از دستورالعمل ها را به قصد حل مسئله پی میگیرد. بدون اینکه، قدم های مخصوصی که کامپیوتر نیاز به طی کردن دارد، شناخته شده باشند کامپیوتر قادر به حل مسئله نیست. این حقیقت قابلیت حل مسئله ی کامپیوتر های معمولی را به مسائلی ،محدود می کند که ما قادر به درک آنها هستیم و می دانیم چگونه حل می شوند. اما اگر کامپیوتر ها می توانستند کار هایی را انجام دهند که ما دقیقا نمی دانیم چگونه انجام دهیم ، خیلی پر فایده تر بودن
شبکه های عصبی اطلاعات را به روشی مشابه با کاری که مغز انسان انجام می دهد پردازش می کنند. آنها از تعداد زیادی از عناصر پردازشی(سلول عصبی) که فوق العاده بهم پیوسته اند تشکیل شده است که این عناصر به صورت موازی باهم برای حل یک مسئله مشخص کار می کنند .شبکه های عصبی با مثال کار میکنند و نمی توان آنها را برای انجام یک وظیفه خاص برنامه ریزی کرد مثال ها می بایست با دقت انتخاب شوند در غیر این صورت زمان سودمند، تلف می شود و یا حتی بدتر از این شبکه ممکن است نا درست کار کند. امتیاز شبکه عصبی این است که خودش کشف می کند که چگونه مسئله را حل کند ، عملکرد آن غیر قابل پیشگویی است.از طرف دیگر ، کامپیوتر های معمولی از یک مسیر مشخص برای حل یک مسئله استفاده می کنند. راه حلی که مسئله از آن طریق حل می شود باید از قبل شناخته شود و به صورت دستورات کوتاه و غیر مبهمی شرح داده شود. این دستورات سپس به زبان های برنامه نویسی سطح بالا برگردانده می شود و بعد از آن به کدهایی که کامپیوتر قادر به درک آنها است تبدیل می شود. به طور کلی این ماشین ها قابل پیشگویی هستند و اگر چیزی به خطا انجام شود به یک اشتباه سخت افزاری یا نرم افزاری بر میگردد.
شبکه های عصبی و کامپیوتر های معمولی با هم در حال رقابت نیستند بلکه کامل کننده یکدیگرند. وظایفی وجود دارد که بیشتر مناسب روش های الگوریتمی هستند نظیر عملیات محاسباتی و وظایفی نیز وجود دارد که بیشتر مناسب شبکه های عصبی هستند . حتی فراتر از این ، مسائلی وجود دارد که نیازمند به سیستمی است که از ترکیب هر دو روش بدست می آید (بطور معمول کامپیوتر های معمولی برای نظارت بر شبکه های عصبی به کار گرفته می شوند ) به این قصد که بیشترین کارایی بدست آید.شبکه های عصبی معجزه نمی کنند اما اگر خردمندانه به کار گرفته شوند نتایج شگفت آوری را خلق میکنند.
مزیتهای دیگر آن شامل موارد زیر می شود:
یادگیری انطباق پذیر: قابلیت یاد گیری نحوه انجام وظایف بر پایه اطلاعات داده شده برای تمرین و تجربه های مقدماتی .
سازماندهی توسط خود: یک ANN می تواند سازماندهی یا ارائه اش را ، برای اطلاعاتی که در طول دوره یادگیری دریافت می کند، خودش ایجاد کند.
عملکرد بهنگام: محاسبات ANN می تواند بصورت موازی انجام شود، و سخت افزارهای مخصوصی طراحی و ساخته شده است که می تواند از این قابلیت استفاده کند.
تحمل اشتباه بدون ایجاد وقفه در هنگام کد گذاری اطلاعات : خرابی جزئی یک شبکه منجر به تنزل کارایی متناظر با آن می شود اگر چه تعدادی از قابلیت های شبکه ممکن است حتی با خسارت بزرگی هم باقی بماند
دسته بندی : آموزشی متلب
حالا مثال دیگری مینویسیم که در آن دنبال سکّههایی میگردیم که مربوط به سالهای قبل از ۱۹۸۶ هستند (قبل از تولّد من). وقتی این سکّهها را پیدا کردیم جنس آنها، سال ساخت و کشور سازندهشان را چاپ میکنیم.
فایلی به اسم exam2.awk را به شکل زیر میسازیم.
{ if ($3 < 1986) printf("%s t%s t%sn", $1, $3, $4); }
همانطور که میبینید عبارت /~~~/ دیگر وجود ندارد و این به آن معنی است که دستورات داخل آکولاد برای همهی خطها اجرا شوند. دستور if هم خیلی شبیه C است. در آرگومانهای دستور printf کاراکتر t معرّف TAB است.
حالا برنامه را مانند مثال اوّل اجرا میکنیم و نتیجه به این شکل خواهد بود.
gold 1908 Austria-Hungary
silver 1981 USA
gold 1984 Switzerland
gold 1979 RSA
gold 1981 RSA
در آخر یک مثال پیچیدهتر میزنیم. برنامهای مینویسیم که با فرض اینکه هر اونس طلا ۴۸۵ دلار و هر اونس نقره ۱۶ دلار است، ارزش و وزن سکّههای طلا و نقره و ارزش و وزن کل مجموعه را چاپ کند.
فایلی به نام exam3.awk را به این شکل بسازید.
/gold/ { goldsNum++; goldsWt += $2 }
/silver/ { silversNum++; silversWt += $2 }
END {
goldsVal = goldsWt * 485;
silversVal = silversWt * 16;
totalNum = goldsNum + silversNum;
totalVal = goldsVal + silversVal;
printf ("nSummary data for coin collection:nn");
printf (" Gold pieces: %dn", goldsNum);
printf (" Weight of gold pieces: %.2fn", goldsWt);
printf (" Value of gold pieces: %.2fnn", goldsVal);
printf (" Silver pieces: %dn", silversNum);
printf (" Weight of silver pieces: %.2fn", silversWt);
printf (" Value of silver pieces: %.2fnn", silversVal);
printf (" Total number of pieces: %dn", totalNum);
printf (" Value of collection: %.2fnn", totalVal);
حالا میخواهیم چند تا برنامه بنویسیم که پردازشهایی را روی این فایل انجام بدهند. برای اوّلین مثال برنامهی زیر را در فایل exam1.awk مینویسیم.
/gold/ { printf("%s\n", $0); }
این برنامه به مفسّر میگوید اوّل در فایل دنبال عبارت gold بگرد بعد در هر خطی که آن را پیدا کردی دستورات داخل آکولاد را برای آن خط اجرا کن. در این مثال مفسّر در همان خط اول gold را پیدا میکند بعد تمام کلمات آن خط را که با فاصله از هم جدا شدهاند در متغیّرهای $1 و $2 و . میریزد و کلّ خط را هم در متغیّر $0 میریزد. در این مثال در خطّ اوّل $1=”gold”، $2=”1”، $3=”1986” و حالا برای خطهایی که حاوی gold هستند دستور printf اجرا میشود. عملکرد دستور printf و همچنین طرز استفاده از آن درست شبیه زبان C است که من اینجا تکرارش نمیکنم.
پس نتیجتاً این برنامه هر خطی را که توش gold پیدا کند کلاً چاپ میکند. حالا میرسیم به طرز اجرای این برنامه در لینوکس. اوّل فایلهای coins.txt و exam1.awk را درست کنید و سپس این عبارت را در خطّ فرمان لینوکس تایپ کنید.
awk –f exam1.awk coins.txt
چیزی که به عنوان خروجی چاپ خواهد شد این خواهد بود.
gold 1 1986 USA American Eagle
gold 1 1908 Austria-Hungary Franz Josef 100 Korona
gold 1 1984 Switzerland ingot
gold 1 1979 RSA Krugerrand
gold 0.5 1981 RSA Krugerrand
gold 0.1 1986 PRC Panda
gold 0.25 1986 USA Liberty 5-dollar piece
gold 0.25 1987 USA Constitution 5-dollar piece
gold 1 1988 Canada Maple Leaf
درباره این سایت