رفتن به نوشته‌ها

برچسب: یادگیری ماشین

رنگ، هوش مصنوعی، سینما و چند داستان دیگر

احتمالا هر کدوم از ما توی حلقه‌ی دوستان نزدیکمون کسانی رو می‌شناسیم که توی رشته‌های فنی تحصیل می‌کنند اما به ادبیات، علوم انسانی یا هنر علاقه‌ی زیادی دارند و خیلی وقت‌ها هم به تغییر رشته فکر می‌کنند اما اصطلاحا تمام عمرشون شنیدند: «این رو بخون اون رو هم کنارش ادامه بده!»

من، عرفان فرهادی، یکی از همون آدم‌ها هستم. سال ۹۵ وارد رشته‌ی مهندسی کامپیوتر دانشگاه شریف شدم، سال ۹۷ یه مستند به نام «خوش درخشید ولی» ساختم و الان هم ترم دوم ارشد سینما هستم. طی چند سال گذشته داشتم تلاش می‌کردم کارهایی انجام بدم تا وجوه مختلف خودم از مهندس کامپیوتر بودن تا علاقه‌ی به هنر رو به صورت متناسبی پرورش و بروز بدم. حدود سه هفته پیش توی دانشگاه شریف ارائه‌ای داشتم به نام «رنگ، هوش مصنوعی، سینما و چند داستان دیگر» که در ادامه گزارش خلاصه‌ای ازش رو این‌جا می‌نویسم. ارائه دو بخش داشت، بخش اول به معرفی رشته Human-Computer Interaction و ارائه‌ی فرآیند و نتایج کارآموزی‌ای که من در حوزه‌ی رنگ و هوش مصنوعی توی دانشگاه آلتوی فنلاند داشتم گذشت و توی بخش دوم که قالب پرسش و پاسخ کمی از تجربه‌هایی که این سال‌ها داشتم رو به اشتراک گذاشتم.

حوزه‌ی تعامل انسان و رایانه Human-Computer Interaction (یا به اصطلاح HCI) همون‌طور که از اسمش برمی‌آد به نقطه‌ی اتصال انسان و فناوری می‌پردازه. بر خلاف بقیه‌ی حوزه‌های پژوهشی کامپیوتر که به حل مسائل تئوری یا ساخت و بهبود عملکرد سخت‌افزارها، نرم‌افزارها و الگوریتم‌ها می‌پردازه، این رشته بیش‌تر از همه با انسان و شکل کار کردنش با کامپیوتر توی زمینه‌های مختلف سروکار داره. این تفاوت باعث شده که حتی شکلی که پژوهش‌های این حوزه بررسی و سنجیده می‌شن هم متفاوت باشه؛ مثلا اگه با الگوریتم‌های یادگیری ماشین تجربه‌ی کار کردن داشته باشید می‌دونید که در نهایت پژوهشگرها موظفند آماره‌هایی مثل precision یا recall رو گزارش کنند. این در حالیه که تو این حوزه خیلی وقت‌ها برای سنجش کیفیت، پژوهشگر باید اصطلاحا مطالعات کاربری (user-study) اجرا کنه و به زبون خودمونی کارش رو بسپاره دست کاربر و کیفیت کارش رو از طریق شیوه‌های مختلفی مثل مصاحبه و پرسشنامه بسنجه. همین باعث می‌شه که این حوزه نه فقط تو زمینه‌ی کار خیلی بین‌رشته‌ای باشه که حتی شیوه‌ی پژوهش هم بعضی وقت‌ها شبیه به پژوهش‌های حوزه‌ی علوم انسانی بشه.

پروژه‌ی ما توی همین حوزه بود. سوالی که روز اولی که وارد دوره شدم جلوی رومون گذاشته بودن این بود که «چطوری می‌تونیم با استفاده از هوش مصنوعی به طراح‌ها کمک کنیم و کارشون رو ساده‌تر کنیم». اما اصلا کار طراح‌ها چیه؟ جه تفاوتی با هنر داره؟ هیچ ایده‌ای نداشتم. یکی دو هفته‌ی اول کارآموزیم به مطالعه در مورد مفهوم design گذشت. فهمیدم که بر خلاف هنر که خیلی وقت‌ها آنی خلق می‌شه و هنرمند ناخودآگاهش رو آزاد می‌کنه تا خلق کنه؛ توی طراحی با یه هدف اساسی و اولیه سروکار داریم که توی تمام پروسه باید مدنظر بگیریمش. مثلا کسی که می‌خواد یه پوستر تبلیغاتی بسازه همیشه باید این هدف که می‌خواد یه محصولی رو بفروشه مدنظر داشته باشه و ترکیب‌بندی تصویر و انتخاب رنگ و بقیه‌ی تصمیماتی که می‌گیره هم تماما متأثر از این هدف هستند.

اما همه‌ی ماجرا این نیست. پژوهشگرهای این حوزه فرآیند طراحی رو مدل‌سازی کرده‌اند و به این نتیجه رسیدند که یه طراح در طی این فرآیند به صورت تکرار شونده یا iterative بین چند فضا جابجا می‌شه. ابتدا بر اساس هدف طراحی، ایده‌پردازی می‌کنه و پیش‌نمونه (پروتوتایپ‌)های متعدد می‌سازه و به صورت «طراحانه‌ای» بارش فکری می‌کنه بعد وارد ساخت نمونه یا artifact می‌شه و در نهایت مجددا با بررسی این‌که چقدر هدف اولیه محقق شده این چرخه رو تکرار می‌کنه. مثلا کسی که می‌خواد یه دوچرخه‌ی مسابقه طراحی کنه یه سری هدف مثل سرعت و راحتی در ذهن داره بعد شروع می‌کنه روی کاغذ یه سری طرح یا sketch ساده از دوچرخه‌ای که تو ذهنش داره می‌کشه؛ ماده یا material اولیه‌ی ساخت رو بررسی می‌کنه و در نهایت یه نسخه‌ی اولیه می‌سازه و میزان رسیدن به اهدافش رو با تست این نسخه می‌سنجه.

یک مدل‌سازی از فرآیند طراحی
یک مدل‌سازی از فرآیند طراحی

خب حالا که فهمیدیم فرآیند طراحی چطوری انجام می‌شه می‌تونستیم تصمیم بگیریم تو کدوم بخش این فرآیند می‌خوایم عناصر محاسباتی و الگوریتمی رو وارد کنیم. اولا تصمیم گرفتیم که فعلا مسئله رو محدود به یه مسئله‌ی مشخص یعنی طراحی رنگ کنیم. یعنی فرض کردیم که یه طراحی از یک پوستر، صفحه‌ی سایت، اپلیکیشن و بروشور از پیش داریم و عناصر و مکان قرارگیریشون تعیین شده‌اند و مسئله‌مون انتخاب پالت رنگی و رنگ‌آمیزی این عناصره. خب بیاین تا ببینیم فرآیند طراحی تو این مسئله‌ی رنگ به چه شکله؟

همون‌طوری که توی تصویر مشخصه. طراح‌ها معمولا توی این مسئله با یک نقطه‌ی تمرکز سروکار دارند که معمولا یه محصول یا بخشی از تصویره که می‌خوان تبلیغ کنند یا چشم مخاطب رو به سمت اون هدایت کنند. با استفاده از این نطقه‌ی تمرکز و ثقل تعدادی پالت رنگی انتخاب می‌کنند و بعد با استفاده از این پالت رنگی نتیجه‌ی نهایی رو رنگ‌آمیزی می‌کنند و بعد چک می‌کنند که آیا کل خروجی و محصول توی تصویر از نظر رنگ زیبا و هارمونیک به نظر می‌رسه یا نه و اگه لازم بود چرخه رو تکرار می‌کنند.

خب حالا که از فرآیند طراحی سر در آوردیم، ما چطوری می‌تونیم به طراح کمک کنیم؟

وقتی با طراح‌ها مصاحبه کردیم متوجه شدیم که توی این فرآیند دوست دارند با سرعت بیش‌تری چرخه رو تکرار کنند و حالت‌های مختلف رو سریع‌تر تصور کنند؛ برای همین سعی کردیم بخش‌هایی از این فرآیند رو به کمک هوش مصنوعی خودکار کنیم. ابزاری که ما ساختیم اول با استفاده از مدل‌های مختلف یادگیری ماشین saliency-based مثل deepgaze به چند رنگ اصلی در نقطه‌ی تمرکز می‌رسید بعد سعی می‌کرد با پیدا کردن رنگ‌های مکمل یه پالت کامل ایجاد کنه و در نهایت روی عناصر مختلف رنگ متناسبی اعمال کنه. جزئیات فنی این کار از حوصله‌ی این مطلب خارجه اما یه نکته‌ی مهم دیگه این‌جا در مورد حوزه‌ی HCI همینه که ما به عنوان کسانی که تو این حوزه کار می‌کنیم خودمون به صورت مستقل به توسعه یا ساختن این مدل‌های بینایی ماشین و… نپرداختیم بلکه از نتایج کار دیگران استفاده کردیم. در واقع مشارکت اصلی این کار در شیوه‌ی به کارگیری این مدل‌های مختلف در کنار هم و ایجاد یک شیوه‌ی تعامل مناسبه.

مراحل الگوریتم

برای تست شیوه‌ی تعاملی که طراحی کرده بودیم یه پلاگین در نرم‌افزار figma که ابزار کار اصلی خیلی از طراحان گرافیکه طراحی کردیم که بهشون امکان می‌داد از روی یه طرح از پیش آماده در لحظه تعداد زیادی (حداقل ۱۲۰ تا) نسخه‌ی رنگ‌آمیزی شده رو بررسی کنند، پالت‌های مختلف رو فیلتر کنند و پالت‌های مطلوب خودشون رو ایجاد کنند، اون‌ها رو توی بوردشون در لحظه بازتولید یا recreate کنند و خودشون چرخه‌ی فرآیند طراحی رو تکرار کنند.

تصویری از پلاگین طراحی‌شده در محیط نرم‌افزار figma

ما این پلاگین رو با ۱۵ طراح مختلف تست کردیم و متوجه شدیم در معیارهای مختلف خلاقیت نتیجه‌ی طراحی نهایی با کمک پلاگین بسیار بهتر از حالت بدون اون بود. خود طراح‌ها هم از این‌که این ابزار امکان بررسی فضاهای مختلف رنگی رو با سرعت بیش‌تری براشون فراهم می‌کرد ابراز خرسندی کرده بودند. بعضی از رنگ‌آمیزی‌های انجام‌شده توسط پلاگین تست تورینگ رو هم پاس کردند که یعنی از چشم چندین طراح حرفه‌ای تفاوتی با رنگ‌آمیزی انجام‌شده توسط یکی از همکاراشون نداشته.

در نهایت خروجی کل پروژه در قالب یک مقاله توی کنفرانس IUI 2023 ارائه شد که توی این لینک قابل دسترسیه. مشارکت در این پروژه برای من تجربه‌ی مفیدی بود و در طول پروژه با ساختار و شیوه‌ی انجام یک پژوهش توی رشته HCI آشنا شدم. جنس بین‌رشته‌ای کار، مطالعه در فضای طراحی و استفاده از دانش کامپیوتری تو زمینه‌ای که به هنر مربوط می‌شد از جمله موارد جذاب پروژه برای من بود. اما به عنوان توصیه به کسانی مثل خودم که دنبال کارهای بین‌رشته‌ای می‌گردند دوست دارم این رو بگم که فراموش نکنید در هر پروژه‌ای مسئولیت شما یه چیز مشخصه؛ ممکنه کاری که می‌کنید با متریال هنری یا گرافیکی و… باشه اما واقعیت اینه که شما برنامه‌نویسید و به نظر خودم توی مجموعه‌ی تجربه‌ها و تلاش‌هایی که من برای نزدیک کردن علائقم داشتم (چه این پروژه، چه بازی‌سازی، چه طراحی موزه، چه پروژه‌های پژوهشی دیگه) این مهم‌ترین بینشی بود که پیدا کردم. نویسندگی، برنامه‌نویسی، مهارت‌های مدیریتی، فهم بصری و… همه عضله‌های مختلفی هستند که ما به حسب کار اصلی‌ای که در هر برهه انجام می‌دیم تقویتشون می‌کنیم و برای آدم‌هایی که میان دو دنیا زندگی می‌کنند رشد متوازن این عضله‌ها شاید مهم‌ترین مسئولیت باشه؛ حتی مهم‌تر از این‌که چه عنوان شغلی‌ای دارند.

شرمنده، ولی، جبرخطی یاد بگیرید!

برای کسایی که فیزیک می‌خونند خیلی مهمه که جبر خطی رو درست حسابی یاد بگیرن؛ چون هم فاله و هم تماشا! هم خیلی کاربرد داره و هم خیلی درک و شهود ما رو بالا می‌بره. از مکانیک کوانتومی گرفته تا سیستم‌های پیچیده، همه به ابزارهای جبرخطی نیاز دارن! همین‌طور خارج از فیزیک، مثلا در علم داده (دیتا ساینس) هم خیلی کاربردیه. خلاصه که این تابستون از دوره‌های آنلاین استفاده کنید و جبر خطی یادبگیرین 🙂

کلاس‌های گیلبرت استرنگ:

جایگاه علم داده در نجوم امروزی

بخش ششم از سری گفت‌وگوهای «پشت‌پرده نجوم»

«پشت‌پرده نجوم» عنوان یک سری از لایوهای اینستاگرامی هست که در آن با چند نفر از دانشجویان و اساتید دانشگاهی، درمورد تصویر درست علم نجوم و فرآیندها و اتفاقاتی که در عمل، در جامعه علمی در جریان است، گفت‌و‌گو شده و هم‌چنین کندوکاوی درمورد مسائل مهمی از قبیل روایتگری در علم و شبه‌علم داشته است.

امروزه با پیشرفت تکنولوژی، نقش داده‌ها در حوزه‌های مختلف علم، از‌جمله علم نجوم، بیش‌از‌پیش نمایان شده است. به‌نظر می‌رسد ابزار برنامه‌نویسی و شبیه‌سازی در آینده‌ای نزدیک، به یکی از مهارت‌های مهم و ضروری برای پژوهش در علم (نجوم) تبدیل شود؛ کما اینکه هم‌اکنون نیز تا حدی همین‌گونه است. در ششمین بخش از «پشت پرده علم» با علیرضا وفایی صدر، پژوهشگر فیزیک در مقطع پسا‌دکتری در IPM، در‌مورد جایگاه علم داده در نجوم امروزی گفت‌و‌گو کرده‌ایم. ویدیو و صوت این گفت‌وگو ضبط شده و در ادامه این متن می‌توانید آن را ببینید و بشنوید.

در علم نجوم امروزی، به‌دلیل ساخت تلسکوپ‌ها و آشکارساز‌های بزرگ متعدد ـ و ترکیب تلسکوپ‌های بزرگ با یکدیگر با استفاده از روش تداخل‌سنجی، برای ساخت تلسکوپ‌های مجازیِ حتی بزرگ‌تر ـ و هم‌چنین افزایش کیفیت و رزولوشن تصاویر دریافتی از آسمان، حجم داده‌ها بسیار افزایش پیدا کرده و کار با داده‌های کلان، به مسئله‌ای مهم تبدیل شده است. به‌عنوان مثال، برای ثبت اولین تصویر از یک سیاه‌چاله که سال پیش توسط تیم تلسکوپ افق رویداد منتشر شد، هشت آرایه‌ از تلسکوپ‌های رادیویی، حدود یک هفته رصد انجام دادند که منجر به دریافت داده‌ای با حجم حدود ۲۷ پتا‌بایت شد و کار انتقال، پاکسازی و تحلیل آن حدود ۲ سال طول کشید (برای اطلاعات بیشتر درمورد جزئیات ثبت این تصویر، این نوشته را بخوانید)! 

در گفت‌وگویمان با علیرضا وفایی‌صدر، به مسائل مختلفی در ‌زمینه نقش داده در نجوم پرداخته‌ایم؛ از جمله اینکه: چطور می‌توان داده‌های کلان را سرو‌سامان داد؟ ماشین‌‌ها (کامپیوترها) چه جنس کارهایی را در زمینه نجوم می‌توانند برای ما انجام دهند؟ همکاری‌های بین‌المللی چه نقشی در این زمینه دارند؟

بخش ششم «پشت‌ پرده نجوم»
ویدیوی گفت‌و‌گوی محمد‌مهدی موسوی (فیزیک‌پیشه) و علیرضا وفایی‌صدر (پژوهشگر فیزیک در مقطع پسادکتری در IPM) درمورد جایگاه علم داده در نجوم امروزی

به این گفت‌وگو گوش دهید:

وبلاگ‌نویسی و روایتگری در علم

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

برای شروع وبلاگ‌نویسی

.There is nothing to writing. All you do is sit down at a typewriter and bleed

Ernest Hemingway, awarded the 1954 Nobel Prize in Literature

می‌تونید به سادگی وبلاگ شخصی خودتون رو توی blog.ir یا ویرگول یا هر جای دیگه درست کنید. برای دنبال کردن وبلاگ‌های مورد علاقه‌تون هم می‌تونید همه‌ رو به صورت یکجا به کمک feedly.com داشته باشید. این نوشته از جادی رو بخونید: برای پیشرفت مجدد، دوباره وبلاگ بنویسید!

وبلاگ‌های پیشنهادی

وبلاگ‌هایی که شخصا دنبال می‌کنم رو با توجه به سطح مطالبشون لیست کردم. منظور از «عمومی» یعنی مناسب هر علاقه‌مندی بدون در نظر گرفتن پیش زمینه خاصی هستند. «کمی فنی» یعنی باید دانش عمومی از ریاضیات و فیزیک داشته باشید. مثلا دانشجوی کارشناسی این رشته‌ها باشید. «فنی» یعنی نیاز به دونستن پیش‌زمینه‌های خاص در فیزیکی یا ریاضی هست. «خیلی فنی» هم یعنی باید دانشجوی تحصیلات تکمیلی باشین دست‌کم!

برای زندگی روزمره و بیشتر برای جنبه‌های عمومی مسئله:

«عمومی» 
«کمی فنی» 

نوشته‌های مربوط به فیزیک جریان‌اصلی:

«کمی فنی» 

فیزیک آماری، ماده‌چگال و محاسباتی:

«فنی» 

سیستم‌های پیچیده، یادگیری ماشین و علوم داده:

«فنی» 
«خیلی فنی» 

برای عمیق شدن در ریاضیات:

«خیلی فنی» 

این دو تدتاک رو هم برای جنبه عمومی نوشتن پیشنهاد می‌کنم:

یادگیری متلب و گنو اُکتاو

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

با این وجود گاهی پیش میاد که آدم مجبور به استفاده از زبان‌های دیگه بشه. تجربه شخصی من اینه که عمده دانشگاهی‌ها به این دلیل مجبور میشن از یک زبان خاص استفاده کنند که به قدر کافی آدم‌های حرفه‌ای در تیمشون نیست! گاهی استاد و تیمی که پروژه‌ای رو پیش برده سال‌ها با یک زبان خاص کد زدند و ترجیحشون اینه که آدم‌های جدید هم با همون زبون ادامه بدن. راه کم‌دردسرتری هست معمولا، هر چند که گاهی می‌تونه به شدت احمقانه باشه! خلاصه ممکنه که هر کسی مجبور بشه سراغ زبان‌ها یا محیط‌های دیگه برنامه‌نویسی بره. یکی از این محیط‌ها متلب هست. توی لینوکس می‌تونید از Octave به جای متلب استفاده کنید و لذتش رو ببرید!

متلب یک محیط نرم‌افزاری برای انجام محاسبات عددی و یک زبان برنامه‌نویسی نسل چهارم است. واژهٔ متلب هم به معنی محیط محاسبات رقمی و هم به معنی خود زبان برنامه‌نویسی مورد نظر است که از ترکیب دو واژهٔ MATrix (ماتریس) و LABoratory (آزمایشگاه) ایجاد شده‌است. این نام حاکی از رویکرد ماتریس محور برنامه است، که در آن حتی اعداد منفرد هم به عنوان ماتریس در نظر گرفته می‌شوند.

گنو اُکتاو ( GNU Octave) زبان برنامه‌نویسی سطح بالایی است که بیشتر برای محاسبات عددی به کار می‌رود. این برنامه امکانات زیادی را از طریق رابط خط فرمان برای حل عددی مسائل خطی و غیر خطی می‌دهد. این برنامه را می‌توان جایگزین مناسبی برای همتای غیر آزاد خود متلب به حساب آورد.

ویکی‌پدیا

در ادامه یک سری منبع برای یادگیری متلب و اکتاو رو معرفی می‌کنم.

برای شروع

از بین این دوره‌ها، ببینید کدوم یکی به مذاقتون بیشتر خوش میاد:

برای محسابات عددی

به طور کلی

پیشنهاد من اینه که کلیات متلب رو یاد بگیرین و از منابع مختلف مربوط به کارتون استفاده کنید. مخصوصا از مثال‌های خود Mathworks استفاده کنید. مثلا اینجا ۵۰۰ تا مثال خیلی خوب برای ریاضیات، آمار و یادگیری ماشین هست. خوبه به این‌ها حتما نگاه کنید. حواستون باشه که به روی ایران بسته‌س و شما نیاز به چیزی برای دور زدن تحریم دارین که حتما راه‌های مختلفی بلدین براش!

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

خوبی این کتاب اینه که جواب تمرین‌ها رو هم داره و می‌شه به عنوان کتاب کمکی برای تدریس ازش استفاده کرد.

به عنوان پیشنهاد به دوستانی که معلم این درس یا درس‌های دیگه میشن : میتونید به جای حل‌تمرین سنتی پایه کلاس‌هاتون رو بر همچین چیزی بذارید. همین کار کوچیک میتونه تغییر محسوسی توی آموزش فیزیک به‌وجود بیاره. این کتاب نسخه‌ پایتونی هم داره!

یادگیری «سیستم‌های پیچیده» رو از کجا و چه‌طور آغاز کنیم؟!

خیلی وقته که از من پرسیده میشه که اگر بخوایم یادگیری سیستم‌های پیچیده رو شروع کنیم باید چیکار کنیم؟! آیا میشه بیرون از دانشگاه این کار رو انجام داد؟ یا اگر من رشته‌م مثلا کیهان‌شناسی، آمار یا ریاضی هست برام مقدوره که یادبگیرم؟ خب جواب اینه: چرا که نه! اما اینکه یک راه خیلی خاص وجود داشته باشه، راستش وجود نداره. در حقیقت آدم‌های مختلفی به این سوال طی سال‌های گذشته جواب‌های متنوعی دادن؛ مثلا  مارک نیومن یک‌بار در مورد موضوعات مطرح و منابع موجود در Complex Systems: A Survey نوشته. با این حال سعی می‌کنم طرحی برای شروع یادگیری سیستم‌های پیچیده در ادامه ترسیم کنم. از هرگونه نظر، انتقاد یا پیشنهاد از صمیم قلب استقبال می‌کنم، به‌ویژه از طرف متخصصان. راستی  قبل‌تر نوشته‌ای با عنوان «چگونه یک‌ فیزیک‌دان نظری خوب شویم؟» از خِراردوس توفت، نوبلیست، ترجمه کرده بودم.

اخیرا کتابی منتشر شده به اسم «مقدمه‌ای بر نظریه سیستم‌های پیچیده» که برای شروع سیستم‌های پیچیده کتاب بدی نیست. مخصوصا فصل‌های اولش!

کتاب مقدمه‌ای بر نظریه سیستم‌های پیچیده

پیش‌فرض این نوشته اینه که خواننده به حساب دیفرانسیل و انتگرال، معادلات دیفرانسیل و فیزیک پایه مسلط هست و علاقه شدیدی به ورود به حوزه بین‌رشته‌ای داره! اصلی‌ترین پیش‌نیاز برای یادگیری سیستم‌های پیچیده شهامت و حوصله کافی برای ورود به دنیایی تازه و هیجان‌انگیزه! اگر به دنبال کتابی هستین که حس کلی از «سیستم‌های پیچیده» به شما بده نگاه کنید به کتاب «سیری در نظریه پیچیدگی» نوشته ملانی میچل با ترجمه رضا امیر رحیمی.  همین‌طور کورس مقدماتی در Complexity Explorer وجود داره برای این که یک آشنایی کلی از سیستم‌های پیچیده پیدا کنید.

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

۱) جبر خطی و ماتریس‌ها

برای شروع نیاز به مفاهیم‌ و تکنیک‌های جبرخطی دارین. باید بتونید با ماتریس‌ها خوب کار کنید.

  1. کورس جبر خطی Vector and Matrix Algebra by Anthony D. Rhodes
  2. ویدیوهای Essence of linear algebra
  3. کورس و کتاب جبرخطی Gilbert Strang

این کتاب با نگاهی جدید به مکانیک کلاسیک، به موضوعات مورد نیاز برای سیستم‌های پیچیده می‌پردازد.

۲) مکانیک کلاسیک

بخش زیادی از سیستم‌های پیچیده توسط فیزیک‌دانان توسعه داده شده، پس باید با ادبیات ابتدایی فیزیک آشنا بشید!

  1. کورس مکانیک کلاسیک لنرد ساسکیند
  2. کتاب Introduction to Modern Dynamics – Chaos, Networks, Space and Time – David D. Nolte

۳) آمار، احتمال و فرایندهای تصادفی

ایده‌های اصلی آمار و احتمال رو باید بدونید. یعنی هرکسی که در دنیای امروز زندگی می‌‌کنه باید بدونه!

  1. کتاب An Introduction to Random Vibrations, Spectral & Wavelet Analysis by D. E. Newland
  2. کتاب Probability Theory: The Logic of Science by E. T. Jaynes
  3. جزوه فرایندهای تصادفی دکتر کریمی‌پور

۴) فرکتال‌ها و مفاهیم مقیاسی

  1. مقدمه‌ای بر هندسه فرکتالی: ویدیو
  2. کتاب Scale: The Universal Laws of Growth, Innovation, Sustainability, and the Pace of Life in Organisms, Cities, Economies, and Companies by Geoffrey West
  3. کورس Fractals and Scaling by David Feldman
  4. این ویدیو رو ببینید:

۵) فیزیک آماری و پدیده‌های بحرانی

مکانیک آماری رو خیلی خوب باید بدونید! از ایده‌های ابتدایی تا مباحث پیشرفته. مدل آیزینگ رو خیلی جدی بگیرین!

  1. کورس مکانیک آماری لنرد ساسکیند
  2. کورس و کتاب فیزیک آماری ذرات، مهران کاردر
  3. کتاب Statistical Mechanics Entropy, Order Parameters, and Complexity by James P. Sethna
  4. کورس کوتاه  Introduction to Renormalization by Simon DeDeo
  5. کتاب Lectures On Phase Transitions And The Renormalization Group by Nigel Goldenfeld
  6. کتاب David Tong: Lectures on Kinetic Theory

    کتاب دینامیک غیرخطی و آشوب استیون استروگتز به همراه ویدیوهای کلاس درسش یکی از بهترین منابع یادگیری دینامیک غیرخطی است.

۶) دینامیک غیرخطی و آشوب

  1. کورس Introduction to Dynamical Systems and Chaos by David Feldman
  2. کورس و کتاب Nonlinear Dynamics and Chaos by Steven H. Strogatz
  3. کورس Nonlinear Dynamics: Mathematical and Computational Approaches by Liz Bradley

۷) شبکه‌ها (علم شبکه)

  1. ویدیو «ظهور علم شبکه»
  2. مقاله مروری The shortest path to complex networks by S. N. Dorogovtsev and J. F. F. Mendes
  3. این ۴ ویدیو رو ببینند.
  4. کتاب علم شبکه باراباشی
  5. کتاب Networks: An Introduction by Mark Newman
  6. این ویدیو رو ببینید:

۸) روش‌ها و تکنیک‌های محاسباتی و شبیه‌سازی

  1. کورس پایتون برای همه
  2. کورس پایتون برای پژوهش
  3. کتاب Monte Carlo Simulation in Statistical Physics: An Introduction by Kurt Binder, Dieter W. Heermann
  4. کتاب Complex Network Analysis in Python by Dmitry Zinoviev
  5. کورس Introduction to Agent-Based Modeling by William Rand

۹)  نظریه اطلاعات و محاسبه

Self-contained, precise. Numerous examples and exercises make it a valuable teaching book
Builds a bridge between physics of glasses and computer science problems

  1. کورس Introduction to Computation Theory by Josh Grochow
  2. مقاله مروری A Mini-Introduction To Information Theory by Edward Witten
  3. کتاب Information, Physics, and Computation by Marc Mézard and Andrea Montanari

۱۰) نظریه بازی‌‌ها

  1. کورس Game Theory I – Static Games by Justin Grana
  2. کورس Game Theory II- Dynamic Games by Justin Grana
  3. کتاب Strategy: An Introduction to Game Theory by Joel Watson

۱۱) یادگیری ماشین

  1. کورس Matrix Methods in Data Analysis, Signal Processing, and Machine Learning – Gilbert Strang
  2. کورس Fundamentals of Machine Learning by Brendan Tracey and Artemy Kolchinsky
  3. مقاله مروری A high-bias, low-variance introduction to Machine Learning for physicists
  4. ویدیو Bayesian Inference by Peter Green

به طور کلی، دوره‌های آموزشی Complexity Explorer رو دنبال کنید. موسسه سن‌تافه (سانتافه!)  یک کورس مقدماتی روی پیچیدگی داره. همین‌طور پیشنهاد می‌کنم عضو کانال Complex Systems Studies در تلگرام بشین. فراموش نکنید که اینترنت پره از منابع خوب برای یادگیری ولی چیزی که کمه، همت! در آخر دیدن این ویدیو رو با زیرنویس فارسی پیشنهاد می‌کنم: