اما این پایان راه نیست.
اگر بهجای آنکه تنها یک لایه از آینده را ببینیم، به عمقهای بیشتری فرو رویم، آنگاه میتوانیم از تابع امتیاز سادهتری استفاده کنیم، چرا که خود عمق محاسبه، بار پیشبینی را به دوش میکشد.
و اینجاست که هرس کردن درخت—با تکنیکهایی چون آلفا-بتا—ضرورت مییابد؛ (در اینجا به آن نمی پردازیم) برای آنکه این درخت، در وسعت بینهایت خود، ما را در پیچیدگی غرق نکند.
و ناگهان، در ژرفای این الگوریتم، چهرهای آشنا پدیدار میشود: لاپلاسین.
اپراتوری که زمانی تنها به عنوان توصیفگر گرما، جریان، یا احتمال میشناختیم، اینک در قلب نظریه بازیها سکونت گزیده.
مینیماکس، در جوهر خود، همان لاپلاس بینهایت (∞-Laplacian) است—حد نهایی لاپلاسین که در آن تصمیمها با قاطعیت مطلق گرفته میشوند: یا بیشینه، یا کمینه.
اما اگر تصمیمها را نرمتر بگیریم، اگر اندکی احتمال برای حرکتهای غیرمطلوب هم قائل شویم—چرا که دنیای واقعی سرشار از تصادف است—آنگاه دوباره به لاپلاسین معمول بازمیگردیم. پس:
مینیماکس و لاپلاسین، دو نسخهی یک اصلاند. یکی در خدمت انتخاب، دیگری در خدمت انتشار.
برای دریافت شهودی این حقیقت، بیایید بازی «فکر بکر» را در دوباره نظر بگیریم. در این بازی، ما با یک حدس تصادفی آغاز میکنیم. بازخوردی دریافت میکنیم. الگویی میسازیم. سپس دوباره حدس میزنیم. و این فرآیند—این یادگیری از بازخورد—در جوهر خود، چیزی جز یک مینیماکس ساده نیست.
در مدلهای انتشار (diffusion models) نیز همین روند برقرار است. ما از نویز (توزیع تصادفی یکنواخت یا گاوسین) شروع میکنیم، از آشوب، و با حرکت معکوس، به سمت ساختار میرویم. اینجا، یک شبکهی عصبی، همانند ذهن بازیکن، یاد گرفته است که چقدر هر وضعیت تصادفی از یک توزیع هدف فاصله دارد.
حرکت در این فضا، یعنی در «فضای امتیاز توزیعها»، همان اجرای مینیماکس است. با این تفاوت که در انتشار، جهت حرکت از نظم به بینظمیست؛ و در بازسازی، این مسیر برعکس پیموده میشود.
و قسمت شگفت انگیز آن است که اگر به شطرنج نگاه کنیم، میبینیم که آن نیز نوعی انتشار است. از یک وضعیت دلخواه (حالت اولیه را کنار بگذاریم که کاملا منظم است)، که تصادفی است بازی بهتدریج به سمت یک الگوی نهایی ساده که همان کیش و مات است، میرود. هر بازی، سفریست در فضا-زمان تصمیمات، و پیکربندی نهایی همان الگویی است که به دنبالش هستیم
اگر بهجای آنکه تنها یک لایه از آینده را ببینیم، به عمقهای بیشتری فرو رویم، آنگاه میتوانیم از تابع امتیاز سادهتری استفاده کنیم، چرا که خود عمق محاسبه، بار پیشبینی را به دوش میکشد.
و اینجاست که هرس کردن درخت—با تکنیکهایی چون آلفا-بتا—ضرورت مییابد؛ (در اینجا به آن نمی پردازیم) برای آنکه این درخت، در وسعت بینهایت خود، ما را در پیچیدگی غرق نکند.
و ناگهان، در ژرفای این الگوریتم، چهرهای آشنا پدیدار میشود: لاپلاسین.
اپراتوری که زمانی تنها به عنوان توصیفگر گرما، جریان، یا احتمال میشناختیم، اینک در قلب نظریه بازیها سکونت گزیده.
مینیماکس، در جوهر خود، همان لاپلاس بینهایت (∞-Laplacian) است—حد نهایی لاپلاسین که در آن تصمیمها با قاطعیت مطلق گرفته میشوند: یا بیشینه، یا کمینه.
اما اگر تصمیمها را نرمتر بگیریم، اگر اندکی احتمال برای حرکتهای غیرمطلوب هم قائل شویم—چرا که دنیای واقعی سرشار از تصادف است—آنگاه دوباره به لاپلاسین معمول بازمیگردیم. پس:
مینیماکس و لاپلاسین، دو نسخهی یک اصلاند. یکی در خدمت انتخاب، دیگری در خدمت انتشار.
برای دریافت شهودی این حقیقت، بیایید بازی «فکر بکر» را در دوباره نظر بگیریم. در این بازی، ما با یک حدس تصادفی آغاز میکنیم. بازخوردی دریافت میکنیم. الگویی میسازیم. سپس دوباره حدس میزنیم. و این فرآیند—این یادگیری از بازخورد—در جوهر خود، چیزی جز یک مینیماکس ساده نیست.
در مدلهای انتشار (diffusion models) نیز همین روند برقرار است. ما از نویز (توزیع تصادفی یکنواخت یا گاوسین) شروع میکنیم، از آشوب، و با حرکت معکوس، به سمت ساختار میرویم. اینجا، یک شبکهی عصبی، همانند ذهن بازیکن، یاد گرفته است که چقدر هر وضعیت تصادفی از یک توزیع هدف فاصله دارد.
حرکت در این فضا، یعنی در «فضای امتیاز توزیعها»، همان اجرای مینیماکس است. با این تفاوت که در انتشار، جهت حرکت از نظم به بینظمیست؛ و در بازسازی، این مسیر برعکس پیموده میشود.
و قسمت شگفت انگیز آن است که اگر به شطرنج نگاه کنیم، میبینیم که آن نیز نوعی انتشار است. از یک وضعیت دلخواه (حالت اولیه را کنار بگذاریم که کاملا منظم است)، که تصادفی است بازی بهتدریج به سمت یک الگوی نهایی ساده که همان کیش و مات است، میرود. هر بازی، سفریست در فضا-زمان تصمیمات، و پیکربندی نهایی همان الگویی است که به دنبالش هستیم
🔵چند نکته در مورد خواندن مقالات هوش مصنوعی قسمت اول: اسکالر، بردار، ماتریس و تانسور🔵
احتمالا شما هم تجربه ی باز کردن یک مقاله ی هوش مصنوعی مثل ترنسفورمر یا مدل های انتشار (دیفیوژن) را داشته اید: به محض اینکه فرمول ها شروع می شوند موضوع پیچیده و غیر قابل فهم می شود. این موضوع حتی برای کسانی که پیش زمینه ی ریاضی خوبی مثل ریاضی دبیرستان یا دانشگاه دارند هم گاهی خیلی دشوار است. در اینجا چند نکته که در طول سالیان زیاد به تجربه به آن رسیدم را لیست میکنم که شاید برای بقیه هم مفید باشد:
۱- پیش از هر چیزی باید توجه کنید که ریاضیات هوش مصنوعی اساسا ریاضیاتی بر اساس حساب برداری و تانسور است. توجه نکردن به این موضوع باعث می شود تمام فرمول ها غیر قابل فهم بنظر برسند. برای همین هر گاه یک فرمول می بینید اولین چیزی که باید از خود بپرسید این است که هر متغیر در اینجا چیست؟ (به زبان برنامه نویسی تایپ آن چیست). این تایپ می تواند اسکالر (عدد های عادی که تقریبا تمام ریاضیات دبیرستان است)، بردار، ماتریس یا تانسور باشد. این موضوع بسیار مهم است به همین خاطر هر فرمولی که می نویسید باید سایز آن را زیرش (به صورت اندیس) بنویسید و مطمئن شوید که سایز هر متغیر با بقیه هماهنگی دارد.
بیایید به یک مثال توجه کنیم: یکی از مهمترین عملیات در هوش مصنوعی جدید بخصوص در مدل های زبانی عملگر attention است. فرمول آن به صورت زیر است
احتمالا شما هم تجربه ی باز کردن یک مقاله ی هوش مصنوعی مثل ترنسفورمر یا مدل های انتشار (دیفیوژن) را داشته اید: به محض اینکه فرمول ها شروع می شوند موضوع پیچیده و غیر قابل فهم می شود. این موضوع حتی برای کسانی که پیش زمینه ی ریاضی خوبی مثل ریاضی دبیرستان یا دانشگاه دارند هم گاهی خیلی دشوار است. در اینجا چند نکته که در طول سالیان زیاد به تجربه به آن رسیدم را لیست میکنم که شاید برای بقیه هم مفید باشد:
۱- پیش از هر چیزی باید توجه کنید که ریاضیات هوش مصنوعی اساسا ریاضیاتی بر اساس حساب برداری و تانسور است. توجه نکردن به این موضوع باعث می شود تمام فرمول ها غیر قابل فهم بنظر برسند. برای همین هر گاه یک فرمول می بینید اولین چیزی که باید از خود بپرسید این است که هر متغیر در اینجا چیست؟ (به زبان برنامه نویسی تایپ آن چیست). این تایپ می تواند اسکالر (عدد های عادی که تقریبا تمام ریاضیات دبیرستان است)، بردار، ماتریس یا تانسور باشد. این موضوع بسیار مهم است به همین خاطر هر فرمولی که می نویسید باید سایز آن را زیرش (به صورت اندیس) بنویسید و مطمئن شوید که سایز هر متغیر با بقیه هماهنگی دارد.
بیایید به یک مثال توجه کنیم: یکی از مهمترین عملیات در هوش مصنوعی جدید بخصوص در مدل های زبانی عملگر attention است. فرمول آن به صورت زیر است
این تابعی از سه متغیر است: Q یا کوئری (Query) K یا کلید (Key) و V یا مقدار (value). طرف دیگر معادله یک d_k را داریم که اندازه ی بعد کلید است. اما بیایید دقیق تر شویم. در اینجا Q یک ماتریس است که اندازه ی آن nxd_k است. که در آن n طول ورودی (تعداد توکن ها یه کلمه ها)اندازه ی ماتریس K برابر nxd_k و در نهایت اندازه V برابر است با n x d_v که در آن d_v اندازه تعداد کلمات دیکشنری است. در نهایت d_k یک اسکالر است که در اینجا رادیکال آن حساب شده است. حالا وقت آن است که این اندازه ها را بر روی فرمول بگذاریم و ببینیم که آیا اندازه ها با هم همخوانی دارند یا نه:
اگر از داخل تابع سافتمکس شروع کنیم متوجه می شویم که چون اول ترانهاده ی ماتریس K را حساب میکنیم تعداد ستون های Q و تعداد سطر های K با هم هماهنگی دارند. بنابراین نتیجه یک ماتریس nxn است. حالا اگر این ماتریس را بر جذر d_k تقیسم کنیم (تقسیم کردن بر روی هر کدام از درایه های ماتریس) و در نهایت تابع سافتمکس را بر روی هر داریه اعمال کنیم نتیجه همچنان یک ماتریس nxn باقی می ماند. به این ترتیب می بینیم که مشکلی در ضرب در V هم وجود ندارد چون باز هم تعداد ستون های نتیجه n و سطر های V با هم هماهنگ هستند. بنابراین کل نتیجه ی سمت راست معادله بالا می شود n x d_v
با این حال وقتی کد مربوط به حساب کردن attention را می بینید موضوع کمی پیچیده تر می شود. در عمل ما به جای کار کردن با فقط یک ورودی با یک batch کار میکنیم. دلیل این کار این است که با استفاده ازین روش می توانیم از محاسبات تانسوری که بر روی کارت های گرافیک مدرن تعبیه شده اند بهره ببریم. در عمل منطق کار هیچ تفاوتی نمی کند به جز اینکه به جای یک ماتریس شما B ماتریس را بر روی هم قرار می دهید و سپس ضرب ها را انجام می دهید. بنابراین سایز ها به صورت زیر می شوند
با این حال وقتی کد مربوط به حساب کردن attention را می بینید موضوع کمی پیچیده تر می شود. در عمل ما به جای کار کردن با فقط یک ورودی با یک batch کار میکنیم. دلیل این کار این است که با استفاده ازین روش می توانیم از محاسبات تانسوری که بر روی کارت های گرافیک مدرن تعبیه شده اند بهره ببریم. در عمل منطق کار هیچ تفاوتی نمی کند به جز اینکه به جای یک ماتریس شما B ماتریس را بر روی هم قرار می دهید و سپس ضرب ها را انجام می دهید. بنابراین سایز ها به صورت زیر می شوند
در اینجا باید به چند نکته دقت کنیم. اول اینکه وقتی بحث از تانسور می شود شما عملا با ماتریس های با بعد بالاتر کار میکنید (در بیشتر کاربردهای هوش مصنوعی معمولا این بعد ها بیشتر از ۴ نمی شوند). در ریاضیات و بهویژه در برنامهنویسی برای یادگیری ماشین (مانند PyTorch یا TensorFlow)، تانسور (tensor) ساختاری کلیتر از ماتریس است:
عدد (scalar): تانسور مرتبه ۰ (rank-0)
بردار (vector): تانسور مرتبه ۱ (rank-1)
ماتریس (matrix): تانسور مرتبه ۲ (rank-2)
تانسور مرتبه ۳ یا بیشتر: آرایههایی با ابعاد بیشتر، مانند (batch,time,height,width)
به عنوان مثال:
عدد (scalar): تانسور مرتبه ۰ (rank-0)
بردار (vector): تانسور مرتبه ۱ (rank-1)
ماتریس (matrix): تانسور مرتبه ۲ (rank-2)
تانسور مرتبه ۳ یا بیشتر: آرایههایی با ابعاد بیشتر، مانند (batch,time,height,width)
به عنوان مثال:
x = torch.randn(32, 64, 128) # یک تانسور 3-بعدی (rank-3) با شکل (batch_size, sequence_length, embedding_dim)
اما وقتی با تانسورهایی با بیش از دو بعد کار میکنیم، دیگر "سطر" و "ستون" معنا ندارد چون ابعاد بیشتر شدهاند. مثلاً در یک تانسور با شکل (B,T,D) نمیتوان بهسادگی گفت کدام "سطر" است و کدام "ستون" — بنابراین بهجای transpose، از تابعی بهنام permute یا transpose(dim1, dim2) استفاده میشود.
ترتیبدهی مجدد کامل ابعاد تانسور:
در attention ما معمولاً کاری مثل این انجام میدهیم:
اگر دقت کنید ما فقط نیاز داریم که دو محور آخر را جابجا کنیم (با محور اول که برای batch ست کاری نداریم). حتما کد های بالا را اجرا کنید تا متوجه تفاوت بشوید
x = torch.randn(32, 64, 128) # shape: (B, T, D)
x_t = x.transpose(1, 2) # shape: (B, D, T)
ترتیبدهی مجدد کامل ابعاد تانسور:
x = torch.randn(32, 64, 128)
x_perm = x.permute(2, 0, 1) # shape: (128, 32, 64)
در attention ما معمولاً کاری مثل این انجام میدهیم:
Q @ K.transpose(-2, -1)
اگر دقت کنید ما فقط نیاز داریم که دو محور آخر را جابجا کنیم (با محور اول که برای batch ست کاری نداریم). حتما کد های بالا را اجرا کنید تا متوجه تفاوت بشوید
🔵بعد بریتانیا چقدر است؟🔵
لوئیس فرای ریچاردسون (Lewis Fry Richardson) در نیمه ی قرن بیستم به مطالعه ی طول خط ساحلی کشور ها مشغول شد. او در حال بررسی این بود که آیا میتوان احتمال درگیری بین کشورها را بر اساس طول مرز مشترکشان پیشبینی کرد یا نه. اما در این مسیر متوجه پدیدهای عجیب شد: منابع مختلف، طول بسیار متفاوتی برای یک مرز یا خط ساحلی یکسان گزارش میکردند. بهویژه برای کشورهایی مانند بریتانیا.
مثلاً یک منبع میگفت طول خط ساحلی بریتانیا حدود ۲۴۰۰ کیلومتر است، دیگری ۳۴۰۰ کیلومتر و حتی منابعی بودند که ۱۲۰۰۰ کیلومتر گزارش میدادند! چرا اینهمه تفاوت؟
واقعیت این است که طول خط ساحلی به مقیاس اندازهگیری بستگی دارد! اگر با خطکشی به طول ۱۰۰ کیلومتر اندازه بگیرید، از بسیاری از خلیجها، بریدگیها و پیچوخمهای کوچک عبور میکنید. اما اگر خطکش شما فقط ۱ کیلومتر باشد، جزئیات بیشتری را ثبت میکنید. و اگر به اندازه ۱ متر یا حتی کوچکتر برسید، حتی فرورفتگیهای کوچک، سنگریزهها و دانههای شن را هم لحاظ خواهید کرد. هرچه واحد اندازهگیری کوچکتر باشد، طول خط ساحلی بیشتر میشود.
این مشاهدۀ عجیب همان پارادوکس خط ساحلی است:
طول اندازهگیریشدهی یک خط ساحلی، هرچه مقیاس اندازهگیری کوچکتر شود، بدون حد افزایش مییابد.
این وضعیت معنای «طول» به صورت کلاسیک آن را بی استفاده می کند! پس باید چه کرد؟
این پارادوکس توجه بنوآ مندلبرو (Benoit Mandelbrot) ، ریاضیدان فرانسوی را جلب کرد. او در سال ۱۹۶۷ مقالهای معروف با عنوان «خط ساحلی بریتانیا چقدر طول دارد؟ خودشباهتی آماری و بُعد کسری» منتشر کرد. اون دریافت که اشکال طبیعی مانند خط ساحلی، طول دقیقی در معنای کلاسیک ندارند. این اشکال دارای خودشباهتی هستند؛ یعنی الگوهای مشابهی در مقیاسهای مختلف ظاهر میشوند. مندلبرو مفهوم بُعد فرکتالی را برای اندازهگیری این پیچیدگی معرفی کرد.
برای یک خط صاف (یک بعدی)، بُعد آن برابر با ۱ است.
برای یک صفحه (دو بعدی)، بُعد آن ۲ است.
اما بعد خط ساحلی بریتانیا بین خط و صفحه است!! مقدار اندازه گیری شده ۱.۳۳ است. اما یافتن بعد فقط محدود به چنین موجودیت های جغرافیایی نمی شود. هر چیزی اطراف ما یک بعد دارد حتی زبان! در قسمت های بعدی در مورد بعد «ماشین ها» و «ساختار های اطلاعاتی» بیشتر صحبت می کنیم!
لوئیس فرای ریچاردسون (Lewis Fry Richardson) در نیمه ی قرن بیستم به مطالعه ی طول خط ساحلی کشور ها مشغول شد. او در حال بررسی این بود که آیا میتوان احتمال درگیری بین کشورها را بر اساس طول مرز مشترکشان پیشبینی کرد یا نه. اما در این مسیر متوجه پدیدهای عجیب شد: منابع مختلف، طول بسیار متفاوتی برای یک مرز یا خط ساحلی یکسان گزارش میکردند. بهویژه برای کشورهایی مانند بریتانیا.
مثلاً یک منبع میگفت طول خط ساحلی بریتانیا حدود ۲۴۰۰ کیلومتر است، دیگری ۳۴۰۰ کیلومتر و حتی منابعی بودند که ۱۲۰۰۰ کیلومتر گزارش میدادند! چرا اینهمه تفاوت؟
واقعیت این است که طول خط ساحلی به مقیاس اندازهگیری بستگی دارد! اگر با خطکشی به طول ۱۰۰ کیلومتر اندازه بگیرید، از بسیاری از خلیجها، بریدگیها و پیچوخمهای کوچک عبور میکنید. اما اگر خطکش شما فقط ۱ کیلومتر باشد، جزئیات بیشتری را ثبت میکنید. و اگر به اندازه ۱ متر یا حتی کوچکتر برسید، حتی فرورفتگیهای کوچک، سنگریزهها و دانههای شن را هم لحاظ خواهید کرد. هرچه واحد اندازهگیری کوچکتر باشد، طول خط ساحلی بیشتر میشود.
این مشاهدۀ عجیب همان پارادوکس خط ساحلی است:
طول اندازهگیریشدهی یک خط ساحلی، هرچه مقیاس اندازهگیری کوچکتر شود، بدون حد افزایش مییابد.
این وضعیت معنای «طول» به صورت کلاسیک آن را بی استفاده می کند! پس باید چه کرد؟
این پارادوکس توجه بنوآ مندلبرو (Benoit Mandelbrot) ، ریاضیدان فرانسوی را جلب کرد. او در سال ۱۹۶۷ مقالهای معروف با عنوان «خط ساحلی بریتانیا چقدر طول دارد؟ خودشباهتی آماری و بُعد کسری» منتشر کرد. اون دریافت که اشکال طبیعی مانند خط ساحلی، طول دقیقی در معنای کلاسیک ندارند. این اشکال دارای خودشباهتی هستند؛ یعنی الگوهای مشابهی در مقیاسهای مختلف ظاهر میشوند. مندلبرو مفهوم بُعد فرکتالی را برای اندازهگیری این پیچیدگی معرفی کرد.
برای یک خط صاف (یک بعدی)، بُعد آن برابر با ۱ است.
برای یک صفحه (دو بعدی)، بُعد آن ۲ است.
اما بعد خط ساحلی بریتانیا بین خط و صفحه است!! مقدار اندازه گیری شده ۱.۳۳ است. اما یافتن بعد فقط محدود به چنین موجودیت های جغرافیایی نمی شود. هر چیزی اطراف ما یک بعد دارد حتی زبان! در قسمت های بعدی در مورد بعد «ماشین ها» و «ساختار های اطلاعاتی» بیشتر صحبت می کنیم!
🔵عصر ماشین های با ابعاد فراکتالی!🔵
آن که پرنقش زد این دایره مینایی کس ندانست که در گردش پرگار چه کرد (حافظ)
در بخش پیشین از «بعد» سخن گفتیم از فراکتالها، این سایههای اسرارآمیز در مرز میان نظم و آشوب. اما اکنون، بیایید فراتر رویم. «بعد»، میتواند از دیدگاهی عمومی تر هم دیده شود. بگذارید آن را در دل پویایی ببینیم: در ماشینهایی که نه تنها میاندیشند، بلکه انتخاب میکنند.
فرض کنید جهانی را داریم که در آن هر لحظه، آینده ی دقیقاً مشخص دارد؛ آیندهای که با بیرحمی ریاضی تعیین شده است. در چنین جهانی، شما آزادی ندارید. تنها یک مسیر است که باید آن را پیمود. این همان دنیای ماشینهای متعین (deterministic automata) است، اتوماتهایی که بدون تردید و بدون رؤیا، از یک وضعیت به وضعیت بعدی میخزند. شما قفل شدهاید. در اسارت علیت. شکل زیر یک مثال از چنین حالتی است:
آن که پرنقش زد این دایره مینایی کس ندانست که در گردش پرگار چه کرد (حافظ)
در بخش پیشین از «بعد» سخن گفتیم از فراکتالها، این سایههای اسرارآمیز در مرز میان نظم و آشوب. اما اکنون، بیایید فراتر رویم. «بعد»، میتواند از دیدگاهی عمومی تر هم دیده شود. بگذارید آن را در دل پویایی ببینیم: در ماشینهایی که نه تنها میاندیشند، بلکه انتخاب میکنند.
فرض کنید جهانی را داریم که در آن هر لحظه، آینده ی دقیقاً مشخص دارد؛ آیندهای که با بیرحمی ریاضی تعیین شده است. در چنین جهانی، شما آزادی ندارید. تنها یک مسیر است که باید آن را پیمود. این همان دنیای ماشینهای متعین (deterministic automata) است، اتوماتهایی که بدون تردید و بدون رؤیا، از یک وضعیت به وضعیت بعدی میخزند. شما قفل شدهاید. در اسارت علیت. شکل زیر یک مثال از چنین حالتی است:
اما در جهانی دیگر، در ساختاری دیگر از ماشینها، «آزادی» (انتخاب آزاد) از تارهای علیت سر برمیکشد. در اینجا، در هر نقطه میتوانید بایستید یا حرکت کنید، انتخاب کنید یا نکنید. این همان آزادی است: جایی که امکان معنا مییابد. ساده ترین مثال آن شکل زیر است: در اینجا زبان ما فقط دو نماد ۰ و ۱ دارد و دو حالت برای حرکت بین آن ها:
و آنگاه، نوعی میانجی، میان این دو جهان میزاید: اتوماتای جابجایی با نسبت طلایی.(golden mean shift automata) نه کاملاً آزاد، نه کاملاً مقید. گاه انتخاب دارید، گاه ندارید. چیزی شبیه به ساحت وجود ما، در مرز میان تقدیر و اراده. در شکل زیر ساده ترین نمونه ی اتوماتای طلایی را می بنید (که قبلا هم آن را بررسی کردیم)
اگر مسیرهای ممکن را بُعد بنامیم، پس ماشینهای متعین بُعدشان یک است: یک مسیر، یک انتخاب. اتومات دومی که بررسی کردیم بُعدش دو است: در آن هر حالت دو مسیر پیش روی شماست: در هر حالت هم می توانید در آنجا بمانید یا به حالت دیگر بروید. اما در اتوماتای نسبت طلایی، در یک حالت شما دو انتخاب دارید اما در حالت دیگر حرکت کاملا متعین است: «بُعد» (یا درجه ی انتخاب) در میان یک و دو است یک مقدار کسری یا به زبان دیگر فراکتالی. برای محاسبه «بعد» باید پرسید: در هر تغییر بر روی اتومات ها فضای حالت ها به چه نرخی رشد می کند! نرخ این رشد از قضا برابر با اولین مقدار ویژه (eigenvalue) ماتریس جابجایی اتومات (transition matrix) است.و این نرخ همان عدد طلاییست. ۱.۶۱۸۰. بنابراین بعد چنین ماشینی عدد طلایی است!
در حقیقت، آنچه ما «بُعد» مینامیم، چیزی نیست جز آنتروپی؛ میزان آزادی، میزان پیچیدگی یا نسبت تقدیر و اراده: نسبت آزادی و اسارت. و همانگونه که پیشتر گفتیم، آنتروپی صرفاً بینظمی نیست. آنتروپی، هندسهی آزادیست. نقشهی مرموزیست که نشان میدهد در کجا میتوان بود و در کجا نه.
زبان ماشینها نیز، زبان همین هندسه است. ما در نظریهی زبانها و اتوماتا، زبانهایی را تعریف می کنیم که اساس تمامی زبان های برنامه نویسی و ماشینی است. شما به یاد دارید که می توان ماشین هایی ساخت که زبان های ساده ای مانند (01)* یا تکرار 01 را ایجاد کنند ( regular expressions). در این نوع زبان ها احتمال رفتن از یک نماد به دیگری شکل های پیچیده تری را هم می سازند (زبان های حافظه دار و در نهایت ماشین تورینگ). در دسته ی زبان هایی که حرکت بین نماد های آن (در مثال بالا 0 , 1) احتمالاتی است ما با توالی های مختلفی مواجه هستیم که برخی از بقیه محتمل ترند. اگر حتی کلی تر به این موضوع نگاه کنید می توانید زبان های انسانی را هم توالی احتمالاتی از کلمات بدانید!
در حقیقت، آنچه ما «بُعد» مینامیم، چیزی نیست جز آنتروپی؛ میزان آزادی، میزان پیچیدگی یا نسبت تقدیر و اراده: نسبت آزادی و اسارت. و همانگونه که پیشتر گفتیم، آنتروپی صرفاً بینظمی نیست. آنتروپی، هندسهی آزادیست. نقشهی مرموزیست که نشان میدهد در کجا میتوان بود و در کجا نه.
زبان ماشینها نیز، زبان همین هندسه است. ما در نظریهی زبانها و اتوماتا، زبانهایی را تعریف می کنیم که اساس تمامی زبان های برنامه نویسی و ماشینی است. شما به یاد دارید که می توان ماشین هایی ساخت که زبان های ساده ای مانند (01)* یا تکرار 01 را ایجاد کنند ( regular expressions). در این نوع زبان ها احتمال رفتن از یک نماد به دیگری شکل های پیچیده تری را هم می سازند (زبان های حافظه دار و در نهایت ماشین تورینگ). در دسته ی زبان هایی که حرکت بین نماد های آن (در مثال بالا 0 , 1) احتمالاتی است ما با توالی های مختلفی مواجه هستیم که برخی از بقیه محتمل ترند. اگر حتی کلی تر به این موضوع نگاه کنید می توانید زبان های انسانی را هم توالی احتمالاتی از کلمات بدانید!