هوش مصنوعی (AI) در سال های اخیر محبوبیت قابل توجهی به دست آورده است.
اگر شما یک مهندس نرم افزار، دانشمند کامپیوتر، یا به طور کلی از علاقه مندان به علم داده هستید، احتمالاً با برنامه های شگفت انگیز پردازش تصویر، تشخیص الگو و تشخیص اشیاء ارائه شده توسط این حوزه مجذوب شده اید.
مهمترین زیر شاخه هوش مصنوعی که احتمالاً در مورد آن شنیده اید، یادگیری عمیق است. این زمینه بر روی الگوریتمهای قدرتمند (دستورالعملهای برنامههای رایانهای) که بر اساس عملکرد مغز انسان شناخته میشوند، تمرکز دارد شبکه های عصبی.
در این مقاله به مفهوم شبکه های عصبی و نحوه ساخت، کامپایل، برازش و ارزیابی این مدل ها با استفاده از آن می پردازیم. پــایتــون.
شبکه های عصبی
شبکه های عصبی یا NN ها مجموعه ای از الگوریتم ها هستند که بر اساس فعالیت بیولوژیکی مغز انسان مدل سازی شده اند. شبکه های عصبی از گره هایی تشکیل شده اند که نورون ها نیز نامیده می شوند.
مجموعه ای از گره های عمودی به عنوان لایه ها شناخته می شوند. این مدل از یک ورودی، یک خروجی و تعدادی لایه پنهان تشکیل شده است. هر لایه شامل گره هایی است که نورون ها نیز نامیده می شوند، جایی که محاسبات انجام می شود.
در نمودار زیر دایره ها نشان دهنده گره ها و مجموعه عمودی گره ها نشان دهنده لایه ها هستند. در این مدل سه لایه وجود دارد.
گره های یک لایه از طریق خطوط انتقال مانند زیر به لایه بعدی متصل می شوند.
مجموعه داده ما شامل داده های برچسب گذاری شده است. این بدان معنی است که به هر موجودیت داده یک مقدار نام خاص اختصاص داده شده است.
بنابراین برای مجموعه دادههای طبقهبندی حیوانات، تصاویری از گربهها و سگها بهعنوان داده، با «گربه» و «سگ» بهعنوان برچسبهایمان خواهیم داشت.
توجه به این نکته مهم است که برچسب ها باید به مقادیر عددی تبدیل شوند تا مدل ما معنی آنها را بفهمد، بنابراین برچسب های حیوانات ما برای گربه '0' و برای سگ '1' می شوند. هم داده ها و هم برچسب ها از طریق مدل منتقل می شوند.
یادگیری
داده ها در یک زمان به موجودیت مدل داده می شود. این داده ها به قطعات تقسیم می شوند و از هر گره مدل عبور می کنند. گره ها عملیات ریاضی را روی این تکه ها انجام می دهند.
شما نیازی به دانستن توابع یا محاسبات ریاضی برای این آموزش ندارید، اما داشتن یک ایده کلی از نحوه کار این مدل ها مهم است. پس از یک سری محاسبات در یک لایه، داده ها به لایه بعدی منتقل می شوند و به همین ترتیب.
پس از تکمیل، مدل ما برچسب دادهها را در لایه خروجی پیشبینی میکند (به عنوان مثال، در یک مسئله طبقهبندی حیوانات، یک پیشبینی '0' برای یک گربه دریافت میکنیم).
سپس مدل اقدام به مقایسه این مقدار پیش بینی شده با مقدار واقعی برچسب می کند.
اگر مقادیر مطابقت داشته باشند، مدل ما ورودی بعدی را دریافت می کند، اما اگر مقادیر متفاوت باشد، مدل تفاوت بین هر دو مقدار را محاسبه می کند که از دست دادن نامیده می شود و محاسبات گره را برای تولید برچسب های منطبق تنظیم می کند.
چارچوب های یادگیری عمیق
برای ساخت شبکه های عصبی به صورت کد، باید وارد کنیم چارچوب های یادگیری عمیق به عنوان کتابخانه هایی با استفاده از محیط توسعه یکپارچه (IDE) ما شناخته می شوند.
این فریم ورک ها مجموعه ای از توابع از پیش نوشته شده هستند که در این آموزش به ما کمک خواهند کرد. ما از چارچوب Keras برای ساخت مدل خود استفاده خواهیم کرد.
Keras یک کتابخانه پایتون است که از یادگیری عمیق و باطن هوش مصنوعی به نام استفاده می کند جریان تنسور برای ایجاد NN در قالب مدل های متوالی ساده به راحتی.
Keras همچنین با مدل های قبلی خود ارائه می شود که می توان از آنها نیز استفاده کرد. برای این آموزش، ما مدل خود را با استفاده از Keras ایجاد خواهیم کرد.
شما می توانید در مورد این چارچوب یادگیری عمیق بیشتر بیاموزید وب سایت کراس.
ساخت شبکه عصبی (آموزش)
بیایید به ساخت یک شبکه عصبی با استفاده از پایتون بپردازیم.
بیان مسأله
شبکه های عصبی نوعی راه حل برای مشکلات مبتنی بر هوش مصنوعی هستند. برای این آموزش، دادههای دیابت هندی پیما را که در دسترس است، بررسی خواهیم کرد اینجا کلیک نمایید.
آی سی یو یادگیری ماشینی این مجموعه داده را گردآوری کرده است و حاوی پرونده پزشکی بیماران هندی است. مدل ما باید پیش بینی کند که آیا بیمار طی 5 سال به دیابت مبتلا می شود یا خیر.
در حال بارگیری مجموعه داده
مجموعه داده ما یک فایل CSV به نام 'diabetes.csv' است که به راحتی با استفاده از Microsoft Excel قابل دستکاری است.
قبل از ایجاد مدل خود، باید مجموعه داده خود را وارد کنیم. با استفاده از کد زیر می توانید این کار را انجام دهید:
وارد کردن پانداها به عنوان pd
data = pd.read_csv('diabetes.csv')
x = data.drop ("نتیجه")
y = داده ["نتیجه"]
در اینجا ما از پانداها کتابخانه برای اینکه بتواند داده های فایل CSV ما را دستکاری کند، read_csv() یک تابع داخلی پانداها است که به ما اجازه می دهد مقادیر موجود در فایل خود را در متغیری به نام "داده" ذخیره کنیم.
متغیر x شامل مجموعه داده های ما بدون داده های نتیجه (برچسب ها) است. ما با تابع data.drop که برچسبهای x را حذف میکند، به این هدف میرسیم، در حالی که y فقط حاوی دادههای نتیجه (برچسب) است.
ساخت مدل ترتیبی
مرحله 1: واردات کتابخانه ها
ابتدا باید TensorFlow و Keras را به همراه پارامترهای خاصی که برای مدل خود لازم است وارد کنیم. کد زیر این امکان را به ما می دهد:
وارد کردن tensorflow به عنوان tf
از Keras واردات تنسورفلو
از tensorflow.keras.models import Sequential
از tensorflow.keras.layers import Activation، Dense
از tensorflow.keras.optimizers واردات Adam
از tensorflow.keras.metrics واردات categorical_crossentropy
برای مدل ما لایه های متراکم وارد می کنیم. اینها لایه های کاملاً متصل هستند. به عنوان مثال، هر گره در یک لایه به طور کامل با گره دیگری در لایه بعدی متصل است.
ما همچنین در حال واردات هستیم فعال سازی عملکرد مورد نیاز برای مقیاس بندی داده های ارسال شده به گره ها. بهینه سازها همچنین برای به حداقل رساندن ضرر وارد شده اند.
Adam یک بهینه ساز معروف است که محاسبات گره به روز رسانی مدل ما را کارآمدتر می کند categorical_crossentropy که است نوع تابع ضرر (تفاوت بین مقادیر برچسب واقعی و پیش بینی شده را محاسبه می کند) که از آن استفاده خواهیم کرد.
مرحله 2: طراحی مدل ما
مدلی که من ایجاد می کنم دارای یک لایه ورودی (با 16 واحد)، یک لایه پنهان (با 32 واحد) و یک خروجی (با 2 واحد) است. این اعداد ثابت نیستند و کاملاً به مشکل داده شده بستگی دارد.
تنظیم تعداد واحدها و لایه های مناسب فرآیندی است که با تمرین می توان آن را در اضافه کاری بهبود بخشید. فعالسازی مربوط به نوع مقیاسبندی است که ما روی دادههای خود قبل از عبور از یک گره انجام خواهیم داد.
Relu و Softmax توابع فعال سازی معروف برای این کار هستند.
مدل = ترتیبی([
متراکم (واحد = 16، ورودی_شکل = (1،)، فعال سازی = 'relu')،
متراکم (واحد = 32، فعال سازی = 'relu')،
متراکم (واحد = 2، فعال سازی = 'softmax')
])
در اینجا خلاصه ای از مدل باید به نظر برسد:
آموزش مدل
مدل ما در دو مرحله آموزش داده می شود، اولین مرحله کامپایل مدل (قرار دادن مدل در کنار هم) و مرحله بعدی برازش مدل بر روی یک مجموعه داده داده شده است.
این کار را می توان با استفاده از تابع model.compile () به دنبال تابع model.fit() انجام داد.
model.compile(بهینه ساز = آدام (نرخ_آموزش = 0.0001)، loss = 'دودویی_متقابل'، متریک = ['دقت'])
model.fit(x, y, epochs = 30, batch_size = 10)
تعیین متریک "دقت" به ما امکان می دهد دقت مدل خود را در طول آموزش مشاهده کنیم.
از آنجایی که برچسب های ما به شکل 1 و 0 هستند، از یک تابع از دست دادن باینری برای محاسبه تفاوت بین برچسب های واقعی و پیش بینی شده استفاده خواهیم کرد.
مجموعه داده همچنین به دسته های 10 تایی (بچ_اندازه) تقسیم می شود و 30 بار (دوران) از مدل عبور می کند. برای یک مجموعه داده معین، x داده و y برچسب مربوط به داده خواهد بود.
مدل تست با استفاده از پیش بینی ها
برای ارزیابی مدل خود، با استفاده از تابع ()predict روی داده های تست پیش بینی می کنیم.
پیش بینی = model.predict(x)
و همین!
اکنون باید درک خوبی از آن داشته باشید یادگیری عمیق نرم افزار، شبکه های عصبی، نحوه کار آنها به طور کلی و نحوه ساخت، آموزش و آزمایش یک مدل در کد پایتون.
امیدوارم این آموزش شروعی برای ایجاد و استقرار مدل های یادگیری عمیق خود را به شما بدهد.
اگر مقاله مفید بود، در نظرات به ما اطلاع دهید.
پاسخ دهید