سلام
میخوام در این پست یه توضیح درباره چگونه طراح و برنامه نویس سایت شویم و یه نقشه راه جلوتون بگذارم تا یه آشنایی با اون داشته باشیم.
پست های سایت
هر حیوان و انسان و موجودات زنده و غیر زنده مثل روبات ها که از اول همه دانش های مورد نیاز را به آنها بدهیم .در موجودات زنده ژن حاوی اطلاعات است که به آنها اطلاعات غریزی میگویند براساس این اطلاعات در هر شرایط دنباله ادراکات (دنباله ادراکات یعنی هر آنچه میبینیم میشنویم در روبات ها حسگر ها و ورودی ها) کارهای خاصی انجام میدهیم به این کار های خاص میگویم موجود زنده غریزی رفتار کرده یا یک روبات هوشمند خودمختار در تصمیم گیری نیست.
مثلا در ژن ما این اطلاعات وجود دارد که با ترس فرار کنیم
مثلا در ژن ما این اطلاعات وجود دارد که با دیدن چیز های تحریک آمیز هورمون های خاصی در مغز که مسئول تنظیم احشا بدن هست تولید شود.
بطور کلی میتوان نتیجه گرفت اطلاعات که در ژن موجودات زنده چه هوشمند (مثل انسان) چه غیر هوشمند (و صرفا تصمیم براساس غریزه از پیش تعریف شده مانند برخی حیوانات مثل مارمولک،برخی نژاد سگ ها ، برخی از انواع سوسک ها و...) اطلاعات حیاتی مثل تولید مثل وجود دارد اگر صرفا عمل (Action) براساس آن اطلاعات باشد میگویم آن موجود یا سیستم خود مختار نیست.
بصورت فرمول ریاضی :
اگر بخواهیم غریزه یا روباتی که خودمختار در تصمیم گیری نیست را فرمولیزه کنیم:
f: p*---------->A
که در این فرمول f تابع عمل است
در این فرمول p* تمام ادراکات از ابتدا تا لحظه فعلی علامت -----------> به معنی ارجاع به A یعنی عمل متناظر با آن ادراکات
فرمول بالا این معنی را می دهد که هر موجود زنده دارای غریزه یا ربات های غیر خودمختار در تصمیم گیری از اطلاعاتی که در خودشان دارند مثلا هنگام گرسنگی-----> غذا خوردن نتیجه میگیرند.
مثلا هنگام مواجه با ادراک گرسنگی از اطلاعات نتیجه میگیرند باید غذا بخورند.
موجود هوشمند:
موجودات هوشمند مثل انسان ها علاوه بر غریزه یاد گیری هم دارند یعنی علاوه بر اطلاعات درونی هنگام مواجه با ادراکی که هیچ دانشی از آن ندارند را در خود ذخیره کرده و بعداً آنها را بیاد می آورند.
برخی از موجودات هوشمند مانند انسان دارای تصویر سازی ذهنی مانند درک اعداد، مفاهیمی مثل آزادی بیان ، عدالت و... هستند و برخی از حیوانات هوشمند مثل برخی نژاد های هوشمند سگ قابلیت یادگیری پاداشی دارند.
مثلا انسان میتواند با شنیدن اسم غذا یک تصویری از غذا و علت غذا خوردن را بداند .(یادگیری بصیرت)
برای یک سگ یاد دادن مفهوم غذا میتواند پاداشی باشد یعنی هر وقت صدای زنگوله را شنید به آن سگ غذا بدهید آن سگ چون بطور غریزی معنی غذا خوردن را میداند پس یاد میگیرد که صدای زنگ یعنی غذا ، به این نوع یادگیری بدون تصویر سازی یادگیری پاداش/ خطر (شرطی شدن) میگویند.
فرمول موجود هوشمند:
هر چند این فرمول کامل نیست اما برای درک یک سیستم پیچیده یادگیری قابل قبول است:
نکته: یادگیری ترکیبی از دانش های قبلی + ادراک = نتیجه است .
مثلا یک سگ اگر بطور غریزی مفهوم غذا را نمیدانست نمیتوانست یادبگیرد هنگام شنیدن صدای زنگ باید غذا بخورد.
یک انسان اما یادگیری پیچیده تری دارد علاوه بر شرطی شدن و وسواس (تکرار یک عمل که هیچ از آن نمیدانیم باعث ذخیره سازی آن عمل در حافظه میشود بدون هیچ منطقی که به آن وسواس میگویم!!!)میتواند با تصویر سازی چیزی را در حافظه بسپارد مثلا همان عدد 2 ما در واقعیت یک 2 نداریم بلکه عدد 2 یک تصویر از مثلا دو گنجشک یا دو سیب و... است . یا مثلاً مفهوم دایره ، آزادی ، عدالت و... که مفاهیم انتزاعی (Abstract ) هستند.
به عاملی چه انسان هوشمند چه حیوان هوشمند. چه ربات هوشمند اگر دارای یادگیری باشد یک موجود یا عامل هوشمند خودمختار است.
اگر عامل اطلاعات قبلی نداشته باشد یک عامل خودمختار محض است.
امیدوارم از این مطلب نهایت استفاده را برده باشید .
لایک و نظر یادتون نره
هوش مصنوعی
کار هوش مصنوعی فرمولیزه کردن هوش است ، یعنی بتوانیم یک هوش را بصورت مصنوعی مثلا یک ربات که هوشمند هست بسازیم.
هوشمندی
تعاریف متعددی از هوشمندی داریم:
-
تفکر انتزاعی:
انتزاع یا خیال کردن مثلا عدد 2 نماینگر دو تا گنجشک هست یا نماد آزادی ، عدالت ،انتزاعی میباشند.
به فکر و هوش برگرفته شده از انتزاع هم تفکر انتزاعی میگویند ، مثلا فکر کردن درباره دایره مارا به یاد شکل یک دایره می اندازد ولی در واقعیت دایرهنداریم ، در واقعیت نمیتوانیم مفهوم کامل آزادی یا عدالت را توضیح دهیم .
با این تفکر بسیاری از حیوانات هوشمند مثلسگ که تفکر انتزاعی ندارند هوشمند محسوب نمیشدند.
-
شناخت و یادگیری از محیط.
انتزایک محیط داریم و یک عامل هوشمندی مثل موش داخل هزارتو موش داخل هزار تو حرکت میکند و هر جابه بن بست خوردیاد میگیرد آنجا بسته است
با این تفسیر هر موجودی و عاملی که محیط را بشناسد ولی هدف را پیدا نکند یا اشتباه پیدا کند و جواب مسئله نباشد هم هوشمند محسوب میشود. -
تعرف چامع هوشمندی
- تعامل با محیط: یعنیدریافت دادههای محیطی ،ذخیره و تولید دانش مثل موشی که در هزار تو بود.
- یادگیری
- سازگاری با محیط: یعنی در صورت تغییرمحیط بتواند با آن محیط سازگارشود.
این تعریف یک تعریف جامع درباره هوشمتدی است و هر عامل هوشمند که بتواند با محیط تعامل داشته باشد یعنی داده های محیط را دریافت کند و ببیند ، انها را ذخیرهکند و از آنهابه یک نتیجه برسد.
یادگیری داشته باشد یعنی این اتاق 4 گوشه دارد مثلایاد بگیرد چطور به اتاق وارد شود.و اگر در محیط تازه ایی قرار گرفت دوباره همان تعاملو یادگیری را داشته باشد یک عامل هوشمند محسوب مبشود. -
تعاریف 4 گانه رسمی هوش مصنوعی
سورس یا منابع هوش مصنوعی یکی میتواند انسان باشد یکی میتواند عقلایی یا منطقی محض باشد
شاخص برای هوش مصنوعی میتواند تفکر عامل هوشمند مثل اسنان یا عقلایی محض باشد یا عملکرد عامل هوشمند باشد:
- تفکر انسانی : شناخت نحوه کار ماشین متفکر مثل مغز انسان. خود مختاری در تصمیم گیری و یادگیری حل مسئله
- تفکر عقلایی: مدلسازی و محاسبه پذیرکردن نحوه استدلال های منطقی
- عملکرد مثلاسنان بتواند ببیند و بشنود و بگوید یعنی ساخت ماشین هایی که انسان گونه عمل کنند و در مواردی هم که اسنان بهتر عمل میکند حداقل نزدیک ترین عملکرد را به انسان داشته باشند.
- عملکرد یا رفتار منطقی: عامل عملکرد و رفتار منطقی با محیط داشته باشد مثلا گاهی اوقات انسان به جای تفکر منطقی از روی احساساتی چون عشق و ترس و... تصمیم میگیرد اما عاملی که رفتار یا عملکرد منطقی دارد فقط از روی منطق محض پیروی میکند.
تست تورینگ
از سال1950 تا به الان که شاخص آن بر اساس عملکرد و توانایی انسان گونه بودن بوده است. در حقیقت تست تورینگ عملکرد انسان گونه بودن یک ربات را میسنجد.
برای انجام تست تورینگ روی رباتی که عملکرد اسنان گونه دارد:
- بتواند پردازش زبان طبیعی یعنی زبان ما انسان ها را بفهمد و بتواند حرف بزند(منظور کلمات ما را بفهمد)
- بازنمایی دانش: بتواند داده ها را ذخیره کند و یا برگرداند مثلا جواب سلام که علیک السام است را در حافظه دارد را برگرداند.
- استلال خودکار از اطلاعات ذخیره شده ایی که دارد بتواند نتایج جدیدی بسازد و به سوالات پاسخ دهد.
مثلا جواب سلام که علیک السلام است را بتواند نتیجه جدید مثل سلام ربات را بگیرد و بتواند در آینده به همان سوال سلام ربات پاسخ دهد .
یا مثلاهر عدد طبیعی بزرگتر و برابر 1 هست و 5 و 6 و 7 هم عدد طبیعی هستند پس خودش به این استدلال برسد که 9 هم عددی طبیعی است اما مثلا رادیکال 3 را بداند که نمیداند. - یادگیری ماشینی: با شرایط جدید سازگاری داشته باشد و محیط را بتواند بشناسد مثلا محیط چت ، محیط مترجم و...
تست جامع تورینگ
همان تست تورینگ است ولی دو قابلیت دیگر هم دارد
- بینایی ماشین
- رباتیک مثل بازو های ربات
-نکته: در عملکرد مثلا ساخت یک بات که مثل انسان عمل کند تست تورینگ را داریم.
تفکر انسان گونه
مثل انسان فکر کنیم بعضی برنامه های نرم افزاری مثل ربات حضور فیزیکی ندارندبلکه مجازی هستند آنها نیاز به تفکر دارند که به آن تفکر اسنان گونه میگویند.
در ایتدا باید نحوه کار ذهن انسان را بشناسیم تا بتوانیم هوشی بسازیم که تفکر انسانی داشته باشد.
برای شناخت نحوه کار ذهن انسان:
- درون نگری: به خودمان فکر کنیم مثلا من الان آب خوردم چون تشنه بودم
- آزمایشات روانشناسی
- تصویر برداری و نمونه برداری ذهنی .
-نکته: قبلا عملکرد خوب یک برنامه یا الگوریتم را برابربا انسان گونه بودن آن میدانستند. اما الان عملکردن خوب یک برنامه یا الگوریتم هیچ ارتباطی با انسان گونه بودن ندارد.
گاهی رباتی نباید عملکرد انسان گونه داشته باشد مثلا در مواقع خطر عملکرد انسان فرار است اما یک ربات آتش نشان یا امداد گر نباید فرار کند و بترسد
عامل هوشمند
عامل هوشمند از دو قسمت تشکیل شده است:
- حسگر (sensor):که حسگر یا سنسور ها که وضعیت محیط را دریافت و به عامل می دهند.
- اثر کننده ها (Effector): اثر کننده ها یا بازو ها یا محرک ها که تاثیر عامل هوشمند بر محیط هستند.
مثال : یک مریخ نورد که دوربین ها و حسگر های آن حسگر هایی هستند که تاثیر محیط را به عامل میدهند و بازو های عامل هم تاثیر عامل به محیط را منتقل میکنند.
عامل میتواند فقط نرم افزاری باشد مثلایک برنامه که بجای حسگر ها مثلا از صفحه کلید استفاده کرده و ورودی بگیرد و همچنین بجای بازو های یک ربات هم اعمال محاسباتی روی داده انجام دهد.
دنباله ادراکی
تمام دریافت های عامل از محیط از ابتدا تا این لحظه را دنباله ادراکی میگویند.
مثلا دنباله ادراکی یک جارو برقی:
دنباله ادراکی 1 = [A,clean] دنباله ادراکی 2= [A,clean],[B,Dirty] دنباله ادراکی 3= [A,clean],[A,clean],[B,Dirty]
در دنباله ادراکی بالا شماره 1 مشاهده میکنید که در اولین ادراک در محیط A بوده و تمییز بوده.
در ادراک دوم در A بوده و تمییز بوده
در ادراک فعلی یا سوم در B هست و کثیف هست.
تابع عامل براساس همه دنباله ها عمل میکند یعنی *P.
عمل:
تابع یا کاری است از کل دنباله ادراکی یا بخشی از ان
مثال:
تابع عامل
تابع عامل که در آن برنامه که عامل با آن کار میکند با نماد f یعنی function
f:دنباله ادراکی ------>عمل f:p*-------->A
تعریف معیار کارایی
چطور بدانیم یک عامل هوشمند هوشمندانه رفتار کرده است؟
در این مواقع نیاز به معیار کارایی داریم که بفهمیم یک عامل هوشمندانه رفتار کرده است یا خیر.
رفتار عقلایی یا مفید یک عامل بستگی به تعریف ما از کارایی دارد.
معیار خوب معیاری است که تلفیقی از چند پارامتر باشد.
مثال: معیار کارایی یک جاروبرقی هوشمند چیست؟
وزن اشیاء جمع شده؟خیر کارایی ندارد چون ممکن است وسایلخانه را به اشتباه جمع کرده باشد.
کم مصرف بودن؟به تنهایی کارایی ندارد چون ممکن است اصلا آشغالی در سطح تشخیص نداده و دستور جمع کردن صادر نکرده.
مثال: یک دانش آموز 2 سوال حل کرده هرو هم درست بوده آیا معیار درستی است؟
خیر ممکن است دانش آموز از 20 سئوال 2 سوال را درست حل کرده باشد!.
چرا معیار کارایی؟
در سیستم های یادگیرنده یک سیستم نیاز دارد که به کار های انجام داده امتیازی بدهد تا بداند چقدر درست بوده است آن کار،برای اینکه بداند کاریی که انجام داده امتیاز خوبی دارد را یاد بگیرد و ذخیره کند. برای اینکار (امتیاز دادن به اعمال خود) نیاز به معیاری دارد که به آن معیار معیار کارایی گفته میشود.
مثال جاروبرقی:
معیار کارایی جارو برقی:
اگر مصرف باتری کم بود یک امتیاز ، اگر خانه تمیز بود یک امتیاز به خودش میدهد.
جارو برقی عملی انجام می دهد معیار کارایی بالا را چک میکند به خودش دو امتیاز می دهد.
اگر آن عمل امتیازش از 1 بزرگتر بود پس آن عمل عمل خوبی است پس آن را ذخیره کن اینجا هم 2 امتیاز بدست آورده پس از یک یزرگتر است پس عمل هوشمندانه ایی بود آن را ذخیره میکند.
برای امتیاز به عامل در هر زمان و مکان به چهار چیز باید توجه کنیم:
- معیار کارایی چه بوده
- چه میزان دانش قبلی داشته
مثلا اگر به جارو برقی یک خانه مربعی شکل را داده ایم به عنوان شکل محیط ولی محیط چند ضلعی بوده است در این صورت آن قسمت هایی که کثیف مانده را به عنوان امتیاز منفی برایش در نظر نمیگیریم. - چه اعمالی میتوانسه انجام دهد
مثلاجارو برقی هیچ بازویی برای تمیز کردن زیر میز نداشته آنگاه کثیف ماندن زیر میز امتیاز منفی نباید داشته باشد. - دنباله ادراکی آن لحظه چه بوده است
تفاوت عالم بودن با عقلایی بودن
عالم، عاملی است که واقعیت همه چیز را میداند یعنی حداکثر کارایی واقعی را دارد.
عقلایی بودن: طبق دانش قبلی خود بهترین کارایی مورد انتظار خود را پیگیری میکند.
مثل: وقتی به جارو برقی از قبل شکل محیط را دایره میدهیم ولی آن را در محیط مربعی میگذاریم :
عامل عالم: اگر جارو برقی بداند که محیط او یک دایره نیست و مربع است او یک عامل عالم هست.
عامل عاقل:اگر جارو برقی نداند که محیطش مربع است نه یک محیط دایره ولی از نظر بهترین کارایی خود یعنی تمییز کردن بصورت دایره ایی در یک محیط مربع ، یک عامل عاقل محسوب میشود.
اطلاعات
اطلاعات یا داده های عامل هوشمند به دو طریق بدشت می اید:
- دانش اولیه که طراح و برنامه نویس به عامل میدهد.
- تجربیات و اکتشافات عامل هوشمند که از محیط میگیرد.
عامل بدون دانش اولیه و فقط با تکیه بر تجربیات و اکتشافات خود از محیط یک عامل خود مختار محسوب میشود.
عامل بدون تجربیات و فقط مبتنی بر دانش اولیه یک عامل فاقد خودمختاری است.
TASK یا وظیفه
عملی که قرار است عامل هوشمند در محیط انجام دهدعمل یا وظیفه یا ماموریت عامل هوشمند نامیده میشود.
یک مفسر یا Interpreter یک برنامه است که دستورات نوشته شده در یک زبان برنامه نویسی را اجرا میکند. یک مفسر کد های منبع را به زبان ماشین یا upcode ترجمه کرده و خط به خط اجرا میکند.
پرل،پایتون،روبی،متلب،جاوااسکریپت،پی اچ پی جزئی از این نوع زبان های تفسیری به حساب می آیند.
یک مفسر میتواند برنامهای باشد که:
- مستقیماً کد منبع را اجرا میکند.
- کد منبع را به یک رابط میانجی مناسب(کد) تبدیل میکند و بلافاصله آن را اجرا میکند.
مفسر در واقع یک زبان برنامه نویسی سطح بالا را به یک زبان قابل فهم برای ماشین تبدیل می کند.
پایتون یک زبان برنامهنویسی شیءگرا، تفسیری، سطح بالا، و همه منظوره است، که خیدو فان روسوم آن را طراحی کردهاست،پایتون، زبان برنامهنویسی نسبتا سادهای محسوب میشود که یادگیری آن به دلیل دارا بودن سینتکس یکتایی که بر قابلیت خوانایی تمرکز و تاکید دارد آسان است.
برخی از کاربرد های پایتون:
- توسعه وطراحی سایت
پایتون در بخش server side یا به اصطلاح بک اند در طراحی و برنامه نویسی سایت کاربرد دارد. - توسعه نرم افزار
پایتون میتواند در توسعه نرم افزار های سیستمی و کاربری در انواع پلتفرم ها کاربرد داشته باشد. - ریاضیات و آمار
پایتون در ریاضیات و آمار و Big Data کاربرد های فراوانی دارد. - اسکریپت نویسی
با پایتون میتوان کار های روزمره مثلا باز کردن یک سایت و جمع آوری تمام اطلاعات یک صفحه و ریختن آن اطلاعات در یک فایل متنی را براحتی انجام دهید.
1.1- انواع پیاده سازی های پایتون
اگر چه یک پیاده سازی پایتون وجود دارد که تا به حال محبوب ترین است، برخی از پیاده سازی های دیگری نیز وجود دارد که برای مقاصد خاصی توسط افراد مختلف تولید شده اند.
برخی از پیاده سازی های مشهور:
پیاده سازی اصلی زبان پایتون که خود توسط زبان C ساخته و طراحی شده و تمام ویژگی های جدید پایتون به این نسخه اضافه میشود.
Jython
این نسخه توسط جاوا ساخته شده است. این پیاده سازی را می توان به عنوان یک زبان اسکریپت برای برنامه های جاوا استفاده کرد، یا میتوانید با کتابخانه های جاوا در پایتون یک برنامه بنویسید.
همچنین میتوانید یک کتابخانه آزمایشی جاوا را بنویسید.برای اطلاعات بیشتر به وبگاه آن مراجعه کنید.
Python for .NET
این پیاده سازی از پیاده سازی cpython استفاده کرده است اما برای مدیریت و کنترل اپلیکیشن های ساخته شده توسط .NET ، کتابخانه های .NET را میتوانید داخل پایتونوارد کنید و از انها استفاده کنید . این پیاده سازی توسط Brian Lloyd ساخته شده است.برای اطلاعات بیشتر به وبگاه آن مراجعه کنید.
IronPython
این پیاده سازی هم مبتنی بر فناوری .NET است یعنی کد های نوشته شده در پایتون را به زبان IL که زبانی میانی است که فناوری .NET به آن کامپایل میشود.
این پیاده سازی توسط Jim Hugunin ساخته شده است. همان خالق اصلی jython برای اطلاعات بیشتر به وبگاه آن مراجعه کنید.
PyPy
این پیاده سازی که بطور کامل در پایتون نوشته شده است،از چندین ویژگی مختلف تشکیل شده است مثل پشتیبانی ازپشته و کامپایل در زمان اجرا.
یکی ازاهداف پروژه آسان نمودن فرایند نوشتن برنامه است.اطلاعات بیشتر را در وبگاه آن مطالعه نمایید.
هر پیاده سازی متفاوت از پیاده سازی دیگر است دراین آموزش ما به آموزش cpython میپردازیم.
1.2- نشانه گذاری ها
در طول این آموزش از یک سری علایم و نگارش هایی استفاده خواهیم کرد که نیاز هست آن علایم را اینجا مطالعه کنید.برای مثال:
name ::= lc_letter (lc_letter | "_")* lc_letter ::= "a"..."z"
خط اول در مثال بالا میگوید name حاوی یک تابع lc_letter
است.
و خود lc_letter
یک توالی از a تا z است
هر قانون یک نام دارد در مثال بالا name یک نام برای قانون که در ادامه و توسط ::= انتساب یافته است به تابع lc_letter .
خط افقی ( | ) کاربرد جدا سازی دارد.
یک ستاره (*) به معنای صفر یا بیشتر تکرار از مورد قبلی است.
به همین ترتیب، به علاوه (+) به معنای یک یا چند تکرار است.
و یک عبارت محصور شده در قلاب ([]) به معنای صفر یا یک رخداد (به عبارت دیگر، عبارت محصور اختیاری است).
اوپراتور + و * حتما رخ می دهند اما [] ممکن است رخ دهد یا ندهد.
پارانتز برای گروه بندی استفاده میشود.
رشته ها در ' ' یا " " یا """ """ یا ''' ''' قرار میگیرند.
فضای سفید فقط برای جدا کردن نشانه ها معنی دار است.
در تعاریف واژگانی (به عنوان مثال بالا)، دو کنوانسیون دیگر مورد استفاده قرار می گیرند: دو شخصیت ادبی جدا شده توسط سه نقطه به معنی انتخاب هر شخصیت تک در محدوده داده شده (شامل) از کاراکترهای ASCII است. عبارت بین (<...>) یک توصیف غیر رسمی از نماد تعریف شده را ارائه می دهد؛ به عنوان مثال، این می تواند برای توصیف مفهوم "control character" در صورت نیاز مورد استفاده قرار گیرد.
نکته : توجه داشته باشد که نشانه گذاری ها برای توصیف سینتکس زبان پایتون میباشند و نه خود زبان .
در تحلیل و طراحی الگوریتم ها منظور از پیچیدگی اجرایی :