ویرگول
ورودثبت نام
محمد جواد نجادی
محمد جواد نجادی
خواندن ۱۶ دقیقه·۷ ماه پیش

عمیق‌تر و عمیق‌تر در عمق یادگیری عمیق و شبکه‌های عصبی مصنوعی

# پارت 1 : تاریخچه هوش مصنوعی و چگونگی عملکرد شبکه های عصبی ساده

باید به لایه های عمیق تری نفوذ کنیم!

تصویر در صحنه‌ی آخر فیلم Inception سوالات بسیاری را برانگیخت.
تصویر در صحنه‌ی آخر فیلم Inception سوالات بسیاری را برانگیخت.

تلقین Inception

باید به لایه های عمیق تری نفوذ کنیم !( We need to go deeper) این جمله "کاب" در فیلم inception است. این جمله زمانی گفته شد که در مورد رفتن به لایه های عمیق تر خواب بحث میکردن و این که غیر ممکن هستاما " باید به لایه های عمیق تری نفوذ کنیم " دقیقا! برای ساختن دنیای جدید باید به لایه های عمیق و عمیق تر بریم .

در واقع فیلم inception میتونه یادگیری عمیق رو خیلی خوب به تصویر بکشه. شخصیت "فیشر" مانند داده های ورودی به شبکه است. ما شبکه رو با داده های خام ورودی آموزش میدیم که نتیجه مطلوب (نابودی امپراطوری پدرش) رو به دست بیاریم. داروی خواب آوری که میتونست اونها رو توی خواب نگه داره که بتونن به لایه های بعدی و عمق بیشتر برن مثل توابع فعالسازی میمونن (در واقع بدون توابع فعالسازی شبکه های عمیق قابل پیاده سازی نیست ) ."مال" همسر " کاب " یکی از چالش های اصلی توی فیلم هست که در روند کارها اخلال ایجاد می کرد می تونیم بگیم " مال " مثل گرادیان ناپایدار محو شونده یا تابع ضرر هست. ما در شبکه تلاش می کنیم تابع ضرر رو محاسبه و کاهش بدیم. گرادیان ناپایدار محو شونده در شبکه های عمیق با مشتق گیری وزن ها (W) رو به سمت صفر می بره می تونه مانع از بروزرسانی وزن ها بشه که باعث اختلال در شبکه و حتی توقف اون میشه. "عمو پیتر" رو می تونیم بایاس (Bias) شبکه در نظر بگیریم چون اگه نباشه ممکنه بعضی از نورون ها خاموش بشن ( فرض کنید پیدا کردن رمز گاو صندوق و متقاعد شدن فیشر به عملکرد نورون ها بستگی داره). "کاب" و گروهش هم معماری های شبکه هستن چرا که نحوه پیشرفت کار و چگونگی انجامش با اونهاست.

لایه های خواب مانند لایه های شبکه است هر چه عمیق تر می شیم تعداد لایه ها بیشتر میشه. اساسا هر چه عمیق تر مشکلات شبکه هم بیشتر اما می تونیم نتیجه های لازم رو هم ازش بگیریم . در واقع کل فیلم در مرحلهfeedforward که وزن ها و بایاس و خروجی تعیین می شود و مرحله بعد از خواب مثل Backpropagatin است که بعد از اون وزن ها و بایاس بروزرسانی می شود و نتیجه مطلوب که گذاشتن ایده نابودی امپراطوری پدر فیشر در ذهن اون انجام می شود.

در این مقاله سه گانه میخواهیم عمیق و عمیق تر به اعماق شبکه های عصبی برویم و کارکرد آن را بیشتر درک کنیم . در این inception با من همراه باشید.



این مقاله در سه پارت کامل می شود که به شرح زیر است :

پارت 1 : تاریخچه هوش مصنوعی و چگونگی عملکرد شبکه های عصبی ساده

پارت 2 : نحوه یادگیری در شبکه های عصبی عمیق ( انواع یادگیری و توابع فعالساز و پس انتشار( backpropagation)

پارت 3 : انواع مهم ترین معماری های شبکه های عصبی عمیق (RNN / LSTM / CNN)

که در این 3 پارت به این موضوعات خواهیم پرداخت که شبکه های عصبی مصنوعی چیه ؟ چطور کار میکند ؟ یادگیری عمیق چیه ؟ در شبکه های عمیق یادگیری چطور انجام می شه و انواع روش های یادگیری شبکه چیه ؟ انواع معماری های اصلی شبکه های عمیق چی هست ؟ آیا واقعا کارکرد شبکه های عصبی مصنوعی مانند نورون های شبکه عصبی انسان است یا فقط الهامی از آن هست ؟ کاربردهای شبکه عصبی چیه ؟ معایبی هم داره ؟



چشم انداز

الان که در حال خواندن این مقاله هستید. اطلاعات از طریق چشم های شما و با استفاده از شبکه های عصبی و نورون ها ی بسیار پیچیده به مغز ارسال می شود و قسمت‌های مختلف مغز شامل هیپوکمپ، لوب فرانتال، لوب پاریتال و لوب تمپورال و غیره به صورت موازی و سلسله مراتبی (متوالی)در حال پردازش اطلاعات هستند . البته فرایندی که در مغز برای پردازش انجام می شود بسیار پیچیده تراست. داستان الهام بشر از طبیعت برای ساختن دنیای جدید . تغییر چهره آینده جهان. در این مقاله در زمان سفر کردیم تا بدانیم که تغییری که در حال حاضر شاهد آن هستیم از کجا آغاز شده است.



تاریخچه شبکه های عصبی:

نورون‌ها

نورون‌ها، سلول‌های اصلی سیستم عصبی، اطلاعات را به یکدیگر و به سایر بخش‌های بدن منتقل می‌کنند. می توان گفت که انسان تقریبا 100 میلیارد نورون در سیستنم عصبی خود دارد در واقع تبادل اطلاعات و انسجام بدن وابسته به نورون هاست . در اوایل قرن 19 ام مطالعات زیادی راجع به نورون ها و نحوه کارکردشان انجام شد. هدف از آن بررسی توانایی یادگیری ماشین بود.

سراغاز

اولین گام ها به سمت شبکه های عصبی مصنوعی در سال 1943 زمانی که Warren McCulloch، فیزیولوژیست عصبی و ریاضیدان جوان، Walter Pitts، اولین مدل های شبکه های عصبی را توسعه داد، انجام شد. آنها مقاله ای با عنوان"A Logical Calculus of the Ideas Immanent in NervousActivity" این مدل بر اساس فرضیه‌ای است که فعالیت عصبی را به عنوان یک فرآیند منطقی (مدارهایی هستند که می‌توانند عملیات منطقی مانند AND، OR، و NOT را انجام دهند.) در نظر می‌گیرد. در واقع نتایج مدل آنها توابع منطقی ساده با ویژگی “all-or-none” "همه یا هیچ" برای فعالیت عصبی بود.

پرسپترون (Perceptron)

در سال 1957 اولین نمونه ماشینی پرسپترون، Mark I ، توسط Frank Rosenblatt روانشناس امریکایی در آزمایشگاه هوانوردی کرنل ساخته شد. او در سال 1958 مقاله ای را تحت عنوان The perceptron: a probabilistic model for information storage and organization in the brain. منتشر کرد . پرسپترون Rosenblatt یک مدل تک نورون باینری است. و به عنوان اولین نسل از شبکه های عصبی در نظر گرفته می شوند. محدودیت اصلی آن عدم توانایی حل مسائل غیرخطی قابل تفکیک است.

آدلین (ADALINE)

مدل بعدی ADALINE (Adaptive Linear Neuron or later Adaptive Linear Element) که در سال 1960 در دانشگاه استنفورد توسط پرفسور Bernard Widrow و دانشجوی دکتری او Ted Hoff توسعه داده شد. که از یک پرسپترون با یک تابع فعال‌ساز خطی ( قانون یادگیری حداقل میانگین مربع) استفاده می‌کند. ADALINE یک شبکه عصبی تک لایه با چندین گره است که هر گره چندین ورودی را می پذیرد و یک خروجی تولید می کند. تقاوت اصلی بین ADALINE و پرسپترون استاندارد McCulloch–Pittsدر نحوه یادگیری است. ADALINEمی‌تواند یک تابع خطی را یاد بگیرد. اما پرسپترون استاندارد فقط می‌تواند توابع غیرخطی را یاد بگیرد.

زمستان می آید ....

ایجاد شده توسط DALEE-3
ایجاد شده توسط DALEE-3


زمستان اول هوش مصنوعی (AI winter) دوره‌ای از کاهش سرمایه ‌گذاری و علاقه در تحقیقات هوش مصنوعی بود که از اواخر دهه 1960 تا اواسط دهه 1980 ادامه داشت.

در سال 1969 Minsky and Papert کتابی نوشتند تحت عنوان An Introduction to Computational Geometry که بخشی از کمپین بی اعتبار کردن تحقیقات هوش مصنوعی بود که در آن تعدادی از مشکلات اساسی مانند محدودیت های پرسپترون تک لایه را تعمیم داد. اگرچه نویسندگان به خوبی می‌دانستند که پرسپترون‌های قدرتمند چندین لایه دارند و پرسپترون‌های اصلی پیش‌خور Rosenblatt دارای سه لایه هستند، آن‌ها پرسپترون را به عنوان یک ماشین دو لایه تعریف کردند که می‌تواند فقط مسائل خطی قابل تفکیک را مدیریت کند و برای مثال، نمی‌تواند exclusive-OR را حل کند.

در سال 1973، ارزیابی تحقیقات دانشگاهی در زمینه هوش مصنوعی به نام "گزارش لایت هیل" منتشر شد. تا آن زمان به شدت نسبت به تحقیقات در این زمینه انتقاد داشت و اظهار داشت که تحقیقات هوش مصنوعی اساساً نتوانسته است اهداف بزرگی را که تعیین کرده بود برآورده کند. این گزارش باعث شد بریتانیا کمک مالی به هوش مصنوعی را متوقف کند. این اولین زمستان هوش مصنوعی را آغاز کرد .

بین سالهای 1956 تا 1974 با تامین سرمایه از آژانس پروژه های تحقیقاتی پیشرفته دفاعی (DARPA) پروژه هایی مانند ترجمه ماشینی کلمه به کلمه روسی به انگلیسی و آموزش چکرز به کامپیوتر و یک شبکه متشکل از پرسپترون ها که تکرار خام نورون های مغز انسان بودند ادامه پیدا کردند . حجم زیادی ازتبلیغات و هیاهوی AI بخاطر این پروژه ها بود. با کمرنگ شدن توجه ها به هوش مصنوعی بودجه موجود به حداقل رسید . تنها چندین محقق به کار بر روی مشکلاتی مانند تشخیص الگو ادامه دادند. اما، در این دوره تلاش مداوم همچنان ادامه پیدا کرد.

در سال 1972 Klopf مبنایی برای یادگیری در نورون های مصنوعی بر اساس یک اصل بیولوژیکی ایجاد کرد. در سال 1974 Paul Werbos روش یادگیری پس انتشار(back-propagation) را توسعه داد، اگرچه اهمیت آن تا سال 1986 به طور کامل درک نشد.

فوکوشیما (Kunihiko Fukushima) یک شبکه عصبی چند لایه آموزش دیده گام به گام برای تفسیر کاراکترهای دست نویس توسعه داد. او مقاله Cognitron: A self-organizing multilayered neuronet network را در سال 1975 منتشر شد.

تولدی دوباره ....

در دهه 1980 چندین رویداد باعث تجدید علاقه شد. Kohonen کمک های زیادی به حوزه شبکه های عصبی مصنوعی کرده است. او شبکه عصبی مصنوعی را معرفی کرد که گاهی اوقات نقشه یا شبکه کوهونن نامیده می شود.

در سال 1982 John Hopfield مقاله ای درباره Neural Networks and Physical Systems with Emergent Collective Computational Abilities ارائه کرد. هاپفیلد recurrent artificial neural network را توصیف می کند که به عنوان سیستم حافظه آدرس پذیر محتوا عمل می کند. آثار او صدها دانشمند، ریاضیدان و فن‌شناس بسیار ماهر را متقاعد کرد که به حوزه نوظهور شبکه‌های عصبی بپیوندند.

در سال 1985 مؤسسه فیزیک آمریکا نشستی را آغاز کرد که به یک نشست سالانه تبدیل شد - شبکه‌های عصبی برای محاسبات. در سال 1987، اولین کنفرانس باز در مورد شبکه های عصبی در دوران مدرن. کنفرانس بین‌المللی شبکه‌های عصبی IEEE در سن دیگو برگزار شد و انجمن شبکه‌های عصبی بین‌المللی (INNS) تشکیل شد. در سال 1988 مجله INNS شبکه‌های عصبی تاسیس شد، سپس محاسبات عصبی در سال 1989 و IEEE Transactions on Neural Networks در سال 1990 ایجاد شد.

بعد از یک دوره شکوفایی مجددا دوران رکود آغاز شد . این در نهایت با یک زمستان دیگر هوش مصنوعی از اواخر دهه 1980 تا اواسط دهه 90 به پایان می رسد. در واقع نمی توان مرزهای دقیقی برای این مسئله که زمستان های AI از چه تاریخی آغاز و به پایان رسیده تعیین کرد اما می توان فهمید که تحقیقات و تلاش ها منجر به اعتماد دوباره و آغاز فصلی نوین برای تعامل انسان و ماشین که طی سالها فراز و نشیب از دهه 50 و شاید قبل تر به وجو آمده بود منجر به حرکت به سوی تعامل و اعتماد دوباره شد یکی از این عوامل سیستم های خبره بود اما سیستم های خبره چیه ؟ الان هم کاربرد داره ؟ با من همراه باشید ...

سیستم های خبره

اولین سیستم های خبره در دهه 1970 به وجود آمدند و در دهه 1980 بیشتر فراگیر شدند. اما سیستم های خبره چیه ؟ سیستم‌های خبره سیستم‌های کامپیوتری هستند که توانایی تصمیم ‌گیری یک متخصص انسانی را شبیه ‌سازی می‌کنند. آن‌ها از یک پایگاه دانش و مجموعه‌ای از قوانین برای تصمیم‌ گیری یا حل مسائل در یک حوزه خاص استفاده می‌کنند . چالش اصلی ساختن ماشین هایی بود که مانند انسان فکر کنند و تصمیم گیری های مهم انجام دهند . این امر باعث شد که رویکرد ها نسبت به اینکه ماشین توانایی یادگیری و تصمیم گیری میتواند داشته باشد را بیشتر کرد چالش بزرگ آن جمع آوری وآماده سازی و هزینه بر بودن داده ها برای آموزش سیستم های خبره بود که به داده های خیلی زیادی برای پایگاه دانش خود نیاز داشت در آن زمان مانند امروز داده های زیاد در دسترس نبود و دوم اینکه این سیستم ها برای مشکلاتی که نیازمند خلاقیت و نواوری بود راهکاری ارائه نمی داد .راهکار چه بود؟

استاد بزرگ باخت (The grandmaster lost) !

سال 1997 خبری که برای همه بهت آور بود قهرمان بزرگ شطرنج جهان شکست خورد . نه از یک استاد بزرگ دیگر بلکه شکست کاسپاروف از ماشین بود . دیپ بلو(Deep Blue) که یک سیستم خبره شطرنج بود و ساخت ان از دانشگاه کارنگی شروع شد . بعد به IBM راه یافت . نخست در سال 1996 کاسپاروف توانست ان را شکست دهد. در سال 1997 Deep Blue ارتقاع یافت و توانست با نتیجه 2 برد و 3 مساوی کاسپاروف را شکست دهد. می توان گفت یکی از نقطه عطف های هوش مصنوعی Deep Blue بود چرا که دیدگاه ها را نسبت به یادگیری ماشین و هوش مصنوعی بار دیگر تغییر داد. این اتفاق صنعت بازی را هم در مرحله دگرگونی قرار داد.

الفاگو (Alphago) برنامه کامپیوتری که توسط DeepMind برای بازی Go ساخته شده است که در سال 2016 توانست یک بازیکن حرفه ای بازی Go اقای Lee Sedol را شکست داد که فیلم و مستندی هم برای آن به نام AlphaGo - The Movie | Full award-winning documentary ساخته شده است. نکته قابل توجه بازی Go تعداد احتمالات آن است که بسیار بیشتر از شطرنج است . در شطرنج تعداد احتمالات حدود 10^120 است در حالیکه در بازی Go تخمین زده می شود که تعداد حالات ممکن در این بازی حدود 10^761 است.

در این بخش میخوایم انواع شبکه های عصبی رو معرفی کنیم و بخشی از کاربرد های مختلف اونها رو بیان کنیم با من همراه باشید .

شبکه عصبی مصنوعی (ANNs)

منبع تصویر مقاله ای در Medium
منبع تصویر مقاله ای در Medium


شبکه های عصبی مصنوعی (ANNs) یا شبکه های عصبی شبیه سازی شده (SNNs) می توان گفت ساختار کلی آن متشکل از داده های ورودی، وزن ها، یک سوگیری (bias) یا آستانه و یک خروجی. شامل نودها و لایه های ورودی یک یا چند لایه های پنهان و لایه خروجی که لایه های به هم پیوسته ای که با هم ارتباط برقرار کرده و به وسیله داده های آموزشی یاد می گیرند. شبکه ای را تشکیل می دهند و با محاسباتی که انجام میدهند در نهایت احتمالی با بیشترین وزن (w)در خروجی نمایش داده می شود . در زیر به بررسی اجزای کلی شبکه عصبی می پردازیم که می تواند شامل اجزای بیشتری باشد که مهم ترین آنها عبارتند از:

ورودی(Input)

شامل مجموعه ای از داده ها (یعنی ویژگی ها) است که به شبکه وارد می شود.(این داده ها میتوانند داده های ساختار یافته و یا ساختار نیافته باشد. بستگی به نوع مسئله دارد ) . لایه ورودی در ANNsتنها لایه در شبکه عصبی است که تمام اطلاعات دریافتی را بدون هیچ پردازشی به لایه بعدی انتقال می دهد.

لایه پنهان (Hidden Layers)

منبع تصویر مقاله ای در Medium
منبع تصویر مقاله ای در Medium


جعبه سیاه! (black boxes) بله لایه های پنهان در شبکه های عصبی عمیق مانند جعبه سیاه است. این به معنای آن است که ما ممکن است نتوانیم به سادگی تفسیر یا توضیح دقیقی از نحوه عملکرد دقیق هر نورون یا هر لایه پنهان داشته باشیم. در واقع مهم ترین تفاوت Deep learning باMachin learning و مدل های سنتی تر انتخاب ویژگی (Feature selection) است که در Deep learning ماشین تصمیم می گیرد که کدام ویژگی ها را ببینید یاد بگیرد و تصمیم گیری را انجام می دهد. اطلاع زیادی از این نداریم که ماشین این ویژگی ها را چطور و چرا انتخاب می کند. آنها لایه های واسطه ای هستند که بیشتر محاسبات در این لایه ها انجام می گیرد . و ویژگی های داده را استخراج می کنند.

وزن ها (W)

یک جز اساسی هستند که نقش اساسی در توانایی شبکه های مصنوعی برای یاد گیری و پیش بینی بازی می کنند .وزن ها قابل تغییرهستند و ممکن است در طول فرایند آموزش شبکه مقدار آنها تغییر کند. وزن ها مقادیر عددی مرتبط با اتصالات بین نورون ها (یا گره ها) هستند که نشان دهنده قدرت و جهت (مثبت یا منفی) تأثیر یک نورون بر دیگری است و میتواند مقادیر مثبت یا منفی داشته باشد. وزن های منفی می توانند از overfitting جلوگیری کنند زیرا به شبکه کمک می ‌کنند تا اطلاعات غیرضروری را کاهش داده و الگوهای کلی‌ تری را استخراج کند. در مراحل آموزش، ANN با تنظیم مکرر این وزن‌ها برای پیش‌بینی خروجی صحیح برای مجموعه‌ای از ورودی‌ها، آموزش انجام می گیرد.

بایاس (Bias)

در یک شبکه عصبی، بایاس به عنوان یک پارامتر قابل یاد گیری است که به هر نورون اختصاص دارد و در فرایند آموزش بروزرسانی می ‌شود..در واقع تابع فعالساز را با افزودن یک ثابت (یعنی بایاس داده شده) به ورودی تغییر می دهد. و در فرایند آموزش به ‌روز رسانی می ‌شود بایاس در شبکه های عصبی را می توان مشابه نقش یک ثابت در یک تابع خطی y = wx + b در نظر گرفت که در این فرمول b همان مقدار بایاس است که به موجب آن خط به طور موثر با مقدار ثابت جابه جا می شود.

بایاس از صفر شدن جلوگیری می کند زیرا مقدار ثابتی را به خروجی هر نورون اضافه می کند. وزن ها و بایاس ها برای کاهش خطا بین خروجی های شبکه و خروجی های واقعی بهینه می شوند. اگر بایاس صفر باشد، وزن ها برای جبران آن صفر می شوند. در نتیجه شبکه عصبی مقداری نمی گیرد و یادگیری انجام نمی شود.

علاوه بر جلوگیری از صفر شدن، بایاس از overfitting نیز جلوگیری می کند. overfitting زمانی اتفاق می افتد که یک شبکه عصبی بیش از حد به داده های آموزشی خود سازگار می شود و به شبکه عصبی اجازه می دهد تا از داده های آموزشی خود به طور کلی یاد بگیرد، نه فقط از جزئیات تصادفی.

لایه خروجی (Output Layer)

لایه ای است که نتیجه نهایی شبکه در این لایه مشخص می شود به همین خاطر مهم ترین لایه است و این کار را با استفاده از نتایجی که از لایه های پنهان گرفته است انجام می دهد . در واقع در حالت کلی بازگشتی بودن یا نبودن تابع فعالسازی تابع هزینه همه در لایه خروجی هستند و با توجه به نوع شبکه و وظیفه ای که از ان انتظار داریم لایه خروجی بسیار تعیین کننده است. در معماری هایی که پس انتشار داریم. فرایند پس انشار از لایه خروجی به سمت لایه ورودی انجام می شود.

پایان بخش اول

مطالب پارت 1 به پایان رسید و در این مقاله با تاریخچه ای از هوش مصنوعی و پرسپترون آشنا شدیم و تعدادی از مقاله های مربوط به اونها رو از آغاز اشاره کردیم و راجع به شبکه های عصبی مصنوعی ساده اطلاعاتی به دست آوردیم . پایه ی پرسپترون ساده شامل بخش هایی هست که در بالا ذکر شد با من همراه باشید در پارت 2 وارد دنیای چگونگی یادگیری شبکه های عصبی مصنوعی شویم . قلمرو موتور های پیشران شبکه های عصبی یعنی توابع فعالساز و قلمرو الگوریتم پس انتشار یکی از قوی ترین و کامل ترین الگوریتم هایی که نقش اساسی درچگونگی یادگیری شبکه های عصبی داره . یادگیری ماشین دنیایی پر از شگفتی است که هر روز در حال تکامل است . اما واقعا ماشین چطور میتونه یاد بگیره ؟ در پارت 2 منتظرتون هستم و ممنون میشم نظرتون رو باهام در اشتراک بزارید. میبینمتون .



ممنون از شما که در این سفر به دنیای Deeps با من همراه بودید.

مشاهده این مقاله به انگلیسی در Medium (Digging deeper and deeper into deep learning and artificial neural networks# Part I: History of artificial intelligence and how simple neural networks work.)

پارت 1 : تاریخچه هوش مصنوعی و چگونگی عملکرد شبکه های عصبی ساده

پارت 2 : نحوه یادگیری در شبکه های عصبی عمیق ( انواع یادگیری و توابع فعالساز و پس انتشار( backpropagation)

پارت 3 : انواع مهم ترین معماری های شبکه های عصبی عمیق(RNN / LSTM / CNN)

لطفا اگر مایل بودید مقاله دیگر من " آیا DeepFake فناوری آینده‌ای است یا یک تهدید؟ آیا خط میان واقعیت و ساختگی از بین خواهد رفت؟" رو در ویرگول ببینید .

یادگیری مشتاق یا Eager Learning چیست؟

امیدوارم از مطالب لذت برده باشید .


شبکه‌های عصبیهوش مصنوعییادگیری عمیق
جونیور دیتاساینتیتست
شاید از این پست‌ها خوشتان بیاید