شیرین کاری کارت ورزشگاه و هنر برنامه نویسی برای جمعیت

با نزدیک شدن به فصل کاسه کالج، طرفداران فوتبال در سراسر کشور، نه تنها با اقدام در زمین، بلکه همچنین با “حذف کارت” پیچیده که توسط اعضای تماشاگران استادیوم انجام می شود، خیره خواهند شد. کار جمعی بسیار هماهنگ قادر به تولید تصاویر دقیقی است که شبیه تصاویر پیکسلی روی صفحه نمایش کامپیوتر است – و تقریباً به همان شیوه کدگذاری شده اند.

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

شیرین کاری کارت ورزشگاه و هنر برنامه نویسی برای جمعیت
با مطبوعات

برگرفته از کد به شادی: چرا همه باید برنامه نویسی کمی یاد بگیرند؟ توسط مایکل ال لیتمن منتشر شده توسط MIT Press. حق چاپ © ۲۰۲۳ توسط Michael L Littman. تمامی حقوق محفوظ است.


“آبی بده!”

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

  • دستورالعمل ها را با دقت گوش دهید

  • بالای کارت را در سطح چشم نگه دارید (نه بالای سرتان)

  • رنگ مشخص شده را به سمت قسمت (نه رو به شما) نگه دارید

  • پس از اتمام شیرین کاری، کارت ها را به راهرو منتقل کنید (کارت ها را پاره نکنید)

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

سپس رویداد اصلی می آید، که برای یک فرد خاص در جمعیت، می تواند دنباله دستور باشد:

  1. آبی

  2. آبی

  3. آبی

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

شیرین کاری های کارتی به عنوان یک فعالیت با مشارکت جمعیت در ورزش های کالج در دهه ۱۹۲۰ آغاز شد. آنها در دهه ۱۹۷۰ بسیار کمتر محبوب شدند، زمانی که عموماً توافق شد که هرکس باید کار خودش را انجام دهد، مرد. با این حال، در دهه ۱۹۵۰، میل واقعی برای ایجاد نمایشگرهای دقیق تر وجود داشت. جوخه های تشویق، شیرین کاری ها را با دست طراحی می کردند، سپس دستورالعمل های فردی را برای هر یک از هزار صندلی آماده می کردند. برای اختصاص چنین انرژی باید واقعاً تیم خود را دوست داشته باشید. چند مدرسه در دهه ۱۹۶۰ فکر کردند که آن چیزهای کامپیوتری جدید ممکن است برای حذف برخی از مشقت‌های آماده‌سازی آموزش مفید باشد و برنامه‌هایی را طراحی کردند تا دنباله‌ای از تصاویر دست‌کشیده شده را به دستورالعمل‌های فردی برای هر یک از شرکت‌کنندگان تبدیل کنند. با کمک کامپیوتر، افراد می‌توانند توالی‌های فردی غنی‌تر را برای هر پیکسل شخصی تولید کنند که می‌گوید چه زمانی یک کارت را بلند کنیم، چه رنگی را برداریم، و چه زمانی آن را زمین بگذاریم یا به کارت دیگری تغییر دهیم. بنابراین، در حالی که مثال پرسشنامه از بخش قبل در مورد افرادی بود که دنباله های دستوری را برای رایانه می سازند، این مثال در مورد ساخت توالی دستورات رایانه ای است. مردم به دنبال و پشتیبانی کامپیوتر برای خودکار کردن فرآیند ایجاد توالی دستورات امکان ایجاد شیرین کاری های دقیق تر را فراهم می کند. که منجر به دنباله ای از دستورات یک شرکت کننده به نظر می رسد:

  • تا ۰۰۱ سفید

  • ۰۰۳ آبی

  • ۰۰۵ سفید

  • ۰۰۶ قرمز

  • ۰۰۸ سفید

  • ۰۱۳ آبی

  • ۰۱۵ سفید

  • ۰۲۱ پایین

  • تا ۰۲۲ سفید

  • ۰۳۵ پایین

  • تا ۰۳۶ سفید

  • ۰۴۳ آبی

  • ۰۴۴ پایین

  • تا ۰۴۵ سفید

  • ۰۵۷ قرمز متالیک

  • ۰۷۰ پایین

بسیار خوب، خواندن دستورالعمل ها به اندازه دیدن محصول نهایی سرگرم کننده نیست – در این مثال واقعی، این بخشی از انیمیشن “S” استنفورد است. برای اجرای این دستورات به صورت هماهنگ، یک گوینده در استادیوم شماره مرحله (“چهل و یک!”) را صدا می کند و هر شرکت کننده می تواند از دستورالعمل های خود بگوید که چه کاری انجام دهد (“من هنوز کارت سفید را در دست دارم.” من ۳۶ را بلند کردم، اما دارم آماده می شوم که آن را با کارت آبی تعویض کنم که شمارش به ۴۳ اینچ رسید).

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

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

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

در واقع راه های زیادی برای میانگین رنگ ها وجود دارد. یک راه ساده این است که از این واقعیت استفاده کنید که هر نقطه رنگ در یک فایل تصویری به عنوان مقدار رنگ قرمز، سبز و آبی در آن ذخیره می شود. هر جزء رنگ به عنوان یک عدد کامل بین ۰ تا ۲۵۵ نشان داده می شود، که در آن ۲۵۵ انتخاب شده است زیرا این بزرگترین مقداری است که می توانید با هشت رقم باینری یا بیت ایجاد کنید. استفاده از مقادیر قرمز-آبی-سبز به خوبی کار می کند زیرا گیرنده های رنگ در چشم انسان رنگ های دنیای واقعی را به همین بازنمایی تبدیل می کنند. یعنی، حتی اگر بنفش مربوط به طول موج خاصی از نور است، چشمان ما آن را به عنوان یک ترکیب خاص از سبز، آبی و قرمز می بینند. همان ترکیب را به کسی نشان دهید تا بنفش را ببیند. بنابراین، برای جمع‌بندی یک گروه بزرگ از پیکسل‌ها، فقط مقدار آبی در آن پیکسل‌ها، مقدار قرمز در آن پیکسل‌ها و مقدار سبز در آن پیکسل‌ها را به طور میانگین به‌دست آورید. که اساسا کار می کند. اکنون، به نظر می‌رسد که به دلایل فیزیکی، ادراکی و مهندسی، با مجذور کردن مقادیر قبل از میانگین‌گیری و ریشه دو کردن مقادیر بعد از میانگین‌گیری، نتایج بهتری به دست می‌آورید. اما این در حال حاضر مهم نیست. نکته مهم این است که یک روش مکانیکی برای میانگین کردن یک دسته از نقاط رنگی وجود دارد تا یک نقطه واحد که رنگ آن خلاصه کننده گروه است به دست آید.

هنگامی که آن رنگ متوسط ​​تولید شد، کامپیوتر به راهی برای یافتن نزدیک ترین رنگ به کارت های موجود نیاز دارد. این بیشتر یک سینا سوخته است یا قرمز-نارنجی؟ یک روش معمولی (اگر ناقص) برای تقریب شباهت دو رنگ با استفاده از مقادیر قرمز-آبی-سبز آنها چیزی است که به عنوان فرمول فاصله اقلیدسی شناخته می شود. در اینجا به عنوان یک دنباله دستور به نظر می رسد:

  • تفاوت بین مقدار قرمز را در دو رنگ مربع بگیرید

  • تفاوت بین مقدار آبی را در دو رنگ مربع بگیرید

  • تفاوت بین مقدار سبز را در دو رنگ مربع بگیرید و سه مربع را با هم جمع کنید

  • جذر را بگیرید

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

شباهت بین این محاسبه فاصله و عملیات میانگین‌گیری رنگ، تقریباً یک تصادف است. گاهی اوقات یک ریشه مربع فقط یک جذر است.

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

این تغییر دیدگاه امکان واگذاری کنترل بیشتر فرآیند تولید توالی دستورات را به ماشین باز می کند. با توجه به شبکه ۲×۲ ما از فصل ۱، می توانیم از گفتن (ارائه دستورالعمل های صریح) به توضیح (ارائه مشوق های صریح) حرکت کنیم. به عنوان مثال، تنوعی از این مشکل انتخاب رنگ وجود دارد که بسیار سخت تر است و کار جالب تری را برای کامپیوتر فراهم می کند. تصور کنید که می‌توانیم کارت‌هایی را با هر رنگی که نیاز داریم چاپ کنیم، اما چاپخانه ما اصرار دارد که کارت‌ها را به صورت عمده سفارش دهیم. آنها فقط می توانند هشت رنگ کارت مختلف را در اختیار ما قرار دهند، اما ما می توانیم هر رنگی را که می خواهیم برای این هشت رنگ انتخاب کنیم. (هشت مقادیر مختلفی است که می‌توانیم با ۳ بیت بسازیم – بیت‌ها در محاسبات زیاد به دست می‌آیند.) بنابراین می‌توانیم آبی، سبز، آبی-سبز، آبی-بنفش، سروله، نیلی، آبی کادت و و را انتخاب کنیم. آسمان آبی، و یک موج اقیانوس زیبا را در هشت سایه آبی ارائه کنید. عالی!

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

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

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

این مقاله در ابتدا در Engadget در https://www.engadget.com/hitting-the-books-code-to-joy-michael-l-littman-mit-press-153036241.html?src=rss منتشر شد.


منبع: https://www.engadget.com/hitting-the-books-code-to-joy-michael-l-littman-mit-press-153036241.html?src=rss

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *