الگوریتم در دنیای تکنولوژی چیست ؟
الگوریتم مفهومی بسیار ساده است که البته امروز برداشتهایی بسیار پیچیده از آن به وجود آمده است. الگوریتم، قلب تپنده بسیاری از شبکههای اجتماعی مانند فیسبوک و اینستاگرام است و همین باعث شده که بسیاری به آن به چشم ماهیتی مرموز با کاراییهای ناشناخته نگاه کنند. در واقع الگوریتم اکنون به مترادف چیزی بسیار فنی یا غیر قابل درک تبدیل شده است. برخی به این سر طیف نگاه میکنند و آن را نوعی داور حقیقت به حساب میآورند و برخی دیگر به آن سر طیف چشم میدوزند و الگوریتم را چیزی کاملا غیر قابل اعتماد به حساب میآورند.
اما وقتی مردم به صحبت راجع به «الگوریتم» میپردازند -چه موضوع صحبت الگوریتمهای پیشنهاد دهنده محتوای شرکتهای تکنولوژی باشد و چه الگوریتم در معنای عمومی- آیا از معنای واقعی آن باخبر هستند؟ با توجه به میزان استفاده از این کلمه و همینطور استفاده نادرست از آن، احتمالا نه. بنابراین میخواهیم در این مقاله به سوالی سرراست پاسخ دهیم: اصلا الگوریتم چیست؟
این مقاله با همکاری پدرو دومینگوز، پروفسور علوم کامپیوتر در دانشگاه واشنگتن تهیه شده. او کسی است که کتاب The Master Algorithm را راجع به نقش الگوریتم در زندگی روزمره ما نوشته.
۱. یک الگوریتم، در واقع مجموعهای از دستورالعملهای بسیار مشخص است
چگونگی پخت یک کیک، یافتن پاسخ «دو به اضافه دو» یا حتی اداره کردن یک کشور براساس قانون اساسی، همگی مثالهای الگوریتم هستند. چرا؟ زیرا به گفته دومینگوز، معنای لغوی الگوریتم، «توالی دستورالعمل» است. همین.
امروز اما معنای الگوریتم به چنین چیزی تغییر کرده: «توالی دستورالعملهایی که به یک کامپیوتر میگویند چه کند». یک برنامه کامپیوتری یک الگوریتم است که با زبان برنامهنویسی کامپیوتری نوشته شده و دستگاه قادر به درک آن زبان و اجرای فرمانهای لازم است.
الگوریتمهایی که به برای کامپیوترها نوشته میشود، ضمنا میتوانند بسیار دقیق باشند و معمولا دستورالعملها با استفاده از عبارات «اگر»، «پس» و «در غیر این صورت» نوشته میشوند. برای مثال یک اتومبیل خودران ممکن است الگوریتمی را برای مسیریابی به اجرا در بیاورد که چنین مضمونی دارد: «اگر اپلیکیشن مسیریاب میگوید به چپ بپیچ، پس به چپ بپیچ». بنابراین اگر بخواهید کامپیوتر یک مجموعه دستورالعمل به ظاهر ساده را دنبال کند، باید درخواست را به صورت دقیق بیان کنید.
امروزه الگوریتمهای پیشنهاد دهنده محتوا آنقدر زیاد شدهاند که ظاهرا ذهنیت عمومی راجع به اینکه الگوریتم چیست را دگرگون کردهاند. بسیاری از مردم وقتی به الگوریتمها فکر یا راجع به آنها صحبت میکنند، در واقع به آن سیستمی در نتفلیکس اشاره دارند که آنچه ممکن است برایتان جذاب باشد را مقابل چشمتان قرار میدهد. اگرچه اینها الگوریتمهایی بسیار پیچیده به حساب میآیند، اما در قلب صرفا مجموعهای از دستورالعملها هستند که کامپیوتر آنها را دنبال کرده و وظایف خود را به انجام میرساند.
۲. الگوریتمها پیش از ظهور کامپیوترها نیز نوشته میشدند
در دوران تمدن بابل نیز انسانها در حال نوشتن الگوریتم و از استفاده از آن برای حل معادلههای ریاضیاتی بودهاند. همین الگوریتمها بودند که مدیریت جامعه کشاورزی آن زمان را امکانپذیر میکردند. دومینگوز میگوید: «پیش از ظهور کامپیوترها الگوریتم داشتهایم، چون برای اجرای یک الگوریتم نیازی به کامپیوتر ندارید و یک انسان هم میتواند آن را به اجرا بیندازد».
کامپیوترهایی که قادر به اجرای الگوریتمهای مختلف بودند برای نخستین بار در اواسط سده ۲۰ میلادی ظهور کردند، زمانی که ارتش آمریکا شروع به استفاده از فرمولهای ریاضیاتی برای بهبود چیزهایی مانند هدفگیری موشک کرد. این مفهوم بعدا راهش را به مدیریت بازرگانی باز کرد و کامپیوترها، فرمولهای مختلف را برای محاسبه چیزهایی مانند پرداختی کارمندان اجرا میکردند. دنیای علم نیز از سوی دیگر از آنها برای پایش حرکات اجرام آسمانی استفاده کرد.
یکی از برجستهترین لحظات برای الگوریتمهای مدرن زمانی بود که لری پیج و سرگئی برین الگوریتم PageRank گوگل را نوشتند. به جای اتکای صرف بر اطلاعات موجود درون یک صفحه برای تشخیص ارتباط آن با عبارت جستجو شده، الگوریتم موتور جستجوی این دو از سیگنالهایی دیگر برای نمایش بهترین نتایج ممکن استفاده میکرد. برای مثال اینکه چند لینک دیگر در دنیای وب به مقاله موجود در یک صفحه ارجاع داده شدهاند، مقاله چقدر قابل اتکا بوده و چیزهایی از این دست.
۳. امروز میتوان الگوریتمها را همهجا یافت
اگرچه ممکن است به الگوریتمها به چشم معادلات ریاضیاتی نگاه کنیم، اما به گفته دومینگوز، الگوریتمها «میتوانند هرچیزی را پردازش کنند، گاهی اصلا هیچ اعداد و ارقامی در کار نیست». یکی از برجستهترین و شدیدا پیچیدهترین الگوریتمهای کنونی، الگوریتمی است که بر فید اخبار فیسبوک حکمرانی میکند. فیسبوک از این معادله برای شناسایی و انتخاب محتوایی که به کاربران نشان داده میشود استفاده میکند. به عبارت دیگر، مجموعهای از دستورالعملها تصمیم میگیرند که چه چیزی راهش را به فید اخبار کاربران باز کند.
دومینگوز توضیح میدهد: «فیسبوک میتواند تا ابد درون فید اخبار شما محتوا قرار دهد، اما باید دست به انتخاب بزند. و موضوع معمولا راجع به ترکیب چیزهایی مانند اینست که شما چقدر برای افرادی که به صورت مستقیم یا غیر مستقیم محتوا را تولید کردهاند اهمیت قائل هستید؟ ارتباطی چقدر نزدیک با آنها در شبکه اجتماعی خود دارید، محتوا چقدر به سلایق شما نزدیک است و چقدر تازگی دارد؟».
فیسبوک، گوگل، آمازون و دیگر کمپانیهای بزرگ حوزه تکنولوژی از الگوریتمها برای ارائه محتوا و محصول به مشتریان خود استفاده میکنند. اما الگوریتمهایی دیگر نیز در زندگی شما وجود دارد که شاید اصلا از آنها باخبر نباشید.
دومینگوز برای مثال میگوید که الگوریتم موجود در ماشین ظرفشویی شما میداند که چه زمانی نوبت به شستن طرف دیگر ظرفها یا خشک کردن آنها رسیده. ماشین شما نیز میزان سوخت را مدیریت میکند و میداند چه زمانی باک بنزین پر شده است. در انیمیشنها و بازیهای ویدیویی هم سایهها با حرکت خورشید ناپدید میشوند تا شرایط نوری دنیای واقعی به درستی بازسازی شود.
« مشخصا هر زمان که شما با یک کامپیوتر تعامل میکنید یا در اینترنت میچرخید، یک الگوریتم هم در ماجرا دخیل است. اما این روزها الگوریتمها دیگر در تقریبا همهچیز دخیل شدهاند.»
۴. پیچیدهترین الگوریتمها از یادگیری ماشینی استفاده میکنند
همانطور که پیشتر آموختیم، الگوریتمها معمولا باید با جزییات بسیار دقیق و ظریق نوشته شوند تا یک کامپیوتر قادر به درک آنها باشد. اما وقتی توسعهدهندگان شروع به نوشتن الگوریتمهایی میکنند که از یادگیری ماشینی بهرهمند شدهاند، موضوع تغییر میکند. یادگیری ماشینی یک نوع هوش مصنوعی است که تا امروز منجر به خلق برخی از پیچیدهترین الگوریتمهای جهان شده است.
«در برنامهنویسی سنتی، یک انسان باید تمام جزییات کاری که الگوریتم انجام میدهد را بنویسد و این کاری بسیار هزینهبر و زمانبر است.» دومینگوز ادامه میدهد: «یادگیری ماشینی به کامپیوتر اجازه میدهد که خودش الگوریتم خودش را کشف کند و لازم نباشد کسی وظایف را به آن توضیح دهد».
بگذارید طور دیگری بگوییم. یادگیری ماشینی زمانی اتفاق میافتد که برنامهنویس، برخی اطلاعات خام را به یک برنامه میدهد تا نقطهای برای آغاز کار داشته باشد. سپس یک نقطه پایان برای کامپیوتر ترسیم میکند و به آن نشان میدهد که ورژن دستهبندی شده همان اطلاعات چه شکل و شمایلی دارد. از این به بعد، دیگر خود کامپیوتر است که باید مسیر رسیدن از نقطه الف به نقطه ب را تشخیص دهد.
به این مثال از پیاز توجه کنید: یک انسان میداند که که یک آشپز چطور پیاز کروی شکل را حلقه کرده و میپزد. در یک الگوریتم سنتی، برنامهنویس باید دستورالعمل کامل و گامبهگام پختن پیاز را بنویسد. اما در الگوریتمی که توسط هوش مصنوعی توسعه یافته، خود کامپیوتر است که باید حلقه کردن پیاز و سپس پختن آن را بیاموزد. به این ترتیب، یادگیری ماشینی اتفاق افتاده است.
این نوع از الگوریتمها زمانی قدرتمندتر میشوند که حتی انسانها هم ندانند چطور باید از نقطه الف به نقطه ب رسید. برای مثال، پردازشهای انسانی مانند قابلیت تشخیص گربه بودن یک گربه، آنقدر نیروی ذهنی میطلبد که نوشتن پروسه آن به صورت گامبهگام عملا غیرممکن است. اما وقتی به یک برنامه تعدادی تصویر از گربهها بدهید، تعدادی تصویر دیگر بدون حضور گربهها و از آن بخواهید که تصاویر گربهها را دستهبندی کند، کامپیوتر خودش قادر به اجرای این پروسه خواهد بود.
دومینگوز میگوید: «در این حالت، کامپیوتر خودش برنامهنویسی را میآموزد و نیازی به برنامهنویسی انسانی ندارد. مشخصا چنین چیزی وقتی عملی میشود بسیار قدرتمند از آب در میآید، به خاطر اینکه حالا شما میتوانید با کمترین دخالت انسانی، الگوریتمهایی بسیار قدرتمند و بسیار پیچیده بنویسید».
۵. الگوریتمها جادو جمبل نمیکنند
به لطف حجم خالص اطلاعاتی که الگوریتمها پردازش میکنند، شاید مثل یک جعبه سیاه با انبوهی از رازهای اسرارآمیز به نظر برسند. اما باید به یاد داشت که الگوریتم صرفا مجموعهای از دستورالعملها است. از سوی دیگر، الگوریتمها را انسانها مینویسند و بنابراین احتمال خطا نیز وجود دارد.
«انبوهی از برداشتهای اشتباه راجع به الگوریتمها وجود دارد، عمدتا به این خاطر که مردم نمیتوانند ببینند درون یک کامپیوتر چه میگذرد. یک برداشت اشتباه و رایج اینست که مردم فکر میکنند الگوریتمها بینقص هستند».
دومینگوز توضیح میدهد که برنامهنویسان زمان بسیار زیادی را صرف برطرفسازی مشکلات موجود در الگوریتمها میکنند تا کدهای نوشته شده، منجر به نتایج مناسب شوند. با این همه، انسانها همیشه هم قادر به رفع مشکلات نیستند. علاوه بر این، یک الگوریتم براساس آنچه انسان به عنوان خروجی میخواهد طراحی شده. برای مثال به یک الگوریتم استخدام فکر کنید که کارش یافتن بهترین کاندیداهای یک سمت شغلی است. اگر انسان دستورالعملهایی را به الگوریتم بدهد که لزوما به شغل مرتبط نیستند (مثلا سابقه دانشگاهی)، صرف اینکه الگوریتم فلان شخص را بهترین گزینه برای شغل میداند، به این معنا نیست که موضوع حقیقت دارد.
این اتفاق معمولا به خاطر جهتگیریهای اشتباه میافتد. و مشکلات مربوط به جهتگیری در الگوریتمهایی که از هوش مصنوعی استفاده میکنند بیشتر نیز میشود.
دومینگوز میگوید: «در برنامهنویسی سنتی، شما صرفا باید نگران جهتگیریهای برنامهنویس باشید. در یادگیری ماشینی، عمدتا باید نگران جهتگیریهای ناشی از دادهها باشید».
برای مثال، یک الگوریتم استخدام قوت گرفته از یادگیری ماشینی، از رزومه چندین کاندیدا به عنوان نقطه شروع استفاده میکند و خروجی را هم رزومه افرادی در نظر میگیرد که پیشتر به استخدام درآمدهاند. با این حال، اکثر کمپانیهای حوزه تکنولوژی، تنوع نژادی میان کارمندان خود ندارند. به این ترتیب، الگوریتم اتوماسیون شده نیز پیشنهاداتی برای استخدام افرادی میدهد که بازتابگر نابرابری در دنیای واقعی خواهند بود. پژوهشها نشان داده که هوش مصنوعی قادر به تقلید از کلیشههای نژادی و جنسی موجود در ذهن سازندگانش است.
۶. الگوریتمها در حال به پیش راندن یک انقلاب تکنولوژیک هستند
الگوریتمها شاید بینقص نباشند، اما در هر صورت دارند چهره جهان را دگرگون میکنند.
دومینگوز عقیده دارد که «تمام چیزهایی که دست کم میگیریمشان، مانند وب و شبکههای اجتماعی، بدون الگوریتمها نمیتوانستند وجود خارجی داشته باشند». همینطور که این مجموعه دستورالعملهای اتوماسیون شده بیشتر و بیشتر به فراگیری میرسند -از ماشین ظرفشویی منزل شما گرفته تا ابرکامپیوترهای دولتی- انسانها هم میتوانند دانش خود را به شکلی سریعتر و بهینهتر از هر زمان دیگر به کار بگیرند. دومینگوز معتقد است چنین چیزی دست کمی از یک انقلاب تمام عیار ندارد.
او توضیح میدهد: «الگوریتمها دارند کاری را برای پروسههای ذهنی میکنند که انقلاب صنعتی برای پروسههای دستی کرد. الگوریتمها منجر به اتوماسیون هوش میشوند. و اگر به این موضوع فکر کنید، با چیزی بسیار قدرتمند مواجه هستیم: اینکه کاری که قبلا نیازمند تفکر و تلاش انسانی بود، حالا با یک الگوریتم انجام میشود».
دیدگاه ها (0)