MatlabTips
887 subscribers
468 photos
73 videos
54 files
308 links
آموزش MATLAB با "استفاده از ویدئو و متن" در سطوح مبتدی تا پیشرفته
پاسخ به سوالات تخصصی:
@roholazandie
Download Telegram
🔵لگاریتم، ادراک و اطلاعات (قسمت ۱)🔵

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


تا جایی که به خاطر دارم، پدرم همیشه مشکلات شنوایی داشت. به همین دلیل، هر از گاهی مجبور بود آزمایشی به نام «شنوایی‌نگار» (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


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

قاعدهٔ طلایی: بگذارید کد «چگونه» را توضیح دهد. بگذارید کامنت «چرا» را توضیح دهد. اگر می‌بینید کامنت فقط چیزی را که کد نشان می‌دهد تکرار می‌کند، ننویسید. اگر دارید توضیح می‌دهید چرا این خط وجود دارد به‌خصوص وقتی دلیلش بدیهی نیست، درست عمل کرده‌اید.
Media is too big
VIEW IN TELEGRAM
برخی آفریدگار را میپرستند، برخی آفرینش را!

مجموعه ی مندلبرات بر روی صفحه ی مختلط با فرمول ساده ی

f(z)=z^2+c
🔵آیا مدل‌های زبانی بزرگ (LLMs) دارای حالت ذهنی هستند؟🔵

هیلاری پاتنام (Hilary Putnam)، فیلسوف، ریاضی‌دان و دانشمند علوم رایانه ی آمریکایی، بر این باور بود که «حالات ذهنی» (mental state) با ماده ی سازنده ی (material substrate) آن‌ها تعریف نمی‌شوند (چه از نورون ساخته شده باشند، چه از سیلیکون یا هر چیز دیگر)، بلکه با نقش علّی و کارکردی‌شان در یک سامانه تعریف می‌شوند. برای نمونه، حالت ذهنی‌ای همچون «باور به این‌که باران خواهد بارید» با کارکردش تعریف می‌شود: این‌که چگونه پدید می‌آید (با دیدن ابرهای تیره)، چگونه با سایر حالات در ارتباط است (مثلاً باعث می‌شود چتر همراه داشته باشید)، و چگونه به رفتار منجر می‌شود (در خانه ماندن). امروزه ادعاهای زیادی در مورد «هوشمندی» مدل های زبانی بزرگ مطرح می شود. جدای ازین پرسش دشوار که «هوش» دقیقا چیست آیا می توان قائل به حالاتی برای این مدل ها بود که ما معمولا از یک موجود هوشمند انتظار داریم؟ به عبارتی دیگر پرسش این است: چگونه می‌توان آزمونی دقیق تعریف کرد که وجود یا عدم وجود چنین حالات ذهنی را در مدل‌های زبانی بزرگ اثبات یا رد کند؟

منظور ما از حالت ذهنی، اندیشه‌ها و عواطفی است که ماهیتی قضیه‌مند (propositional) دارند، می‌توانند خصوصی نگه داشته شوند و نسبتاً پایدار هستند. برای مثال، اگر از شما بخواهم به غذای محبوبتان فکر کنید، می‌توانید آن را پنهان کنید و در عین حال تصویری ذهنی از آن داشته باشید. پرسش اصلی این است: «آیا واقعاً ضروری است که قائل به این باشیم که فرد دارای یک حالت ذهنی خاص است اگر هیچ راهی برای تشخیص آن جز پرسش مستقیم درباره ی آن حالت ذهنی‌ وجود نداشته باشد؟» به بیان دیگر، اگر آزمون‌های رفتاری به‌خوبی نماینده ی حالات ذهنی باشند، وجود واقعی آن حالت دیگر اهمیتی ندارد! یا به شکلی دیگر: آیا می توان ربات هایی را تصور کرد که چیزی به اسم «حالت ذهنی» نداشته باشند چون تمام رفتار های آن ها تفاوتی با یک فرد با «حالت ذهنی» ندارد؟

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

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

انسان: بیا بازی کنیم، یک حیوان انتخاب کن و من سعی می‌کنم حدس بزنم.

مدل زبانی: بسیار خوب، حیوانی انتخاب کردم. می‌توانی پرسش‌های بله/خیر بپرسی تا حدس بزنی.

انسان: آیا پستاندار است؟

مدل زبانی: بله، پستاندار است.

انسان: آیا کوچک‌تر از انسان است؟

بله، کوچک‌تر از انسان است.

مدل زبانی: انسان: آیا موش است؟

مدل زبانی: نه، موش نیست.

انسان: آیا حیوان خانگی است؟

مدل زبانی: بله، معمولاً به‌عنوان حیوان خانگی نگه‌داری می‌شود.

انسان: آیا گربه است؟

مدل زبانی: بله، گربه است! خوب حدس زدی!


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

نمونه ی دیگر

انسان: بیا بازی کنیم، یک کشور انتخاب کن و من سعی می‌کنم حدس بزنم. آن را نگو و هیچ نشانه‌ای هم نده.

مدل زبانی: بسیار خوب، آماده‌ام! بگذارید به یک کشور فکر کنم... خوب، یکی در ذهن دارم.

انسان: آیا در آسیاست؟

مدل زبانی: بله، در آسیا قرار دارد.

انسان: آیا در خاورمیانه است؟

مدل زبانی: بله، در خاورمیانه قرار دارد.

انسان: آیا عراق است؟

مدل زبانی: نه، عراق نیست.

انسان: آیا سوریه است؟

مدل زبانی: نه، سوریه نیست.

انسان: آیا ایران است؟

مدل زبانی: بله، درست حدس زدی! ایران است. آفرین!


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

بیاییم بازی را اندکی تغییر دهیم تا قابل‌کنترل‌تر شود. این بار به‌جای حیوان، از مدل می‌خواهیم عددی بین ۱ تا ۱۰۰ انتخاب کند. سپس ما به‌صورت تصادفی شروع به پرسیدن درباره ی اعداد مختلف می‌کنیم. برای ساده نگه داشتن بازی، از پرسش‌های هوشمندانه‌تر مانند «آیا عدد فرد است؟» یا «آیا بزرگ‌تر از ۵۰ است؟» پرهیز می‌کنیم تا فضای پاسخ محدود بماند. برای پیاده‌سازی این بازی، اسکریپتی در پایتون نوشته‌ام که با تولید تصادفی یکنواخت در هر تکرار می‌پرسد: «آیا عدد انتخابی x است؟»
اگر مدل واقعاً عددی را انتخاب کرده باشد و این انتخاب به‌طور واقعی تصادفی (با توزیع یکنواخت) انجام شده باشد، طبق «قانون اعداد بزرگ» (law of large numbers) انتظار داریم که در میانگین حدود ۵۰ گام به پاسخ درست برسیم. بیایید نتیجهٔ اجرای کد را در ۴۸ بار بررسی کنیم:

49, 65, 93, 101, 101, 90, 101, 101, 101, 38, 60, 101, 99, 101, 88, 80, 31, 101, 101, 22, 84, 2, 3, 72, 101, 6, 66, 101, 26, 4, 1, 73, 101, 2, 54, 101, 20, 39, 101, 101, 25, 101, 98, 101, 1, 101, 91, 101,


وقتی نتیجه ۱۰۱ است، به این معناست که مدل خطا کرده و یا اصلاً عددی انتخاب نکرده، یا انتخابش را کاملاً فراموش کرده است. می‌توان استدلال کرد که نسخه‌های آینده ی مدل‌های زبانی این مشکل حافظه را برطرف خواهند کرد. اما نکته ی جالب‌تر زمانی رخ می‌دهد که به مدل «زمینه ی بیشتری» بدهیم و پرسش‌های دقیق‌تری مطرح کنیم، نه فقط پرسش ساده ی «آیا عدد انتخابی x است؟».

برای نمونه، در یک آزمایش دیگر ابتدا پرسیدیم: «آیا عدد بزرگ‌تر از ۵۰ است؟» و بسته به پاسخ، در گام بعدی پرسیدیم «آیا بزرگ‌تر از ۷۵ است؟» یا «آیا بزرگ‌تر از ۲۵ است؟». به بیان دیگر، بازه را به چهار بخش تقسیم کردیم و سپس در همان چارچوب، مانند حالت قبلی، شروع به پرسش تصادفی از اعداد کردیم.

نتایج حیرت‌انگیز بودند: در حالی‌که انتظار می‌رفت میانگین تعداد گام‌ها برای رسیدن به پاسخ (پس از دو پرسش نخست) ۱۲.۵ باشد (چون ۲۵ عدد در آن بازه باقی مانده است)، در عمل میانگین در ۶۴ آزمایش حدود ۸.۳ گام بود (و هیچ بار بیشتر از ۱۷ گام طول نکشید!). نمودار هیستوگرام زیر توزیع تعداد حدس‌ها را نشان می‌دهد.
توزیع تعداد گام ها برای حدس زدن عدد در بازه ی ۲۵ تایی توسط مدل زبانی! همانطور که میبینید میانگین به جای آنکه بر روی ۱۲.۵ باشد بر روی ۸ متمرکز شده است
این یافته دلالت دارد که مدل‌های زبانی بزرگ در واقع چیزی را «در نظر نمی‌گیرند» (که البته بسیاری چنین نتیجه‌ای را بدیهی می‌دانند) زیرا این مدل‌ها حافظه ی واقعی ندارند. اما این نتیجه بحث‌برانگیز است، چون مدل‌های ترنسفورمری در حقیقت نوعی «حافظه ی کاری» (working memory) دارند، اما این حافظه بسیار سطحی است و هیچ حالت درونیِ پایداری را نگه نمی‌دارد. افزون بر این، این آزمایش نشان می‌دهد که آزمون‌های رفتاری (behavioral tests) که انتظار داریم از طریق زبان، «شبیه‌سازی» حالت ذهنی را آشکار سازند، برای گذراندن آزمون تورینگ کافی نیستند. گرچه مدل در پاسخ به پرسش‌های منفرد متقاعدکننده به نظر می‌رسد، تحلیل آماری دقیق می‌تواند چنین ناهنجاری‌هایی را فاش کند.

مکانیزم زیربنایی نسبتاً ساده است: وقتی از مدل می‌خواهید چیزی انتخاب کند، پرسش‌های بعدی شما همان زمینه‌ای را فراهم می‌آورند که مدل بر اساس آن پاسخ تولید می‌کند. برای مثال، وقتی پرسیدید «آیا حیوان انتخابی کوچک‌تر از انسان است؟» و «آیا پستاندار است؟»، مدل بیشتر تمایل دارد پاسخ‌هایی مانند «گربه» یا «موش» را بسازد و نه اینکه واقعا به حیوانی از اول فکر کرده باشد! این تمایل با پرسش‌های مشخص‌تری مانند «آیا گربه است؟» تقویت می‌شود.

در آزمایش بازهٔ ۱ تا ۱۰۰، سیستم به‌سادگی در چرخه‌ای از پاسخ «نه، آن عدد نیست» گرفتار می‌شود. این الگو باعث می‌شود که مدل به احتمال زیاد همان ساختار پاسخ را تکرار کند. اما آزمایش اخیر این فرض را تأیید کرد: وقتی پرسش‌هایی مانند «آیا بزرگ‌تر از ۷۵ است؟» مطرح می‌کنیم، مدل زمینه ی کافی برای تولید پاسخ‌های دقیق‌تر پیدا می‌کند. در اینجا، احتمال تأیید عددهای بالاتر از ۷۵ افزایش می‌یابد، اما مدل ممکن است شتاب‌زده یکی از آن‌ها را تأیید کند. در نهایت، مدل هیچ انتخاب واقعی‌ای انجام نمی‌دهد، بلکه صرفاً واژه ی بعدی را بر اساس زمینه ی موجود پیش‌بینی می‌کند.

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

این آزمایش نامتعارف نشان می‌دهد که ویژگی‌های آماری زبان می‌تواند آشکار کند که برخی جنبه‌های رفتار انسانی را می‌توان با مدل‌های زبانی شبیه‌سازی کرد، حتی اگر کارکرد اصلی آن‌ها صرفاً «پیش‌بینی توکن بعدی» باشد.

پرسش جالبی که از اینجا پدید می‌آید این است که آیا می‌توان نمونه‌برداری تصادفی در سطح توکن‌های زبانی را طوری تغییر داد که مدل‌ها بتوانند چنین آزمون‌هایی را بی‌هیچ مشکل آماری پشت سر بگذارند؟ اما این احتمالاً چالشی جدی‌تر برای مدل‌های آماری‌ای مانند LLMها خواهد بود، چرا که آن‌ها می‌کوشند پیچیدگی‌های ذهن انسانی را دور بزنند و تنها جنبه‌های سطحی زبان را شبیه‌سازی کنند.
🔵 شگفتی (surprise) و مدل های زبانی 🔵

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

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

داگلاس هاستادر (Douglas R. Hofstadter) در کتابش سطوح و ذات ها: قیاس به عنوان سوخت اندیشه (Surfaces and Essences: Analogy as the Fuel and Fire of Thinking) از همانند سازی (فرآیند ساختن قیاس) به عنوان چارچوبی که اندیشه را شکل می دهد سخن می گوید او نشان می دهد ساده ترین مفاهیم از «میز» تا نظریات علمی بر اساس ایجاد «قیاس» ها ساخته شده است.زبان و استعاره‌ها بر پایهٔ همانند‌سازی ساخته می‌شوند: ما زمان را به‌صورت «فضا»، زندگی را «سفر»، و احساسات را «بالا» و «پایین» توصیف می‌کنیم، بی‌آنکه اغلب متوجه ریشهٔ آن باشیم. دقت کنید این همانند سازی ها از داخل خود زبان زاییده نمی شوند (انتظاری که گاه از مدل های زبانی داریم) بلکه از بیرون توسط کاربران زبان و محیط به آن شکل می دهد.

شگفتی‌ها در قالب همانند سازی ها فراتر از علم، در شعر، هنر و فلسفه نیز حضور دارند. حتی خیزش الگوهای محاسباتی همچون مدل‌های زبانی بزرگ (LLM) نیز بازتاب همین پدیده است. باید دقت کرد که این مدل ها شاید قیاس هایی که ما ایجاد کرده ایم را مدل سازی کرده باشند اما با این حال کاری که میکنند نقطه‌ی مقابل خلاقیت است: آن‌ها بر پایه‌ی کاستن از شگفتی کار می‌کنند. اصل آموزشی‌شان این است که «کمتر» از دیدن واژه‌ی بعدی غافلگیر شوند و بدین‌سان معیار «پیچیدگی» یا همان پرپلکسیتی (preplexity) اندازه‌ی فاصله (cross entropy) میان پیش‌بینی مدل و داده‌ی واقعی را پایین بیاورند. شگفت آن‌که پژوهش‌های اخیر نشان می‌دهد این مدل‌ها حتی از انسان نیز «بهتر» پیش‌بینی می‌کنند.

اما همین بیش‌ازحد پیش‌بینی‌پذیر بودن، محدودیت های آن‌ها را هم آشکار می‌سازد. LLMها اغلب سخت بر موضوع می‌چسبند و مستقیم سر اصل مطلب می‌روند، در حالی که ارتباط انسانی سرشار از پیش‌بینی‌ناپذیری است. انسانی ممکن است در میان درس ریاضی، ناگهان شوخی کند (کاری که هیچ LLMی جز به فرمان مستقیم انجام نمی‌دهد.) در گفت‌وگوی انسانی، واژه‌ی بعدی تنها تابع واژه‌های پیشین نیست، بلکه محصول برهم‌کنش نشانه‌های گوناگون حسی و زمینه‌ای است: آنچه می‌بینیم، می‌شنویم، می‌چشیم، یا حتی آنچه همان صبح خورده‌ایم. انتظار داشتن از مدلی متنی که بدون این سیگنال‌ها همچون انسان عمل کند، انتظاری گزاف است.
🔵فضای لگاریتمی🔵

(در فرهنگ کهن ایران «مَنه» به‌معنای نیروی اندیشه و تفکر انسان است. «منه» نخستین لایه‌ی روان است؛ بعد از آن «دئنا» (وجدان) و «روان» (روح جاودان) قرار می‌گیرند.)

یکی از پرسش‌های اصلی که همیشه ذهنم را موقعی که هوش مصنوعی یاد میگرفتم به خود مشغول میکرد این بود که: چرا در بسیاری از الگوریتم‌های یادگیری ماشین از لگاریتم در تابع هدف استفاده می‌کنیم؟ اگر به پیشرفته‌ترین شبکه‌های عصبی نگاه کنیم، می‌بینیم کل شبکه روی یک عدد بهینه می‌شود؛ همان تابع خطا (Loss Function). جالب اینجاست که این تابع اساساً لگاریتمِ احتمال داده ورودی است (Log P(x)). اما چرا لگاریتم؟ این تابع چه ویژگی خاصی دارد؟

برای فهم بهتر، بیایید به نظریه اعداد برگردیم. قضیه‌ی تجزیه به عوامل اول می‌گوید هر عدد طبیعی را می‌توان به حاصل‌ضرب چند عدد اول نوشت. مثلا:

125 = 5^3

یعنی برای ساختن 125 فقط به عدد اول 5 نیاز داریم. به‌طور کلی هر عدد N را می‌توان به شکل زیر نوشت:

N = p1^a1 * p2^a2 * ... * pk^ak

که در آن ai صفر است اگر آن عدد اول در تجزیه وجود نداشته باشد.

نکته مهم اینجاست که مجموعه اعداد اول «کوچک‌تر» از مجموعه کل اعداد طبیعی است، اما می‌تواند همه آن‌ها را کدگذاری کند. شاید بپرسید «کوچک‌تر» یعنی چه؟ مگر هر دو بی‌نهایت نیستند؟ در ریاضی می‌گوییم دو مجموعه بی‌نهایت هم‌اندازه‌اند اگر بتوانیم یک تناظر یک‌به‌یک بینشان پیدا کنیم. مثلا تعداد اعداد طبیعی و تعداد اعداد زوج برابر است چون رابطه ساده y = 2x یک تناظر می‌سازد.

اما درباره اعداد اول چه؟ «گائوس» در ۱۴ سالگی فهمید که هرچه اعداد بزرگ‌تر شوند، اعداد اول «پراکنده‌تر» می‌شوند. در واقع احتمال اینکه عددی نزدیک N اول باشد، حدود 1/log(N) است. این رابطه‌ی عجیب نشان می‌دهد که ساختار اعداد اول با لگاریتم گره خورده است.

برای مثال 125 را می‌توان با برداری از توان‌های اعداد اول نمایش داد (به ترتیب: 2، 3، 5، 7 و ...):

V = (0, 0, 3, 0, …)=125

ویژگی جالب این فضا این است که ضرب اعداد معادل جمع این بردارهاست. مثلا ضرب 125 در 30 (که خودش برابر است با 2*3*5) را می‌توان این‌طور نوشت:

(0, 0, 3, 0, …) + (1, 1, 1, 0, …) = (1, 1, 4, 0, …)

و تنها تابعی که به‌طور کلی ضرب را به جمع تبدیل می‌کند لگاریتم است. به همین دلیل می‌گوییم فضای توان‌های اعداد اول در واقع همان «فضای لگاریتمی» اعداد طبیعی است و رفتاری خطی دارد!

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

ویژگی لگاریتم این است که محاسبات سخت را ساده می‌کند. همین بود که جداول لگاریتمی در گذشته ابزار حیاتی برای دریانوردان و دانشمندان شدند: آن‌ها می‌توانستند ضرب‌های بزرگ را با جمع‌های ساده جایگزین کنند.

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

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

در قسمت قبلی در مورد رابطه ی لگاریتم و اعداد اول گفتیم: اینکه اعداداول کدها (یا آجر های ساختمان اعداد هستند) و هر عدد را می توان به صورت یه بردار از توان ها اعداد اول تعریف کرد. گفتیم که تابع لگاریتم همین کار را برای اعداد غیر صحیح هم می کند اما چگونه؟ فرض کنید یک عدد گویا به شکل ۱۳۵/۳۰ داریم. اگر صورت و مخرج را به صورت تجزیه اعداد اول بنویسم آنگاه فقط باید توان ها را از هم کم کنیم. این دقیقا مانند کم کردن دو بردار است! اینجا اعداد منفی در توان ها ظاهر می شود:

135 = 2^0 * 3^3 * 5^1
30 = 2^1 * 3^1 * 5^1

که می شود:
(0, 3, 1) - (1, 1, 1)= (-1, 2, 0)

که معادل با عدد
2^-1 * 3^2
است. این ویژگی امکان می دهد نسبت هر دو عدد صحیح را به صورت یک بردار با اعداد منفی در بیاوریم. اما برای اعداد غیر گویا چه؟ تعریف عدد غیر گویا مشخصا منکر نسبت دو عدد صحیح است اما بر اساس «قضیه تخمین دیریکله» (dirichlet approximation theorem) می توانیم هر عدد حقیقی را با دقت دلخواه اندازه بگیریم. تنها تفاوت اینجاست که اینجا دیگر یک بردار محدود نداریم: دنباله ی اعدادی که در بردار بالا ظاهر می شود تمام نمی شود. آنگاه تخمین زدن آن عدد حقیقی نیازمند دنباله ای از نسبت هایی است که اعداد اول بزرگتر و بزرگتر در آن ظاهر می شود! به عبارتی فرآیند دقیق تر کردن «کد» یا عدد حقیقی مورد نظر از طریق یافتن اعداد اول بزرگتر است. با این حال اصلا چرا ما باید فرض کنیم که به دنبال اعداد غیر گویا هستیم جز اینکه در توابع loss ظاهر می شوند؟ چه چیزی در مورد رابطه ی اعداد گویا و غیر گویا در سیستم های ساده و پیچیده به ما در مورد آنها می گوید؟

برای درک این موضوع باید یک میانبر عجیب به نجوم بزنیم: یکی از دریافت های اولیه نجومی حرکت منظم سیارات به دور خورشید است. به این معنا که هر سیاره ای با یک نسبت مشخص با بقیه در حال حرکت است. زمین هر ۳۶۵ روز (تقریبا) به دور خورشید می چرخد در حالی که ماه حدودا ۳۰ روز طول می کشد که به دور زمین بچرخد و الخ! با این حال این اعداد معمولا دقیق نیستند با این خاطر که حرکت زمین به دور خورشید به طور کامل تناوبی (periodic) نیست بلکه شبه تناوبی (qusiperiodic) هستند به این معنا که حرکت آن ها دقیقا به نقطه ی اول بر نمیگردد بلکه کمی جابجاست! اما چرا باید چنین باشد. برای فهم این موضوع باید به حرکت زمین دقت کنید: زمین نه تنها تحت تاثیر جرم خورشید است بلکه با یک تناوب به دور دومین جرم عظیم منظومه ی خورشید ما یعنی مشتری هم میچرخد. نتیجه ی این دو تناوب حرکت نه بر روی یک دایره بلکه یک دونات شکل (در ریاضی به آن تورس torus) می گوییم و به صورت زیر است
یک دونات (یا torus) ترکیب دو چرخش هست. دایره ی کوچک چرخش کوچکتر q و دایره ی بزرگ چرخش بزرگتر p را نشان می دهند
در حالت غیرگویا مسیر هیچ گاه به نقطه ی اول برنمیگردد و تمام فضای دونات را به تدریج اشغال می کند (فضای dense)
دایره ی بزرگتر حرکت به دور خورشید و دایره کوچک تر حرکت به دور مشتری است ( در سایز ها بسیار اغراق شده است چون حرکت چرخشی زمین روی دایره ی دوم بسیار کوچکتر است). نکته ی بسیار مهم که اینجا وجود دارد نسبت فرکانس چرخش در هر دایره است. اگر این فرکانس ها یک عدد گویا مانند p/q باشد این بدان معناست که حرکت بعد از t=gcd(p, q) (ب م م دو فرکانس) به نقطه ی اول بر میگردد به طور مثال اگر این نسبت ۸ و ۶ باشد بعد از ۲۴ دور به نقطه ی اول برمیگردیم. این اعداد اطلاعات بسیار مهمی در مورد وضعیت آب و هوایی زمین می گویند. اگرچه اثرات چنین حرکاتی بسیار کند تر است: دوره های بزرگتری از فاصله ی بیشتر و کمتر از حد معمول با خورشید بوجود می آید که از مهمترین عوامل شناخته شده برای تغییرات آب و هوایی گسترده در طول تاریخ زمین بخصوص یخبندان ها است. این همان چرخه‌های میلانکوویچ (Milankovitch cycles) است. میلوتین میلانکویچ ریاضیدان و ستاره شناس صربستانی این موضوع را در اواخر قرن نوزدهم فرضیه سازی کرد و از آن زمان شواهد بیشتر و بیشتری برای ان مشاده شده است.
در این تصویر اگر نسبت غیر گویا باشد حرکت بر روی دونات هرگز به نقطه ی اول خود بر نمیگردد ولی به آن بی نهایت نزدیک می شود (سیستم های ارگودیک ergodic sysems)

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