بایگانی برچسب: s

چیرگی زبان انگلیسی بر دنیای هوش مصنوعی، نگران‌کننده است.

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

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

هوش مصنوعی در خدمت انگلیسی‌زبان‌ها

در سال‌های اخیر، با ارائه مدل‌های زبانی که در تولید متن (Text Generation) و طبقه‌بندی متن (Text Classification) و خلاصه‌سازی متن (Text Summerization) می‌تونن به ما کمک کنند یک ویژگی کاملا مشهوده. این مدل‌ها عموما عمده داده‌ای که دیدن، به زبان انگلیسی بوده. مگر این که مدل، از مدل‌های بسیار بزرگ (مثل GPT-3 یا BLOOM) بوده باشه که باز هم چیزی در حدود ۹۶-۹۷ درصد این داده ورودی، انگلیسی بوده.

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

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

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

مشکلاتی که انگلیسی‌زبان‌ها مطرح کردند

سانسورشدگی در خروجی‌های مدل

مطمئنا در یک سال اخیر، شما هم با ChatGPT عزیز کار کردید. احتمالا هم خیلی وقت‌ها، متوجه شدید که وقتی ازش سوالی می‌کنید، به شما میگه «متاسفانه به عنوان یک مدل زبانی بزرگ قادر نیستم در فعالیت غیرقانونی به شما کمک کنم».

گرچه این مورد به ذات می‌تونه خوب باشه (با توجه به نداشتن محدودیت سنی در استفاده) اما خب من رو شدیدا یاد رمان ۱۹۸۴ میندازه، اونجایی که زبان انگلیسی رو طوری تغییر داده بودن که اگر کسی خلافش صحبت می‌کرد مجرم بود. بخواهیم یا نخواهیم، این ابزارها مثل اینترنت و سایر رسانه‌های اجتماعی در شکل‌گیری و جهت‌گیری افکار ما می‌تونن موثر باشند. به همین خاطر این حد از سانسورشدگی که هم در چت‌جی‌پی‌تی، هم در لاما (مدل بزرگ مِتا) و هم در بارد (مدل بزرگ گوگل) شاهدیم، عاقبت خوبی نداره.

جهت‌دار بودن خروجی‌های مدل‌های زبانی بزرگ

بیایید فرض کنیم که کودکی وجود داره که هر روز به اسم «ناهار» بهش یک غذای خاص داده شده و نتونسته غذایی جز اون رو در وعده «ناهار» تجربه کنه. مثلا هرروز ساعت ۱۲ ظهر به این کودک شما یک عدد ساندویچ هات‌داگ دادید. حالا نتیجه چی میشه؟

کافیه به این کودک لیستی از غذاها نشان بدیم و ازش بخواهیم که برای وعده ناهار امروز یکی رو انتخاب کنه. به نظرتون این کودک چه چیزی رو انتخاب می‌کنه؟

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

به همین خاطر هم مدل‌های زیادی وجود داره که افراد روی داده کمتر جهت‌دار (مثل داده‌هایی که از بریتانیکا و ویکی‌پدیا میشه به دست آورد) آموزش دادند. حتی مدل‌هایی مثل Pygmalion دقیقا به خاطر همین موضوع جهت‌دار نبودن و سانسور نداشتن، از فضاهایی مثل Google Colab منع شدن!

برای زبان فارسی چه کاری می‌تونیم بکنیم؟

و حالا بحث ما می‌رسه به زبان شیرین فارسی و این که چه کاری از دستمون برای این زبان برمیاد؟ ابتدا باید ببینیم که این مدل‌ها چطوری کار می‌کنن!

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

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

حالا سوال اینه که ما با این دانش، باید چی کار کنیم تا بتونیم زبان فارسی رو به چنین مدل‌هایی وارد کنیم؟

جمع‌آوری/تولید داده

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

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

راه دیگر، استفاده از روش جمع‌سپاری و درخواست از یک جامعه‌ست برای تولید داده مورد نظر. یعنی مثلا یک پلتفرم ایجاد کنیم و از مردم بخواهیم که مثلا هرکسی یک پاراگراف در مورد یه موضوعی بنویسه. به این شکل در مدت کوتاهی، می‌تونیم به یک حجم خوبی از داده برسیم (مثل کاری که Mozilla Common Voice انجام می‌ده).

خلاصه وقتی مشکل داده حل بشه، تقریبا همه چیز حله. ولی خب یک مساله دیگر هم هست که کمی بهش اشاره می‌کنم و امیدوارم در پست آینده بتونم سورپرایزتون کنم باهاش 😁

مدل‌های پایه

بعد از جمع‌آوری داده‌های مکفی، لازمه ذکر کنم که ما به مدل پایه هم نیاز داریم. مدل‌هایی مثل GPT-3 که امکان بازآموزی ندارند (چون اوپن سورس نیستند) و اگر داشته باشند هم این بازآموزی باید روی بستر OpenAI انجام بشه که طبیعتا خیلی گزینه منطقی و مناسبی نیست. مدل‌هایی مثل BLOOM یا Falcon 40B هم بسیار بزرگتر از این هستند که بتونیم حتی با داشتن حساب کاربری روی Google Colab Pro Plus آموزششون بدیم.

پس چی می‌مونه؟ مدل‌های کوچکتر که دقت خوبی دادند. مدل‌هایی مثل GPT-J, GPT-NeoX, LLaMa, … می‌تونن پرفرمنس خوبی در این زمینه داشته باشند. تلاش‌هایی در این جهت داره میشه و به زودی در موردش در همین بلاگ خواهم نوشت 🤩

سخن آخر

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

اما نکته اینه که در دنیای امروز، در سال ۱۴۰۲ خورشیدی، در ۲۰۲۳ میلادی یا هرچی که شما قبول دارید، حفظ زبان‌ها، خواه فارسی خواه عربی، خواه ترکی خواه کردی، مستلزم اینه که ماشین‌ها درک خوبی از اون زبان داشته باشند. به همین خاطر این پست بلاگ نوشته شد تا این نگرانی به گوش سایر افرادی که ممکنه دغدغه مشابه داشته باشند، برسه.

امیدوارم شاد و خندون و موفق باشید 🙂

Share

مصاحبه با محمدرضا حقیری، مهندس هوش مصنوعی – ابزارهای هوش مصنوعی ما را به جهانی هل می‌دهند که مردم در آن هوشمندانه‌تر کار می‌کنند، نه سخت‌تر

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

مصاحبه با محمدرضا حقیری، مهندس هوش مصنوعی

ما با محمدرضا حقیری، توسعه‌دهنده‌ای از ایران که هم‌اکنون مشغول کار بر روی یک مدل متن به تصویر متن‌باز به نام مانی است، صحبت کردیم.

او دانشش درباره فناوری‌هایی که برای توسعه این مدل استفاده کرده را با ما به اشتراک گذاشته است. هوش مصنوعی چندمدلی او، از Stable Diffusion و Dream Booth استفاده می‌کند.

برای درک بهتر مطلب، مثل همون متن اصلی، سوالات و نظرات اون‌ها رو بولد و پاسخ‌های خودم رو عادی نوشتم.

لطفا خودت رو برای خوانندگان ما معرفی کن. چه کارهایی کردی که به اینجا رسیدی؟ و چطور؟

من محمدرضا حقیری هستم، متولد ۹ خرداد ۱۳۷۵ (۳۰ می ۱۹۹۶) در تهران، ایران. من همیشه علاقه وافری به ساختن چیزهای مختلف داشتم و این علاقه در حوزه علوم کامپیوتر بیشتر و بیشتر شد. در سن ۱۲ سالگی برنامه‌نویسی رو شروع کردم و اولین زبانی که یادگرفتم هم ویژوال‌بیسیک ۶ بود. یادمه اولین برنامه‌ای که نوشتم، ماشین حسابی بود که فشاری که یک جرم به سطح وارد می‌کنه رو محاسبه می‌کرد.

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

اواخر ۲۰۲۱ و اوایل ۲۰۲۲ بود که مفهوم «هوش مصنوعی مولد» و «هنر تولیدشده توسط هوش مصنوعی» رو شناختم و همونطوری که می‌تونی حدس بزنی، عاشقش شدم 😁 به همین خاطر هم مطالعاتم جدی‌تر شدند و سعی کردم مدل خودم رو در قالب یک استارتاپ توسعه بدم تا بتونم اون چیزی که در ذهن دارم رو تولید کنم.

در حال حاضر روی مدل متن به تصویری به اسم Mann-E کار می‌کنی. می‌تونی یکم در موردش توضیح بدی و بگی چطور کار می‌کنه؟

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

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

اگر دوست دارید بدونید چطور می‌تونید از مانی استفاده کنید، می‌تونید به گیتهاب من مراجعه کنید. یک دفترچه یادداشت جوپیتر اونجا هست که می‌تونه به Google Colab وارد بشه. حجم زیادی از کد هم از دید کاربر مخفی شده که حسی مشابه Midjourney یا Dall-E داشته باشه.

تو وبلاگت اشاره کردی که مدل بر مبنای Stable Diffusion ساخته شده. چه فناوری‌هایی برای این هوش مصنوعی استفاده کردی؟

این چیزیه که من بهش میگم «سوال مورد علاقه‌م». می‌تونم ساعت‌ها در مورد فناوری‌هایی که استفاده کردم، صحبت کنم. اول بذارید یک تاریخچه‌ای براتون بگم. وقتی اکثر تولیدکنندگان تصویر خوب «آزاد» نبودند (در مصاحبه گفتم free و ظاهرا یادم رفته مشخص کنم free as in freedom) تنها پایه و مبنای خوب برای یک تولیدکننده اثر هنری با کمک هوش مصنوعی VQGAN بود. یادمه که اگر نتایجش رو با CLIP ترکیب می‌کردی می‌تونست نتایج خوبی ارائه بده. در واقع این یک بازی انکودر-دیکودر بین دوتا مدل هوش مصنوعی بود.

ولی به قدر کافی خوشحال‌کننده نبود، مخصوصا این که midjourney در همون نسخه‌ها هم تصاویری تولید می‌کرد که انگار همین الان از ذهن یک هنرمند چیره‌دست بیرون آمده. پس من چه کردم؟ شخصا به این فکر بودم که چه اتفاقی می‌افتاد اگر یک نسخه متن‌باز از Midjourney داشتیم؟ و همزمان افرادی در شرکت Stability AI هم فکر مشابهی داشتند. وقتی انتشار Sable Diffusion رو اعلام کردند، من واقعا خوشحال شده بودم. کانسپت رو واقعا دوست داشتم با خودم گفتم که این به درد پروژه من هم میخوره! اینجا دقیقا جایی بود که من رفتم هرچی مقاله و تحقیق در مورد Stable Diffusion بود رو خوندم. این برای من یک دنیا ارزش داشت، چون بالاخره یک مدل تولید تصویر بسیار خوب داشت منتشر می‌شد.

این Stable Diffusion فناوری ابتدایی من بود. بی‌نهایت دوستش داشتم. همیشه تلاش می‌کردم بهترین نتایج رو ازش بگیرم. از prompt engineering صرف بگیر تا نوشتن کد‌هایی که بتونه برای من نتایج بهتری ازش بگیره. در ماه‌هایی که از انتشار نسخه اولیه‌ش گذشت، دو تا اتفاق خیلی بزرگ افتاد. اول این که Dream Booth برای Stable Diffusion ریلیز شد ( و صادقانه بخوام بگم، فاین تیون کردن Stable Diffusion رو به شدت ساده کرده) و همزمان RunwayML هم ورژن ۱.۵ از Stable Diffusion رو منتشر کرد. من مواد اولیه اصلی برای ساخت Midjourney متن‌باز رو داشتم!

بخوام خلاصه بگم: هسته اصلی Stable Diffusion ئه، از چک‌پوینت‌های نسخه ۱.۵ ای که runwayml ساخته استفاده کردم و تیون/ترین کردن با Dream Booth انجام شده. اینا Mann-E رو ممکن کردند. همچنین زبان‌های مورد استفاده هم باید بگم که عمدتا از پایتون استفاده کردم و کمی هم کد روبی برای توسعه وب نوشتم. و این تمام چیزیه که من استفاده کردم.

چه تفاوتی با Dall-E, Open Journey و باقی مدل‌ها داره؟

این سوال سختیه، بخصوص که در طول سال گذشته هزاران مدل با تکنیک‌های Textual Inversion و Dream Booth منتشر شدند. ولی اگر بخوام خلاصه بگم که چه فرقی با Dall-E داره، باید بگم که مانی به اون اندازه گرون نیست. برای استفاده از مانی، فقط کافیه که Google Colab رو راه‌ بندازید، نوت‌بوک رو واردش کنید و تمام! می‌تونید بی‌نهایت تصویر باهاش بسازید. این رو با Dall-E مقایسه کنید که به شما ۵۰ تا تصویر رایگان می‌ده و بعدش باید هزینه پرداخت کنید (که البته به نظرم مدل درآمدی بدی نیست).

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

اون مدل‌ها برای نقاشی، طراحی، هنر مفهومی، استایل آنالوگ، دابل اکسپوژر و … بودند. با یک چک‌پوینت و کمی prompt engineering الان می‌تونید نتایج بسیار خوبی از مدل دریافت کنید.

روی مدلی به نام Open Journey کار می‌کردی ولی اسمشو عوض کردی. می‌تونی کمی در موردش بگی؟

مانی اول کار، اسم مدل نبود؛ بلکه اسم استارتاپی بود که در تابستان ۲۰۲۲ برای همین کار راه انداخته بودم. اسم مدل Open Journey بود که اشاره به Open Source Midjourney داشت. بعدا، فهمیدم که یک نفر از تیم میدجرنی از تیم prompthero خواسته که اسم مدلشون (که فکر کنم چیزی مثل midjourney-v4-style-stable-diffusion یا چنین چیزی بود) رو عوض کنند و اون‌ها (یعنی prompthero) هم اسم مدل رو به OpenJourney تغییر دادند. من ازشون درخواست کردم که اسم مدل رو عوض کنند ولی از اونجایی که ترجیحم این بود که اون استارتاپ رو در اون برهه زمانی متوقف کنم، اسم مدل رو به مانی تغییر دادم.

و البته یک اتفاق خوشحال‌کننده هم افتاد. یک نفر لینک قدیمی به مدل من (که هنوز اسم رو Open Journey درج کرده بود) رو در هکرنیوز پست کرده بود و وبسایت من هم از لحاظ تعداد بازدیدکننده ترکید. من اون صفحه رو به صفحه درست، ری‌دایرکت کردم و فکر کنم این «ناخواسته‌ترین دیده‌شدن»ی بود که من می‌تونستم از یک پروژه متن‌باز بگیرم.

فکر می‌کنی آینده هوش مصنوعی چطوریه؟ حرف و حدیث در مورد موضوع خیلی زیاده و اکثرا ریشه در محصولات شرکت OpenAI مثل ChatGPT داره. اتفاق بعدی چیه؟

باور دارم که هوش مصنوعی آینده‌ست. برخلاف چیزی که سال ۲۰۲۱ اومد و یه فازی ساخت و رفت (و بله، منظورم متاورس زاکربرگه). هوش مصنوعی واقعی و آینده‌داره. من دارم به چشم می‌بینم که افراد زیادی از این ابزارها برای تولید پست‌های بلاگ، کپی‌رایتینگ، تولید شعار برای شرکت و استارتاپ، تولید آیکون و تصویر شاخص و حتی تولید کد استفاده می‌کنند. این خیلیه، بخصوص با وجود ابزارهایی مثل GPT-3 یا ChatGPT حتی می‌تونه رایج‌تر هم بشه. از طرف دیگر قضیه هم که بخواهیم نگاه کنیم، ابزارهای متن‌بازی مثل BLOOM, BLOOMZ, Flan-T5, GPT-Neo و … رو داریم. افراد می‌تونند این مدل‌ها و API رو متناسب با نیازهای خودشون، تغییر بدند.

و باور دارم که ابزارهای هوش مصنوعی ما را به جهانی هل می‌دهند که مردم در آن هوشمندانه‌تر کار می‌کنند، نه سخت‌تر. می‌دونی، تو می‌تونی شونزده ساعت از بیست و چهار ساعت شبانه روز رو صرف توسعه یه کمپوننت تو پروژه ری‌اکتیت کنی، درسته؟ این خیلی خوبه که شغلت و کاری که می‌کنی رو دوست داره ولی حدس من اینه که این ماجرا برای کارفرما یا سرمایه‌گذار هیچ اهمیتی نداره، بخصوص وقتی می‌فهمن که با ۱۶ دقیقه prompt engineering می‌تونستی همون نتیجه رو از GPT-3 با کمی ویرایش کد بگیری. برای من، این یک دنیای بهتره.

در پایان هم از تو، الکساندر؛ تشکر می‌کنم که اومدی سراغم.

سخن آخر

سالها پیش دوستانی در وبسایت لینوکس سیزن با من مصاحبه‌ای انجام دادند که از اینجا در دسترسه. اما خب این یکی مصاحبه، برای من پراهمیت‌تر بود، چرا که فکر کنم تنها کسی هستم که در ایران، با جدیت روی پروژه‌های Generative AI (هوش مصنوعی مولد) به صورت آزاد/متن‌باز کار می‌کنه و خب حیف بود که الان که موقعشه، منتشرش نکنم.

خلاصه که ازتون ممنونم بابت وقتی که گذاشتید و خوندید. اگر به چنین مطالبی علاقمندید، می‌تونید من رو در ویرگول هم دنبال کنید و اونجا هم مطالب مشابهی رو مطالعه کنید. ممنونم بابت وقتی که گذاشتید و خوندید.

Share

پروژه خودروی خودران – قسمت اول

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

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

پروژه خودروی خودران - قسمت اول

شاسی مورد نیاز

پس از این که تصمیم گرفتم حتما یک پروژه خودروی خودران داشته باشم، یکی از مواردی که بهش خیلی فکر می‌کردم، این بود که حتما یه شاسی مناسب تهیه کنم. اول، همونطوری که ابتدای مطلب گفتم، به ماشین‌های کنترلی اسباب‌بازی فکر می‌کردم. ماشین کنترلی، یک سری ویژگی خوب داره. مثل چی؟ مثل این که موتورها روش سوار شدند، احتمالا درایور مناسب موتور داره، جا باتری داره و … . اما خب این هم باید در نظر گرفت که برد کنترل ماشین پیشاپیش متناسب با همون شاسی خودش ساخته شده و نمیشه خیلی هم دستکاریش کرد.

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

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

درایور موتور

وقتی از موتورهای DC و بخصوص موتورهای Brushed استفاده می‌کنیم، نیازمند درایور هستیم (اگر براتون سواله که چرا، می‌تونید این ویدئو رو ببینید). به همین جهت، چیزی که نیاز داشتم یک درایور مناسب برای چنین موتوری بود. تصمیم من این شد که از L298N استفاده کنم. این درایور رو یادمه که در درس ریزپردازنده بهمون درس داده بودند و گزینه آشنایی برام بود. علاوه بر این، چندتایی از این درایور در وسایل الکترونیکیم داشتم. پس همه چیز تحت کنترل بود و کل مجموعه رو شروع کردم سوار کردن. اما مساله مهم دیگر چی بود؟ درسته؛ کنترل از راه دور 🙂

پروژه خودروی خودران - قسمت اول

کنترل از راه دور

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

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

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

دوربین

همونطور که در بخش قبلی گفتم، به ESP8266 به این راحتیا نمیشه دوربین متصل کرد. نتیجه این شد که تصمیم گرفتم از یک گوشی اندرویدی استفاده کنم. اول کمی در فروشگاه‌های اینترنتی و … جست و جو کردم و دنبال گوشی‌های اندرویدی ارزون قیمت گشتم. اما یادم افتاد که گوشی قبلی خودم یعنی Samsung Galaxy J7 ای که دارم، دوربین خوبی داره. گذشته از اون، میشه با استفاده از Droid Cam و نرم‌افزارهای مشابه، تصویر رو به کد پایتونی فرستاد و اونجا پردازش‌های لازم رو روش انجام داد.

برای سوار کردن گوشی موبایل هم یک پایه دوربین قدیمی رو برداشتم، پایه‌هاش رو جدا کردم و سپس پایه و گوشی رو همراه هم روی شاسی چسبوندم. در حال حاضر، بخش سخت‌افزاری خودروی خودران، کاملا آماده‌ست!

پروژه خودروی خودران - قسمت اول

در آینده چه خواهیم خواند؟

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

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

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

Share

آغاز به یادگیری هوش مصنوعی

در پست قبلی وبلاگ، در مورد چیستی هوش مصنوعی توضیح دادم. در این یکی پست، قصدم اینه که به شما بگم برای یادگیری هوش مصنوعی لازمه چه چیزهایی بلد باشیم و چه چیزهایی رو در طول زمان یاد میگیریم. خب، پس بریم سراغ این که برای هوش مصنوعی چه پیش‌نیازی لازمه، بعد کم کم بریم سراغ سیر یادگیری و … .

  • الگوریتم:
    این که بتونید برای یک برنامه، یک الگوریتم بهینه پیدا کنید یا پیشنهاد بدید، مهم ترین عامل در یادگیری و انجام پروژه های هوش مصنوعی به حساب میاد. اگرچه این مورد، همه جا کاربرد داره و کلا برای برنامه نویس و دولپر خوب شدن لازمش داریم؛ ولی اینجا لازمه که به الگوریتم و الفبای موضوع مسلط باشیم. پس، باید یاد بگیریم که چطور با استفاده از الگوریتم ها یک برنامه بسازیم. خب برای یادگیری الگوریتم (اگر بلد نیستید) پیشنهاد من کتاب CLRS هست. هم ترجمه این کتاب در بازار موجوده و هم زبان اصلیش در اینترنت هست.
  • برنامه نویسی :
    برای این که بتونید پروژه هوش مصنوعی انجام بدید باید برنامه نویسی بلد باشید؛ بهرحال بخشی از کامپیوتره و نمیشه ازش در رفت. گرچه ممکنه شما صرفا ایده پردازی یک پروژه هوش مصنوعی رو انجام داده باشید ولی موضوع مهم اینه که شما بتونید همون ایده رو هم چندین بار تست کنید و بعد ارائه‌ش کنید به یک تیم. پس، برنامه نویسی بلد بودن هم از شرایط یادگیری و انجام پروژه در هوش مصنوعی هست. پیشنهاد من هم برای یادگیری زبان، پایتونه که الان تبدیل شده به ابزار شماره یک پروژه های هوش مصنوعی.
  • علوم شناختی :
    علوم شناختی یا Cognitive Science ترکیبیه از روانشناسی، فلسفه ذهن، زیست شناسی مغز و علوم کامپیوتر. البته انقدر ها هم خلاصه نیست و من دارم انقدر خلاصه میگم. برای این که بتونیم پروژه های هوش مصنوعی بزنیم؛ لازم داریم که بلد باشیمش. گرچه طوریه که در حین یادگیری هوش مصنوعی هم، این موضوع رو یاد میگیریم. خیلی از ایده ها و … که در هوش مصنوعی (به ویژه شبکه های عصبی مصنوعی) مطرح شده، حاصل کار دانشمندان شناختی بوده.
شبکه عصبی مصنوعی
شبکه عصبی مصنوعی

 

  • با مغز انسان آشنا بشید!
    این مورد از مهم ترین مواردی هست که باید به عنوان کسی که کار هوش مصنوعی میکنه، بلد باشیم. کاری که ما میخوایم بکنیم این هست که یک سری اعمال انسانی مثل تفکر، تصمیم گیری و یادگیری رو برای ماشین پیاده سازی کنیم و ماشین ما قراره فکر کنه برای ما. پس، بهتره که ساختار مغز رو بشناسیم و باهاش آشنا بشیم. در این زمینه هم کتاب و رفرنس زیاد داریم.
  • از منابع مختلف استفاده کنید!!!
    و در آخر هم، استفاده از منابع متعدد مثل یوتوب، وبسایت های هوش مصنوعی و کتابها توصیه میشه. به این شکل شما میتونید به راحتی و بدون هیچ مشکلی، هوش مصنوعی یاد بگیرید و از انجام پروژه های هوش لذت ببرید.
Share

هوش مصنوعی چیست؟

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

artificial-intelligence-risk-reward-now-labs

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

در سیستم سنتی کامپیوتر، ما وقتی بخوایم که یک برنامه بنویسیم، چی کار میکنیم؟ میایم راه حل در میاریم براش و با اون راه حل، ورودی هایی که بهمون داده شده رو به خروجی تبدیل میکنیم. این سیستم، سیستم خیلی خوبیه و همیشه و همه جا هم کاربرد داره. ولی یه جاهایی هم نمیتونه کاربردی بشه، چرا که مثلا مثل «تبدیل هر ورودی به عدد ۳» نمیشه ساختار الگوریتمیکی برای مساله پیدا کرد یا پیشنهاد داد. نتیجتا میایم و از یه سری تکنیک استفاده میکنیم که به اون جواب میرسن، ولی هیچوقت جواب کامل و دقیق نمیشه. دقیقا همونطوری که اکثر کارهای روزمره ما در زندگی پیش میره. این میشه کاربرد هوش مصنوعی. مثلا بخوام ریاضیاتی تر و کامپیوتری تر در موردش صحبت کنم، میتونم بگم که ما یک مساله داریم که پیچیدگی زمانی n داره، خب این قابل حله (هر قدر هم مزخرف باشه؛ باز با همون راه حل های سنتی قابل حل شدنه). ولی یک مساله داریم با پیچیدگی زمانی های تخیلی (مثل NP ) که در این حالت، هوش مصنوعی به ما کمک میکنه. خروجی مورد نظر ما رو ماشین دریافت میکنه و یاد میگیره که حدود اون یه خروجی تولید کنه.

چرا انقدر واسمون مهم شد؟

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

چند مثال از کاربردهای هوش مصنوعی …

  • تشخیص تصویر : با بینایی ماشین یا Computer Vision و همون Image Processing خیلی از کارهای ما، ساده تر شده. مثلا در یکی از پروژه های IoT که مربوط به دوربین های ترافیکی میشده، ظاهرا سروری وجود داشته که وضعیت ترافیک رو بررسی میکرده، اون رو با تقاطع های دیگر مقایسه میکرده و در نهایت؛ میتونست یک زمان بندی برای قرمز و سبز شدن چراغ های اون تقاطع ها پیشنهاد بده. این به خودی خود، یک پیشرفت بزرگ در زمینه ترافیک و مهندسی شهری به حساب میاد.
  • تشخیص ساده تر بیماری ها : اگر ما نتایج آزمایش ها، اسکن ها و … رو بعنوان داده به یک کامپیوتر بدیم، و مطمئن باشیم که نتایجی که میدیم همه یک بیماری به خصوص (مثل دیابت یا سرطان) رو داشتند، فقط کافیه نتایج آزمایشات و اسکن های بیمار جدید رو به کامپیوتر بدیم، کامپیوتر با الگوهایی که بدست آورده (که اصطلاحا بهش Pattern Recognition هم گفته میشه) ، اون ها رو مقایسه میکنه و مثلا به ما میگه «شما دچار بیماری نیستید» یا میگه «از ۵۰ نشانه شما تنها ۳ نشانه دارید که نشان از این بیماری نمیدهد» و … . یعنی هوش مصنوعی، میتونه به پزشک ها و متخصصان این حوزه ها هم کمک زیادی بده!
  • ساختن اتوماتیک چیز ها : هرچیزی که فکرش رو بکنید، میتونه توسط یک کامپیوتر هوشمند به صورت اتوماتیک ساخته بشه. جمله زیادی اغراق آمیزه ولی یک حقیقته. مثلا این ویدئو ، نشان میده که چطور یک سیستم هوشمند، میتونه برای ما موسیقی بسازه، اون هم با دریافت فایل های MIDI از آهنگ های معروف . همین قضیه در مورد ساختن نقاشی و … هم موثره.

مثالی عملی تر؟

حالا به یک مثال عملی تر و شاید حتی ترسناک از هوش مصنوعی برسیم. شوی دیدنی House of Cards یا همون «خانه پوشالی» ، با استفاده از «داده کاوی» و پردازش داده های کاربران سرویس Netflix ساخته شده (منبع)، و این دقیقا همون راهیه که اسپاتیفای به ما موزیک پیشنهاد میده، گوگل نتایج جست و جو هامون رو حدس میزنه، یوتوب ویدئوهای پیشنهادی رو برای ما لیست میکنه و فیسبوک به ما دوست پیشنهاد میده! به نظرم مثال از این ها عملی تر نداریم!

[ File # csp7448789, License # 1399958 ] Licensed through http://www.canstockphoto.com in accordance with the End User License Agreement (http://www.canstockphoto.com/legal.php) (c) Can Stock Photo Inc. / iDesign

 

از کجا شروع کنم؟

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

و آیا هوش مصنوعی برای ما خطرناکه؟

اجازه بدید این موضوع رو در تاپیک های جداگونه، شرح بدم و توضیح بدم. فعلا در این تاپیک قصد این بود که یاد بگیریم اصلا هوش مصنوعی چیه و به چه دردی میخوره.

موفق باشید 🙂

Share