یادگیری عمیق در پایتون
پایتون یک زبان چندمنظوره (General-purpose) است که در موارد مختلفی کاربرد دارد. یکی از اصلیترین کاربردهای پایتون برای علمداده (Data Science) و تولید الگوریتمهای یادگیری عمیق (Deep Learning) است. علم داده در دنیای امروز دهها کاربرد مختلف و مهم، از بازاریابی تا داروسازی و موتورهای جستجو دارد. در پایتون کتابخانههای بسیار خوبی برای یادگیری عمیق وجود دارند و این زبان، یکی از اصلیترین ابزارهای علم داده بهحساب میآید. در این مقاله قصد داریم مبانی یادگیری عمیق در پایتون را به زبانی بسیار ساده به شما آموزش دهیم. آشنایی با زبان پایتون و مفاهیم و تکنیکهای اساسی یادگیری عمیق برای بهره بردن از این مقاله مورد نیاز است. برای کسب اطلاعات بیشتر در این رابطه تا پایان این نوشته از دسته آموزش پایتون و آموزش یادگیری عمیق با ما همراه باشید.
یادگیری عمیق چیست؟
بدون اینکه حتی بدانیم، بخشهای زیادی از زندگی روزمره ما توسط هوش مصنوعی و علم داده اداره میشود. یکی از مهمترین مباحث در هوش مصنوعی، یادگیری عمیق است. برای تعریف کردن مفهوم یادگیری عمیق ابتدا باید یادگیری ماشین را تعریف کنیم.
یادگیری ماشین به استفاده از آمار برای پیدا کردن الگوهای تکرار شونده در مقادیر بسیار بزرگ داده (Big Data) دارد. این دادهها ممکن است اعداد، کلمات، عکسها، کلیکها و هرگونه پدیده دیجیتالی دیگری باشند. سیستمهای بزرگ و معروف امروزی مثل یوتیوب و گوگل، عظمت خود را از پیادهسازی یادگیری ماشین بهدستآوردهاند.
یادگیری عمیق یکی از زیرمجموعههای یادگیری ماشین است که با افزایش عمق یادگیری ماشین، عملکردی شبیه به سلولهای مغز ایجاد میکند. از این طریق پدیدهای به نام «شبکه عصبی مصنوعی» ایجاد میشود که مثل مغز انسان شروع به یادگیری میکند.
یادگیری عمیق یکی از مهمترین دلایل تحول عظیم گوگل در سال ۲۰۱۵ بود. از کاربردهای دیگر پیادهسازی یادگیری عمیق میتوان به تشخیص خودکار غلطهای نگارشی در دیکشنریهای آنلاین اشاره کرد.
یادگیری عمیق چه کاربردهایی دارد؟

بهاحتمال زیاد تابهحال در مورد یادگیری عمیق و کاربردهای آن شنیدهاید. مهمترین کاربردهای یادگیری عمیق عبارتند از:
- تشخیص خودکار صحبت
- تشخیص عکس
- کار روی زبان طبیعی
- کشف دارو و سمشناسی
- ارتباطات مشتریان
- سیستم پیشنهاددهی
- بیوانفورماتیک
- تشخیص حرکت
کار با یادگیری عمیق در پایتون چگونه است؟
یادگیری عمیق از طریق کتابخانههای خاصی در پایتون اجرا میشود. برای کار با یادگیری عمیق در پایتون قبل از همه چیز لازم است Python 2.7 به بالا روی سیستم شما نصب باشد. علاوه بر این، لازم است کتابخانههای زیر روی پایتون شما نصب شده باشد.
- Scipy با Numpy
- Matplotlib
- Theano
- Keras
- TensorFlow
برای دسترسی به تمام این کتابخانهها (پکیجها) بهتر است از توزیع آناکوندا استفاده کنید. این توزیع شامل تعداد زیادی از کتابخانههای پایتون است که در بخشهای مختلف علم داده به کار میآیند. راه دیگر هم این است که پکیجهای گفته شده را یکییکی روی پایتون خود نصب و سپس import کنید.
اگر می خواهید بیشتر با کاربردهای پایتون در یادگیری عمیق آشنا شوید و بتوانید مهارت های خود را برای ورود به بازار کار افزایش دهید، پیشنهاد میکنیم حتماً دورهها و منابع آموزشی مرتبط با آموزش یادگیری عمیق با پایتون را مشاهده کنید.
استفاده از کتابخانه Keras
یکی از سادهترین راههای دسترسی به یادگیری عمیق در پایتون، کار با داده در Keras است. Keras یک کتابخانه متنباز برای توسعه مدلهای یادگیری عمیق است که استفاده بسیار سادهای دارد. با استفاده از این کتابخانه میتوانید شبکه عصبی مصنوعی مخصوصبهخود را تنها با چند خط کد ساخته و برای یادگیری تمرین دهید.
معمولا از Kernas در کنار کتابخانههای دیگری مثل numpy استفاده میشود. دلیل این امر این است که همیشه یادگیری عمیق نیاز به کار با داده دارد. برای import کردن کتابخانههای مورد نظر مینویسیم:
# first neural network with keras tutorial
from numpy import loadtxt
from keras.models import Sequential
from keras.layers import Dense
...
در این مثال قصد داریم یک دیتاست شامل علائم ثبت شده از افراد و اینکه کدامیک از آنان دیابت داشتهاند را بارگذاری کرده و از طریق یادگیری عمیق، یک شبکه عصبی مصنوعی را برای تشخیص بیماری تعلیم دهیم.
این دیتاست را میتوانید از لینک (https: // raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv) دانلود کنید.
فایل را با نام pima-indians-diabtes.csv ذخیره کنید. در این دیتاست هر داده به صورت یکسری عدد وجود دارد:
۰,۱۳۷,۴۰,۳۵,۱۶۸,۴۳٫۱,۲٫۲۸۸,۳۳,۱
هشت مقدار اول مربوط به ویژگیهای بیمار بوده و مقدار آخر ۰ یا یک است (اگر فرد دیابت داشته باشد یک و در غیر این صورت صفر). برای طراحی مدل یادگیری عمیق هشت مقدار اول را X در نظر گرفته و آخرین مقدار را Y در نظر میگیریم. بین X و Y رابطه زیر برقرار است:
Y=F(X)
حالا با استفاده از کد زیر دیتا ست را بارگذاری میکنیم:
# load the dataset
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',')
# split into input (X) and output (y) variables
X = dataset[:,0:8]
y = dataset[:,8]
آموزش مدل در کراس
یادگیری عمیق برابر است با یادگیری چندلایه. یک مدل شامل سلسلهاز لایهها است که در کنار هم قرار گرفتهاند. به این مدل «مدل سلسلهای» گفته میشود و در آن لایههای شبکه مصنوعی عصبی مدام در حال اضافه شدن هستند تا به تعداد لایههای دلخواه برسیم. برای دیتاستی که در مرحله قبل بارگذاری کردیم لایه ورودی شامل ۸ متغیر است. در اینجا باید با آرگومان input_dim این لایه را تشکیل دهیم.
اینکه به چند لایه نیاز خواهیم داشت سوالی نیست که پاسخ سادهای داشته باشد. معمولا طراحی شبکه مصنوعی عصبی با آزمون و خطا صورت میگیرد و نمیتوان برای آن چارچوب مطلقی تعیین کرد. در چنین موقعیتی، تجربه طراح شبکه عصبی مصنوعی نقشی کلیدی را ایفا میکند.
هدف از این کار رسیدن به شبکهای است که بهاندازه کافی برای درک ساختار مسئله بزرگ باشد (لایه داشته باشد). در این مثال از یک شبکه سه لایه و کاملا متصل استفاده میکنیم. برای این شبکهها باید از کلاس Dense class استفاده کرد. اولین آرگومان ورودی این کلاس تعیینکننده تعداد لایهها بوده و آرگومان activartion وضعیت آن از لحاظ فعال بودن را مشخص میکند.