دکتر ثابت فرد - دانشکده معماری arch
هوش مصنوعی و الگوریتمهای مولد در ایده پردازی طراحی معماری
دکتر مجتبی ثابتفرد
استادیار دانشکده معماری دانشگاه تهران
خلاصه سخنرانی
- تفاوت ماهوی: او بین الگوریتمهای مبتنی بر قاعده که مانند ذهن انسان مرحلهبهمرحله و منطقی عمل میکنند و یادگیری ماشین که بر اساس دادههای انبوه و احتمالات کار میکند، تمایز قائل شد.
- خروجیها: خروجی یادگیری ماشین معمولاً تصاویر دوبعدی و پیکسلی است که فاقد معنای ساختاری هستند، در حالی که الگوریتمهای مبتنی بر قاعده خروجیهای قطعی با اجزا و سازماندهی مشخص ارائه میدهند.
- کاربرد در طراحی: یادگیری ماشین برای ایدهپردازی اولیه و تفکر واگرا مناسب است، اما برای مراحل اجرایی و فاز ۲، الگوریتمهای قاعدهمند کارآمدتر هستند.
- نقش معمار: هوش مصنوعی به دلیل کار با زبان انسانی، نقش طراح را کمرنگ کرده و حتی به کارفرما اجازه دخالت مستقیم میدهد، در حالی که الگوریتمهای قاعدهمند به دانش تخصصی طراح نیاز دارند.
متن کامل سخنرانی
مطلبی که آماده کردم یه مقالهایه که مشترک بین بنده و دکتر اردکانی بود البته سال ۴۰۱ منتشر شد اون اوایلی که هوش مصنوعی رونق خودش رو پیدا میکرد و الان بعضی از مطالبش آپدیت شده و خیلی از مطالب سر جاشون مونده میخوام یه مقایسهای بکنم بین الگوریتمهای مبتنی بر قاعده یا rule-based و هوش مصنوعی که مبتنی بر یادگیری ماشین هست. الان وقتی ما میگیم هوش مصنوعی به طور عمومی یا AI منظورمون اون مستطیل پررنگه. منظورمون روشها یا در واقع پلتفرمهاییه که بر اساس یادگیری ماشین کار میکنن که داخل اون زیرمجموعههایی رو داریم مثل یادگیری عمیق، مثل generative AI، مثل LLMها و الگوریتمهای مختص خودشون. اما اون طرف هم الگوریتمهای دیگهای رو داریم که یه مقدار زودتر از هوش مصنوعی به معماری راه پیدا کردن و رونق پیدا کردن. اینها رو از چند جنبه با همدیگه مقایسه میکنم.
هوش مصنوعی به ما چنین چیزهایی میده، البته اون موقع میداد، الان بهتر از اینا میده. ولی تصاویرو نگه داشتم به خاطر اینکه میخوام ماهیت رو مقایسه کنم، نمیخوام خروجیها رو مقایسه کنم. بر اساس ماهیتشون میخوام بگم هر کدوم کجاها و چه جور کمکهایی به ما میکنه. machine learning اینها رو به ما میده و الگوریتمهای مبتنی بر قاعده یعنی الگوریتمهایی که ما مینویسیمش (مای طراح) به صورت مرحله به مرحله و سلسله مراتبی به ما گزینههای مختلف و راهحلای مختلفی رو میتونن بدن. اول الگوریتمهای مبتنی بر قاعده رو بگم بعد machine learning رو بگم و بعد مقایسه کنم.
الگوریتمهای مبتنی بر قاعده رو به معنی اون الگوریتمهایی که بر اساس «اگر-آنگاه» مینویسیم میگم: یعنی ما در واقع به کامپیوتر میگیم تو این شرایط این کار رو بکن، بعد این کار، بعد این کار. یه الگوریتمو کامل مینویسیم و به ما یه سری خروجیهایی میده که میتونیم تو مراحل مختلف معماری استفاده کنیم. مثل مثلاً shape grammar، cellular automata، L-systemها، Agent-basedها و الگوریتمهای دیگه. این الگوریتمها به این صورت کار میکنن: مرحله به مرحله گام به گام مثل یک طراح مثل یک انسان طراح که داره فکر میکنه روند فکریش رو گام به گام مدل میکنیم توی کامپیوتر و خروجی که میگیریم تقریباً شبیه خروجی یه آدم هست با اون طرز فکر نه با هر طرز فکری. یعنی با اون تعریف مسئله و با اون شیوهای که برنامه نویس براش تعیین کرده بوده. نقش انسان توی اینور الگوریتمها چیه؟ ما وقتی داریم طراحی میکنیم قراره از اهداف طراحی برسیم به یک سری محصولات طراحی. توی مراحل انتضاعش، توی مراحل تعریف مسئله و توی مدل پارامتریکی که به ما خروجیها رو میده انسان طراح یا طراحی که در واقع برنامهنویسه نقش داره و دخالت میکنه. اینجا میاد اصلاح میکنه، اونجا میاد قضاوت میکنه، دوباره بر اساس قضاوتی که کرد الگوریتم رو اصلاح میکنه، بر اساس اصلاحش باز خروجیا تغییر میکنه، تا یواش یواش برسه به اون خروجیهایی که مدنظر خودش هست.
الگوریتمهایی که بر اساس machine learning هستن یه جور دیگه کار میکنن. کاملاً برعکس کار میکنن. تو machine learning فرقی نمیکنه که شما براش چی تعیین کنید، یا در واقع شما براش چیزی تعیین نمیکنید، بلکه به این صورته که بهش داده انبوه میدید، بهش میگید خودت برو بر اساس اینها ببین باید چیکار کنی. مای طراح دیگه اونجا تو فرایندش دخیل نیستیم. ما نمیتونیم بهش بگیم اول این کارو بکن یا این کارو نکن. فقط میتونیم بهش بگیم این خروجی درسته این غلطه. حالا خودت پیدا کن که فرقش چیه، روشش چیه و خروجیها رو به من بده. از یادگیری ماشین باید پلتفرم نام ببرم، مثل Dall-E، Midjourney، Stable Diffusion، و غیره.
توی یادگیری ماشین ما یه تصویری داریم که این تصویر تجزیه میشه به یک تعداد زیادی پارامتر. چند ده هزار چند ده میلیون ممکنه باشه. این پارامترها تحت یه لایه هایی تصویر رو تجزیه میکنن. خصوصیتهایی که شاید برای ما بیمعنی باشه رو تحلیل میکنن و به این نتیجه میرسن که این تصویر یک پرنده هست یا نیست. یا به این نتیجه میرسن که چیه. مثلاً پرندهست، گربهست، ماهیه یا چیه. برعکس این مسیر میشه تولید تصویر. میریم به Midjourney میگیم تصویر یه پرنده رو بده. اون این مسیرو برعکس طی میکنه میرسه به پرنده. نکتهای که هست اینه که این مسیر در واقع یه مسیر احتمالاتیه. یعنی توش ما دیگه مرحله نداریم. نمیتونیم بهش بگیم پرنده اینجوریه که یه بدن یه سر یه منقار دو تا بال. خودش تصمیم میگیره که چی پرندهست چی نیست. ما بعداً هم نمیتونیم بفهمیم بر چه اساسی این کارو کرد. به من اسب نمیده، به من معماری اسلامی نمیده، یه چیزی میده که از نظر من انسان خیلی شبیه به اون چیزیه که خواستم. ولی واقعاً اون نیست و من اگه مثلاً این اسب رو بچرخونم دیگه اونور نداره چون یه تصویر دو بعدیه. یا مثلاً این تصویرو بخوام بهش بگم پلانش رو به من بده به این راحتی نمیده. از دیاگرام بهش نرسیده، از نمونه تصویر رسیده.
خب این یه تفاوت اساسیه بین این دو تا (rule-based و machine learning). یکی فرایند رو مدل می کنه، یکی خروجی رو بدون فرایند. از چهار تا جنبه مختلف مقایسه کردم که بگم این دو تا کجاها میتونن به ما کمک کنن یا با چه ملاحظاتی میتونن کمک بکنن. اول خروجیها رو بگم. وقتی با یادگیری ماشین کار میکنیم، خروجی که به ما میده یه تصویر دو بعدیه. یه مجموعه پیکسله. اگه بخوایم بهش بگیم مثلاً پنجرهشو بزرگ کن در حالت عادی نمیتونه. ممکنه یه الگوریتمهای جدیدی رو روش سوار کنیم که اونا برن پنجره رو توش تشخیص بدن و بعد بتونن پنجره رو اصلاح کنن. اما توی الگوریتمهای rule-based شما اصلاً پنجره رو از صفر تعریف کردین براش. بهش گفتین اینکه اتاقته، یه متر از اینور یه متر از اونور بگیر، این پنجرته. بعداً بخوایم کوچیک بزرگ کنیم به جای یه متر میگیم مثلاً نیم متر بگیر ۲ متر بگیر. اونجا از ابتدا ترسیمها مثل مثلاً یه کار BIM معنیدار و سازماندهی شده هستن. دومین تفاوت اینه که توی یادگیری ماشین ما بر اساس احتمالات کار میکنیم. بنابراین همه چیز تخمینیه البته این تخمین روز به روز داره قویتر میشه. یعنی ۱۰۰ نمیشه هرچند ۹۹ میشه ۹۹.۹ میشه. اما الگوریتمهای مبتنی بر قاعده به ما خیلی قطعی خروجی میدن. خروجی های مبتنی بر machine learning خیالانگیزن، تصویرن. واقعاً آدم میبینه و یه چیزی فکر میکنه. اون دومیا خیلی منطقی به ما پاسخ میدن.
از جنبه روند طراحی، منظورم فازبندی 0، 1 و 2 هست، چیزی که مهمه اینه که توی یادگیری ماشین ما محصول نهایی داریم که فرایند نداره. این محصول هم بیشتر وقتا به خاطر اینکه هر بار ازش سؤال میکنیم یه پاسخ جدید میده در واقع شبیه تفکر واگراست. توی طراحی اولیه یا ایده پردازی یا طراحی کانسپتمون به ما کمک میکنه. اما الگوریتمهای مبتنی بر قاعده بقیه جاها به ما کمک میکنن. ما میتونیم یه طراحی یک خطی رو بگیریم بر اساس یه الگوریتم مبتنی بر قاعده تبدیلش کنیم به یه ترسیم فاز دو یا یه مدل BIM. نوع مسئلههایی که این دو تا میتونن حل کنن هم متفاوته. موقعی که ابهاممون خیلی زیاده به طور کلی بهتره بریم سراغ یادگیری ماشین و موقعی که تقریباً تکلیفمون روشن شد میتونیم بریم سراغ اون یکی الگوریتمها.
یه تفاوت دیگه تفاوت عملیاتیه. اگر بخوایم خودمون یه الگوریتمی بنویسیم که به ما خروجیهای معماری بده یا اگر بخوایم یه پلتفرم machine learning بنویسیم که بهمون خروجیهای معماری بده، چه اشخاصی رو و چه امکاناتی رو میخوایم برای استفاده ازشون؟ خب برای rule-based یه رایانه شخصی هم جواب میده. برای machine learning اگه بخوایم به اون تخمین 99.999 درصد برسیم سخت افزار خیلی خیلی قوی میخوایم، که مثلاً گوگل داره یا مایکروسافت داره، کس دیگه ای نداره. از نظر زمان با rule-based شما برنامهنویسی رو که بکنید معمولاً خروجی در حد در فاصله چند دقیقه به دست میاد. اما با machine learning یه زمان زیادی رو لازم داریم برای اینکه سیستم رو آموزش بدیم. برنامه نویسیشو از صفر اگر بخوایم انجام بدیم یادگیری ماشین خیلی کار پیچیدهایه. یه تیم مهندسی نرمافزار میخواد. ولی توی مبتنی بر قاعده میتونیم خودمون بنویسیم. از جنبه بهره بردارش یا کسی که از این الگوریتمها استفاده میکنه، وقتی که با یادگیری ماشین طرف هستیم همه میتونن چون با زبان انسان کار میکنه حتی خود کارفرما میتونه یعنی نقش مای طراح رو کمرنگ میکنه ولی توی الگوریتمهای مبتنی بر قاعده در واقع طراحها این کار رو میکنن طراحهایی که یه کمی الگوریتم نویسی هم بلد باشن.
این عمده تفاوتها بود. توی نتیجهگیری هم نکاتی که گفتیم در واقع جمعبندی از محصول محور بودن و فرایند محور بودن؛ بلک باکس بودن و گلس باکس بودن؛ بر مبنای خروجی بودن یا مدل کردن فرآینده. نکته دوم درباره اینه که کجاها ازش استفاده بکنیم و نکته سوم درباره اینکه چجوری یا در واقع قدرت اجرایی دست کی باشه؟ چه کسی بتونه استفاده بکنه؟ شما به عنوان یه طراح میتونید میتونید یه الگوریتم مبتنی بر قاعده بنویسید برای پروژه خودتون برای طرح خودتون و اختصاصی اون طرحهم هست خیلی نمیتونید تعمیم بدید. از یادگیری ماشین وقتی استفاده میکنید خیلی جنراله. شما میتونید استفاده کنید کارفرما هم میتونه استفاده کنه. منتها مسئله اینه که اگه بخواین خروجیهای خیلی خوب داشته باشین احتمالاً باید از اون چیزی استفاده کنید که یه شرکت نرمافزاری و یک شرکت سخت افزاری آماده کرده. احتیاج به یه امکاناتی داره که معمولاً توی یک دفتر معماری نیست. ممنونم متشکرم.
هوش مصنوعی به ما چنین چیزهایی میده، البته اون موقع میداد، الان بهتر از اینا میده. ولی تصاویرو نگه داشتم به خاطر اینکه میخوام ماهیت رو مقایسه کنم، نمیخوام خروجیها رو مقایسه کنم. بر اساس ماهیتشون میخوام بگم هر کدوم کجاها و چه جور کمکهایی به ما میکنه. machine learning اینها رو به ما میده و الگوریتمهای مبتنی بر قاعده یعنی الگوریتمهایی که ما مینویسیمش (مای طراح) به صورت مرحله به مرحله و سلسله مراتبی به ما گزینههای مختلف و راهحلای مختلفی رو میتونن بدن. اول الگوریتمهای مبتنی بر قاعده رو بگم بعد machine learning رو بگم و بعد مقایسه کنم.
الگوریتمهای مبتنی بر قاعده رو به معنی اون الگوریتمهایی که بر اساس «اگر-آنگاه» مینویسیم میگم: یعنی ما در واقع به کامپیوتر میگیم تو این شرایط این کار رو بکن، بعد این کار، بعد این کار. یه الگوریتمو کامل مینویسیم و به ما یه سری خروجیهایی میده که میتونیم تو مراحل مختلف معماری استفاده کنیم. مثل مثلاً shape grammar، cellular automata، L-systemها، Agent-basedها و الگوریتمهای دیگه. این الگوریتمها به این صورت کار میکنن: مرحله به مرحله گام به گام مثل یک طراح مثل یک انسان طراح که داره فکر میکنه روند فکریش رو گام به گام مدل میکنیم توی کامپیوتر و خروجی که میگیریم تقریباً شبیه خروجی یه آدم هست با اون طرز فکر نه با هر طرز فکری. یعنی با اون تعریف مسئله و با اون شیوهای که برنامه نویس براش تعیین کرده بوده. نقش انسان توی اینور الگوریتمها چیه؟ ما وقتی داریم طراحی میکنیم قراره از اهداف طراحی برسیم به یک سری محصولات طراحی. توی مراحل انتضاعش، توی مراحل تعریف مسئله و توی مدل پارامتریکی که به ما خروجیها رو میده انسان طراح یا طراحی که در واقع برنامهنویسه نقش داره و دخالت میکنه. اینجا میاد اصلاح میکنه، اونجا میاد قضاوت میکنه، دوباره بر اساس قضاوتی که کرد الگوریتم رو اصلاح میکنه، بر اساس اصلاحش باز خروجیا تغییر میکنه، تا یواش یواش برسه به اون خروجیهایی که مدنظر خودش هست.
الگوریتمهایی که بر اساس machine learning هستن یه جور دیگه کار میکنن. کاملاً برعکس کار میکنن. تو machine learning فرقی نمیکنه که شما براش چی تعیین کنید، یا در واقع شما براش چیزی تعیین نمیکنید، بلکه به این صورته که بهش داده انبوه میدید، بهش میگید خودت برو بر اساس اینها ببین باید چیکار کنی. مای طراح دیگه اونجا تو فرایندش دخیل نیستیم. ما نمیتونیم بهش بگیم اول این کارو بکن یا این کارو نکن. فقط میتونیم بهش بگیم این خروجی درسته این غلطه. حالا خودت پیدا کن که فرقش چیه، روشش چیه و خروجیها رو به من بده. از یادگیری ماشین باید پلتفرم نام ببرم، مثل Dall-E، Midjourney، Stable Diffusion، و غیره.
توی یادگیری ماشین ما یه تصویری داریم که این تصویر تجزیه میشه به یک تعداد زیادی پارامتر. چند ده هزار چند ده میلیون ممکنه باشه. این پارامترها تحت یه لایه هایی تصویر رو تجزیه میکنن. خصوصیتهایی که شاید برای ما بیمعنی باشه رو تحلیل میکنن و به این نتیجه میرسن که این تصویر یک پرنده هست یا نیست. یا به این نتیجه میرسن که چیه. مثلاً پرندهست، گربهست، ماهیه یا چیه. برعکس این مسیر میشه تولید تصویر. میریم به Midjourney میگیم تصویر یه پرنده رو بده. اون این مسیرو برعکس طی میکنه میرسه به پرنده. نکتهای که هست اینه که این مسیر در واقع یه مسیر احتمالاتیه. یعنی توش ما دیگه مرحله نداریم. نمیتونیم بهش بگیم پرنده اینجوریه که یه بدن یه سر یه منقار دو تا بال. خودش تصمیم میگیره که چی پرندهست چی نیست. ما بعداً هم نمیتونیم بفهمیم بر چه اساسی این کارو کرد. به من اسب نمیده، به من معماری اسلامی نمیده، یه چیزی میده که از نظر من انسان خیلی شبیه به اون چیزیه که خواستم. ولی واقعاً اون نیست و من اگه مثلاً این اسب رو بچرخونم دیگه اونور نداره چون یه تصویر دو بعدیه. یا مثلاً این تصویرو بخوام بهش بگم پلانش رو به من بده به این راحتی نمیده. از دیاگرام بهش نرسیده، از نمونه تصویر رسیده.
خب این یه تفاوت اساسیه بین این دو تا (rule-based و machine learning). یکی فرایند رو مدل می کنه، یکی خروجی رو بدون فرایند. از چهار تا جنبه مختلف مقایسه کردم که بگم این دو تا کجاها میتونن به ما کمک کنن یا با چه ملاحظاتی میتونن کمک بکنن. اول خروجیها رو بگم. وقتی با یادگیری ماشین کار میکنیم، خروجی که به ما میده یه تصویر دو بعدیه. یه مجموعه پیکسله. اگه بخوایم بهش بگیم مثلاً پنجرهشو بزرگ کن در حالت عادی نمیتونه. ممکنه یه الگوریتمهای جدیدی رو روش سوار کنیم که اونا برن پنجره رو توش تشخیص بدن و بعد بتونن پنجره رو اصلاح کنن. اما توی الگوریتمهای rule-based شما اصلاً پنجره رو از صفر تعریف کردین براش. بهش گفتین اینکه اتاقته، یه متر از اینور یه متر از اونور بگیر، این پنجرته. بعداً بخوایم کوچیک بزرگ کنیم به جای یه متر میگیم مثلاً نیم متر بگیر ۲ متر بگیر. اونجا از ابتدا ترسیمها مثل مثلاً یه کار BIM معنیدار و سازماندهی شده هستن. دومین تفاوت اینه که توی یادگیری ماشین ما بر اساس احتمالات کار میکنیم. بنابراین همه چیز تخمینیه البته این تخمین روز به روز داره قویتر میشه. یعنی ۱۰۰ نمیشه هرچند ۹۹ میشه ۹۹.۹ میشه. اما الگوریتمهای مبتنی بر قاعده به ما خیلی قطعی خروجی میدن. خروجی های مبتنی بر machine learning خیالانگیزن، تصویرن. واقعاً آدم میبینه و یه چیزی فکر میکنه. اون دومیا خیلی منطقی به ما پاسخ میدن.
از جنبه روند طراحی، منظورم فازبندی 0، 1 و 2 هست، چیزی که مهمه اینه که توی یادگیری ماشین ما محصول نهایی داریم که فرایند نداره. این محصول هم بیشتر وقتا به خاطر اینکه هر بار ازش سؤال میکنیم یه پاسخ جدید میده در واقع شبیه تفکر واگراست. توی طراحی اولیه یا ایده پردازی یا طراحی کانسپتمون به ما کمک میکنه. اما الگوریتمهای مبتنی بر قاعده بقیه جاها به ما کمک میکنن. ما میتونیم یه طراحی یک خطی رو بگیریم بر اساس یه الگوریتم مبتنی بر قاعده تبدیلش کنیم به یه ترسیم فاز دو یا یه مدل BIM. نوع مسئلههایی که این دو تا میتونن حل کنن هم متفاوته. موقعی که ابهاممون خیلی زیاده به طور کلی بهتره بریم سراغ یادگیری ماشین و موقعی که تقریباً تکلیفمون روشن شد میتونیم بریم سراغ اون یکی الگوریتمها.
یه تفاوت دیگه تفاوت عملیاتیه. اگر بخوایم خودمون یه الگوریتمی بنویسیم که به ما خروجیهای معماری بده یا اگر بخوایم یه پلتفرم machine learning بنویسیم که بهمون خروجیهای معماری بده، چه اشخاصی رو و چه امکاناتی رو میخوایم برای استفاده ازشون؟ خب برای rule-based یه رایانه شخصی هم جواب میده. برای machine learning اگه بخوایم به اون تخمین 99.999 درصد برسیم سخت افزار خیلی خیلی قوی میخوایم، که مثلاً گوگل داره یا مایکروسافت داره، کس دیگه ای نداره. از نظر زمان با rule-based شما برنامهنویسی رو که بکنید معمولاً خروجی در حد در فاصله چند دقیقه به دست میاد. اما با machine learning یه زمان زیادی رو لازم داریم برای اینکه سیستم رو آموزش بدیم. برنامه نویسیشو از صفر اگر بخوایم انجام بدیم یادگیری ماشین خیلی کار پیچیدهایه. یه تیم مهندسی نرمافزار میخواد. ولی توی مبتنی بر قاعده میتونیم خودمون بنویسیم. از جنبه بهره بردارش یا کسی که از این الگوریتمها استفاده میکنه، وقتی که با یادگیری ماشین طرف هستیم همه میتونن چون با زبان انسان کار میکنه حتی خود کارفرما میتونه یعنی نقش مای طراح رو کمرنگ میکنه ولی توی الگوریتمهای مبتنی بر قاعده در واقع طراحها این کار رو میکنن طراحهایی که یه کمی الگوریتم نویسی هم بلد باشن.
این عمده تفاوتها بود. توی نتیجهگیری هم نکاتی که گفتیم در واقع جمعبندی از محصول محور بودن و فرایند محور بودن؛ بلک باکس بودن و گلس باکس بودن؛ بر مبنای خروجی بودن یا مدل کردن فرآینده. نکته دوم درباره اینه که کجاها ازش استفاده بکنیم و نکته سوم درباره اینکه چجوری یا در واقع قدرت اجرایی دست کی باشه؟ چه کسی بتونه استفاده بکنه؟ شما به عنوان یه طراح میتونید میتونید یه الگوریتم مبتنی بر قاعده بنویسید برای پروژه خودتون برای طرح خودتون و اختصاصی اون طرحهم هست خیلی نمیتونید تعمیم بدید. از یادگیری ماشین وقتی استفاده میکنید خیلی جنراله. شما میتونید استفاده کنید کارفرما هم میتونه استفاده کنه. منتها مسئله اینه که اگه بخواین خروجیهای خیلی خوب داشته باشین احتمالاً باید از اون چیزی استفاده کنید که یه شرکت نرمافزاری و یک شرکت سخت افزاری آماده کرده. احتیاج به یه امکاناتی داره که معمولاً توی یک دفتر معماری نیست. ممنونم متشکرم.
