شبکه عصبی چیست؟ #
شبکه عصبی یا شبکه عصبی مصنوعی یا Artificial Neural Network (ANN) تلاشی برای شبیه سازی شبکه های نورونی تشکیل دهنده مغز انسان است تا کامپیوتر بتواند یاد بگیرد و به شیوه انسان تصمیم گیری کند. شبکه عصبی مصنوعی برای درک اطلاعاتی که به آن خورانده می شود، از لایه های مختلف پردازش ریاضی استفاده می کند. به طور معمول، یک شبکه عصبی مصنوعی از ده ها تا میلیون ها نورون مصنوعی تشکیل شده که در یک سری از لایه ها مرتب می شوند. لایه ورودی انواع مختلفی از اطلاعات را از دنیای خارج دریافت می کند. این داده ها همان هایی هستند که شبکه قصد دارد آن ها را پردازش کرده و آن ها را یاد بگیرد.
داده ها پس از لایه ورودی، از یک یا چند لایه پنهان می گذرند. کار لایه (های) پنهان این است که ورودی را به شکل قابل استفاده برای لایه خروجی تبدیل می کند. اکثر شبکه های عصبی به طور کامل از یک لایه به دیگری متصلند. این اتصالات وزن دهی می شوند؛ مشابه مغز انسان، لایه ای که وزن بیشتر دارد یعنی نفوذ بیشتری بر دیگری دارد. با حرکت داده ها از هر لایه ، شبکه در مورد داده ها بیشتر یاد می گیرد. در طرف دیگر شبکه، لایه خروجی ست و این همان جایی است که شبکه به داده هایی که به آن داده شده و پردازش کرده، پاسخ می دهد.
مقایسه شبکه عصبی مصنوعی با شبکه عصبی انسان #
نورونها به عنوان اجزای اصلی شبکه مغز انسان، نقش مهمی در فرآیند یادگیری آن ایفا می کنند. میلیاردها نورون مرتبط با هم در مغز انسان وجود دارند که تجربیات آموخته شده را درون خود ذخیره می کنند. هنگامی که انسان با موقعیت مشابه قبلی مواجه می شود، اطلاعات آن را از طریق اندامهای حسی (چشم، گوش، ….) به مغز و این نورونها منتقل شده ، مغز از اطلاعات قبلی استفاده کرده و پاسخهای مشابهی می دهد.
در شبکه عصبی مصنوعی نیز مشابه عملکرد مغز انسان، ابتدا شبکه با یکسری داده آموزشی، آموخته می شود. این یادگیری در قالب یکسری وزنها و پارامترها ذخیره می شوند. سپس با ورودیهای آزمایشی، مدل مورد آزمون قرار می گیرد و درستی پیش بینی آن تخمین زده می شود و در نهایت در صورتی که مدل آزمونهای اعتبارسنجی را با دقت موردنیاز بگذراند، آماده است تا پیش بینی را بر اساس داده های جدید انجام دهد.
اجزای شبکه عصبی مصنوعی #
همانطور که گفته شد، یک شبکه عصبی دارای لایه ورودی، لایه خروجی، لایه (های) پنهان است. از دیگر اجزای مهم شبکه عصبی مصنوعی تابع فعالیت است که در ادامه به توضیح مختصر هر یک می پردازیم:
لایه ورودی #
همانطور که در شکل بالا نشان داده شده، لایه ورودی، اولین لایه از هر شبکه عصبی است. تعداد نورون ها در لایه ورودی به تعداد ویژگیها بستگی دارد. به عنوان مثال اگر ورودی عبارت از اطلاعات بیماران باشد، هر نورون از لایه ورودی یک ویژگی بیمار مثل گروه خونی، قد، وزن، میزان قند خون، …. را نشان می دهد. به زبان ریاضی، لایه ورودی را مانند یک برداردر نظر بگیرید که هر آرایه از آن، نشاندهنده یک ویژگی از آن ورودی است و مجموع ورودی ها (مانند اطلاعات همه بیماران) را به صورت یک ماتریس در نظر بگیرید که هر سطر اطلاعات یک بیمارو هر ستون آن یک ویژگی (صفت) از اطلاعات بیمار مانند میزان قند خون و … را نشان می دهد.
برای ایجاد یک مدل کارآمد، درک درست از لایه ورودی و ویژگی های مهمی که باید به عنوان نورون های لایه ورودی در نظر گرفته شوند، حائز اهمیت است.
لایه (های) پنهان #
بین لایه های ورودی و خروجی، ممکن است یک یا چند لایه پنهان وجود داشته باشد. این لایه ها محاسبات پیچیده ای را روی داده های ورودی انجام می دهند. هر نورون در یک لایه مخفی ورودیها را از تمام نورونهای لایه قبلی دریافت میکند، یک مجموع وزنی اعمال میکند، یک عبارت بایاس اضافه میکند و نتیجه را از طریق یک تابع فعالسازی منتقل میکند.
لایه خروجی #
لایه خروجی یک شبکه عصبی، نشاندهنده پیش بینی (های) انجام شده توسط شبکه است. تعداد نورونهای این لایه بستگی به تعداد خروجی مورد انتظار به ازای هر ورودی دارد. یعنی به ازای هر کلاس یا دسته خروجی، یک نورون وجود دارد. به عنوان مثال مدل تشخیص اعداد دستنویس ۰ تا ۹ را در نظر بگیرید. در این مدل، یک دستخط شامل یک عدد به عنوان ورودی به مدل داده می شود و مدل باید تشخیص دهد که کدام عدد نوشته شده است. بنابراین به ازای هر عدد ۰ تا ۹ یک نورون و در مجموع ۱۰ نورون در لایه خروجی وجود خواهد داشت.