معرفی یادگیری عمیق و کتابخانه PyTorch
ترجمه فصل اول کتاب Deep Learning with PyTorch
قسمت اول
کتابخانه
این بخش شامل موارد زیر است:
- چگونگی تغییر رویکرد ما به یادگیری ماشین به واسطه یادگیری عمیق
- درک اینکه چرا PyTorch مناسب یادگیری عمیق است
- بررسی یک پروژه معمول یادگیری عمیق
- سختافزاری که برای پیگیری مثالها نیاز خواهید داشت
مفهوم نامعین هوش مصنوعی شامل یک مجموعه از حوزهها است که به مقدار زیادی از تحقیقات، بازبینی، ابهام، تبلیغات فوقالعاده، و ترسهای علمی-تخیلی تحت تاثیر قرار گرفتهاند. واقعیت، بدون شک، بسیار خوشرنگتر است. ادعای اینکه دستگاههای امروزی در حال یادگیری “اندیشیدن” به هر معنای انسانی از این واژه هستند، کمیبینی است. به جای آن، ما یک کلاس عمومی از الگوریتمها را کشف کردهایم.
که ما میتوانیم از آن استفاده کنیم تا وظایفی که قبلاً تنها محدود به انسانها بود، را خودکارسازی کنیم. به عنوان مثال، در وبسایت https://talktotransformer.com، یک مدل زبان به نام GPT-2 قادر است به صورت تدریجی پاراگرافهای متنی منسجم را تولید کند. زمانی که ما این همین پاراگراف را به آن وارد کردیم، به نتیجه زیر رسید:
“بعداً ما قصد داریم یک لیست از عبارات از یک مجموعهداده ایمیلها را وارد کنیم و ببینیم آیا برنامه میتواند لیستها را به عنوان جملات تحلیل کند. دوباره، این امر بسیار پیچیدهتر و پیچیدهتر از جستجوی ابتدای این پست است، اما امیدواریم که به شما در درک اصول ساختار جملات در زبانهای برنامهنویسی مختلف کمک کند.”
این بسیار منطقی برای یک ماشین است، حتی اگر یک تیزی تعریف معین پشت گفتگو نباشد.
حتی بیشتر از آن، توانایی انجام این وظایف که پیش از این تنها متعلق به انسانها بود، از طریق مثالها فرا گرفته میشود، نه توسط یک انسان به عنوان مجموعهای از قوانین ساخته شده دستی. به طریقی، ما در حال یادگیری هستیم که هوش یک مفهوم است که اغلب با خودآگاهی اشتباه میکنیم، و خودآگاهی مطلقاً برای انجام موفق این نوع وظایف لازم نیست. در پایان، ممکن است حتی سوال هوش کامپیوتری مهم نباشد. ادگر و. دیکسترا متوجه شد که سوال اینکه آیا دستگاهها میتوانند اندیشیدن را “تقریباً به همان اندازه مهم میپندارید که آیا زیردریاییها میتوانند شنا کنند” است.
این کلاس عمومی از الگوریتمهایی که درباره آن حرف میزنیم، زیرمجموعه AI از یادگیری عمیق است که با آموزش موجودیتهای ریاضی به نام شبکههای عصبی عمیق، توسط مثالهای آموزشی سر و کار دارد. یادگیری عمیق از مقادیر دادههای بزرگ برای تقریب توابع پیچیده استفاده میکند که ورودی و خروجیهای آنها بسیار دور هستند، مانند تصویر ورودی و به عنوان خروجی، یک خط متن که ورودی را توصیف میکند؛ یا یک اسکریپت نوشته شده به عنوان ورودی و صدایی طبیعی که این اسکریپت را خوانده به عنوان خروجی؛ یا، حتی، ارتباط دادن تصویر یک گلدن رتریور با یک پرچم که به ما میگوید “بله، یک گلدن رتریور حاضر است”. این نوع توانایی به ما اجازه میدهد تا برنامههایی با قابلیتهایی که تا اخیراً، به طور انحصاری دامنه انسانها بود، ایجاد کنیم.
شکل ۱.۱ یادگیری عمیق نیاز به طراحی دستی ویژگیها را با افزایش نیازمندیهای داده و محاسباتی جایگزین میکند.
شروع از سمت راست در شکل ۱.۱، ما در حال حاضر یک نگاه اجمالی از آن چه نیاز داریم برای اجرای یادگیری عمیق را دریافت میکنیم:
- نیاز به روشی برای دریافت هر گونه دادهای که در دسترس داریم داریم.
- به نحوی باید دستگاه یادگیری عمیق را تعریف کنیم.
- ما باید یک راه خودکار، یعنی آموزش، برای به دست آوردن نمایشهای مفید و تولید خروجیهای مطلوب دستگاه داشته باشیم.
این باعث میشود که ما باید به طور دقیقتر به این موضوع آموزش که مداوم درباره آن صحبت میکنیم، نگاه کنیم. در طول آموزش، ما از یک معیار استفاده میکنیم، یک تابع واقعی مقداری از خروجیهای مدل و داده مرجع، برای ارائه یک امتیاز عددی برای اختلاف بین خروجی مطلوب و واقعی مدل ما (به اصطلاح، امتیاز پایینتر معمولاً بهتر است). آموزش شامل راندن معیار به سمت امتیازهای پایینتر و پایینتر توسط تغییرات گامبهگام در دستگاه یادگیری عمیق ما تا زمانی که امتیازهای پایینی را بهدست آورد، حتی بر روی دادههایی که در طول آموزش دیده نشدهاند.