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