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

الگوریتمهایی که برای کامپیوترها نوشته میشوند باید فوقالعاده دقیق باشند، بنابراین در آنها از دستورالعملها و شرطهایی مثل «اگر»، «سپس» و «وگرنه» استفاده میشود. برای مثال، یک اتومبیل خودران ممکن است با کمک برنامهای کار کند که میگوید «اگر» علامتها میگویند به سمت چپ بپیچ، «سپس» به سمت چپ بپیچ. با این حساب، میبینید که برای هدایت کامپیوتر از طریق مجموعه دستورالعملها چقدر باید دقیق باشید.
در تصور عامه، بخش عمده مفهوم الگوریتم با الگوریتمهای پیشنهاد (Recommendation Algorithms) گره خورده است. یعنی وقتی صحبت از الگوریتم میشود، مردم به این فکر میکنند که یوتیوب چگونه ویدیوهای موردعلاقهشان را به آنها پیشنهاد میکند. اگرچه این سیستمها از الگوریتمهای فوقالعاده پیچیدهای استفاده میکنند، اما در ماهیت خود همچنان مجموعهای از دستورالعملها هستند که به سیستمهای کامپیوتری میگویند چه کاری باید انجام شود.
دومینگوس میگوید: «الگوریتمهای کامپیوتری میتوانند تا حد خیلی زیادی پیچیده شوند. عمل جمع الگوریتمی است که طی چند خط تعریف میشود. [اما] کامپیوترها میتوانند الگوریتمهایی داشته باشند که تعریف آنها نیازمند نوشتن چند میلیون خط دستور است.»
الگوریتمها مدتها قبل از پیدایش کامپیوترها وجود داشتند
انسانها در عصر بابلیها الگوریتم مینوشتند تا کار راحتتری برای حل معادلات ریاضیِ مربوط به مدیریت امور جوامع زراعی داشته باشند. دومینگوس میگوید: «الگوریتمها پیش از کامیپوترها وجود داشتند چون برای اجرای آنها نیازی به کامپیوتر ندارید. الگوریتمها میتوانند توسط انسانها هم اجرا شوند.»

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

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

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

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