سلام. امیر پورمند هستم و با قسمت نوزدهم از ایستگاه هوش مصنوعی در خدمتتون هستم.
تو قسمت قبل کتاب الگوریتم اصلی رو معرفی کردیم. من دیگه تکرار مکررات نمیکنم.
تو این فصل میخوایم راجع به انقلاب یادگیری ماشین صحبت کنیم. هنوز به قبایل یادگیرنده که گفتم سر نمیزنیم و نویسنده میخواد ذهنمون رو قلقلک بده و راجع به الگوریتمها و تاثیر اونها بر همه جنبههای زندگی بگه. یعنی اول میگیم الگوریتم چیه و بعد میگیم یادگیری ماشین چیه و بعد میگیم چه تأثیراتی داره که بهش انقلاب یادگیری ماشین میگن؟
شنیدن اپیزود
همه اپیزودهای این پادکست تو کانال کست باکس منتشر میشه و البته میتونید از جاهای دیگه هم بشنوید.اینجا هم میتونید فایل صوتی این قسمت رو گوش بدید:
زندگی در عصر الگوریتمها
ما در عصر الگوریتمها زندگی میکنیم. شاید پدربزرگهای ما با شنیدن الگوریتم به یاد هیچی نیفتن. اما الان با تار و پود زندگیمون پیوند خوردند.
همین الان الگوریتمها هستند که پروازهای هواپیمایی رو برنامهریزی میکنند. الگوریتمها، کالاها رو برامون مسیریابی میکنند و ارسال میکنند و بعدش هم الگوریتمها پرداختمون رو تأیید میکنند.
شاید براتون جالب باشه که الگوریتم در واقع ترجمه لاتین، الخوارزمی هست. چون تو لاتین خ نداریم. کمکم عوض شده.
اما الگوریتم واقعاً چیه؟ الگوریتم، مجموعه دستوراتی هست که به کامپیوتر میگه دقیقاً چیکار کنه. اون چیزی که تو بیزنس بهش فرآیند میگن (+).
بگذارید یک مثال از سادهترین الگوریتم دنیا رو بزنیم: سوییچ رو تغییر بده؛ یعنی اگر روشنه، خاموشش کن و اگر خاموشه روشنش کن. یک ترانزیستور یک بیت اطلاعات هست. اگر روشن باشه یعنی یک. اگر خاموش باشه یعنی صفر.
پس یک بیت در حساب بانکی شما مشخص میکنه که بدهی داری یا نه. یه بیت تو سازمان تأمین اجتماعی مشخص میکنه که مردید یا نه.
دومین الگوریتم ساده دنیا اینه: دو بیت رو با هم ترکیب کن. و اگر یادتون باشه تو درس مدار منطقی سه تا گیت پایه به نام AND و OR و NOT داشتیم. جالب این که با این سه تا گیت پایه میشه همه الگوریتمها رو پیادهسازی کرد. مستقل از این که چقدر پیچیده باشه.
اینجا راستش یاد دانشگاه افتادم. تو درس مدارهای منطقی شما میبینید که چطوری از سطوح پایه گیتهای منطقی رو میسازیم و از روی اون جمع کننده و ضرب کننده و رجیستر و حافظه میسازیم. بعد تو معماری کامپیوتر، عملاً CPU میسازیم.
در واقع کلاد شانون به عنوان پدر نظریه اطلاعات، اولین کسی بود که گفت ترانزیستورها دارند در واقع استدلال منطقی انجام میدن.
عملاً هم همینه. کامپیوترهای مدرن اطراف ما، تعداد عظیمی ترانزیستور دارند که بسته به این که چه ترانزیستورهایی خاموش و کدومها روشن هستند، الگوریتمهای متفاوتی رو انجام میدن.
اما بیاید از سطوح ترانزیستور و مدار فاصله بگیریم و انتزاعیتر نگاه کنیم. تو دنیای واقعی، لازم نیست کسی منطق ترانزیستورها رو بفهمه. اینجا میتونیم صرفاً از بلوکهایی که قبلاً ساخته شده، استفاده کنیم و چیزهای جدید بسازیم.
مثلاً لازم نیست برای ضربکردن درگیر سطوح پایین بشیم. تو هر زبان برنامه نویسی اپراتور ستاره رو استفاده کنیم، خودش ضرب انجام میده.
اما برای این که الگوریتم داشته باشیم مهمه که بتونیم دقیقاً هر مرحله رو توصیف کنیم. بدون هیچ گونه ابهامی. مثلاً دستور آشپزی الگوریتم نیست. چون معمولاً دقیق نیست و مثلاً میگن نمک به اندازه کافی!
معمولاً برای این که کامپیوتر الگوریتمهای ما رو بفهمند هم باید به یک زبان برنامهنویسی مثل جاوا یا پایتون نوشته بشن. بعدش هم کلی دیباگ کنیم که خطاهای احتمالیاش حل بشه.
خوبیش اینه که وقتی ساخته شد به شدت مقیاسپذیره. میتونه بارها و بارها اجرا بشه و اگر الگوریتمش به اندازه کافی مهم باشه، پولدارتون کنه. پس برنامهنویسان خدایانی هستند که الگوریتمها رو خلق میکنند.
الگوریتمها هم به تدریج یک اکوسیستم رو خلق میکنند که شاید از نظر پیچیدگی با حیات معادل باشه.
اما هیچ مخلوقی بدون مشکل نیست. نویسنده به مشکلات الگوریتمها میگه هیولای پیچیدگی که چند تا سر داره.
اولین سر هیولا، پیچیدگی فضایی هست. این که چقدر حافظه نیازه تا الگوریتم اجرا بشه.
دومین سر هیولا، پیچیدگی زمانی هست. چقدر طول میکشه تا اجرا بشه. دوستانی که طراحی الگوریتم پاس کردند احتمالاً اینجا یاد O میافتند. اونجا میگفتیم که مثلاً فلان الگوریتم از مرتبه زمانی O(n) هست.
سومین سر هیولا میشه پیچیدگی انسانی. وقتی الگوریتم خیلی پیچیده میشه، وقتی تعداد ارتباطاتش خیلی زیاد میشه، مغز آدم دیگه توانایی درکش رو نداره و ممکنه خطا پیش بیاد. خطاهایی که نه میتونیم پیداشون کنیم و نه تصحیحشون کنیم.
خلاصه این که هر دانشمند کامپیوتر، هر روز با هیولای پیچیدگی سر و کله میزنه و الگوریتمهای جدید خلق میکنه.
اما یک سوال؟ آیا راه بهتری برای خلق این همه الگوریتم وجود نداره؟ چرا باید همه الگوریتمها رو خودمون بصورت دستی و با جزئیات فراوان کد بزنیم؟
الگوریتمهای یادگیرنده
تا اینجا راجع به اهمیت الگوریتمها صحبت کردیم. هر الگوریتم یک ورودی و یک خروجی داره. داده رو میدیم به کامپیوتر و الگوریتم باهاش کار میکنه و نهایتاً خروجی رو تولید میکنه.
یادگیری ماشین این رو برعکس میکنه. ورودی و خروجی رو به الگوریتم یادگیرنده میدیم و میگیم زحمت بکش الگوریتم رو خروجی بده!
پس الگوریتمهای یادگیرنده، الگوریتمهایی هستند که خروجیشون الگوریتم هست.
دارم فکر میکنم که چقدر آدمیزاد موجود پیچیدهای هست. یکی از بزرگترین تواناییهای ما اینه که به فکر کردن، فکر کنیم.
الان هم میخوام الگوریتمهایی تولید کنیم که خودشون الگوریتم تولید کنند. حالا جلوتر میگیم که چطوری میتونیم الگوریتمهایی تولید کنیم که الگوریتم تولید کنند.
مسئله هم اینه که بعضی کارها مثل رانندگی و تشخیص دست خط و خیلی کارهای دیگه، تو لایه ناخودآگاه ما انجام میشن. ما نمیتوانیم برای رانندگی کردن الگوریتم دقیق بدیم. اما اگر به یک یادگیرنده تعداد کافی داده بدیم، انشاءالله که خودش میتونه یاد بگیره.
بیاید به یک آنالوژی فکر کنیم: کشاورزی.
تو مزرعه، ما دانهها رو میکاریم و بهشون آب و کود و مواد مغذی لازم رو میدیم و محصول رو برداشت میکنیم. یادگیری ماشین هم همینه.
پس ما الگوریتمهای یادگیرنده رو مثل دانه میکاریم و کشاورز ما که همون متخصص هوش مصنوعی باشه، بهشون مواد مغذی میده (همون داده) و خروجیاش هم میشه محصول ما که همون الگوریتم باشه.
وقتی اینطوری بهش فکر کنیم دو چیز به ذهن میاد. اولاً هر چقدر ماده مغذی و آب یا داده بیشتر و باکیفیتتر داشته باشیم، بیشتر باید بتونیم یاد بگیریم. اگر داده نداشته باشیم هم هیچی یاد نمیگیریم.
دوماً وقتی داده کافی داشته باشیم میتونیم با چیزی حدود صد خط الگوریتم یادگیرنده یا دانه، میلیونها خط محصول یا الگوریتم درو کنیم که هر کدوم برای مسئله متفاوتی جواب میدن.
خیلی جالبه.
انگار ایده مثل معکوسبودن مشتق و انتگرال هست. یعنی همونطور که میتونیم بپرسیم، مجذور چه عددی ۱۶ میشه (و اینطوری معکوس فکر کنیم)؟ یا تابعی که مشتقش x + 1 میشه چیه؟، میتونیم بپرسیم که الگوریتمی که این خروجی رو تولید میکنه چیه.
پس به یک معنا یادگیری ماشین، معکوس برنامهنویسی هست.
اما یک سری تفاوتهای بنیادی هم داره. یکیش اینه علوم کامپیوتر در گذشته بیشتر به سمت تفکر قطعی بوده اما یادگیری ماشین مستلزم فکرکردن احتمالاتی هست.
یادگیری ماشین یک شهرت هم از نظر سختی برای خودش دست و پا کرده. کتابهای رفرنس هم بیشتر باعث میشن تو ریاضیات غرق بشید بدون این که بفهمید اصل قضیه چیه. این آقا ادعا میکنه که میشه بخش بزرگیاش رو بدون ریاضی فهمید و حتی ممکنه بعد مدتی بتونید الگوریتمهای یادگیری خودتون رو طراحی کنید.
خلاصه انقلاب صنعتی، کار دستی رو اتومات کرد و انقلاب اطلاعات با کار ذهنی این کار رو انجام داد و حالا به نظر میاد یادگیری ماشین، فرآیند اتوماتکردن رو اتومات کنه. بدون اون، برنامهنویسها گلوگاه سیستم میشن که سیستم نمیتونه خیلی سریع رشد کنه.
اما اتومات کردن به این شکل و چیزی که نویسنده بهش انقلاب یادگیری ماشین میگه، تغییرات اقتصادی و اجتماعی گستردهای خواهد داشت. یکی از جاهایی که تأثیرات همین الان مشخصه، بیزنس هست.
پس سوال اینه که یادگیری ماشین روی بیزنس چه تأثیری میگذاره؟
چرا کسب و کارها به یادگیری ماشین نیاز دارند؟
چرا گوگل بیشتر از یاهو و بینگ میارزه؟ همشون تبلیغ نشون میدن و لینکهای اولشون رو به مزایده میگذارند. همهشون احتمال کلیککردن یوزر روی لینک رو پیشبینی میکنند. بیزنس مدلشون به نظر یکی هست.
اما الگوریتم یادگیری گوگل به شدت بهتره. هر بار که تبلیغی رو پیشنهاد میدیم و کاربر کلیک نمیکنه، یک فرصت از دست رفته است. با درآمد سالانه ۵۰ میلیارد دلار، هر یک درصد بهبود در کلیک، نیم میلیارد دلار بهبود داره. پس تعجبی نداره که شرکتی مثل گوگل عاشق الگوریتمهای یادگیری ماشین باشه.
اما تبلیغات یک نمونه از ترند کلی هست. تو روزهای قبل از اینترنت، موانع اصلی فیزیکی بودند. شما میتونستی فقط از جایی خرید کنی که نزدیکت باشه. پس محدود به فروشگاههای نزدیک خونهات بودی. اما الان میتونی هر کتابی رو از هر جای دنیا بخری و در نرمافزار کتابخوانات بخونی.
من زمانی که بچه بودم محدود بودیم به ویدئو کلوپ محل که فلان فیلم رو بیاره که ببینیم. همین قضیه برای خیلی چیزهای دیگه هم هست: موزیک، اخبار. کفش، گل، لوازم دیجیتال.
حتی برای پیداکردن کار یا دیت هم تو فضای دیجیتال نگاه میکنیم. اینجا سؤال متفاوت میشه.
سؤال اینه که چگونه فروشنده به خریدار وصل بشه؟ چطوری همدیگرو پیدا کنیم؟ چگونه اینها رو با هم مچ کنیم؟
برای این که اهمیت این سؤال رو متوجه بشیم یک مثال میزنه. وقتی تازه یک فروشگاه رو باز میکنیم، صاحب فروشگاه تقریباً همه مشتریانش رو میشناسه. خودش شخصاً بهشون پیشنهاد میده که چی بخرن.
بعدش کمکم تعداد مشتریها انقدر زیاد میشه که به ناچار از کامپیوتر استفاده میکنند. کم کم حسابدار میگیرند. یه کم که بزرگتر شد مشاور و برنامهنویس و تحلیلگر داده و فلان و بهمان استخدام میکنند.
اما از یک جایی به بعد تعداد مشتریها انقدر زیاد میشه که دیگه هیچ کسی از عهده تحلیل این برنمیاد. اینجاست که یادگیری ماشین میاد تو کار.
آمارون به هیچ وجه نمیتونه سلیقه همه مشتریانش رو بدونه.
اینجاست که سؤال اصلی قرن اطلاعات این میشه که چطوری افراد همدیگرو پیدا کنند؟ چطوری افراد کالاهای مدنظرشون رو پیدا کنند؟ و یادگیری ماشین بخش مهمی از جواب به این مسئله است.
البته الگوریتمها کامل هم نیستند و معمولاً آخرین نقطه تصمیمگیری رو میدن انسان انجام بده. کاری که الگوریتم انجام میده اینه که صدها هزار انتخاب رو به چند تا انتخاب محدود میکنند و حالا ما از بین گزینههای محدود شده انتخاب میکنیم.
اگر بهش نگاه کنیم، پیشرفت از کامپیوترها به اینترنت و بعد از اون یادگیری ماشین، اجتنابناپذیره. کامپیوتر، به اینترنت فضا میده که حجم وسیعی از دادهها رو بسازه و مسئله میشه انتخاب بین همه گزینهها. یادگیری ماشین هم میاد این مسئله رو حل کنه.
عملاً وقتی این اتفاق بیفته و الگوریتمهای یادگیری ماشین جایگاه خودشون رو بدست بیارن، قدرت یکپارچه میشه. شما میری آمازون کالا انتخاب کنی. درسته که انتخاب نهایی کالا با خودت بوده اما این که کدوم کالاها برات بالاتر بیاد، تأثیر خیلی مهمی در انتخاب داشته.
پس موفقیت یا شکست کمپانی به این بستگی پیدا میکنه که چقدر الگوریتمشون خوبه. پس یک حلقه مثبت بوجود میاد. اونی که بیشترین مشتری رو داره، بیشترین حجم داده رو پیدا میکنه و بهترین مدلها رو میسازه که باعث میشه مشتریان جدید هم به سمت خودش بیان. اینجاست که مهاجرت از گوگل به بینگ از مهاجرت از ویندوز به مک هم سختتر میشه و عملاً بازیگر جدیدی هم نمیتونه به این صنعت موتورهای جستجو وارد بشه؛ چون داده نداره.
جالب این که هر بخشی از سایت یا محصول میتونه با یادگیری ماشین بهتر بشه. مثلاً آیا لینک زیر صفحه باید قرمز باشه یا آبی؟ خب جفتش رو با یادگیری ماشین تست کنید و ببینید کدوم احتمالاً بیشترین کلیک رو میگیره. بهتر از اون، بگذارید الگوریتمهای یادگیرنده، همه بخشهای سایت و محصول رو بهبود بدن.
خلاصه این که همچین دینامیکی میتونه در هر بازاری با یک عالمه انتخاب و یک عالمه داده اتفاق بیفته. اینجاست که میگن «داده، نفت جدیده» و بیزنسها یادگیری ماشین رو میپذیرند؛ چون چارهای جز این ندارند.
تأثیر بر روش علمی
مسئله اینه که متد علمی خیلی مشخصه و برای همین میتونه تأثیر عمیقی داشته باشه.
شما همش دارید با فرضیهها کار میکنید. تولید فرضیههای جدید، تست اونها و رد کردنشون کاری هست که دانشمندان کلاً دارند انجام میدن. یادگیری ماشین میتونه این کارها رو در کسری از ثانیه انجام بده و عملاً علم رو هم به اندازه بیزنس متحول کنه.
برای پیشرفت، هر فیلد علمی نیاز داره که متناسب با پیچیدگی چیزی که مطالعهاش میکنه، داده داشته باشه. برای همین فیزیک اولین علمی بود که با روش علمی متحول شد. چون دادههایی که از حرکت سیارات و آونگ و اینها جمع شده بود، به اندازهای کافی بود که بشه قوانین نیوتون رو ازش درآورد.
بخاطر همینه که زیستشناسی مولکولی از نوروساینس جلو زده، با این که خیلی رشته جدیدتری هست. چون حجم داده DNA که داریم خیلی خیلی بیشتر هست.
خبر خوب اینه که علومی که قبلاً داده نداشتند، الان خیلی بیشتر دارند. جامعهشناس چند دهه پیش، به سختی میتونسته راجع به جامعه اطرافش داده جمع کنه. ولی الان بیش از یک میلیارد آدم، تو توییتر و ایسنتاگرام، هر روز دارن لحظه لحظه زندگیشون رو به اشتراک میگذارند. در نوروساینس تصاویر fMRI مغز رو بهتر از همیشه برامون نشون میدن. و حتی تو علوم باسابقه مثل فیزیک و ستارهشناسی، پیشرفت خیلی سرعت گرفته.
مسئله اینه که حجم زیاد داده به خودی خود فایده نداره مگر این که بتونیم ازشون دانش استخراج کنیم و دانشمندان کافی برای تحلیل این حجم داده رو الان نداریم.
مثلاً آقای هابل با نگاهکردن به تصاویر کهکشانها، کهکشانهای جدید پیدا کرد. اما میشه شرط بست که تعداد زیادی از اشیاء آسمانی رو نتونستند تشخیص بدند. مثل این که بخوایم تعداد شنهای یک ساحل رو دستی بشماریم.
حتی اگر بخوایم برنامه بنویسید باید دستی قواعدی بنویسید که بتونه ستارهها و کهکشانها و نویزهایی مثل پرندگان و و هواپیماها رو تشخیص بده. به جاش رفتند از یادگیری ماشین استفاده کردند و الگوریتم، دادههای برچسبدارش رو یاد گرفت و بعد اونهایی که برچسب نداشتند رو برچسب زد. خیلی مسئله مشخصی هست تو یادگیری ماشین. بهش میگن الگوریتمهای نیمهنظارتی.
یه کاربرد دیگه اینه که با یادگیری ماشین میتونیم پدیدههای پیچیدهتر رو بررسی و مدلسازی کنیم. شما نگاه کنید الان تو پزشکی بخش بزرگی از تحقیقات با رگرسیون و مدلهای آماری ساده پیش میره. تو رگرسیون هم فرض میکنیم که رابطه خطی بین دو چیز وجود داره. در حالی که اکثر پدیدههای مهم، غیرخطی هستند. اینجاست که یادگیری ماشین میتونه خیلی کمک کنه.
مثلاً تو زیستشناسی الگوریتمهای یادگیری میتونند محل ژنها رو تو مولکول DNA تشخیص بدن و بفهمند شرایط مختلف چه تأثیری روی ژنهای مختلف میگذاره. بعد به جای این که دارو رو بسازند و بعد ببینند کار میکنه یا نه، محتملترین داروها تست میشن.
یه چالش دیگه اینه که جمعآوری این حجم دانش و بررسیشون بسیار کار سختیه. مثلاً فرض کنید میخوام بدونم که تمام چیزهایی که روی بیماری قلبی موثر هستند چه چیزهایی هستند؟ خب با این روند تخصصیسازی دانش هر روز داره این کار سختتر میشه. هر روز هم زیررشتههای بیشتری بوجود میان. تعداد مقالات هم انقدر زیاده که هر روز دانشمندان بیشتر عقب میافتند.
ماشین لرنینگ میتونه اینجا کمک کنه. ادبیات تحقیق رو بخونه و کلمات تخصصی فیلد رو بفهمه و به بقیه فیلدها ترجمه کنه. الان تو ۲۰۲۵ اگر بگردید دهها سایت هستند که این کارها رو انجام میدن؛ اما سال ۲۰۱۵ که این کتاب چاپ شده، اینطور چیزی نبوده. این با پیشگویی فرق داره. طرف عملاً داشته آینده رو به وضوح جلوی چشمانش میدیده.
تأثیر بر سیاست
از روش علمی که بگذریم، روی سیاست هم تأثیر خیلی مهمی داشتند این مدلها.
اینجا میاد مثال میزنه از تأثیرات مدلهای یادگیری ماشین روی نتایج رأیگیری. راستش این قسمتش برای من ناراحتکننده است؛ چون از یه طرف شرایط کشور خودمون رو میبینم و از طرفی تو کتابها جاهای دیگه رو میبینم.
بحث اینه که در سال ۲۰۱۲ اوباما اومد یک متخصص یادگیری ماشین رو استخدام کرد و بزرگترین کاری که تا اونوقت تو سیاست روی تحلیل داده شده بود رو انجام دادند.
اومدند اطلاعات رأی دهندگان رو جمعآوری کردند و با اطلاعات شبکههای اجتماعی و مارکتینگ و جاهای مختلف ترکیب کردند و چهار چیز رو برای هر رأی دهنده پیشبینی کردند:
- چقدر احتمال داره که به اوباما رأی بده؟
- چقدر احتمال داره در نظرسنجیها شرکت کنه؟
- چقدر به کمپینها پاسخ میده؟
- و چقدر احتمال داره با بحث در یک موضوع خاص نظرش عوض بشه؟
و بر اساس این مدلهای رأی دهندگان، هر شب ۶۶ هزار، شبیهسازی اجرا کردند و به کسانی که داوطلب بودند گفتند که با چه کسانی بهتره راجع به چه چیزی صحبت کنند تا نظرشون عوض بشه.
نکتهاش اینه که بدترین چیز در جنگ یا کسب و کار اینه که نتونی حرکتهای رقیب مخالفت رو تحلیل کنی. این دقیقاً کاری بود که انجام میدادند، مثلاً فلان ساعت روز یک شبکه خاص تلویزیونی تو فلان ایالت تبلیغ میرفتند. اصلاً رقیب نمیفهمید چرا داره این حرکتها انجام میشه و در این حالت هیچ کاری نمیتونه بکنه مگر این که دست روی دست بگذاره.
پس یادگیری ماشین احتمالاً باعث میشه که انتخابات بعدی تو آمریکا نزدیک و نزدیکتر بشه.
اصلاً هنر سیاستمدار اینه که بفهمه اکثر مردم چی میخوان و خواستههاشون رو بگه تا به قدرت برسه و عملیشون کنه.
علاوه بر سیاست تو امنیت هم تأثیر داره که توضیح میده مثلاً سازمان NSA آمریکا، تونسته با گوش دادن به مکالمات، جلوی دهها عمل تروریستی رو بگیره. کار پیچیدهای هم هست واقعاً و نیاز به یادگیری ماشین داره.
به کجا میریم؟
سؤال اصلی اینه که به کجا میریم؟ ترندهای تکنولوژی هر روز میان و میرن. چیزی که راجع به یادگیری ماشین عجیبه اینه که هر روز داره بیشتر رشد میکنه و امروزه به سختی میشه حوزهای رو پیدا کرد که یادگیری ماشین تا حالا توش وارد نشده.
تو این قسمت راجع به الگوریتم و تعریف اون صحبت کردیم. بعد راجع به الگوریتمهای یادگیرنده گفتیم که پایه سیستمهای یادگیری ماشین رو تشکیل میدن. بعد از اهمیت یادگیری ماشین در حوزههای مختلف از جمله کسب و کار و علم و سیاست و امنیت مثالهایی زدیم. امیدوارم که شما هم متقاعد شده باشید که یادگیری ماشین مهم هست و میشه لفظ انقلاب رو در موردش به کار برد.
تو فصلهای بعد به این میپردازیم که چه چیز یادگیری رو ممکن میکنه؟ الگوریتمهای یادگیری ماشین چطوری کار میکنند؟ چه کارهایی رو نمیتونند انجام بدن؟ و چه خطرها و فرصتهایی برامون به ارمغان میارند.