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

چرا میان‌بر این‌قدر وسوسه‌انگیز به نظر می‌رسد

موج فعلی بازاریابی هوش مصنوعی بر سرعت تأکید دارد. پلتفرم‌های کم‌کد (Low-code) و پوشش‌های API (API wrappers) به شما اجازه می‌دهند در یک بعدازظهر یک رابط کاربری گفتگو‌محور را راه‌اندازی کنید. این پیروزی سریع، شبیه به پیشرفت واقعی به نظر می‌رسد. با این حال، این رابط‌ها روی زیرساختی قرار دارند که شما آن را ننوشته‌اید و نمی‌توانید درون آن را ببینید. وقتی API محدودیت نرخ (rate-limit) برای کاربران شما اعمال می‌کند، وقتی مدل در محیط عملیاتی دچار توهم (hallucinate) می‌شود، یا وقتی نیاز دارید تأخیر استنتاج (inference latency) را کاهش دهید تا یک اپلیکیشن موبایل پاسخگو باقی بماند، دانش سطحی شما را درمانده رها می‌کند. شما به ابزارهایی که دیگران ساخته‌اند وابسته می‌شوید و قادر به تعمیر یا تغییر شکل آن‌ها نیستید.

برنامه‌نویسی واقعاً چه چیزی به شما می‌دهد

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

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

تفاوت واقعی بین این دو

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

وقتی برنامه‌نویسی بلد باشید، می‌توانید کد منبع پشت یک مدل زبانی بزرگ (LLM) یا مدل انتشار (diffusion model) متن‌باز را بخوانید. می‌توانید دقیقاً ببینید مکانیزم‌های توجه (attention mechanisms) چگونه پیاده‌سازی شده‌اند، نه اینکه فقط بدانید یک پست وبلاگ درباره آن‌ها چه می‌گوید. وقتی نیاز دارید یک تابع زیان (loss function) را جایگزین کنید یا نرخ یادگیری (learning rate) را برای مجموعه داده خاص خود تنظیم کنید، می‌توانید کد هوش مصنوعی را ویرایش کنید. می‌توانید خطاهایی را که ناگزیر رخ می‌دهند، برطرف کنید. عدم تطابق شکل (shape mismatch) بین تنسورها، کرش CUDA به دلیل کمبود حافظه (out-of-memory)، یا یک باگ پنهان در خط لوله پیش‌پردازش داده‌ها، با نوشتن دستور (prompt) برای یک چت‌بات حل نخواهد شد. شما باید متغیرها را ردیابی کنید، گرادیان‌ها را بررسی کنید و درباره تخصیص حافظه استدلال کنید.

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

با Python شروع کنید

اگر می‌خواهید در حوزه هوش مصنوعی کار کنید، با Python شروع کنید. نحو (syntax) آن تقریباً شبیه انگلیسی ساده است که مانع ورود مبتدیان را کاهش می‌دهد. این سادگی را با ضعف اشتباه نگیرید. Python میزبان ماشین‌آلات سنگین یادگیری ماشین مدرن است. TensorFlow، PyTorch، scikit-learn و Hugging Face Transformers همگی بر پایه آن بنا شده‌اند. وقتی Python را یاد می‌گیرید، یک زبان اسباب‌بازی یاد نمی‌گیرید؛ شما همان ابزاری را یاد می‌گیرید که محققان هوش مصنوعی برای پیشبرد این حوزه از آن استفاده می‌کنند.

یک نقشه راه عملی

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

برنامه‌نویسی Python. بر متغیرها، حلقه‌ها، توابع، کلاس‌ها و مدیریت فایل مسلط شوید. اسکریپت‌هایی بنویسید که لاگ‌های JSON را تجزیه (parse) کنند یا صفحات وب ساده را استخراج (scrape) کنند. اگر نمی‌توانید یک لیست را مرتب کنید یا استثناها (exceptions) را به شکلی تمیز مدیریت کنید، برای گرادیان کاهشی (gradient descent) آماده نیستید.

ساختارهای داده و الگوریتم‌ها. آرایه‌ها، نقشه‌های هش (hash maps)، درخت‌ها و گراف‌ها فقط سوالات پیش‌پاافتاده مصاحبه نیستند. آن‌ها روشی هستند که شما روابط را ذخیره کرده و به طور کارآمد در آن‌ها جستجو می‌کنید. یک موتور پیشنهاددهنده مدرن، در هسته خود، یک مسئله هوشمندانه پیمایش گراف (graph traversal) است.

SQL و پایگاه‌های داده. مدل‌ها به داده‌های پاک نیاز دارند. شما مجموعه‌های آموزشی را از پایگاه‌های داده PostgreSQL فراخوانی می‌کنید، جداول را برای ترکیب ویژگی‌ها (features) به هم متصل می‌کنید و تعاملات کاربر را برای تنظیم دقیق (fine-tuning) بعدی ذخیره می‌کنید. نادیده گرفتن این مرحله به این معناست که با داده‌ها مانند گرد و غبار جادویی برخورد می‌کنید، نه به عنوان یک دارایی ساختاریافته که کنترل آن در دست شماست.

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

مبانی یادگیری ماشین. یادگیری نظارت‌شده (supervised) و نظارت‌نشده (unsupervised) را مطالعه کنید. قبل از اینکه سراغ کتابخانه‌های آماده بروید، یک مدل رگرسیون خطی را از صفر و تنها با استفاده از NumPy بسازید. ریاضیات را از طریق کد حس کنید.

یادگیری عمیق. به سراغ شبکه‌های عصبی بروید. قبل از اینکه اجازه دهید PyTorch مشتق‌گیری خودکار را انجام دهد، پس‌انتشار (backpropagation) را به صورت دستی درک کنید. بدانید زیر پوسته‌ها چه می‌گذرد.

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

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

برنامه‌نویسی و هوش مصنوعی شریک هستند

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

اشتباهاتی که ماه‌ها وقت تلف می‌کنند

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

پروژه‌ها را با ترتیب درست بسازید

با اپلیکیشن‌های کوچک و ملموس شروع کنید. یک ماشین‌حساب با رابط گرافیکی بسازید. یک اپلیکیشن لیست کارها (to-do app) بسازید که داده‌ها را در یک فایل محلی ذخیره می‌کند. اسکریپتی بنویسید که هزاران عکس را بر اساس تاریخ ایجادشان تغییر نام دهد. این تمرین‌ها به شما می‌آموزند که چگونه وضعیت (state) را مدیریت کنید، ورودی کاربر را کنترل کنید و منطق برنامه را عیب‌یابی (debug) کنید.

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

نتیجه‌گیری اصلی

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

منبع: Programming vs AI: Which Skill Should You Learn First?

به انجمن بپیوندید: GyaanSetu AI on Telegram