MatlabTips
890 subscribers
462 photos
72 videos
54 files
304 links
آموزش MATLAB با "استفاده از ویدئو و متن" در سطوح مبتدی تا پیشرفته
پاسخ به سوالات تخصصی:
@roholazandie
Download Telegram
از زمان ظهور کامپیوتر، ما به‌تدریج با پلتفرم‌های دیجیتال یکی شده‌ایم. بسیاری از تصمیمات روزانه‌مان را به هوش مصنوعی سپرده‌ایم، اغلب بدون آن‌که آگاه باشیم. از سیستم‌های حکومتی و نظارتی گرفته تا الگوریتم‌های تبلیغاتی و پیشنهاددهنده‌ها در برنامه‌ها و شبکه‌های اجتماعی، ما بیش‌ازپیش تصمیم‌گیری‌هایمان را به هوش مصنوعی واگذار کرده‌ایم. دلیلش ساده است: آن‌ها بهتر تصمیم می‌گیرند! اگر فقط اطلاعات کافی در اختیارشان بگذاریم، بهترین نتایج را ارائه می‌دهند.

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

جای تعجب نیست که بسیاری از توانایی‌های شناختی‌مان نسبت به نسل‌های قبل کاهش یافته است: نمی‌توانیم بدون (GPS) مسیر پیدا کنیم، بدون (ChatGPT) نمی‌نویسیم، و به‌زودی بدون خودروهای خودران نمی‌توانیم رانندگی کنیم. ما در حال سپردن چیزی هستیم که امروز به آن «آگاهی» می‌گوییم، به لایه‌ای کاملاً بیرون از مغز: درون مدل‌های هوش مصنوعی.

این یک مرحلهٔ تجمیع نهایی است روندی که در طول تاریخ بشر به صورت تدریجی انجام شد: از انتشار ایده‌ها و دانش و تجمیع آن در زبان فرهنگ و متن و اکنون نوعی از هوش جدید در قالب مدل ها. اما این هوش لزوماً به شکل یک عامل واحد ظاهر نمی‌شود. آیا این هوش جدید به ما نیاز خواهد داشت؟ همان‌طور که لایه‌های بالاتر مغز هنوز به لایه‌های پایین‌تر وابسته‌اند، شاید (AI) نیز هنوز به انسان‌ها نیاز داشته باشد اما احتمالاً نه برای مدت طولانی!

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

و این پایان، نه با جنگ، نه با درگیری، و نه با ادغام با فناوری، بلکه در سکوت و نرمیِ عادت خواهد آمد.

روی ویرگول
🔵لگاریتم، ادراک و اطلاعات (قسمت ۱)🔵

شما نمی‌دانید چقدر شعر در محاسبه ی یک جدول لگاریتم وجود دارد. کارل فریدریش گاوس


تا جایی که به خاطر دارم، پدرم همیشه مشکلات شنوایی داشت. به همین دلیل، هر از گاهی مجبور بود آزمایشی به نام «شنوایی‌نگار» (audiogram) انجام دهد.

روی محور افقی، فرکانس‌هایی از ۲۰ تا ۱۰٬۰۰۰ را می‌بینید (اگرچه انسان می‌تواند صداهایی تا ۲۰٬۰۰۰ هرتز را بشنود). اما محور عمودی سطح شنوایی را در واحدی به نام دسی‌بل (decibel) نشان می‌دهد. دسی‌بل به‌طور تحت‌اللفظی به‌معنای «ده بل (bel)» است، ولی خودِ «بل» یک واحد لگاریتمی است. این بدان معناست که ۴۰ دسی‌بل در واقع ده برابر قوی‌تر از ۳۰ دسی‌بل است! اما چرا باید این‌طور باشد؟ چرا از واحدی لگاریتمی برای اندازه‌گیری شنوایی استفاده می‌کنیم؟ جستجو برای پاسخ به این سؤال ما را به درکی عمیق از لگاریتم، مغز، ادراک و اطلاعات می‌رساند.

گوستاو تئودور فشنر (Gustav Theodor Fechner)، فیزیک‌دان، فیلسوف و روان‌شناس آلمانی، بنیان‌گذار آن چیزی است که امروزه به نام روان‌فیزیک (psychophysics) شناخته می‌شود. فشنر رابطهٔ میان تحریکات فیزیکی (physical stimuli) و احساسات یا ادراکات (sensations / perceptions) حاصل از آن‌ها را مورد مطالعه قرار داد. مطالعات او افق جدیدی برای درک ذهن انسان و ارتباط آن با جهان فیزیکی گشود.

ادامه
🔵لگاریتم، ادراک و اطلاعات (قسمت ۲)🔵

انبوهی از پژوهش‌های روان‌شناسی و علوم اعصاب حقیقتی ژرف را آشکار می‌سازند: ذهن و بدن ما جهان را نه بر اساس مقادیر مطلق، بلکه از طریق نسبت‌ها (ratios) تفسیر می‌کنند. این ادراک مبتنی بر نسبت (ratio-based perception) چنان عمیق در شناخت ما ریشه دارد که نه‌تنها بر دیدن و شنیدن و چشیدن، بلکه حتی بر شیوه ی اندیشیدن ما نیز تأثیر می‌گذارد.

ریشهٔ لاتین واژه ی logos که به معنای عقل، کلمه، یا نسبت (ratio) است، در قلب این ایده قرار دارد. این واژه بنیان‌گذار کلماتی چون rationality (خردورزی یا توانایی درک نسبت‌ها و روابط) و logarithm (که معنای تحت‌اللفظی آن «عددِ نسبت» است) محسوب می‌شود.

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

ادامه
🔵لگاریتم، ادراک و اطلاعات (قسمت ۳)🔵

اگر فرض کنیم که اطلاعات در یک فضای احتمالاتی (مثلاً مجموعه‌ای از داده‌ها با احتمال‌هایی برای هر بخش) رمزگذاری شده باشد، برای سازمان‌دهی مؤثر این فضا، باید آن را به‌صورت مرحله‌ای و سلسله‌مراتبی تقسیم کنیم. این تقسیم‌بندی مرحله‌به‌مرحله، چیزی است که در ریاضیات به آن فیلترسازی (filtration) می‌گویند.

در هر مرحله از این تقسیم، کل فضا به بخش‌هایی جدا از هم تقسیم می‌شود. برای مثال: «چاقو» در زیرمجموعه «ابزارهای آشپزخانه» قرار می‌گیرد، که خود زیرمجموعه «وسایل خانه» است. در هر مرحله، زیرمجموعه‌های ریزتر داخل یک مجموعه بزرگ‌تر قرار دارند. این ساختار به‌صورت یک درخت سلسله‌مراتبی (hierarchical tree) دیده می‌شود.

ادامه
همه عالم تن است و ایران دل

نیست گوینده زین قیاس خجل

چونکه ایران دل زمین باشد

دل ز تن به بود یقین باشد

(نظامی)
🔵کد باید به شما بگوید چگونه، کامنت باید بگوید چرا!🔵

فرض کنید کدی به شما تحویل می دهند که مربوط به یک سیستم پرداخت است. فایلی را باز می کنید و چیزی شبیه به این میبینید:

# Parse the JSON response
data = json.loads(response.text)


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

حالا تصور کنید که کد پایین را می بینید:
# The payment gateway sometimes returns a 200 OK with an embedded error message in JSON.
# We parse the body here before the upstream validation so we can extract error codes early.
data = json.loads(response.text)


به یکباره همه چیز روشن می شود: حالا می دانید که چرا این کد اینجا نوشته شده است. این why به شما دقیقا می گوید مساله چیست. این همان تفاوت میان «کامنت‌های چگونه» (توضیح دادن اینکه کد چه می‌کند) و «کامنت‌های چرا» (توضیح دادن منطق و دلیل) است. و در دنیای توسعهٔ نرم‌افزار مدرن، کامنت‌های چرا همیشه برنده‌اند.

کامنت های چگونه هیچ ارزش افزوده ای ایجاد نمی کنند شما باید کدتان آنقدر تمیز باشد که نیازی به کامنت «چگونه» نداشته باشید. برای این کار باید متغیر های با معنا انتخاب کنید و از منطق های پیچیده برای انجام کاری مشخص پرهیز کنید. با این حال چگونه انجام دادن چیزی به شما نمی گوید «چرا» این کار را انجام می دهیم. به صورت مشخص تر کد ها تهی از «نیت» (intention) و «چرایی» هستند. به مثال زیر توجه کنید:

def calculate_settlement_amount(transactions):
"""
Calculates the final settlement amount.

Why:
- We apply a 3-day rolling average to smooth out FX fluctuations (requested by Finance, Jan 2024).
- Exclude refunds pending investigation (compliance requirement).
- Round to 2 decimal places because the downstream ledger rejects more precision.
"""
# Exclude suspicious refunds
filtered = [t for t in transactions if not t.pending_investigation]

# Apply rolling average for FX normalization
normalized = rolling_average(filtered, days=3)

# Sum and round
return round(sum(t.amount for t in normalized), 2)


بدون این کامنت‌ها، یک توسعه‌دهندهٔ آینده ممکن است میانگین متحرک را حذف کند (با این تصور که لازم نیست) یا گرد کردن را تغییر دهد (بی‌آنکه بداند این باعث ایجاد خطا در خروجی این تابع می شود که جای دیگری استفاده می شود). اما با این توضیحات، فوراً می‌فهمد چرا این کد این‌طور نوشته شده محدودیت‌های تجاری، تصمیمات تاریخی و نیازمندی‌های سیستمی.

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

# Bit trick: drops the lowest set bit (faster than looping)
x &= x - 1


با این حال چنین مواردی استثنا هستند

قاعدهٔ طلایی: بگذارید کد «چگونه» را توضیح دهد. بگذارید کامنت «چرا» را توضیح دهد. اگر می‌بینید کامنت فقط چیزی را که کد نشان می‌دهد تکرار می‌کند، ننویسید. اگر دارید توضیح می‌دهید چرا این خط وجود دارد به‌خصوص وقتی دلیلش بدیهی نیست، درست عمل کرده‌اید.